STM32 CAN通信一:环回模式

最近在学习CAN通信协议,先测试了一下环回模式,以确认硬件电路是没有问题的。由于手头上暂时没有逻辑分析仪,后期再测试CAN通信正常收发模式。期待【STM32 CAN通讯之二:正常模式】。记录一下整个测试的过程,算是一种总结,后期方便自己查阅,同时也可以给正在搞CAN通信的小伙伴一点点参考借鉴。

软件:STM32CubeMX(V5.2.0)+KEIL

本例程采用的芯片是STM32F103RET6,其中CAN通信部分硬件电路连接如下图所示,CAN_P和CAN_N分别连接到芯片的PA11和PA12引脚上,PCB布线时,尽量走差分等长线。

 STM32CubeMX配置如下:

 

时钟及下载方式根据个人的实际情况进行选择。CAN参数配置如下:

模式选择回环模式,并打开RX0中断(接收中断)。时钟配置如下:

 主要配置就这些,点击生成代码即可。main函数中主要代码如下:

紫色框标注的部分是发送数据的帧头,新版本的发送数据函数跟老版本有差异,老版本的发送函数:

 CAN_Transmit(CAN1, &CanTxMessage);       //发送CAN报文

新版本的发送函数:

 HAL_CAN_AddTxMessage(&hcan,&Can_Tx,txdata,&pTxMailbox); //发送CAN报文

在本例中使用的是新版本的函数,目前网上多数的都是老版本的,新版本的教程很少,因此写这篇笔记的另一个目的也是方便大家查阅资料(因为目前使用STM32CubeMX生成的代码以及库文件都是新版本的)。

STM32CubeMX自动生成的代码中没有配置过滤器,因此过滤器需要手动配置,添加在初始化函数中。配置代码在can.c中,注意代码要添加在BEGIN和END之间,否则重新生成代码时,会被覆盖掉,所有自行添加的代码都要遵守这个原则。

关于开启接收中断函数的说明,在这个函数中已经开启了中断,所以不需要再添加开启中断的代码。

新版本的库文件,发送函数中,将帧头和数据合并到一个函数中了,while循环中不断发送数据,中断服务函数接收数据。

 

 主函数中发送的数据,回环模式即自发自收。不需要借助外部的硬件。

调试模式下查看接收的数据:

接收与发送的数据一致,说明回环模式测试成功。

源码地址:

链接:https://pan.baidu.com/s/1QG1byTvXtybWy-4sSGl52w 
提取码:b8ky 

  • 24
    点赞
  • 112
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值