STM32F105 CAN总线数据收发调试
2018-11-10 20:18
211 查看
- 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中的数据。
相关文章推荐
- BeagleBone Black CAN总线读写数据操作
- SIM900A TCP/UDP 数据收发 , 串口调试
- dsp控制DM9000实现802.3数据收发第三篇,调试过程程序第三版;采用外部引脚中断方式获取中断,优化掉帧现象
- BeagleBone Black CAN总线读写数据操作
- STM32的CAN总线调试
- can总线(三)--如何通过波形解析can总线数据
- STM32的CAN总线调试——与以太网转CAN联调的小问题
- 如何通过波形解析can总线数据
- can总线(三)--如何通过波形解析can总线数据
- 通过波形分析方法调试UART数据收发
- STM32 CAN 总线调试 经验
- TX2平台下can总线收发功能的实现(三)——发送队列异步io接收程序
- 基于dsPIC33EP256MC504的CAN总线数据传输的小结
- PCI-CAN卡驱动与数据通信调试小记
- ROS CAN总线设备接入(二)can总线数据提取和以ros topic形式发布
- can 总线 intel、motorola数据填充算法
- CAN总线自收发程序
- 如何在一台电脑上调试串口收发数据
- TX2平台下can总线收发功能的实现(一)
- CAN总线——数据传输故障处理