多语言展示
当前在线:826今日阅读:60今日分享:41

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位隐性位后,进入正常工作模式。
推荐信息