STM32F105 CAN总线数据收发调试

发布者:独享留白1028最新更新时间:2019-09-30 来源: eefocus关键字:STM32F105  CAN总线  数据收发  调试 手机看文章 扫描二维码
随时随地手机看文章

STM32F105 CAN通讯端口:

STM32F105有2路CAN,不是两路独立的CAN,而是一个主端口CAN1和一个从端口CAN2,其隐含的意思就是如果只使用1路CAN进行通讯,可以使用主端口CAN1,此时可以忽略CAN2,但是如果只用从端口CAN2进行通讯的话,需要先打开CAN1的时钟,否则CAN2也不能正常工作,如果使用两路CAN同时工作时,需要注意CAN1复位时,CAN2也被复位了,所以如果在CAN2初始化之后CAN1复位,则CAN2还有重新初始化;


调试CAN总线的发送:

运行发送程序,如果TX引脚有输出信号脉冲,说明引脚的配置正确,如果引脚没有输出脉冲,需要检查GPIO的配置;用示波器检测TX引脚的信号波形,查看波特率是否正确,如果不正确需要修改寄存器的参数配置;用示波器查看CAN总线上的通讯信号是否正常;使用CAN收发模块接收STM32F105所发送的数据,应该能正常收到数据。到这里基本上CAN发送的功能就调试完成了,剩下的就是细节上的调整了;


调试CAN总线的接收:

可以先去掉CAN总线物理层的芯片,将RX引脚分别接低电平/高电平,然后查看寄存器CAN_MSR中的RX和SAMP位,是否与RX接的电平一致,如果一致说明引脚配置正确,否则需要检查引脚的配置,例如IO端口号、时钟允许、重映射等配置;焊接上物理层转换芯片,使用CAN收发模块发送数据,STM32F105接收,因为发送已经正常,所以波特率肯定是正确的;CAN收发模块连续发送数据,查看寄存器CAN_RF01和CAN_RF1R寄存器,看其中的FIFO数量是否变化,若随着接收的数据增加并溢出,则说明过滤寄存器配置正确,如果一直为0不变化,说明过滤寄存器配置不对,STM32F105从RX引脚接收到的数据首先进入过滤寄存器,通过过滤寄存器再定向到FIFIO0或FIFO1,所以即使不想使用过滤器过滤数据的话,也需要对CAN1和CAN2分别配置至少一个过滤寄存器,只是在过滤的规则上设置成不过滤任何数据,否则没有过滤寄存器到FIFO的定向,数据就不能到达FIFO中,STM32F105复位后默认的0-13号过滤寄存器可以定向到CAN1的FIFO0或FIFO1,14-27号过滤寄存器定向到CAN2的FIFO0或FIFO1,如果需要改变这个边界的话,可以使用 CAN_SlaveStartBank(n);进行调整边界,但要注意,边界之前的过滤寄存器用于CAN1,边界之后的过滤寄存器用于CAN2;FIFO能够接收到数据,就可以开启中断了,开启CAN_IER中相应的中断,并设置中断优先级,就可以利用中断接收CAN数据了,通过设置合理的过滤寄存器,可以分别处理CAN1的FIFIO0、FIFO1以及CAN2的FIFO0和FIFO1中的数据。

关键字:STM32F105  CAN总线  数据收发  调试 引用地址:STM32F105 CAN总线数据收发调试

上一篇:USART 串口 DMA 发送和接收
下一篇:STM32学习笔记(十) CAN通讯测试(环回模式)

小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved