sja1000T can相关的知识
开发环境:硬件环境arm9200 sja1000T,软件环境kernel version 2.6.21.驱动程序:字符驱动
can有两种基本的工作模式:basic can 、pelican,pelican不仅支持can2.0A(8位canid),也支持can2.0B(29位canid)。
我们当时用的是pelican模式,当时写应用的时候发现数据如何都收不到,我认为比较重要的是can的ACR ,AMR寄存器,下面这段摘自网络:
CAN总线的滤波器设置就像给总线上的节点设置了一层过滤网,只有符合要求的CAN信息帧才可以通过,其余的一概滤除。 在验收滤波器的帮助下,只有当接收信息中的识别位和验收滤波器预定义的值相等时,CAN 控制器才允许将已接收信息存入RXFIFO。 验收滤波器由验收代码寄存器(ACRn)和验收屏蔽寄存器AMRn 定义,要接收的信息的位模式在验收代码寄存器中定义,相应的验收屏蔽寄存器允许定义某些位为“不影响”,即可为任意值。
1、basic can模式下sja1000滤波器设置

复位请求位被置高,验收屏蔽寄存器AMR可以访问(读/写)。验收屏蔽寄存器定义验收代码寄存器的相应位对验收滤波器是“相关的”或“无影响的”。 滤波的规则是:每一位验收屏蔽分别对应每一位验收代码,当该位验收屏蔽位为“1”的时候(即设为无关),接收的相应帧ID位无论是否和相应的验收代码位相同均会表示为接收;当验收屏蔽位为“0”的时候(即设为相关),只有相应的帧ID位和相应的验收代码位值相同的情况才会表示为接收。只有在所有的位都表示为接收的时候,CAN控制器才会接收该报文。 举例:如何设置滤波器,接收标识符为0000 1010的CAN帧? 在SJA1000复位模式下,设置寄存器CDR.7为“0”,即设置CAN控制器SJA1000工作于BasicCAN模式。 设置验收代码寄存器ACR0=0x0A; 根据滤波器信息帧与滤波器的位对应关系,将需要参与滤波的信息位对应的验收屏蔽寄存器位设置为0,设置AMR=0x00; 如此设置,SJA1000接收标识符ID.10~ID.3为0000 1010的CAN帧。
2、pelican模式下滤波器设置
有两种不同的过滤模式可在模式寄存器中选择MOD.3, AFM。 单滤波器模式:AFM 位是1; 双滤波器模式:AFM 位是0。 SJA1000验收滤波器由4个验收码寄存器ACR0、ACR1、ACR2、ACR3和4个验收屏蔽寄存器AMR0、AMR1、AMR2、AMR3组成。ACR的值是预设的验收代码值,AMR值用于表征相对应的ACR值是否用作验收滤波,这8个寄存器在SJA1000的复位模式下设置。 滤波的规则和
BasicCAN
模式下的滤波规则相同。滤波的方式有两种,由模式寄存器中的AFM( MOD.3 )位选择:单滤波器模式(AFM 位是1)、双滤波器模式(AFM 位是0)。
(1)单滤波器的配置
这种滤波器配置定义了一个长滤波器(4字节、32位),由4个验收码寄存器和4个验收屏蔽寄存器组成的验收滤波器,滤波器字节和信息字节之间位的对应关系取决于当前接收帧格式。
接收can标注帧(ssf)单滤波器配置
对于标准帧,11位标识符、RTR位、数据场前两个字节参与滤波; 对与参与滤波的数据,所有AMR为0的位所对应的ACR位和参与滤波数据的对应位必须相同才算验收通过; 如果由于置位RTR=1 位而没有数据字节,或因为设置相应的数据长度代码而没有或只有一个数据字节信息,报文也会被接收。对于一个成功接收的报文,所有单个位在滤波器中的比较结果都必须为“接受”; 注意AMR1 和ACR1 的低四位是不用的,为了和将来的产品兼容,这些位可通过设置AMR1.3、AMR1.2 、AMR1.4 和AMR1.0 为1 而定为“不影响”。

举例:如何设置单滤波,接收标识符为0000 1010 010的CAN标准帧? 在SJA1000复位模式下,设置寄存器CDR.7为“1”,即设置CAN控制器SJA1000工作于PeliCAN模式。 设置模式寄存器的验收滤波器模式位(AFM)为1,选择单滤波器模式; 设置验收代码寄存器ACR0=0x0A、ACR1=0x40、ACR2=ACR3=0x00; 根据单滤波器时信息帧与滤波器的位对应关系,将需要参与滤波的信息位对应的验收屏蔽寄存器位设置为0,设置AMR0=0x00,AMR1=0x0F、AMR2=AMR3=0XFF; 如此设置,SJA1000接收标识符ID.28~ID.18为0000 1010 010的CAN标准帧。
(2)双滤波器的配置
这种配置可以定义两个短滤波器,由4个ACR和4个AMR构成两个短滤波器。总线上的信息只要通过任意一个滤波器就被接收。 滤波器字节和信息字节之间位的对应关系取决于当前接收的帧格式。
接收CAN标准帧双滤波器的配置
如果接收的是标准帧信息,被定义的两个滤波器是不一样的。 第一个滤波器由ACR0、ACR1、AMR0、AMR1以及ACR3、AMR3低4位组成,11位标识符、RTR位和数据场第1字节参与滤波; 第二个滤波器由ACR2、AMR2以及ACR3、AMR3高4位组成,11位标识符和RTR位参与滤波。 为了成功接收信息,在所有单个位的比较时,应至少有一个滤波器表示接受。RTR 位置位“1”或数据长度代码是“0 ”,表示没有数据字节存在;只要从开始到RTR 位的部分都被表示接收,信息就可以通过滤波器1。 如果没有数据字节向滤波器请求过滤,AMR1和AMR3的低4位必须被置为“1”,即“ 不影响”。此时,两个滤波器的识别工作都是验证包括RTR 位在内的整个标准识别码。

举例:如何设置双滤波,接收标识符ID.28~ID.18为0000 1010,010和ID.28~ID.18为0110 1011,111的两类CAN标准帧?
在SJA1000复位模式下,设置寄存器CDR.7为“1”,即设置CAN控制器SJA1000工作于PeliCAN模式。 设置模式寄存器的验收滤波器模式位(AFM)为0,选择双滤波器模式; 设置验收代码寄存器ACR0=0x0A、ACR1=0x40、ACR2=0x6B、ACR3=0xE0; 根据双滤波器时信息帧与滤波器的位对应关系,将需要参与滤波的信息位对应的验收屏蔽寄存器位设置为0,设置AMR0=0x00,AMR1=0x0F、AMR2=0x00、AMR3=0X0F;
注意:仔细看pelican的双滤波器模式,能否接收到数据是和所发的数据有关的,即发送数据参与了滤波器ACR某位的设置。
sja1000T can相关的知识的更多相关文章
- .NET同步与异步之相关背景知识(六)
在之前的五篇随笔中,已经介绍了.NET 类库中实现并行的常见方式及其基本用法,当然.这些基本用法远远不能覆盖所有,也只能作为一个引子出现在这里.以下是前五篇随笔的目录: .NET 同步与异步之封装成T ...
- Spring Framework------>version4.3.5.RELAESE----->Reference Documentation学习心得----->Spring Framework中web相关的知识(概述)
Spring Framework中web相关的知识 1.概述: 参考资料:官网documentation中第22小节内容 关于spring web mvc: spring framework中拥有自 ...
- iOS蓝牙开发(二)蓝牙相关基础知识
原文链接: http://liuyanwei.jumppo.com/2015/07/17/ios-BLE-1.html iOS蓝牙开发(一)蓝牙相关基础知识: 蓝牙常见名称和缩写 MFI ====== ...
- iOS网络相关零散知识总结
iOS网络相关零散知识总结 1. URL和HTTP知识 (1) URL的全称是Uniform Resource Locator(统一资源定位符). URL的基本格式 = 协议://主机地址/路径 ...
- 深入理解mysql之BDB系列(1)---BDB相关基础知识
深入理解mysql之BDB系列(1) ---BDB相关基础知识 作者:杨万富 一:BDB体系结构 1.1.BDB体系结构 BDB总体的体系结构如图1.1所看到的,包括五个子系统(见图1.1 ...
- 【RAC】RAC相关基础知识
[RAC]RAC相关基础知识 1.CRS简介 从Oracle 10G开始,oracle引进一套完整的集群管理解决方案—-Cluster-Ready Services,它包括集群连通性.消息和锁. ...
- Linux实战教学笔记19:Linux相关网络知识梳理
第十九节 Linux相关网络知识梳理 标签(空格分隔): Linux实战教学笔记-陈思齐 一,前言 一个运维有时也要和网络打交道,所以具备最基本的网络知识,对一个运维人员来说是必要的.但,对于我们的工 ...
- day 28 网络基础相关的知识
1.网络基础相关的知识 架构 C/S 架构: client 客户端 server服务器端 优势: 能充分发挥PC机的性能 B/S 架构: browser 浏览器 server服务器 隶 ...
- apache系统故障排查方案及相关操作知识
apache系统故障排查方案及相关操作知识 1.查看系统开的apache服务在哪个端口监听,有几个apache在服务,它的初始pid是多少 netstat -alop |grep LISTEN |gr ...
随机推荐
- Log4j源代码学习
了解log4j的源代码来源于项目中一次需求,我们想将系统所有的warn日志统一收集到common-warn.log的日志中去,以便于系统对其进行监控处理.于是模拟自动生成的error配置完成了warn ...
- djangocms安装技巧
首先python的版本要高一些,否则安装django-cms会报错 安装cmsinstaller不能够正常下载 利用virtualenv进行安装配置 注意中文的配置 djangocms配置中文 dja ...
- 虚拟现实外包公司—焰火工坊CTO团队外包难把VR真正做起来,讲故事可能将伤害产业链
CTO王明杨,带着他的焰火工坊,正在为自家VR播放器和系统的上线做最后准备.不少投资机构,有传言称包括小米在内巨头都试图染指VR领域,而上月上市的暴风影音正是倚靠VR的概念成功助推了其高股价.对此,王 ...
- c# 邮件发送功能
//统一由一个邮箱发送录用通知 string strfrom = "";//发件人邮箱地址 string strpow = "";//邮箱密码 string s ...
- Ioc
学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的,今天和大家 ...
- 深入理解js构造函数
JavaScript对象的创建方式 在JavaScript中,创建对象的方式包括两种:对象字面量和使用new表达式.对象字面量是一种灵活方便的书写方式,例如: ? 1 2 3 4 5 6 var o1 ...
- goroutine
Go语言从诞生到普及已经三年了,先行者大都是Web开发的背景,也有了一些普及型的书籍,可系统开发背景的人在学习这些书籍的时候,总有语焉不详的感觉,网上也有若干流传甚广的文章,可其中或多或少总有些与事实 ...
- PHP curl 实现RESTful PUT DELETE 实例
PHP curl 实现RESTful PUT DELETE 实例 客户端 client.php <?php //PUT $curl_handle = curl_init ();// Set de ...
- jquery.autocomplete 模糊查询 支持分组
//demo <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <lin ...
- maven 使用
1. download maven from http://maven.apache.org/ 2. unzip, setup MAVEN_HOME 3. change the configurati ...