STM32F105 CAN总线数据收发调试

本文详细介绍了STM32F105的CAN通信端口特性,包括CAN1和CAN2的关系。在调试CAN总线发送时,通过检查GPIO配置、波特率和信号波形确保数据发送正常。接收端的调试涉及引脚配置、过滤寄存器设置及中断配置,确保数据能正确接收并进入FIFO。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  •  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,如果
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值