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

【经验分享】STM32F042替换STM32F103

[复制链接]
STMCU小助手 发布时间:2021-11-21 21:26
因为从事汽车CAN总线及多媒体解码盒,常常需要解一些简单的CAN数据,需要的硬件IO不多,仅仅是CAN+UART,所以最近为了节省成本,也是花了不少心思。& \% \; B* ^( ~( U) k8 z5 R/ r

, P% F& r- ^. L+ c直到最近发现了STM32F042,据介绍,这是带CAN的最小封装芯片。
5 F' T6 k1 u5 e  Y3 A
' r2 V5 l9 w! }: _STM32F042----Cortex-M0内核 。14年初推出的芯片,号称带CAN总线的最便宜的MCU....4 Y% s, g" n2 t7 J

# e6 K$ [* Z. L4 u+ W- A) ^: h仔细查了下手册,果然很适合我的项目,而且价格也便宜,据说RMB 4-6之间,最小TSSOP20封装。这对于汽车小产品来说,简直就是量身定做。
) a3 R* A6 R& c
+ S( U  ]8 E" `+ |$ O不说了,赶紧动起来,先搭建最小系统,CAN收发器TJA1050+STM32F042+7533就是最简单的了,暂时不要晶振了,虽然CAN的波特率比较高的时候还是需要晶振的,不过一颗晶振也要好多RMB的 。
5 I' u& G6 ]$ W9 Z2 U2 t+ W* q2 W& `! ~5 d2 A* o" X
20161014174929589.png
( v) C: u: U' r  h- m0 c1 c
接下来最麻烦的事情来了,因为习惯使用IAR来做开发,而且积累下来的程序源码都是UCOSII的,网络上的开源代码居然都是KEIL MDK的,这下囧...: ~1 Q. h2 z- V$ m" X
3 `; b/ D3 T* X! `
不过也没办法,为了节省成本,只好多花点时间了 。! q7 A' H5 y5 c4 i, t6 _

  P1 A# B# U/ I. L$ Y8 }& p1 ?两根礼拜过去,基本都调通,代码架构也移植OK,这下终于可以把103的代码全部移植到F042上了。% F$ n8 X' o6 t5 _( F; {

" J/ {! H$ w  ~: N) a% t: ]0 ~
; t% o7 u6 S" W# S* p- L$ X% V; S& j" u9 L: U5 V# u" b! e% o- L5 F7 G4 t: g
有几个要注意的:3 ]9 A5 t/ e" e' o

! T5 Q% Y. d+ }$ Q) \1.库函数区别:F042对很多库函数进行了修改,需要注意区别;7 Y, d, `* J$ Z9 E2 e, @
% b  }! r/ k8 Q3 D
2.F042的CAN与103有所不同,需要参考寄存器定义,对于高速波特率,如500K、800K需要外置晶振;2 t3 q2 n6 M8 T7 C

+ `+ H/ v# t2 X7 C, Q4 q3.无法使用USART1,因为是USART1/CAN/USB复用,这里被CAN占用了;
5 t( ^# Q# X# w
. K3 h$ M. v( q4 c( W( ~4.F042的配置文件没有规范化,很多寄存器定义只能从F072里面找,而又不能完全使用F072的配置文件;
/ W- ]& ^9 P& U8 A: @" f# _1 V3 ~. n5 |2 G2 r5 v  y. h6 R) u
5.F042的*it.c文件不规范,其实STM32F0系列的都一样,库函数版本低,没有把中断函数文件做好规范化,导致很多函数定义混乱;
. B. i- g, d& y" C. e1 \! s+ C
3 M1 E: k9 R4 c( b) w6.时钟安全CSS的内容完全没有提及,虽然从各种资料能找到介绍,但是基本没人用,也没关注到CSS的重要性;
. s: g/ `  v# X% q& Q$ Z: v
' P$ G! e! m/ ?7 p( j* Z" [  i7.F042的功耗要小很多,在同样的时钟8MHZ下,F042电流只有4mA, 103达到9mA以上;8 ~$ w; c9 v; p. M- p* y' h/ O
) Y4 {8 z" o7 ~* I
8.F042的USART1是增强型的串口,支持LIN 主从模式,UART2是普通串口,不能用于LIN主模式;
3 A) ~% a, f2 e$ Y; }' M
3 B7 q7 w( F: K) D% w: M9.P042F4标称FLASH容量是16K,但是实际上容量是32K,F042F6倒是真的只有32K,这搞不懂是为啥;" F, M. K5 |5 @3 \( Q* Y. P/ L" x" f

) T4 o- X0 Y4 O$ j5 d8 O9 o7 g10.低功耗方面做得很好,比F1系列方便很多。
$ l0 C- t) y3 w1 Q0 s  s) t+ q  Y
2 P% \1 t2 S) j" f0 [9 r; f" q最后希望F042会和103一样,价格越来越便宜,质量越来越好。
" _/ w6 b8 |3 s0 n2 i7 i8 F' k6 p! H- l6 Q% ]
-------------------------------------------------------------
/ U4 a, u0 y$ w* p. a: J' y4 f: p6 X1 A. P1 w5 P( c* K& I( C
20180330新增问题:
, O5 E, [% t- D. Y9 |5 m! ]
/ {" ~) m. H4 ~% f) |3 n7 g3 C8 m因为用这颗芯片同时做了CAN接口和LIN接口,发现并不能完整移植F1XX系列的LIN函数库。因为F0XX系列的函数库相对F1XX缺失了很多的LIN有关函数,比如有一个函数 Send_Break()是做LIN通信非常必要的却根本没有找到函数定义。为此花了很多时间研究如何实现SendBreak功能,一个月多月了也还是不得其所,最后还是花钱在某宝上找到了一个牛人帮忙解决的。  a2 G2 u$ n6 y' c$ q
& U$ ?: [4 x% [5 c/ U& ~
有些问题看起来很简单,真正做产品的时候还真不是那么回事。# u5 _, N0 K- D) k3 n

6 s. O. v' ~" I) t4 ^, f7 k6 p$ y: n5 K1 K
收藏 评论0 发布时间:2021-11-21 21:26

举报

0个回答

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版