ECan总线模块解读.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ECan总线模块解读

ECan总线模块 访问ECAN模块可分为控制/状态寄存器和32个邮箱的访问。每个邮箱都有一个可编程接收屏蔽寄存器,其所占用的512字节RAM都可以配置为发送或接收邮箱。每个邮箱包括8字节数据区,29位标识符和几个控制位,每个邮箱都是有4个32位的寄存器构成。即: MSGID 存储消息ID;(消息标志寄存器) MSGCTRL 定义字节数,发送极性,远程帧;(消息控制寄存器) MDL 4字节数据 MDH 4字节数据 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)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档