当前位置:酷酷问答>生活百科>CAN控制器—SJA1000怎么玩

CAN控制器—SJA1000怎么玩

2024-09-30 23:20:09 编辑:zane 浏览量:530

CAN控制器—SJA1000怎么玩

的有关信息介绍如下:

CAN控制器—SJA1000怎么玩

SJA1000是一种独立的控制器,常用于移动目标和一般工业环境中的区域网络控制(CAN),在工业应用方面起了重大的作用,而在调试SJA1000过程中,很多时候就因为一些小问题,导致工业网络迟迟不能工作,大大的影响了产品的进度。

SJA1000是一个独立的CAN控制器它在汽车和普通的工业应用上有先进的特征由于它和PCA82C200在硬件和软件都兼容因此它能够完全替代PCA82C200。SJA1000有一系列先进的功能适合于多种应用特别在系统优化诊断和维护方面非常重要。

SJA1000是通过并行总线与MCU连接,如图1所示,两个器件之间需要通过地址、数据、读写控制等多个线进行连接。往往在这个时候,很多工程师都难以判断MCU与SJA1000是否已正确连接。其实,细心的工程师可能会发现,SJA1000提供了一个测试寄存器(0x09),而我们可以对该测试寄存器反复进行写入和读取操作。如果读出的数据和写入的数据保持一致,则表明了MCU和SJA1000已经正确连接了。

图1SJA1000连接

一个小小的寄存器就已经足以判断硬件连接是否正常,因为硬件走了很多弯路的工程师,是否有种已经解放的感觉?!

此时,硬件连接已经排除了不可能出现问题的情况下,我们可以安心编写程序了。但是,很多工程师还是会存在疑虑:只对一个寄存器读读写写,就可以保证到SJA1000可以正常工作?为了打消这些疑虑,我们再进一步进行操作。

芯片初始化

每块芯片都会有一定的初始化过程,SJA1000也不例外,要使芯片能够正常发送数据,必须对其初始化操作。SJA1000上电后,通过置位模式寄存器的第0位,使其进入复位模式,初始化流程图见图2。

图2初始化流程

设置模式寄存器

进入复位模式后,我们就可以设置模式寄存器。模式寄存器用于设置SJA1000的工作模式,其定义可详见表1。

表1模式寄存器

LOM:

只听模式位。置位该位,使SJA1000处于只听模式。RM:复位模式位。置位将使SJA1000进入复位模式,清零该位退出复位模式。

STM:

只检测模式位。置位该位,使SJA1000在发送CAN数据时不检测应答位。

AFM:

验收滤波器模式。置位该位,使用但滤波功能。

SM:

睡眠模式位。设置该位,使SJA1000进入睡眠模式,降低功耗。

设置时钟分频寄存器

时钟分频寄存器用于设置SJA1000BasicCAN模式和PeliCAN模式,,实现CLKOUT引脚控制,CAN输入比较器控制等。寄存器定义详见表2。在调试过程中,我们只需要关注Bit2~Bit0位,根据实际情况对应的设置好分频信号。

表2SJA1000分频寄存器

设置波特率

波特率是异步串行通信的重要参数,指每秒能发送数据的位单元数量。只有相同的波特率设备才能相互通信。CAN-bus使用异步串行通信技术,同样需要遵守该规则。详细的波特率计算方式可详见《SJA1000应用指南》。常用的CAN波特率对应的BTR0和BTR1的值详见表3。

表3CAN波特率设置

设置输出模式

定义CAN总线输出引脚TX0和TX1的输出模式:正常输出模式、时钟输出模式、双相输出模式或测试输出模式。

定义TX0和TX1输出引脚配置:悬空、下拉、上拉、或推挽以及极性。

退出复位模式

通过将模式寄存器的第0位清零,可使SJA1000退出复位模式,在经过128个连续11位隐性位后,进入正常工作模式。

版权声明:文章由 酷酷问答 整理收集,来源于互联网或者用户投稿,如有侵权,请联系我们,我们会立即处理。如转载请保留本文链接:https://www.kukuwd.com/life/59034.html
热门文章