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

【经验分享】STM32F042替换STM32F103

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

. B1 P6 q! z0 i/ `1 Q4 s直到最近发现了STM32F042,据介绍,这是带CAN的最小封装芯片。. v8 I" V5 ]1 h
* K$ j& p6 A& c. T. i% U& h, q
STM32F042----Cortex-M0内核 。14年初推出的芯片,号称带CAN总线的最便宜的MCU....
  D! ?" @' |9 }8 f( ]/ k3 p; o, L( P9 S8 k7 d7 r8 [8 q) g/ d
仔细查了下手册,果然很适合我的项目,而且价格也便宜,据说RMB 4-6之间,最小TSSOP20封装。这对于汽车小产品来说,简直就是量身定做。  ~8 W/ s# u: r$ r  Q' K/ R& r+ J

" x  R, Q4 X* v5 h不说了,赶紧动起来,先搭建最小系统,CAN收发器TJA1050+STM32F042+7533就是最简单的了,暂时不要晶振了,虽然CAN的波特率比较高的时候还是需要晶振的,不过一颗晶振也要好多RMB的 。- w, w/ }* z" }: Q3 @9 K
/ H1 a$ b6 L. a! O) ^7 G
20161014174929589.png

4 ?4 T' O$ k( q接下来最麻烦的事情来了,因为习惯使用IAR来做开发,而且积累下来的程序源码都是UCOSII的,网络上的开源代码居然都是KEIL MDK的,这下囧.../ S1 c( u. b; g: S) }
! ]5 r# u2 v# ?& Z6 X
不过也没办法,为了节省成本,只好多花点时间了 。3 f6 W7 C5 Z9 `% D  P- Y
8 w/ y$ k( J6 W3 y6 n0 _4 i6 |' ?
两根礼拜过去,基本都调通,代码架构也移植OK,这下终于可以把103的代码全部移植到F042上了。
4 H2 X# A+ _' j
; r0 p' W' |% G& a
$ S- [& L0 r, k, |1 i2 Y9 a5 P0 q& `1 p! M/ X1 K& ?
有几个要注意的:  z% s2 G. r' Y: k8 J2 e
( ]5 g; l6 K$ o8 w6 u* h# f7 f  A
1.库函数区别:F042对很多库函数进行了修改,需要注意区别;
7 ?- \- g# j7 o1 }- U* q7 t9 w) J; H8 \" p+ p8 r9 m- @' b
2.F042的CAN与103有所不同,需要参考寄存器定义,对于高速波特率,如500K、800K需要外置晶振;6 ^/ ^" @4 @4 n2 }; Q* ?

. [/ L! k: M# B+ O* X3.无法使用USART1,因为是USART1/CAN/USB复用,这里被CAN占用了;4 M$ v& w# {3 I, b& N( I9 L

7 e# t5 o: L5 C6 L4.F042的配置文件没有规范化,很多寄存器定义只能从F072里面找,而又不能完全使用F072的配置文件;6 t/ e2 h4 P6 c3 ]7 r! n9 ]
* F; j7 g3 Y; ^) q! h6 V3 Y
5.F042的*it.c文件不规范,其实STM32F0系列的都一样,库函数版本低,没有把中断函数文件做好规范化,导致很多函数定义混乱;
- Q- m3 W9 _1 T! _3 _
0 B$ \3 N) j# A9 p" V1 F' b/ u3 k6.时钟安全CSS的内容完全没有提及,虽然从各种资料能找到介绍,但是基本没人用,也没关注到CSS的重要性;( V* D; k) e7 u  |8 J  L7 {1 {6 j

3 `/ I" ]) n; }5 S7.F042的功耗要小很多,在同样的时钟8MHZ下,F042电流只有4mA, 103达到9mA以上;
* e8 n* Q6 b9 S* D, V: O4 P! C
* d& @8 T* X3 d7 u0 E8.F042的USART1是增强型的串口,支持LIN 主从模式,UART2是普通串口,不能用于LIN主模式;6 F. {6 g- |7 ~4 k# n

& h7 X) t9 w6 v0 v- Q6 E& j% \9.P042F4标称FLASH容量是16K,但是实际上容量是32K,F042F6倒是真的只有32K,这搞不懂是为啥;
& e. v  X/ R) m" h0 Q$ w7 }# B# K# B2 H+ N2 f4 P
10.低功耗方面做得很好,比F1系列方便很多。! j$ Y$ S& i1 g9 x" \

8 i8 S8 `  f. |最后希望F042会和103一样,价格越来越便宜,质量越来越好。
6 \! v3 q6 }$ b- S9 ^$ ]; G; Q9 K8 [; u; A# o) J/ r
-------------------------------------------------------------
5 g0 f5 }. T  h0 `" d2 _" f/ b8 T2 E* o8 H; q0 Z
20180330新增问题:
+ I7 z5 j) w, `' Q; N# S8 M2 o) _; U$ t& F
因为用这颗芯片同时做了CAN接口和LIN接口,发现并不能完整移植F1XX系列的LIN函数库。因为F0XX系列的函数库相对F1XX缺失了很多的LIN有关函数,比如有一个函数 Send_Break()是做LIN通信非常必要的却根本没有找到函数定义。为此花了很多时间研究如何实现SendBreak功能,一个月多月了也还是不得其所,最后还是花钱在某宝上找到了一个牛人帮忙解决的。
9 }+ i7 _! I* r; }) D4 R4 g
9 U; ^1 l, b! d" c. X* ^+ S有些问题看起来很简单,真正做产品的时候还真不是那么回事。( N$ t: o1 S3 W9 I0 ]+ O' k

9 s) `% n% K+ @$ [# {) x: A7 `, Z) B( @! }+ \( d
赞 收藏 评论0 发布时间:2021-11-21 21:26

举报

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