SJA1000寄存器设置.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SJA1000寄存器设置

ADDR_SJA1000_ADDR = ioremap(00xf); ADDR_SJA1000_DATA = ADDR_SJA1000_ADDR + (0x12); ? void write_can_reg(char value, int reg) { ?????? outb(reg, ADDR_SJA1000_ADDR); ?????? udelay(5);?????? ?????? outb(value, ADDR_SJA1000_DATA);?? } 至于为什么是addr然后data,这是芯片制造者的事,可以参考数据手册。同时这与dma9000网卡驱动类似。----关键是sja1000的地址/数据信号线复用,而2410地址数据线分离,所以要模拟ale控制。(说到底还是时序,模拟地址) 由于ARM总线非复用,而SJA1000总线复用,所以必须通过逻辑产生地址锁存信号ALE,假设该信号由芯片GAL22V10产生。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 芯片产生,各信号如图所示。 图  SJA1000 控制信号的产生 图中虚线是向SJA1000 传输和锁存地址的过程,实线是读写操作的过程。用ABEL 语言书写的各信号产生逻辑式为: ???? CAN-CS = nGCS4 # ADDR0 ; (#---或)   ALE = ! nWE ADDR0 ! nGCS4 ; 对SJA1000 的操作地址如下:地址锁存向0口写地址;数据读写通过地址0(地址如何计算,2410 32位地址总线,用到30位,由addr[29::27]选通ngcsx) ? Sja1000重要寄存器: 输出控制寄存器(OCR)--复位模式下可读写 b1b0—10---正常模式 对于输出控制寄存器的位和输出引脚 TX0 和 TX1 的关系,我的理解是OCTPx,OCTNx编程驱动器特性:00—悬空,01—上拉,10—下拉,11--推挽;OCPOLx编程输出端极性,TX的输出由TXD(输入)和OCTPx,OCTNx,OCPOLx决定,网上有人根据表格画出卡诺图求出了输入输出的关系。OCPOLx为0,当TPX与TNX并非全关状态时候,OCPOLx为0,输出电平与TXD一致,为1翻转。TPX与TNX全关状态输出管脚悬空。 所以电路中要用到TX0(使TX0与TXD输入相同,为什么?)并使TX1设置悬空,OCTP0,OCTN0,OCPOL0要设为110,OCTP1,OCTN1,OCPOL1就设为000,则输出控制寄存器设置应该为0x1a 时钟分频寄存器(CDR) 一般用不到sja1000的clkout管脚,所有bit3置1,CD.2—CD.0用来设置clkout管脚上的频率,这里也用不上。Bit5是允许接受中断输出,当一条已接收的信息成功的通过验

文档评论(0)

yurixiang1314 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档