CAN 总线通信控制芯片SJA1000 的读写

SJA1000 控制信号的产生

CAN总线通信控制芯片SJA1000 没有提供单独的地址线,而使用可以与Intel 和Motorola系列微控制器兼容的分时复用地址/ 数据线。在一个读写周期内,微控制器首先输出操作地址并使地址锁存信号ALE 有效,SJA1000 在ALE 信号的下降沿将操作地址锁在片内;之后微处理器发出读写信号进行数据传输。但S3C44B0x 的数据线和地址线是分离的,对SJA1000 的读写操作需要模拟微控制器,先在数据线上写一个操作地址,并模拟产生一个ALE 信号锁存这个地址,之后进行正常的读写操作。系统使用地址线ADDR0 区分地址传输和数据传输:写奇地址时,不选通SJA1000 芯片,但给出一个有效的模拟ALE 信号;读写偶地址时,选通SJA1000 读写数据。另外,系统同时有两路CAN 总线接口,读写操作根据地址线ADDR1 区分两个SJA1000 芯片,两个片选信号和ALE 信号都要通过GAL 芯片产生,各信号如图5所示。

图中虚线是向SJA1000 传输和锁存地址的过程,实线是读写操作的过程。用ABEL 语言书写的各信号产生逻辑式为:

  CAN-CS =
nGCS4 # ADDR0 ;

  ALE = ! nWE &ADDR0 & ! nGCS4 ;

  对SJA1000 的操作地址如下:地址锁存向0x08000001端口写地址;数据读写通过地址0x08000000。

时间: 2024-11-05 16:03:49

CAN 总线通信控制芯片SJA1000 的读写的相关文章

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必须补

【iCore3 双核心板_FPGA】例程十三:FSMC总线通信实验——复用地址模式

实验指导书及代码包下载: http://pan.baidu.com/s/1sl679yl iCore3 购买链接: https://item.taobao.com/item.htm?id=524229438677

CAN总线多节点通信异常分析及解决

一.CAN物理层特征 CAN收发器的作用是负责逻辑电平和信号电平之间的转换.即从CAN控制芯片输出逻辑电平到CAN收发器,然后经过CAN收发器内部转换将逻辑电平转换为差分信号输出到CAN总线上,CAN总线上的节点都可以决定自己是否需要总线上的数据. 市场上常用的收发器(例如: VP230.TJA1040.TCAN337等)多为ISO 11898标准.在此标准中,对于CAN的信号逻辑1和0的产生:当CAN_H为3.5V,CAN_L为1.5V,差值为2V左右时为显性(dominant)电平表示,而两

计算机原理学习(2)-- 存储器和I/O设备和总线

前言 前一篇文章介绍了冯诺依曼体系结构的计算机的基本工作原理,其中主要介绍了CPU的结构和工作原理.这一篇主要来介绍存储区,总线,以及IO设备等其他几大组件,来了解整个计算机是如何工作的. 这些东西都是看得见摸得着的硬件,平时我们买电脑时最关注的就是CPU的速度,内存的大小,主板芯片等等的参数. 1. 存储器 前面我们以一个简单通用的计算机模型来介绍了CPU的工作方式,CPU执行指令,而存储器为CPU提供指令和数据. 在这个简单的模型中,存储器是一个线性的字节数组.CPU可以在一个常数的时间内访

(4)I2C总线的7bit从机地址

时钟拉伸(Clock stretching)clock stretching通过将SCL线拉低来暂停一个传输.直到释放SCL线为高电平,传输才继续进行.clock stretching是可选的,实际上大多数从设备不包括SCL驱动,所以它们不能stretch时钟.从字节级来看,一个设备可能在快速模式下接受数据,但是需要更多的时间来存储接收到的字节或者准备将要传输的另一个字节.从机可以以一种握手的处理方式在接受和应答字节后将SCL线拉低来强制使得主机进入wait状态知道从机准备好下一个字节的传输.从

《Linux4.0设备驱动开发详解》笔记--第十五章:Linux I2C核心、总线与设备驱动

15.1 Linux I2C体系结构 I2C核心 I2C核心提供了I2C总线驱动和设备驱动的注册.注销的方法,I2C通信(Algorithm)方法上层的与具体适配器无关代码以及探测设备.检测设备地址的上层代码等 I2C总线驱动 是对I2C体系结构中适配器端的实现,适配器可由CPU控制,甚至可以直接集成在CPU内部 总线驱动包含I2C适配器数据结构i2c_adapter.I2C适配器的Algorithm数据结构i2c_algorithm和控制I2C适配器产生通信信号的函数 I2C设备驱动 它是对I

Linux+I2C总线分析(主要是probe的方式)

Linux I2C 总线浅析 ㈠ Overview Linux的I2C体系结构分为3个组成部分: ·I2C核心: I2C核心提供了I2C总线驱动和设备驱动的注册.注销方法,I2C通信方法(即“algorithm”)上层的.与具体适配器无关的代码以及探测设备.检测设备地址的上层代码等.这部分是与平台无关的. ·I2C总线驱动: I2C总线驱动是对I2C硬件体系结构中适配器端的实现.I2C总线驱动主要包含了I2C适配器数据结构i2c_adapter.I2C适配器的algorithm数据结构i2c_a

【整理】--linux总线变成--iic

1. 嵌入式Linux中I2C驱动程序分析 I2C(Inter2IntegratedCircuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备.嵌入式系统中,微控制器通过I2C总线可随时可对各个系统中的组件进行设置和查询,以管理系统的配置或掌握组件的功能状态来控制外围设备.I2C总线因为协议成熟,引脚简单,传输速率高,支持的芯片多,并且有利于实现电路的标准化和模块化,得到了包括Linux在内的很多操作系统的支持,受到开发者的青睐.在Linux环境下使用I2C

PCI 总线学习笔记

转载请注明出处:http://blog.csdn.net/lg2lh/article/details/8042008 PCI的基本协议这里就不介绍了,由于一般的芯片协议都是集成好的,我仅仅须要大体了解即可,不须要做芯片,我感觉就不须要太了解协议. 这里解说是基于PLX 的9054(9052)芯片为基础的,本人仅仅是入门,望批评指正. 一.地址映射与传输数据 上图中间部分是9054的内部结构图,9054实际上充当了一个"桥"的作用,即所谓的"桥片技术".9054的作用