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

【经验分享】STM32F042替换STM32F103

[复制链接]
STMCU小助手 发布时间:2021-11-21 21:26
因为从事汽车CAN总线及多媒体解码盒,常常需要解一些简单的CAN数据,需要的硬件IO不多,仅仅是CAN+UART,所以最近为了节省成本,也是花了不少心思。
" i4 d6 W- ~: @" B4 J
2 ^' b9 V. E! J; R直到最近发现了STM32F042,据介绍,这是带CAN的最小封装芯片。
0 y, b; @) \; {- N5 U9 j$ j4 P. k- ], u" d) Z
STM32F042----Cortex-M0内核 。14年初推出的芯片,号称带CAN总线的最便宜的MCU....) c8 ^% h. f2 b" K" U% j& t! t: D
+ N0 t* `- l" G
仔细查了下手册,果然很适合我的项目,而且价格也便宜,据说RMB 4-6之间,最小TSSOP20封装。这对于汽车小产品来说,简直就是量身定做。( W9 Y1 t' {" p2 p2 \7 i

8 c- Q( |* ^8 S3 G2 l6 n* s/ Z/ \不说了,赶紧动起来,先搭建最小系统,CAN收发器TJA1050+STM32F042+7533就是最简单的了,暂时不要晶振了,虽然CAN的波特率比较高的时候还是需要晶振的,不过一颗晶振也要好多RMB的 。+ }) k; z: B; _# \- R8 g
3 S+ I$ V% ^8 _. _% i5 f
20161014174929589.png

) P+ u+ w: J5 y接下来最麻烦的事情来了,因为习惯使用IAR来做开发,而且积累下来的程序源码都是UCOSII的,网络上的开源代码居然都是KEIL MDK的,这下囧...
6 b+ W+ n3 M2 H9 V! I
3 q$ G. t9 t" e不过也没办法,为了节省成本,只好多花点时间了 。
# C7 ]5 _! p; d4 c  ]6 t; S; o  R' o& K3 L9 Y. g: b
两根礼拜过去,基本都调通,代码架构也移植OK,这下终于可以把103的代码全部移植到F042上了。( u! Q( U/ f% v6 s7 {4 s1 @
. k) ^/ j  k  V# [, M
. v' K; K6 ^( C( ^
1 o  c1 p5 c* U+ S' V% R
有几个要注意的:
5 n4 J% }' }& i8 F$ M9 f7 x# P/ h$ n
" h" G8 u8 H" H$ R1.库函数区别:F042对很多库函数进行了修改,需要注意区别;+ P' A! P% `6 l0 `& W- L. r. Z/ }( A
, U% Z; a# G+ I. h5 v, k9 A
2.F042的CAN与103有所不同,需要参考寄存器定义,对于高速波特率,如500K、800K需要外置晶振;  ~! V  C& a' r7 Y  p  M- _

6 a4 C7 x" Y$ h9 b3.无法使用USART1,因为是USART1/CAN/USB复用,这里被CAN占用了;
; X0 \6 y) h, y" j% N3 \( Q# I9 y* E7 |9 l
4.F042的配置文件没有规范化,很多寄存器定义只能从F072里面找,而又不能完全使用F072的配置文件;; ~  s( g9 z% l0 v- v

" Z- C. `& x7 B! c$ _# w  A% \- r5.F042的*it.c文件不规范,其实STM32F0系列的都一样,库函数版本低,没有把中断函数文件做好规范化,导致很多函数定义混乱;
, p4 F( O, T6 C5 F1 L9 _  {$ O  |) @: a$ \
6.时钟安全CSS的内容完全没有提及,虽然从各种资料能找到介绍,但是基本没人用,也没关注到CSS的重要性;
% J, V! `8 K' G  Y, ]; [
, ?. o1 J7 j* g4 J7 R  l+ D+ J1 R( d7.F042的功耗要小很多,在同样的时钟8MHZ下,F042电流只有4mA, 103达到9mA以上;% U/ s9 ]" W6 ^5 U% L

) D, ]) T6 C: f; q) f8.F042的USART1是增强型的串口,支持LIN 主从模式,UART2是普通串口,不能用于LIN主模式;
4 \  p* t# j! j5 p& H* y7 m( G" p8 [- _8 ^2 X
9.P042F4标称FLASH容量是16K,但是实际上容量是32K,F042F6倒是真的只有32K,这搞不懂是为啥;
$ g, `0 s% ]$ k8 z! X
8 k* B8 v5 H3 c  C- y10.低功耗方面做得很好,比F1系列方便很多。
. r" l7 |) p6 J3 W% K! C
/ I2 J$ n& H  I% ~最后希望F042会和103一样,价格越来越便宜,质量越来越好。
+ N* l3 t" l7 d% A$ m3 w4 A$ R
' [! H  U8 t7 }, O5 v7 Y' F  E-------------------------------------------------------------& C. m1 e. S# f  ~/ j9 q9 t+ g3 G

) Y  N- X2 l0 J) e, q20180330新增问题:
5 ?( _( k* j1 y+ m- r5 v" W( T4 Z# j; X3 D/ f" ^
因为用这颗芯片同时做了CAN接口和LIN接口,发现并不能完整移植F1XX系列的LIN函数库。因为F0XX系列的函数库相对F1XX缺失了很多的LIN有关函数,比如有一个函数 Send_Break()是做LIN通信非常必要的却根本没有找到函数定义。为此花了很多时间研究如何实现SendBreak功能,一个月多月了也还是不得其所,最后还是花钱在某宝上找到了一个牛人帮忙解决的。4 _% u) t' ^+ W% ~6 H

# [5 Z0 f9 K5 ?; l0 N  b有些问题看起来很简单,真正做产品的时候还真不是那么回事。
7 L: t& v; l- E2 n2 z; N7 ^0 y* C) b

  A2 G( h. s) n' C5 v9 p! K, S2 S
收藏 评论0 发布时间:2021-11-21 21:26

举报

0个回答

所属标签

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