1 / 8
文档名称:

SJA1000寄存器设置.docx

格式:docx   大小:106KB   页数:8页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

SJA1000寄存器设置.docx

上传人:dlmus1 2020/12/26 文件大小:106 KB

下载得到文件列表

SJA1000寄存器设置.docx

相关文档

文档介绍

文档介绍:ADDR_SJA1000_ADDR = ioremap(0x20000000,0xf);
ADDR_SJA1000_DATA = ADDR_SJA1000_ADDR + (0x1<<2);
void write_can_reg(char value, int reg)
{
outb(reg, ADDR_SJA1000_ADDR);
udelay(5);
outb(value, ADDR_SJA1000_DATA);
}
至于为什么是 addr 然后 data ,这是芯片制造者的事,可以参考数据手册。同时 这与dma9000网卡驱动类似。----关键是sjalOOO的地址/数据信号线复用,而 241 0地址数据线分离,所以要模拟 ale 控制。(说到底还是时序,模拟地址)
由于ARM、线非复用,而SJA1000总线复用,所以必须通过逻辑产生地址锁 存信号ALE假设该信号由芯片GAL22V1(产生。SJA1000的片选、读写信号均采 用ARM总线信号,ALE信号由读写信号和地址信号通过 GAL产生。在写SJA1000 寄存器时,首先往总线的一个地址写数据,作为地址,读写信号无效, ALE变化
产生锁存信号 ;然后写另外一个地址,读写信号有效,作为数据。上述逻辑完全 通过GAL产生。此外,CAN总线需要在两线问加一个120欧电阻。
2410+sja1000 简单接法
1、 sja1000的数据总线和arm的数据总线直接连接,arm的地址线a0与sja1000 的ale连接,sja1000的片选信号通过由arm的bank片选信号与地址a0取或信 号。
2、 写数据时,先通过arm的数据总线往sja1000送地址信号,此时a0置1;然 后将a0置0,再由arm的数据总线往sja1000送数据信号。
3、 读数据时,同样先通过arm的数据总线往sja1000送地址信号,然后取数。
CAN 总线通信控制芯片 SJA1000 的读写
CAN 总线通信控制芯片 SJA1000 没有提供单独的地址线 , 而使用可以与 Intel 和 Motorola 系列微控制器兼容的分时复用地址 / 数据线。在一个读写周期内 , 微控制器首先输出操作地 址并使地址锁存信号 ALE有效,SJA1000在ALE信号的下降沿将操作地址锁在片内 ;之后微
处理器发出读写信号进行数据传输。但 S3C44B0X的数据线和地址线是分离的 ,对SJA1000
的读写操作需要模拟微控制器 ,先在数据线上写一个操作地址 ,并模拟产生一个 ALE信号锁
存这个地址,之后进行正常的读写操作。系统使用地址线 ADDR0区分地址传输和数据传输:
写奇地址时,不选通SJA1000芯片,但给出一个有效的模拟 ALE信号;读写偶地址时,选通 SJA1000读写数据。另外,系统同时有两路CAN总线接口,读写操作根据地址线 ADDR1区分 两个SJA1000芯片,两个片选信号和 ALE信号都要通过 GAL芯片产生,各信号如图所示。
« 一匸 二 r
册 一、 _ -
V)“ Ell — — £ 1 —
址 _ 1——
「 — , _. T J
图 SJA1000控制信号的产生
图中虚线是向SJA1000传输和锁存地址的过程,实线是读写操作的过程