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

【经验分享】STM32F042替换STM32F103

[复制链接]
STMCU小助手 发布时间:2021-11-21 21:26
因为从事汽车CAN总线及多媒体解码盒,常常需要解一些简单的CAN数据,需要的硬件IO不多,仅仅是CAN+UART,所以最近为了节省成本,也是花了不少心思。& ^+ k% x7 e* }; ?+ D+ b) a
2 E/ c+ @" r8 |7 F' _% n) m
直到最近发现了STM32F042,据介绍,这是带CAN的最小封装芯片。; ^2 l- G9 }5 k
' P% f3 G+ A  T" @: D! @5 q
STM32F042----Cortex-M0内核 。14年初推出的芯片,号称带CAN总线的最便宜的MCU..../ D; c6 T$ y& ^9 ?: z7 L7 N

! b: c1 z; V* O8 J仔细查了下手册,果然很适合我的项目,而且价格也便宜,据说RMB 4-6之间,最小TSSOP20封装。这对于汽车小产品来说,简直就是量身定做。
8 ~" n$ G/ c" Y( Y9 v8 E/ l: B9 j4 U& d$ ?' C
不说了,赶紧动起来,先搭建最小系统,CAN收发器TJA1050+STM32F042+7533就是最简单的了,暂时不要晶振了,虽然CAN的波特率比较高的时候还是需要晶振的,不过一颗晶振也要好多RMB的 。# U3 D7 R- D7 N* A7 \
4 Y# U6 C6 v# E$ l' Z
20161014174929589.png

& W: T! x$ Z; z# z& J$ ^/ D接下来最麻烦的事情来了,因为习惯使用IAR来做开发,而且积累下来的程序源码都是UCOSII的,网络上的开源代码居然都是KEIL MDK的,这下囧...7 X7 [4 m# _2 B& n+ K) q- Y: D( z
2 A( y: o# i' _# Z: a' F2 ^2 C/ U
不过也没办法,为了节省成本,只好多花点时间了 。
- P( n) n  S. i/ M1 q( Z( ]; n+ [" C* u: Z' F2 J: k5 J/ Q
两根礼拜过去,基本都调通,代码架构也移植OK,这下终于可以把103的代码全部移植到F042上了。- M$ B: l1 U6 u/ J" m
) i8 E1 \  W/ U" u; V

5 X6 ~* p5 `$ f7 Y5 Q! K* H7 H- o( P* p; }$ v4 l" R
有几个要注意的:& m* k- w* |* p! H5 a8 U7 S% X0 K
) }& @- G% \6 o+ E+ A
1.库函数区别:F042对很多库函数进行了修改,需要注意区别;
% G; P# h2 q1 P" o" S" p5 j4 L6 N( s; |; s# I7 Z! p3 v
2.F042的CAN与103有所不同,需要参考寄存器定义,对于高速波特率,如500K、800K需要外置晶振;7 W. I3 `0 h' m7 O2 w; Y8 j

0 m% ~, Y, x' D% q  B# ^5 o/ y3.无法使用USART1,因为是USART1/CAN/USB复用,这里被CAN占用了;
: \( C% l3 l; L+ o& Q. s
- x" `% }% U; v) }5 n2 Z4.F042的配置文件没有规范化,很多寄存器定义只能从F072里面找,而又不能完全使用F072的配置文件;
" r8 _- s9 u( y) u3 u: G  {  L0 q* w
5.F042的*it.c文件不规范,其实STM32F0系列的都一样,库函数版本低,没有把中断函数文件做好规范化,导致很多函数定义混乱;
! f; v4 [. d' Z# H9 f
% A7 e6 D$ K& N6.时钟安全CSS的内容完全没有提及,虽然从各种资料能找到介绍,但是基本没人用,也没关注到CSS的重要性;
/ a, F% l  x. N/ k6 |
- k0 r; G; t2 Z2 V% f7.F042的功耗要小很多,在同样的时钟8MHZ下,F042电流只有4mA, 103达到9mA以上;
+ n3 Y6 f+ J, H; b  i( y# ~" M" e9 F8 j0 G% s
8.F042的USART1是增强型的串口,支持LIN 主从模式,UART2是普通串口,不能用于LIN主模式;( H& F( D8 }& j- T5 R% f

9 V% `2 h% \* Z9.P042F4标称FLASH容量是16K,但是实际上容量是32K,F042F6倒是真的只有32K,这搞不懂是为啥;
4 e$ \$ K+ ]5 V: J: A! k" S# G+ V$ K
4 K( `6 D4 i4 ?! n& a' i- K10.低功耗方面做得很好,比F1系列方便很多。+ K& `1 f% g$ B7 x% W' y

2 [$ x9 b% E% t0 K7 c) k. d6 A最后希望F042会和103一样,价格越来越便宜,质量越来越好。
& M; [# r) A, t9 Y% V9 ^' a+ m) i& d( E
-------------------------------------------------------------' m8 i. O0 m, W

3 b7 u0 M0 K* a6 K" y/ T2 m20180330新增问题:
9 w3 {0 V+ S7 N* |5 I9 f  G8 i& M0 _% ~: s; q* Q: ]
因为用这颗芯片同时做了CAN接口和LIN接口,发现并不能完整移植F1XX系列的LIN函数库。因为F0XX系列的函数库相对F1XX缺失了很多的LIN有关函数,比如有一个函数 Send_Break()是做LIN通信非常必要的却根本没有找到函数定义。为此花了很多时间研究如何实现SendBreak功能,一个月多月了也还是不得其所,最后还是花钱在某宝上找到了一个牛人帮忙解决的。" H- p0 W' Z* U0 i2 p; s

4 S1 s, D3 M1 F9 J有些问题看起来很简单,真正做产品的时候还真不是那么回事。
2 ~  P  t9 S; }- E+ e# j0 y" _" i$ ~9 A, P

2 w' j+ P3 n! t8 _$ H
收藏 评论0 发布时间:2021-11-21 21:26

举报

0个回答

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版