- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ECan总线模块
访问ECAN模块可分为控制/状态寄存器和32个邮箱的访问。每个邮箱都有一个可编程接受屏蔽寄存器,其所占用的512字节RAM都可以配置为发送或接收邮箱。每个邮箱包括8字节数据区,29位标识符和几个控制位,每个邮箱都是有4个32位的寄存器构成。即:
MSGID存储消息ID;(消息标志寄存器)MSGCTRL定义字节数,发送极性,远程帧;(消息控制寄存器)MDL4字节数据MDH4字节数据
ECAN控制器总共有15个32位的控制寄存器,控制着位定时器、邮箱的发送或接收使能、错误状态及CAN中断等。其控制寄存器的状态寄存器只能允许32位访问,而接收屏蔽、时间标识寄存器、超时寄存器和邮箱所在的CAN范围则可以以8位、16位和32位方式访问。该程序中都是进行32位访问,通过设置影子寄存器可实现对位进行操作。如以下程序:
struct ECAN_REGS ECanbShadow;
EALLOW; // EALLOW enables access to protected bits
ECanbShadow.CANTIOC.all = ECanbRegs.CANTIOC.all;
ECanbShadow.CANTIOC.bit.TXFUNC=1; //发送
ECanbRegs.CANTIOC.all = ECanbShadow.CANTIOC.all;
EALLOW是指允许对受保护的寄存器操作,通常和EDIS配套使用,EDIS是指恢复被保护寄存器的状态。
#define EALLOW asm( EALLOW)
#define EDIS asm( EDIS) (device.h)
初始化CAN步骤:
使能GPIO口(GPIO8为CANTX,GPIO10为CANRX);
设置CANTX和CANRX为CAN的通信引脚;
选择是增强型还是标准型;
相关寄存器清零;(邮箱控制寄存器清0;复位TA;RMP寄存器所有位置1,表示邮箱中存在发送的数据;清除所有中断标志)
设置时间配置寄存器的三个步骤(设置CCR=1,等待CER=1,然后设置CANBTC);
ECanbShadow.CANMC.all = ECanbRegs.CANMC.all;
ECanbShadow.CANMC.bit.CCR = 1 ;
ECanbRegs.CANMC.all = ECanbShadow.CANMC.all;
ECanbShadow.CANES.all = ECanbRegs.CANES.all;
do
{
ECanbShadow.CANES.all = ECanbRegs.CANES.all;
} while(ECanbShadow.CANES.bit.CCE != 1 );配置时钟程序此处省略。
6. 配置CANBTC,确认TSEG1和TSEG2不等于0,如果这两个同时为0,则CAN模块不能退出初始化模式。
波特率计算公式:
波特率=SYSCLK/BRP*BT /*BRPreg,TSEG1,TSEG2存在于CANBTC寄存器*/
BRP=BRPreg+1
BT??=TSEG1+1+TSEG2+1+1
7.设置CANMC寄存器的位,请求正常运行,设置CCR=0,等待CER=0;
8.禁用所有邮箱;ECanbRegs.CANME.all = 0;
9.通过对邮箱寄存器的配置设置扩展性和给每个邮箱设置地址;
10.将0-15个邮箱设置为Tx,16-31设置为Rx;
ECanbRegs.CANMD.all = 0xFFFF0000;
11.使能所有邮箱;ECanbRegs.CANME.all = 0
12.设置邮箱控制寄存器的DLC位;
ECanbMboxes.MBOXn.MSGCTRL.bit.DLC = 8;(0=n=15)
指定数据为8位;
13.设置邮箱中断级别。
ECanbRegs.CANMIL.all = 0
14.使能接收邮箱全局中断。
ECanbRegs.CANMIM.all = 0xFFFF0000;
15.使能中断0;
ECanbRegs.CANGIM.all = 0
ECAN以报文的形式发送或接收信息,报文格式分为标准数据帧格式和扩展数据帧格式;
标准数据帧格式:
RTR位用于区分数据帧和远程帧。对于标准数据帧,RTR位清零。?仲裁字段之后是一个6位的控制字段,提供关于报文内容的更多信息。控制字段中的第一位是标识符扩展(Identifier?Extension,IDE)位,用于区分报文是标准数据帧还是扩
文档评论(0)