CAN总线通信:实现MIC-3680与F28335 CAN总线通信的设置
博主原创;
实现MIC-3680与F28335 CAN总线通信的设置(MIC-3680CAN模块滤波使用单滤波模式):
CAN2.0A协议: (使用11位标识符)
<1>F28335发送,MIC-3680接收时:
F28335设置:1、设置MSGID寄存器中IDE位为0(即第31位)时,发送标准帧;
2、F28335发送的ID(即MSGID的28-18位)的设置要与MIC-3680的ACR0、ACR1的高三位一致,即ACPCODE的前11位相同,ACR的其它为补填为0,而且ACPCODE必须补充完整为32位二进制;(但是当MIC-3680的ACPMASK全设为FFFFFFFF时,ACPCODE不用必须为32位);
MIC-3680设置: 1、MIC-3680的ACPMASK设为0000FFFF(即通过设置屏蔽位来选择要比较的位数);
注:此时F28335和MIC-2380虽然可以比较32位数(即和发送过来的11位标识符、RTR位、数据场前两个字节(即MDL.all的前16位)比较),但是标识符ID的比较只用了11位,所以双方使用的都是CAN2.0A协议;
<2>F28335接收,MIC-3680发送时:MIC-3680的发送ID设置成与F28335接收的ID(即MSGID的28-18位)相同即可,同时,F28335可以设置屏蔽寄存器LAM使用屏蔽位来选择需要比较的位;
注:MIC-3680接收CAN标准帧时,单滤波配置时,F28335发送的标准帧的11位标识符、RTR位、数据场前两个字节(即MDL.all的前16位)参入滤波,对于参与的滤波位数据,所有ACPMASK为0的位所对应的ACPCODE位必须与参与滤波数据的对应位进行比较,所有比较位都相等则接收消息;
CAN2.0B协议: (使用29位标识符)
<1>F28335发送,MIC-3680接收时:
F28335设置:1、MSGID寄存器中IDE位为1(即第31位),发送扩展帧;
2、F28335发送的ID(即MSGID的28-0位)的设置要与MIC-3680的ACR0、ACR1、ACR2、ACR3的高五位一致
MIC-3680设置: 1、MIC-3680的ACPMASK设为00000007,设置完成即可接收;
<2>F28335接收,MIC-3680发送时:MIC-3680的发送ID(29位)设置成与F28335接收的ID(即MSGID的28-0位)相同即可,同时,F28335可以设置屏蔽寄存器LAM使用屏蔽位;
注:无论双方谁发送或者接收,双方比较的标识符ID位数为29位,所以双方使用的都是CAN2.0B协议;
终极总结:双方正在通信时的协议一定是一致的,只有协议一致才可能互通,毕竟这就是协议的作用;所说的CAN2.0B兼容CAN2.0A协议,应该是说硬件模块上通过自动或者手动设置,可以接收或者发送遵循CAN2.0B和CAN2.0A协议的消息;其实只要发送消息一方发送的帧格式确定了(即选定了使用哪个协议)之后,或者接收方接收的消息帧格式确定了之后,接收双方之间使用的协议就确定了,即比较的标识符ID位数就确定了,如果比较的标识符ID位不一样,则不会接受;在协议确定后,屏蔽寄存器的作用就是用来决定哪些位需要比较,哪些位不需要比较;
CAN总线通信:实现MIC-3680与F28335 CAN总线通信的设置的更多相关文章
- 总线接口与计算机通信(五)CAN总线
CAN网络图示 CAN的特点 CAN协议具有以下特点. (1) 多主控制 在总线空闲时,所有的单元都可开始发送消息(多主控制). 最先访问总线的单元可获得发送权( ...
- 总线接口与计算机通信(一)I2C总线
1. I2C总线的基本概念 1)发送器(Transmitter):发送数据到总线的器件 2)接收器(Receiver):从总线接收数据的器件 3)主机(Master):初始化发送. ...
- Android BLE与终端通信(三)——客户端与服务端通信过程以及实现数据通信
Android BLE与终端通信(三)--客户端与服务端通信过程以及实现数据通信 前面的终究只是小知识点,上不了台面,也只能算是起到一个科普的作用,而同步到实际的开发上去,今天就来延续前两篇实现蓝牙主 ...
- 通信对象 System.ServiceModel.Channels.ServiceChannel 无法用于通信,因为其处于“出错”状态。
通信对象 System.ServiceModel.Channels.ServiceChannel 无法用于通信,因为其处于“出错”状态. 在 System.ServiceModel.Channels. ...
- 通信对象System.ServiceModel.Channels.ServiceChannel 无法用于通信,因为其处于“出错”状态。
问题描述:在客户端站点访问WCF服务后,在页面停留时间过长,客户端站点将会报错.报错内容如下: 通信对象System.ServiceModel.Channels.ServiceChannel 无法用于 ...
- c# 说说开发通用通信库,尤其是分布式服务的通信
来,牛皮需要吹起,IT行业需要自娱自乐.开篇吹牛..... 现在我们通信真是各种各样,各种组件,但是就我的看法,功能越完善,封装越完善,牺牲的性能可能就越大,代码量就越大. 当然这不能阻挡IT大军的脚 ...
- Windows进程通信之一看就懂的匿名管道通信
目录 进程通信之一看就懂的匿名管道通信 一丶匿名管道 1.1何为匿名管道 1.2创建匿名管道需要注意的事项 1.3 创建匿名管道需要的步骤 1.4代码例子 1.5代码运行截图 进程通信之一看就懂的匿名 ...
- Android BLE与终端通信(三)——client与服务端通信过程以及实现数据通信
Android BLE与终端通信(三)--client与服务端通信过程以及实现数据通信 前面的终究仅仅是小知识点.上不了台面,也仅仅能算是起到一个科普的作用.而同步到实际的开发上去,今天就来延续前两篇 ...
- 中央事件总线 事件驱动架构(EDA) 解析事件总线的4种实现方式
事件驱动架构(EDA)https://mp.weixin.qq.com/s/nA8XFD2Rx_7qA_LxltGGHw https://mp.weixin.qq.com/s/cD3auglgKzOb ...
随机推荐
- 在win7环境下安装python2.6.6
Python2.x与3.x语法并不相同,这里装的是2.6.6的版本. 1.下载Python2.6.6: https://www.python.org/downloads/ 根据自身计算机的特点选择Py ...
- BZOJ 2002 && BZOJ 2409 LCT && BZOJ 3282 初步练习
#include <cstdio> ; inline void Get_Int(int & x) { ; ') ch=getchar(); +ch-'; ch=getchar(); ...
- Angularjs select的使用
实例一:基本下拉效果 usage: label for value in array <!-- lang: html --> <select ng-model="selec ...
- Ansible-Tower快速入门-3.快速开始【翻译】
快速开始 当你完成安装tower后,我们应该完成接下来的一些任务,并通过使用tower,快速设置和启动我们的第一个ansible playbooks.这第一个playbooks的启动会执行简单的ans ...
- linux 下 C语言显示中文
例如:tset.c int main() { printf("你好,世界\n"); retuen 0; } 编译时应该这样: iconv -f gb2312 -t utf8 tes ...
- 常用 Java 静态代码分析工具的分析与比较
常用 Java 静态代码分析工具的分析与比较 简介: 本文首先介绍了静态代码分析的基 本概念及主要技术,随后分别介绍了现有 4 种主流 Java 静态代码分析工具 (Checkstyle,FindBu ...
- 15 cvpr An Improved Deep Learning Architecture for Person Re-Identification
http://www.umiacs.umd.edu/~ejaz/ * 也是同时学习feature和metric * 输入一对图片,输出是否是同一个人 * 包含了一个新的层: include a lay ...
- 一个Java内存可见性问题的分析
如果熟悉Java并发编程的话,应该知道在多线程共享变量的情况下,存在“内存可见性问题”: 在一个线程中对某个变量进行赋值,然后在另外一个线程中读取该变量的值,读取到的可能仍然是以前的值: 这里并非说的 ...
- Java笔记8-抽象接口
高级特性部分: 抽象(abstract) 接口(interface) 提纲: 抽象类的定义和使用 模板设计模式的使用 接口的定义和使用 回调函数 区别抽象类和接口的异同 软件设计原则--------- ...
- S3C2440的Linux启动过程分析(一)——SC2440处理器结构
1.1. S3C2440处理器结构 S3C2440处理器的结构如下图所示,其核心单元为ARM9TDMI处理器核,主要包括16K的指令Cache和16K的数据Cache,以及分开的指令和数据MM ...