完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
因为从事汽车CAN总线及多媒体解码盒,常常需要解一些简单的CAN数据,需要的硬件IO不多,仅仅是CAN+UART,所以最近为了节省成本,也是花了不少心思。
直到最近发现了STM32F042,据介绍,这是带CAN的最小封装芯片。 STM32F042----Cortex-M0内核 。14年初推出的芯片,号称带CAN总线的最便宜的MCU.... 仔细查了下手册,果然很适合我的项目,而且价格也便宜,据说RMB 4-6之间,最小TSSOP20封装。这对于汽车小产品来说,简直就是量身定做。 不说了,赶紧动起来,先搭建最小系统,CAN收发器TJA1050+STM32F042+7533就是最简单的了,暂时不要晶振了,虽然CAN的波特率比较高的时候还是需要晶振的,不过一颗晶振也要好多RMB的 。 接下来最麻烦的事情来了,因为习惯使用IAR来做开发,而且积累下来的程序源码都是UCOSII的,网络上的开源代码居然都是KEIL MDK的,这下囧... 不过也没办法,为了节省成本,只好多花点时间了 。 两根礼拜过去,基本都调通,代码架构也移植OK,这下终于可以把103的代码全部移植到F042上了。 有几个要注意的: 1.库函数区别:F042对很多库函数进行了修改,需要注意区别; 2.F042的CAN与103有所不同,需要参考寄存器定义,对于高速波特率,如500K、800K需要外置晶振; 3.无法使用USART1,因为是USART1/CAN/USB复用,这里被CAN占用了; 4.F042的配置文件没有规范化,很多寄存器定义只能从F072里面找,而又不能完全使用F072的配置文件; 5.F042的*it.c文件不规范,其实STM32F0系列的都一样,库函数版本低,没有把中断函数文件做好规范化,导致很多函数定义混乱; 6.时钟安全CSS的内容完全没有提及,虽然从各种资料能找到介绍,但是基本没人用,也没关注到CSS的重要性; 7.F042的功耗要小很多,在同样的时钟8MHZ下,F042电流只有4mA, 103达到9mA以上; 8.F042的USART1是增强型的串口,支持LIN 主从模式,UART2是普通串口,不能用于LIN主模式; 9.P042F4标称FLASH容量是16K,但是实际上容量是32K,F042F6倒是真的只有32K,这搞不懂是为啥; 10.低功耗方面做得很好,比F1系列方便很多。 最后希望F042会和103一样,价格越来越便宜,质量越来越好。 ------------------------------------------------------------- 因为用这颗芯片同时做了CAN接口和LIN接口,发现并不能完整移植F1XX系列的LIN函数库。因为F0XX系列的函数库相对F1XX缺失了很多的LIN有关函数,比如有一个函数 Send_Break()是做LIN通信非常必要的却根本没有找到函数定义。为此花了很多时间研究如何实现SendBreak功能,一个月多月了也还是不得其所,最后还是花钱在某宝上找到了一个牛人帮忙解决的。 有些问题看起来很简单,真正做产品的时候还真不是那么回事。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1627 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1550 浏览 1 评论
984 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
688 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1601 浏览 2 评论
1867浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
650浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
518浏览 3评论
536浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
506浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 13:19 , Processed in 0.894337 second(s), Total 76, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号