你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32F042替换STM32F103

[复制链接]
STMCU小助手 发布时间:2021-11-21 21:26
因为从事汽车CAN总线及多媒体解码盒,常常需要解一些简单的CAN数据,需要的硬件IO不多,仅仅是CAN+UART,所以最近为了节省成本,也是花了不少心思。! g- Z" _+ m& ?

$ {$ B5 ]2 _6 z直到最近发现了STM32F042,据介绍,这是带CAN的最小封装芯片。
) s. d2 m0 T* b- F- D5 g
# o& V  n2 z6 Q$ k! vSTM32F042----Cortex-M0内核 。14年初推出的芯片,号称带CAN总线的最便宜的MCU....
1 g" t* y0 M! R5 B$ z; R1 U6 e- K7 V4 ^: {( D9 Q0 Z
仔细查了下手册,果然很适合我的项目,而且价格也便宜,据说RMB 4-6之间,最小TSSOP20封装。这对于汽车小产品来说,简直就是量身定做。
& ?/ w" v: B: b# v- t% e, M$ }3 e0 j0 P0 p
不说了,赶紧动起来,先搭建最小系统,CAN收发器TJA1050+STM32F042+7533就是最简单的了,暂时不要晶振了,虽然CAN的波特率比较高的时候还是需要晶振的,不过一颗晶振也要好多RMB的 。. `+ E. O) h$ L: \

5 k' P  }5 a3 l
20161014174929589.png
1 R% T0 s$ U4 e2 f! f- j' x
接下来最麻烦的事情来了,因为习惯使用IAR来做开发,而且积累下来的程序源码都是UCOSII的,网络上的开源代码居然都是KEIL MDK的,这下囧...
8 x  x; `# |+ a
7 `- X$ T3 w( w. O不过也没办法,为了节省成本,只好多花点时间了 。- Z! F9 E1 N1 C  u9 f- y; y1 P# Z
- r, _, p" A7 W1 {
两根礼拜过去,基本都调通,代码架构也移植OK,这下终于可以把103的代码全部移植到F042上了。, E+ Y; M* ?3 Y' O7 f
  p( l( t) j0 \1 t* @& Q
& w8 v) r' ]! t2 n/ r/ o
3 I' `- s' |5 n; X
有几个要注意的:# M. `, e6 x) m0 ^6 {$ o

# @; n; [3 W5 D& b1 g1.库函数区别:F042对很多库函数进行了修改,需要注意区别;$ q  T9 a4 ^+ Y+ G" q! s
9 [2 l9 z6 n3 K  D% }. c* l
2.F042的CAN与103有所不同,需要参考寄存器定义,对于高速波特率,如500K、800K需要外置晶振;" n5 e1 g4 M+ o: D( r6 G
$ v8 o: `7 O, Q. {1 U
3.无法使用USART1,因为是USART1/CAN/USB复用,这里被CAN占用了;/ q0 S3 m1 C. m' l) z

( V9 h/ U2 \$ i4.F042的配置文件没有规范化,很多寄存器定义只能从F072里面找,而又不能完全使用F072的配置文件;
7 W5 o# N+ `2 N* x$ l1 W  O' ]% O
- m$ V8 P" k, k; T1 t; y. x5.F042的*it.c文件不规范,其实STM32F0系列的都一样,库函数版本低,没有把中断函数文件做好规范化,导致很多函数定义混乱;- A3 M# B* e1 s' r
3 w0 p. p% K% P. D+ G
6.时钟安全CSS的内容完全没有提及,虽然从各种资料能找到介绍,但是基本没人用,也没关注到CSS的重要性;
2 b' |7 |0 b  t8 m4 Z# d$ M
' A) M: Z! j9 S1 \$ `0 ~/ L7.F042的功耗要小很多,在同样的时钟8MHZ下,F042电流只有4mA, 103达到9mA以上;
# V. s) T' o; F/ r
0 z/ U, T1 c( t: i: _& U0 q8 K: d2 L8.F042的USART1是增强型的串口,支持LIN 主从模式,UART2是普通串口,不能用于LIN主模式;
5 K9 \9 [7 R+ n5 @+ c- ~$ @. t" v9 Q3 \, h+ D; a
9.P042F4标称FLASH容量是16K,但是实际上容量是32K,F042F6倒是真的只有32K,这搞不懂是为啥;
! D- b) x+ k* u' s; `5 o: T" ~; O; P( M, y$ |
10.低功耗方面做得很好,比F1系列方便很多。
: R/ r& B2 ^4 J3 E# J
2 `( r0 x1 ^  q+ [+ ?5 L! o: E' o+ I( g5 u最后希望F042会和103一样,价格越来越便宜,质量越来越好。5 \/ c  ?! \- I0 @
+ e% P+ T% m/ k' F* T
-------------------------------------------------------------
8 j0 h  T& c1 U. v6 ~9 L  b: H* Y8 ]1 X
20180330新增问题:
1 p/ B5 \4 Z5 N, v
$ P1 h4 p! y9 J因为用这颗芯片同时做了CAN接口和LIN接口,发现并不能完整移植F1XX系列的LIN函数库。因为F0XX系列的函数库相对F1XX缺失了很多的LIN有关函数,比如有一个函数 Send_Break()是做LIN通信非常必要的却根本没有找到函数定义。为此花了很多时间研究如何实现SendBreak功能,一个月多月了也还是不得其所,最后还是花钱在某宝上找到了一个牛人帮忙解决的。( K1 I; x& @+ K
5 v3 n* d# l! T: ]) D- y* O* A
有些问题看起来很简单,真正做产品的时候还真不是那么回事。
0 j( o+ O  A# L# d: g1 p2 i( ^5 n) R. P! b: a
3 f) T% o# ^! s8 p! }9 _! B
赞 收藏 评论0 发布时间:2021-11-21 21:26

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版