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

【经验分享】STM32F042替换STM32F103

[复制链接]
STMCU小助手 发布时间:2021-11-21 21:26
因为从事汽车CAN总线及多媒体解码盒,常常需要解一些简单的CAN数据,需要的硬件IO不多,仅仅是CAN+UART,所以最近为了节省成本,也是花了不少心思。4 A0 a' _2 ^7 e; l) ~
* J, h3 V/ h1 X/ N, @* y5 s% u; Y0 ~- W
直到最近发现了STM32F042,据介绍,这是带CAN的最小封装芯片。
+ Z9 C( P* K- y# G, I% w( h
% d* @( Z6 Y! M4 o! P: m9 MSTM32F042----Cortex-M0内核 。14年初推出的芯片,号称带CAN总线的最便宜的MCU..... v6 g5 S- M* c9 ^+ A/ r0 |
# H' `  \% [3 c4 e. u
仔细查了下手册,果然很适合我的项目,而且价格也便宜,据说RMB 4-6之间,最小TSSOP20封装。这对于汽车小产品来说,简直就是量身定做。
6 c9 r, V5 P- J2 L6 _# V8 d5 v* X( d; u, A8 b. x$ ]% C, h/ G# ?  j' D
不说了,赶紧动起来,先搭建最小系统,CAN收发器TJA1050+STM32F042+7533就是最简单的了,暂时不要晶振了,虽然CAN的波特率比较高的时候还是需要晶振的,不过一颗晶振也要好多RMB的 。* n# w9 G+ R, j0 d& c
  K& d" |- \5 `$ L( ^7 R  [
20161014174929589.png
/ p5 x( H" T7 r2 H: k
接下来最麻烦的事情来了,因为习惯使用IAR来做开发,而且积累下来的程序源码都是UCOSII的,网络上的开源代码居然都是KEIL MDK的,这下囧...% s! O/ W0 S- e5 s1 U

7 F3 {- s9 i* s" S8 u: A不过也没办法,为了节省成本,只好多花点时间了 。7 e3 q4 T' M$ y9 A
8 n$ z! H2 j$ K* c! Q
两根礼拜过去,基本都调通,代码架构也移植OK,这下终于可以把103的代码全部移植到F042上了。
+ ?) q3 V1 W3 N* u: V) \4 D0 w- E8 J3 g, v  x8 N

$ R: r1 @/ `. o6 e8 g/ w) [2 N" o3 ?. U" u% z+ _  a1 y
有几个要注意的:* z+ r( V1 U& V( U: m
7 J$ w$ z/ h, f6 n; i5 W2 ~
1.库函数区别:F042对很多库函数进行了修改,需要注意区别;8 K! z! O' T- V" r- W

) b2 ^7 N' O" @- p2.F042的CAN与103有所不同,需要参考寄存器定义,对于高速波特率,如500K、800K需要外置晶振;* F* @2 O' i7 ?! |' L2 Q( I

( S, i) S, J7 b3 P) m3.无法使用USART1,因为是USART1/CAN/USB复用,这里被CAN占用了;. O: [& E5 k0 n4 g# c

, W' X/ G# N* L) o* h1 x4.F042的配置文件没有规范化,很多寄存器定义只能从F072里面找,而又不能完全使用F072的配置文件;- n" Y1 C+ |$ A5 B' U

5 T8 T8 `. Y; `! \6 f  \4 D" [5.F042的*it.c文件不规范,其实STM32F0系列的都一样,库函数版本低,没有把中断函数文件做好规范化,导致很多函数定义混乱;
0 a2 j: W0 @: C/ t% e% N! ?1 u( q$ S- t& g; F1 j% T- |! r5 V
6.时钟安全CSS的内容完全没有提及,虽然从各种资料能找到介绍,但是基本没人用,也没关注到CSS的重要性;5 f( y) G2 f% Y# W+ F9 k! R
/ D9 ]# ^6 H5 {- v" J$ R6 {
7.F042的功耗要小很多,在同样的时钟8MHZ下,F042电流只有4mA, 103达到9mA以上;& E+ a0 d; z& ^7 m# S
% Z) l9 K4 ?* a
8.F042的USART1是增强型的串口,支持LIN 主从模式,UART2是普通串口,不能用于LIN主模式;! B! N9 V3 a# V; W$ U

, H2 f* N* I! ^; c3 N9.P042F4标称FLASH容量是16K,但是实际上容量是32K,F042F6倒是真的只有32K,这搞不懂是为啥;
/ n  w1 C" x" S* v! _+ P9 X
. j* M( d" f' }4 X5 P% o10.低功耗方面做得很好,比F1系列方便很多。
; ?  M+ i4 K( A; {! J! |0 C* f- f% Z
5 A7 c# ~6 y) v* D" O6 B最后希望F042会和103一样,价格越来越便宜,质量越来越好。. K- i! S0 w- ?
2 n. G- p9 T1 s' v" [! Q# Z0 o
-------------------------------------------------------------
# m$ v, M: n7 ?' e: J# R0 u- h& F) ?7 f
20180330新增问题:4 o. d  f) s; k$ Y/ O( y

0 P+ m0 B+ S9 m  t$ U因为用这颗芯片同时做了CAN接口和LIN接口,发现并不能完整移植F1XX系列的LIN函数库。因为F0XX系列的函数库相对F1XX缺失了很多的LIN有关函数,比如有一个函数 Send_Break()是做LIN通信非常必要的却根本没有找到函数定义。为此花了很多时间研究如何实现SendBreak功能,一个月多月了也还是不得其所,最后还是花钱在某宝上找到了一个牛人帮忙解决的。# X; g! S% ]/ }& Q8 n& c

4 @. g8 h" F; I有些问题看起来很简单,真正做产品的时候还真不是那么回事。
7 o' j; @6 c# k$ T5 Z8 I
8 k/ G+ ]6 M+ L3 ^
$ z/ r( [" X; _
收藏 评论0 发布时间:2021-11-21 21:26

举报

0个回答

所属标签

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