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

【经验分享】STM32F042替换STM32F103

[复制链接]
STMCU小助手 发布时间:2021-11-21 21:26
因为从事汽车CAN总线及多媒体解码盒,常常需要解一些简单的CAN数据,需要的硬件IO不多,仅仅是CAN+UART,所以最近为了节省成本,也是花了不少心思。
4 `0 D9 m! _+ ^7 D/ q8 Y8 s5 T* U3 ^! \/ ~" F/ u
直到最近发现了STM32F042,据介绍,这是带CAN的最小封装芯片。
7 n: R7 \8 K9 u- N1 m; a% P& ?0 O
) b' |" K, e! Y: NSTM32F042----Cortex-M0内核 。14年初推出的芯片,号称带CAN总线的最便宜的MCU....- l6 q1 M* p8 x( T4 o9 {4 ]! P

1 M( _' ]. {& y$ K! Y' S2 H仔细查了下手册,果然很适合我的项目,而且价格也便宜,据说RMB 4-6之间,最小TSSOP20封装。这对于汽车小产品来说,简直就是量身定做。
# F" O' V4 }1 e9 j' _5 X
+ d6 |+ y' A+ E不说了,赶紧动起来,先搭建最小系统,CAN收发器TJA1050+STM32F042+7533就是最简单的了,暂时不要晶振了,虽然CAN的波特率比较高的时候还是需要晶振的,不过一颗晶振也要好多RMB的 。! p- |  I: x' e% k" b5 q

9 q; U4 X, b% _: E! ^- J0 ~9 G
20161014174929589.png
6 Y+ Y  q& }- A; Y9 z
接下来最麻烦的事情来了,因为习惯使用IAR来做开发,而且积累下来的程序源码都是UCOSII的,网络上的开源代码居然都是KEIL MDK的,这下囧...
8 U4 A! }, m( ~* f$ }' W; w- j- f  P6 Q
不过也没办法,为了节省成本,只好多花点时间了 。
. {- e& q* }, k$ J9 b% D# \% K; x5 C4 p* d! i! H9 k
两根礼拜过去,基本都调通,代码架构也移植OK,这下终于可以把103的代码全部移植到F042上了。
! e0 q; t& E8 e1 t; J2 T
% P" n! I6 f- R9 X  c( d' b7 ~$ p) Z0 [1 k2 w1 {* X8 U$ D9 \

$ |' v/ e; H  O- p* Q$ A" b" b有几个要注意的:
' ]) s! ]/ Q5 s  _; e6 j4 W% c# d8 f
  I# J6 A' Z) c# Q/ M1.库函数区别:F042对很多库函数进行了修改,需要注意区别;
$ ^- B( I) M/ c* N1 U' L8 @/ U8 O( A2 s: J1 _$ p7 ]. Y
2.F042的CAN与103有所不同,需要参考寄存器定义,对于高速波特率,如500K、800K需要外置晶振;* e4 [6 X! l+ o3 k* v
* D( ?4 u" O) Q- _
3.无法使用USART1,因为是USART1/CAN/USB复用,这里被CAN占用了;
% K6 Y  S3 T' x/ E- N5 V$ G
9 P% @8 X9 D' C* L4.F042的配置文件没有规范化,很多寄存器定义只能从F072里面找,而又不能完全使用F072的配置文件;
# f' g3 D  R& S5 R% A/ K
: D! E: J: R8 ^$ i) ~% b5.F042的*it.c文件不规范,其实STM32F0系列的都一样,库函数版本低,没有把中断函数文件做好规范化,导致很多函数定义混乱;7 e6 E! ^& ~8 z* K, c3 y
1 }# I/ S: ~: W/ _- n6 j
6.时钟安全CSS的内容完全没有提及,虽然从各种资料能找到介绍,但是基本没人用,也没关注到CSS的重要性;
7 M+ T( e3 [6 f5 \# a7 a
1 v! B1 I0 l/ g5 ]( U7.F042的功耗要小很多,在同样的时钟8MHZ下,F042电流只有4mA, 103达到9mA以上;6 ?0 q/ }3 r+ `6 x- C" L+ A  G! s

) M7 s' c! o; m8.F042的USART1是增强型的串口,支持LIN 主从模式,UART2是普通串口,不能用于LIN主模式;
' f: ^5 G+ w- y" \* P; D0 m2 ?
( X$ q# c& U! v; y) b8 E+ j# [9.P042F4标称FLASH容量是16K,但是实际上容量是32K,F042F6倒是真的只有32K,这搞不懂是为啥;
  E9 N% N" s8 w" w4 w
: s! m  F' T+ a! f1 _0 i3 S2 z& O10.低功耗方面做得很好,比F1系列方便很多。5 L( N3 e! |% z3 \

5 p; d( g9 k3 S# Q4 q最后希望F042会和103一样,价格越来越便宜,质量越来越好。
% A5 h0 r  c. d+ U+ u% F; j. B3 I# M( v9 D6 y; K* T4 @
-------------------------------------------------------------
+ W/ [% f7 A& Q6 }/ h2 s! H* S/ |: A. _1 G
20180330新增问题:
/ x$ z2 c; I( p. X' b2 A0 E
" g. c4 W' Y5 m9 s/ m* u4 L因为用这颗芯片同时做了CAN接口和LIN接口,发现并不能完整移植F1XX系列的LIN函数库。因为F0XX系列的函数库相对F1XX缺失了很多的LIN有关函数,比如有一个函数 Send_Break()是做LIN通信非常必要的却根本没有找到函数定义。为此花了很多时间研究如何实现SendBreak功能,一个月多月了也还是不得其所,最后还是花钱在某宝上找到了一个牛人帮忙解决的。1 m2 Z% w: q1 X; A4 Y' c; f

. f2 Y$ g6 [" E4 \% q, h( h有些问题看起来很简单,真正做产品的时候还真不是那么回事。% e2 \  S! M! X9 O6 K' R
2 Z2 |8 Z$ f' K4 ?' Q2 ^
* ]0 K' q2 k/ I* J, a, h1 U$ I* e
收藏 评论0 发布时间:2021-11-21 21:26

举报

0个回答

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版