历史上的今天
今天是:2024年09月20日(星期五)
2018年09月20日 | 对STM32的CAN1模块的总结
2018-09-20 来源:eefocus
从12月中旬到现在一直都在调试板子,把F107上的CAN1(PD0,PD1)转移到F105上的CAN1(PB8,
PB9),本来以为会是很简单的进行重映射就行了,但是生活处处是
充满“惊喜”啊!
在进行了重映射后发现CAN进不了中断,很郁闷!仔细检查了两个端点CAN的连接口后发现是没错的,但还是进
不了中断。那只能进行单步调试了,最后发现是在CAN的初始化模式成功后要进入正常模式时失败了,CAN的处理工
程是:
初始化模式:设置CAN_MCR 寄存器的INRQ 位为’1’ ,请求bxCAN进入初始化模式,然后等待硬件对CAN_MSR
寄存器的INAK 位置’1’ 来进行确认。当bxCAN处于初始化模式时,禁止报文的接收和发送,并且CANTX引脚输出隐
性位(高电平)。 初始化模式的进入,不会改变配置寄存器。
正常模式:在初始化完成后,软件应该让硬件进入正常模式,以便正常接收和发送报文。软件可以通
过对CAN_MCR 寄存器的INRQ 位清’0’ ,来请求从初始化模式进入正常模式,然后要等待硬件对CAN_MSR 寄存器的
INAK 位置’0’ 的确认。在跟CAN总线取得同步,即在CANRX引脚上监测到11个连续的隐性位(等效于总线空闲)后,
bxCAN才能正常接收和发送报文。
但就是在我的程序里,在INRQ清“0”了以后就在等待INAK的清零,直到超过定时退出返回CANINITFAILED,而
没有返回CANINITOK,所以也就是说我的CAN1模块初始化成功后根本就没有进入正常模式,又怎么会进入中断呢!
但是我在程序里分明按着例程来进行修改的,也进行了重映射了,检查多次后我把错误定位在硬件的接收电路,因为
在上面的模式解释处说到了关于CAN的Tx和Rx应该出现的高低电平,但是我用万用表测量我的Tx端是却是出现了低
电平,所以我又对CAN的收发设计电路进行了一番仔细的研究,电路应该是没错的。他妈究竟是哪错啊,要弄死人
啊!
在不经意间我把一个例程跑了,这个例程用到了两个CAN,我的硬件里有两路CAN的使用,而且硬件也是一模一
样的,但是我的CAN2电路还没有进行硬件的焊接,居然我的CAN2成功的进入了正常模式,因此我更肯定了是硬件的
问题,因为程序是一样的。但再次的硬件分析完了之后还是感觉硬件是没错的,那就只有先把焊了的电路先断了一
下,再进行调试,结果还是不行,看来还真不是错在硬件啊!
没办法了,只能是拿着万用表来查究竟是在哪一句在执行的时候把Tx脚的电平给拉低了,好不容易定位在
GPIO_INIT()程序里发现了电平变低的语句,但是在对比了CAN_BSRR和CAN_ODR两个寄存器后发现程序是对
的,搞毛啊!
最后突然想到在网上输入STM32、CAN、PB9进行查询,在百度文库的一篇文章里看到了人家对这个端口的重
映射的程序,偶然发现到了自己一个地方弄错了,一个很细小的地方,经修改,总算是解决了我的问题,怎么说吧,
希望后人不要犯我这种低级错误。
在这半个多月,我基本逛遍了所有的电子论坛,但是就没有人能帮忙解决,说没有也有一个帖子说了跟我同样的
问题,我也找到了他本人的QQ,想向他请教,有时候人是一直奇怪的动物,很欠抽的。我连续几天向他发消息,说
我的问题(这几天他一直没上线)语气很客气,一个字的回答没有,难得今天看见他上线了,再次发了我问题,还是
没有回答,我就火了,问候了一下他全家,果然来效果了,马上把我拉黑了!大家说这是安的什么心啊,不懂或者是
忘了的,是个正常人都会回一下,不要给人希望,浪费人家时间,欠抽的!
所以在此也希望大家有看到这的,希望大家以后在逛论坛的时候要是碰到有人提问,自己也懂的尽量的帮助一下
别人,你自己也可以有几分嘛!
以下一个链接是一个我的帖子,里面有我的程序和解决方法:
http://bbs.21ic.com/forum.php?mod=viewthread&tid=407287&page=1&extra=#pid2638733
上一篇:STM32 USB IAP 步骤
史海拾趣
|
哈哈,抽时间写了一个博客,说说自己学习dsp2812的体会,欢迎大家共同探讨哦~~~ https://home.eeworld.com.cn/my/space.php?uid=117818&do=blog&id=22384&cid=1945… 查看全部问答> |
|
USB作为一种新型的接口技术以其简单易用速度快等特点而备受青睐本文简单介绍USB 接口的特点和PHILIPS 公司的USB 接口芯片PDIUSBD12 并详细说明USB 软硬件开发过程中 应注意的问题… 查看全部问答> |
|
尚为科技-机房环境监控专家,机房环境监控产品专业厂商,产品具有稳定、易用、低功耗的特点,产品经过了权威部门的测试,已形成较完整的产品系列和行业解决方案,获得良好的用户口碑。 欢迎来电垂询,电话:0592-5204071 6300605 6300607 ...… 查看全部问答> |
|
我用台式机跟研华6552的工控板 wince系统 通过双机互联线连接 台式机ip是192.168.0.12 工控机是192.168.0.192 从台式机上ping 工控机没有问题 但是ActiveSync一直连接不上 ActiveSync图标一直是灰色的 … 查看全部问答> |
|
现在在调TELECHIPS中的TCC7901芯片板子,TCC7901有6个PORT,但只有4个通道,我老板要我把2。2的BSP中的4个通道都用上,但2。2的BSP默认是把CH0和CH2分别用在了调试和IRda中,所以只有两个串口可用,我的任务就是改CH0和CH2为可用,请问一下有没有调 ...… 查看全部问答> |
|
今天有空,开贴讲讲,怎样配合ST提供的库函数理解STM32F102/103的USB模块,以及怎么调用这些库函数来实现基本的USB通信。 题目很大,先只讲讲最简单的应用。… 查看全部问答> |




