基于F2812的eCAN自测程序分析.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于F2812的eCAN自测程序分析

基于F2812eCAN的自测程序分析 1 eCAN总线模块 1.1 CAN总线介绍 近年来CAN总线以其可靠性高、实时性好而在工业现场控制、电力通信、航空航天等领域得到广泛应用。C28x系列DSP芯片内有增强型CAN总线通信接口,该接口能够与CAN2.0B标准完全兼容。CAN总线串行协议具有很强的抗干扰能力,能够在电磁干扰的环境下进行通信。eCAN模块具有32个完全可配置邮箱和时间标记功能,能够实现灵活、可靠的串行通信。 1.2 eCAN结构和特点 eCAN的特点包括以下9点: ① 与CAN2.0B标准完全兼容; ② 支持最高1Mb/s的传输速率; ③ 含有32个邮箱,每个邮箱都有很多功能; ④ 低功耗模式; ⑤ 可编程的总线唤醒功能; ⑥ 可自动应答远程请求消息; ⑦ 在发生仲裁丢失或错误时,自动重发; ⑧ 可通过特定消息(与16号邮箱有关)与32位时间标记计数器同步。 ⑨ 具有自测试模式; F2812的eCAN模块由一个32为构架的CAN控制器组成,为CPU提供了完整的CAN协议,减少CPU开销。eCAN模块主要由CAN协议内核(CPK)和消息控制器组成。 1.3 eCAN工作方式 1.3.1 初始化、邮箱的配置和收发 ① eCAN模块的初始化。eCAN模块在使用之前必须初始化,并且只有在模块处于初始化模式下才能进行初始化。通过把CCR位置1可设置为初始化模式,并且只有当CCE位为1时,才能开始执行初始化操作,然后配置各个寄存器。 ② eCAN模块的配置。 ③ 配置发送邮箱。 ④ 发送消息步骤。 ⑤ 配置接收邮箱。 ⑥ 接收消息步骤。 ⑦ CAN波特率计算。波特率为每秒传输的位数: 1.3.2 远程帧邮箱的处理 远程帧有两种操作模式:一种是本模块向另一节点发出数据请求;一种是本模块应答另一点发出的数据请求。 向另一节点请求数据。 应答一个远程请求。 更新数据区。 1.3.4 中断 eCAN模块有两种中断类型:一种是与邮箱相关的中断,另一种是系统中断,用来处理错误或系统相关的中断。 中断配置。如果满足了某个中断条件,就会置位相应的中断标志。 邮箱中断。eCAN模式中的32个邮箱和标准CAN控制模式中的16个邮箱都可以在两条输出线0/1上引起中断。这些中断都可配置为接收或发送中断。 中断处理。中断由中断信号线向CPU申请中断。在中断处理完后,CPU一般会清除中断源与中断标志。 1.4 eCAN发送和接收程序 功能描述:ECAN自测试程序CAN模块工作自测试模式MBX0发送MBX16——MBX1发送MBX17。该程序停地高速背靠背传输数据检查接数据正确性 #include DSP28_Device.h void mailbox_check(int32 T1, int32 T2, int32 T3); void mailbox_read(int16 i); //////////////////////////////////// Uint32 ErrorCount = 0; Uint32 MessageReceivedCount = 0; Uint32 TestMbox1 = 0; Uint32 TestMbox2 = 0; Uint32 TestMbox3 = 0; void CAN_INIT() { struct ECAN_REGS ECanaShadow; EALLOW; GpioMuxRegs.GPFMUX.bit.CANTXA_GPIOF6 = 1; // 设置GPIOF6为CANTX GpioMuxRegs.GPFMUX.bit.CANRXA_GPIOF7 = 1; // 设置GPIOF7CANRX EDIS; /*eCAN 控制寄存器需要32位访问想向单独位进行写操作编译器能会使其进入16位访问*/ EALLOW; ECanaShadow.CANTIOC.all = ECanaRegs.CANTIOC.all; // 把CANTIOC读入影子寄存器 ECanaShadow.CANTIOC.bit.TXFUNC = 1; // 外部引脚I/O使能标志位 // TXFUNC=1 CANTX引脚被用于CAN发送功能 // TXFUNC=0 CANTX引脚被作通用I/O引脚被使用 ECanaRegs.CANTIOC.all = ECanaShadow.CANTIOC.all; // 把配置好寄存器值回写 ECanaShadow.CANRIOC.all = ECanaRegs.CANRIOC.all; // 把CANRIOC读影子寄存器 ECanaShadow.CANRIOC.bit.RXFUN

文档评论(0)

dajuhyy + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档