3.1.2、CAN总线单个设备环回测试代码部分
(1)16位列表模式:IdHigh,IdLow,MaskIdHigh,MaskIdLow这四个参数分别存入一组ID,可存4个标准ID。需要两个函数,一个判断接收FIFO里是否有报文,另一个读取接收FIFO,把报文内容取出来。MaskIdHigh、MaskIdLow组合到一起,存入第二组32位ID;MaskIdHigh、MaskIdLow组合到一起,存入对应屏蔽位;IdHigh存入第一组ID,Mas
目录
1、开启GPIO和CAN时钟、初始化GPIO口

PA12——>CAN_Tx,PA11——>CAN_Rx
2、CAN外设初始化


CAN_Init之后,CAN就进入正常模式了
(1)CAN_Mode参数(测试模式)

选择LoopBack环回模式
(2)配置位时序相关参数



(3)6个可更改的特色配置
ENABLE表示置1,DISABLE表示置0

NART是不自动重传,给DISABLE就是自动重传;
TXFP:发送邮箱优先级;
RFLM:FIFO锁定;

AWUM:自动唤醒

TTCM:时间触发通信模式;

ABOM:离线自动恢复
3、配置过滤器
CAN1和CAN2共用一套


CAN进入正常模式后就自动开始工作了,没有CAN_Cmd这个函数
1)
(1)16位列表模式:IdHigh,IdLow,MaskIdHigh,MaskIdLow这四个参数分别存入一组ID,可存4个标准ID
(2)16位屏蔽模式:
IdHigh存入第一组ID,MaskIdHigh存入对应的屏蔽位;
IdLow存入第二组ID,MaskIdLow存入对应的屏蔽位;
(3)32位列表模式:
IdHigh、IdLow组合到一起,存入第一组32位ID;
MaskIdHigh、MaskIdLow组合到一起,存入第二组32位ID;
(4)32位屏蔽模式:
IdHigh、IdLow组合到一起,存入32位ID;
MaskIdHigh、MaskIdLow组合到一起,存入对应屏蔽位;

测试时用这个

2)

(1)FilterFIFOAssignment配置过滤器关联:通过此过滤器的报文进FIFO0排队还是FIFO1排队
(2)FilterActivation激活:相当于过滤器的一个开关,如果不激活就不会工作
4、封装一个发送报文的函数

CRC由硬件自动生成和校验

Data是个数组,空间为8个字节

5、CAN总线接收
可使用查询方式接收(较简单)或使用中断(接收效率更高)
(1)查询接收
需要两个函数,一个判断接收FIFO里是否有报文,另一个读取接收FIFO,把报文内容取出来
1)判断接收FIFO里是否有报文(检查函数)
如果有报文,返回1;无报文返回0

2)读取接收FIFO
返回ID,数据长度,数据内容
由于C语言不支持多返回值,所以用指针

6、主函数


更多推荐


所有评论(0)