STM32 CAN通信二:正常模式

昨天测试了CAN通信的环回模式,今天逻辑分析仪到手了,借助这一神器完成了今天的CAN通讯之正常模式数据收发。对于CAN通讯正常模式来说,没有逻辑分析仪或者CAN盒(某宝上可以买到),分析数据,想要调通的话只能看运气了,有了工具就可以轻松的看到数据的收发过程。

本次正常模式的测试是用两块板子进行测试,一块板子(STM32F103RET6)用于发送数据,另一块板子是正点原子的战舰开发板(STM32F103ZET6)用于接收数据(中断方式接收)。两块板子的CAN_H和CAN_H相连,CAN_L和CAN_L相连。

发送的板子STM32CubeMX配置及代码与前面的环回模式几乎一样,唯一不同的是初始化模式不同。请参考CAN通讯之一,这里不再赘述。

 对于接收的开发板,战舰V3,其配置过程与前面环回模式也类似,只是第一步选择的芯片不一样。CAN外设参数配置与前面一样。

同样的,也需要在can.c中添加过滤器配置的代码以及接收中断服务函数。

 在main.c中添加以下代码即可,至此,接收部分配置完成,添加的代码量很少。

因为在本例程中没有配置串口,所以在接收中断的地方设置断点,方便查看接收的数据。发送数据的板子在主函数while循环中间隔10ms发送一次数据,接收的开发板中断方式接收。

发送的数据:

 战舰V3开发板接收的数据:

 逻辑分析仪采集到的数据:

 发送数据与接收数据完全吻合。当然,用战舰开发板发送数据,用另一块板子接收数据也行,需要稍微修改一下代码,读者可自行去测试。

特别注意事项:CAN通信芯片是5V的,我刚开始调试的时候没有找到两根USB线供电,其中一块开发板使用J-LINK直接供电的,通信一直没有成功,后来将两块开发板都用5V供电,通讯正常。

源代码:

链接:https://pan.baidu.com/s/1L56eFRBkvNvfMQU9XQdaUA 
提取码:14nl 
 

  • 2
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值