## 前提说明:
本实验基于28335进行
## 难点1:ECAN模块数据发送
简述:CAN通过邮箱进行数据发送,一次可以发送8个字节的数据。
在DSP28335的ECAN模块中将这8个字节数据分为DL(低4字节) 和 DH(高4字节)
可以在程序中对其进行先后赋值,如:
ECanbMboxes.MBOX0.MDL.all = 0x0000001;// ECanbMboxes.MBOX0.MDH.all = 0x0000002;//
那么此时数据如下图所示(这里的高4字节和低四字节是反的,这个仍然需要进一步研究):
从图中可以看出当DBO = 0时,8个字节正常赋值。
第二种情况,当DBO = 1时,如下图所以:
总结:DBO = 0,假设此时MDL = 0x00000001,那么发送的时候MDL就是0x00000001;
当DBO = 1,那么发送的时候MDL就是0x10000000;
## 难点2:ECAN模块ID设置
简述:CAN通讯中有好几种类型的帧数据,这里只说一种--------》数据帧
数据帧根据ID长度不同又分为
1. 标准帧
- ID长度为11位
2. 扩展帧
- ID长度位28位
说明:扩展帧如果要在程序中使用的话需要将MSGID的IDE位置为1,才能起效,否则扩展帧无效,请参考图:
## ECAN 模块学习总结:
### ECAN发送数据程序配置步骤:
1. 配置GPIO
2. 配置邮箱
2.1 邮箱ID配置
2.2 邮箱类型配置(是作为发送邮箱还是接收邮箱)
2.3 邮箱使能
2.4 邮箱单次发送的数据量DLC(如:8个字节)
2.5 邮箱是否为远程帧设置
2.6 邮箱数据填充
如果该邮箱为发送邮箱的话,需要提前准备数据(MDL,MDH)
补充这里的MDL,MDH设置之后,发送出去的数据用USB-CAN适配器检测到的数据是MDL,和MDH相反的,这个
仍然没有找出原因,需要注意一下。
2.7 邮箱中断掩码设置
3. 波特率设置
需要按照一定的顺序开启和关闭CCR和CCE,如下图所示:
4. ECAN模式配置
如:自测模式,正常模式
5. 开始发送数据
5.1 邮箱发送使能
ECanbRegs.CANTRS.bit.TRS0 = 1;//邮箱0发送使能
5.2 等待发送完成标志位被置1
while(ECanbRegs.CANTA.all != 0x00000001 ) {} // Wait for all TAn bits to be set..
5.3 清除标志位
ECanbRegs.CANTA.all = 0x00000001;//0x0000FFFF; // Clear all TAn 清除所有TA