最近在做的项目,DSP通过CAN总线与上位机通信。

CAN(Controller Area Network)特点:所有单元可以同时发送消息,发送高优先级ID消息的单元。CAN总线最大的优点是其高效性和可靠性,理论上总线可挂载的单元总数是没有限制的,实际上可连接的单元数受总线上的时间延迟及电气负载的限制。

DSP中内置了CAN协议内核CPK,有32个可配置为接收或发送的邮箱。eCAN模式下,邮箱31具有最高的优先级。

简单解释一下TI提供的例程:

1. ECanaShadow的作用:ECanaRegs不支持位操作,TI的例程中将ECanaRegs赋给ECanaShadow,对影子寄存器进行位操作,提高代码的可读性。

2.ECanaRegs.CANTRS置位后开始发送数据,发送成功后对应的ECanaRegs.CANTAn会置位,向其写1进行复位,继续发送。

3.TI的例程ECANA_to_B中只配置了发送邮箱,要想实现CANA发送,CANB接收需要配置一个接收邮箱。ID与发送邮箱相同,注意在ECan.c中选择自己板子上对应的CAN引脚。

4.ECan接收CAN_USB发送器的信息,通过ECanasShadow.CANRMP.bit.RMPn的值来判断是否接收到消息。当RMPn为1时接收到消息,将其写1复位后继续接收。

5.ECan接收中断的配置:ECanaShadow.CANGIM.bit.I0EN=1、ECanaShadow.CANMIM.bit.MIMn=1。在中断函数里对RMPn写1复位,清除PIEACK的中断标志位。

总结:TI官方提供的ECan.c中已经将ECANA和ECANB都配置好了,我们只需要在接收和发送时对相应的RMPn(接收)和TAn(发送)进行软件复位即可连续接收发送。

PS:与CAN_USB转换器联调时,要注意接线正确,转换器的波特率要与程序配置的一致。

TMS320F28335-CAN模块编程相关推荐

  1. Linux内核编译与模块编程

    写在前面的话: 作为一个做完这个实验的软工狗.表示心里几经波澜 , 一招不慎可能全盘皆输,从头再来. 我也不多说什么,做过这个实验的人,我们相视一笑吧. :) 我把整个过程分享在下面,包括我碰到的问题 ...

  2. 机甲大师s1 python_大疆机甲大师S1,可视化模块编程机器人

    原标题:大疆机甲大师S1,可视化模块编程机器人 6月12日,大疆机甲大师RoboMaster S1正式发布.这是大疆旗下首款教育机器人,目标定位青少年人群,同时支持Scratch的可视化模块编程,极大 ...

  3. 三菱fx3u plc程序自己写的三菱fx3u程序 有伺服定位控制 触摸屏 模拟量 FB模块 编程方式很清楚明了

    三菱fx3u plc程序自己写的三菱fx3u程序 有伺服定位控制 触摸屏 模拟量 FB模块 编程方式很清楚明了 适合初学者学习 :828668626283056工控老司机

  4. Linux模块编程-Linux(17)

    前言 本博文的相关操作均是我亲为的来,你萌在跟着做的时候,如果遇到问题可以随时留言,一起探讨. 今天主要写一写Linux内核模块编程,是我的操作系统实验课内容,如果想要看看内核系统调用编程的,看这个 ...

  5. 嵌入式GPS模块编程 NMEA协议 0183协议

    嵌入式GPS模块编程 NMEA协议 0183协议 学前小知识: NMEA协议是为了在不同的GPS导航设备中建立统一的RTCM(海事无线电技术委员会)标准,它最初是由美国国家海洋电子协会(NMEA-Th ...

  6. 无线模块 编程开发的讨论

    最近在研究的产品主要是SIicon Labs公司SI4463无线模块系列的编程,这是一款性能极其优良的射频收发器,拥有极大的功率,和接受范围.接下来我介绍些关于这些产品的一部分性能和作用给大家了解下. ...

  7. Linux中netfilter模块编程实践

    上篇我们看了netfilter的实现机制,这篇来实现下netfilter模块实操一把. 为了注册一个钩子,需要填充nf_hook_ops结构体,包括优先级,钩子地点和钩子函数.然后调用nf_regis ...

  8. python模块编程教程_python进阶教程之模块(module)介绍

    我们之前看到了函数和对象.从本质上来说,它们都是为了更好的组织已经有的程序,以方便重复利用. 模块(module)也是为了同样的目的.在Python中,一个.py文件就构成一个模块.通过模块,你可以调 ...

  9. linux驱动基础开发2——linux 驱动开发前奏(模块编程)-转

    一.linux内核模块简介 linux内核整体结构非常庞大,其包含的组件也非常多.我们怎么把需要的部分都包含在内核中呢?      一种办法是把所有的需要的功能都编译到内核中.这会导致两个问题,一是生 ...

  10. 蓝桥杯NE555模块编程

    一.原理图: RB3:滑动变阻器 THR:高电平出发端 TRIG:低电平触发端 OUT:频率输出口 其中两者电压均小于各自的参考电压时放电管截至,两者电压均大于各自的参考电压时放电管导通,NE555是 ...

最新文章

  1. 生信服务器 | Linux 时间戳和标准时间
  2. Android开发UI之Toast的使用
  3. DIV+CSS两种盒子模型(W3C盒子与IE盒子)
  4. python数据类型基础与解压缩
  5. 史上最简洁易懂的PGP邮件加密教程(MAC OS X版)
  6. 如何修改服务器mac地址,如何修改服务器mac地址
  7. Jquery中如何获取元素的文本,值,属性和内容
  8. Create groups 与 Create folder references的区别
  9. JAVA 代码交互率低的原因分析,深入剖析Java编程中的中文问题及建议最优解决方法...
  10. 手机modem开发(9)---LTE注网总体流程
  11. java判断long 大于0,JAVA的一道习题:找出五个大于Long.MAX_VALUE的素数
  12. 微信小程序 video 视频 组件
  13. 驱动精灵w8ndows xp sp2,爱普生Epson TM-L60II打印机驱动官方正式版下载,适用于winxp,winvista,win7,win8,win10-驱动精灵...
  14. 【PyTorch】深度学习实战之PyTorch实现线性回归
  15. 小甲鱼python课后题共多少讲_小甲鱼Python第九讲课后习题--010列表
  16. 豆瓣读书数据分析实战
  17. 办公实用资源网站分享,每一款都能让你升职加薪
  18. 当你提出的分手被当真,应该如何去挽回
  19. apigateway-kong(二)admin-api(结合实例比官网还详细)
  20. java中Map集合、模拟斗地主洗牌发牌、JDK9对集合添加的优化

热门文章

  1. windows上Tomcat注册为服务
  2. 【Python 第3课】IDE的介绍及使用
  3. echarts-员工看板排版设计
  4. Office 2013 Preview专业增强版下载
  5. 毛新生--Web 2.0讲解
  6. 如何将Java代码导出变为可执行jar文件
  7. 指示线宽度_幼儿逻辑第15课:安全交通标志线,隐藏了大智慧!
  8. 为什么年轻员工不愿意巴结领导了?70后和90后代际冲突的六个底层逻辑
  9. 认真的雪歌词的c语言编码,薛之谦认真的雪歌词
  10. Ueditor1.4.3.3+springMvc+maven 实现图片上传