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

【经验分享】STM32F042替换STM32F103

[复制链接]
STMCU小助手 发布时间:2021-11-21 21:26
因为从事汽车CAN总线及多媒体解码盒,常常需要解一些简单的CAN数据,需要的硬件IO不多,仅仅是CAN+UART,所以最近为了节省成本,也是花了不少心思。
# t4 c" l2 _9 ]; X: n
, ^5 @8 Q: a9 P' }, ]* b$ z4 ]) s1 t" R直到最近发现了STM32F042,据介绍,这是带CAN的最小封装芯片。
3 B# i: [! A* @) E: L  w* F4 a
6 D2 `7 d" `4 Y  ~6 FSTM32F042----Cortex-M0内核 。14年初推出的芯片,号称带CAN总线的最便宜的MCU....0 u5 B% O) W" o3 u/ N; `3 M4 \
9 z; E& `! s& [, k
仔细查了下手册,果然很适合我的项目,而且价格也便宜,据说RMB 4-6之间,最小TSSOP20封装。这对于汽车小产品来说,简直就是量身定做。
1 A9 P7 Z4 y8 j4 W8 L! C
+ `% U+ |* X$ V3 ^. e, P不说了,赶紧动起来,先搭建最小系统,CAN收发器TJA1050+STM32F042+7533就是最简单的了,暂时不要晶振了,虽然CAN的波特率比较高的时候还是需要晶振的,不过一颗晶振也要好多RMB的 。
" T( V) Q- t2 h; Z3 o* W& v
5 ~* F) p. H* i! }. v' y$ k
20161014174929589.png

$ ?2 B7 Z5 j$ N接下来最麻烦的事情来了,因为习惯使用IAR来做开发,而且积累下来的程序源码都是UCOSII的,网络上的开源代码居然都是KEIL MDK的,这下囧...* p1 Z, z8 o2 T* E) [. P

* R( c2 K+ S( w" v! x不过也没办法,为了节省成本,只好多花点时间了 。
, `+ U5 p' k6 r4 O6 h4 v: }, C: x3 L% \# j( D% ~) ^' {5 B
两根礼拜过去,基本都调通,代码架构也移植OK,这下终于可以把103的代码全部移植到F042上了。
$ y" s1 [$ e: g7 ^! |( _
3 W2 Z6 j& Z4 O# O* a$ j1 t3 C
5 o5 c* P2 v2 ^0 d/ @7 {& Q( \- v# `0 r9 p) k+ X$ g
有几个要注意的:
9 x% h  d( P* D
0 |( n% K+ A+ o  c9 R# `1.库函数区别:F042对很多库函数进行了修改,需要注意区别;) i1 B: K$ o, d$ g4 e, _
/ s; _6 S2 G' @' M+ C
2.F042的CAN与103有所不同,需要参考寄存器定义,对于高速波特率,如500K、800K需要外置晶振;
# K. j  |) i  p+ S. |* T9 `, T8 A. X  U7 u1 i
3.无法使用USART1,因为是USART1/CAN/USB复用,这里被CAN占用了;8 i% i, O( h/ ^  `" ^( |! I% W

/ ?9 H! v7 I6 f; C4.F042的配置文件没有规范化,很多寄存器定义只能从F072里面找,而又不能完全使用F072的配置文件;1 L1 y2 ^# W/ }8 x' l5 v' L& b

8 h) B/ U3 }2 ?/ i5.F042的*it.c文件不规范,其实STM32F0系列的都一样,库函数版本低,没有把中断函数文件做好规范化,导致很多函数定义混乱;
4 R) m5 ^# A3 `( T
  S  f/ W+ C- L1 a5 V/ L2 k6.时钟安全CSS的内容完全没有提及,虽然从各种资料能找到介绍,但是基本没人用,也没关注到CSS的重要性;( a2 y+ o  {/ d% ^6 |2 B
$ U- q" i0 j; Z0 E
7.F042的功耗要小很多,在同样的时钟8MHZ下,F042电流只有4mA, 103达到9mA以上;, X# j& a7 ]' y
7 R. A  j# l. v8 M
8.F042的USART1是增强型的串口,支持LIN 主从模式,UART2是普通串口,不能用于LIN主模式;, k0 y1 S" O/ l/ p5 c- W1 P/ c

- c% l1 z3 y" P8 V8 Z8 G. e1 Y1 J, n9.P042F4标称FLASH容量是16K,但是实际上容量是32K,F042F6倒是真的只有32K,这搞不懂是为啥;
/ P3 k  f! K' I4 k) v) l
9 O" M9 M2 J) n: |10.低功耗方面做得很好,比F1系列方便很多。7 j5 e( ~; A3 L6 J2 n) m. g# P2 `

. A; W* H( ~3 e' k+ G. X最后希望F042会和103一样,价格越来越便宜,质量越来越好。
/ Y$ s9 P, N% d& W& \2 {, P$ c; f* ^2 p/ `" {+ R3 B8 K/ [
-------------------------------------------------------------
! p# G0 u& r1 Q$ [% h3 M
) L8 }7 s) Z" V20180330新增问题:6 v& T7 H3 B. b6 D

4 }% x, ~: t/ M3 j/ G因为用这颗芯片同时做了CAN接口和LIN接口,发现并不能完整移植F1XX系列的LIN函数库。因为F0XX系列的函数库相对F1XX缺失了很多的LIN有关函数,比如有一个函数 Send_Break()是做LIN通信非常必要的却根本没有找到函数定义。为此花了很多时间研究如何实现SendBreak功能,一个月多月了也还是不得其所,最后还是花钱在某宝上找到了一个牛人帮忙解决的。
* e, ^1 B% c6 w
6 H, G' N! |% J) V: Y/ q: e有些问题看起来很简单,真正做产品的时候还真不是那么回事。- r. q9 f5 L  [8 y2 ?' |4 o
/ y$ y2 K( i- c# @

/ v0 _" m4 h5 m" N7 d* E: {
收藏 评论0 发布时间:2021-11-21 21:26

举报

0个回答

所属标签

相似分享

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