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

【经验分享】STM32F042替换STM32F103

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

0 n" i# ^  E3 A直到最近发现了STM32F042,据介绍,这是带CAN的最小封装芯片。" m2 T- F+ v3 J& `" n5 [" B

- b; x0 `5 }2 n3 pSTM32F042----Cortex-M0内核 。14年初推出的芯片,号称带CAN总线的最便宜的MCU....5 J0 e; O9 e" A
* z- I! @7 b- f
仔细查了下手册,果然很适合我的项目,而且价格也便宜,据说RMB 4-6之间,最小TSSOP20封装。这对于汽车小产品来说,简直就是量身定做。; Q! j. N& E+ q; H
$ A. Z5 w- z  `
不说了,赶紧动起来,先搭建最小系统,CAN收发器TJA1050+STM32F042+7533就是最简单的了,暂时不要晶振了,虽然CAN的波特率比较高的时候还是需要晶振的,不过一颗晶振也要好多RMB的 。
: l( M; A8 l) @1 B  F
7 S  M8 |, \# I! y
20161014174929589.png
: R& C" ?" ~  E7 l# F1 I
接下来最麻烦的事情来了,因为习惯使用IAR来做开发,而且积累下来的程序源码都是UCOSII的,网络上的开源代码居然都是KEIL MDK的,这下囧...
0 l5 [0 ~1 e. b7 {; u' @
6 W5 Z" M& _8 R0 F* @, h不过也没办法,为了节省成本,只好多花点时间了 。
9 F, _$ u2 S0 p# U& D! W- L' E% A0 N, \) E" k+ e
两根礼拜过去,基本都调通,代码架构也移植OK,这下终于可以把103的代码全部移植到F042上了。
' ~6 @+ f, T& C, ]9 b" F
5 P; I- x, J2 }0 w& H
, Z4 d: D! o( U- U+ \. L# j/ V
2 Y; D+ \+ g5 }有几个要注意的:
* x+ q& m6 l% y. V9 M4 j# w% h- s7 B: D
. k+ T$ W6 \  T1 J- v1.库函数区别:F042对很多库函数进行了修改,需要注意区别;
8 ?/ T0 [- o1 c( t: r, P3 \* ~; u* s3 K3 }) V& Y, g8 J
2.F042的CAN与103有所不同,需要参考寄存器定义,对于高速波特率,如500K、800K需要外置晶振;$ S/ u7 R1 J  G/ x' X

4 D6 u7 N+ u) O3.无法使用USART1,因为是USART1/CAN/USB复用,这里被CAN占用了;
" r( O1 ~7 {! V2 r, E
- ~* }$ g& _( ?5 M# ?( v& v4.F042的配置文件没有规范化,很多寄存器定义只能从F072里面找,而又不能完全使用F072的配置文件;
+ k1 M+ \: a) P6 A2 s! o5 C  y" V5 ^4 k
5.F042的*it.c文件不规范,其实STM32F0系列的都一样,库函数版本低,没有把中断函数文件做好规范化,导致很多函数定义混乱;8 o3 z1 a& r7 a! s4 S/ i3 M7 R7 F. q- p
' i9 {1 H0 j& s- w
6.时钟安全CSS的内容完全没有提及,虽然从各种资料能找到介绍,但是基本没人用,也没关注到CSS的重要性;
! s1 ~  ^7 I; v3 D, l9 V" d9 e3 k- o- J4 t) G' G' ]8 ^& l# r. y6 G
7.F042的功耗要小很多,在同样的时钟8MHZ下,F042电流只有4mA, 103达到9mA以上;
4 x! C5 u6 O* V. I! |3 ?# U8 u9 W
; F# p2 K) B. h, ]0 P8.F042的USART1是增强型的串口,支持LIN 主从模式,UART2是普通串口,不能用于LIN主模式;, }) r0 F9 u5 b# ?1 @
& f- }3 ]; q2 q  [. b0 }+ @* x
9.P042F4标称FLASH容量是16K,但是实际上容量是32K,F042F6倒是真的只有32K,这搞不懂是为啥;
/ L0 O" M( N+ I, G, g( k- c. |5 V
$ M. p. ?$ q4 B% m2 x/ v% v0 g10.低功耗方面做得很好,比F1系列方便很多。) H( Q2 R, T  h* x( u6 n

5 ~( s2 ^* c. ]  A7 S5 h# B/ K) v- H2 s6 k最后希望F042会和103一样,价格越来越便宜,质量越来越好。0 ^8 N8 w/ s6 S0 W

6 U, M1 C- D8 T* F-------------------------------------------------------------
# h6 Z1 J, a* b. x+ U( y* ]( T, a2 O! P* z, e2 R
20180330新增问题:
2 `1 i  q+ P" e' Q# ]  A) _
5 d! s: d5 Y; R% D% S因为用这颗芯片同时做了CAN接口和LIN接口,发现并不能完整移植F1XX系列的LIN函数库。因为F0XX系列的函数库相对F1XX缺失了很多的LIN有关函数,比如有一个函数 Send_Break()是做LIN通信非常必要的却根本没有找到函数定义。为此花了很多时间研究如何实现SendBreak功能,一个月多月了也还是不得其所,最后还是花钱在某宝上找到了一个牛人帮忙解决的。
3 W+ q$ T' w0 j" \$ k/ q5 z. y' N* k5 u' X1 u+ F
有些问题看起来很简单,真正做产品的时候还真不是那么回事。
& w5 M3 x) M% f  q
, h9 t0 ]& G. R0 a/ z
: N  |1 M( I5 Y: p4 i( L
收藏 评论0 发布时间:2021-11-21 21:26

举报

0个回答

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版