CAN

2.1版本stm32f10x分支bxcan驱动波特率设置的bug

发布于 2016-12-09 13:23:49
背景:
时隔了好几年,又要用到stm32的can了,看到rt-thread增加了can驱动,can.c和bxcan.c,欣喜,立马下来测试下,折腾了两天波特率始终对不上,一开还以为是时钟设置问题,后来发现每次配之后和实际得到的波特率的比值也不是个固定的数,应该不是时钟配置问题,就看了下源码。找到问题所在,割一下回报bug
-------------------------------------------------------------------------------------------------------------------------------------
文件:bxcan.c
位置:494行-498行
 pcan->BTR = (mode                         | 
((BAUD_DATA(SJW, baud_index)) << 24) |
((BAUD_DATA(BS1, baud_index)) << 16) |
((BAUD_DATA(BS2, baud_index)) << 20) |
(BAUD_DATA(RRESCL, baud_index)));

498行改为 :
 (BAUD_DATA(RRESCL, baud_index))-1); 
就ok了。

解释:参考下stm32官方固件库和,stm32f10xx官方参考手册一看就明白了

顺便说下,1m波特率下,只跑例程,1秒 7千多标准帧,速度还是蛮6的,作者能给个使用文档就好了,

查看更多

关注者
0
被浏览
2.5k
4 个回答
aozima
aozima 2016-12-09
拒绝白嫖,拒绝键盘侠!
不错! 欢迎分享。

可以学习一下提交 pull request.
Carry
Carry 2018-12-02
aozima 发表于 2016-12-9 20:17
不错! 欢迎分享。

可以学习一下提交 pull request.


楼主可以分享一下,can怎么在rtt上使用吗?在menuconfig里面勾选了CAN和UART但是不知道实际怎么使用rtt的函数达到想要的目的。谢谢
Carry
Carry 2018-12-02
Carry 发表于 2018-12-2 00:35
楼主可以分享一下,can怎么在rtt上使用吗?在menuconfig里面勾选了CAN和UART但是不知道实际怎么使用rtt的 ...


如果是online pkgs还可以在git上看看例子,比如mpu6xxx,但是本身自带的DeviceDrivers还有UART勾选了之后,不知道rtt是怎么操作才能方便使用它们

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览