CAN控制器—SJA1000怎么玩
SJA1000是一种锿辞柃妾独立的控制器,常用于移动目标和一般工业环境中的区域网络控制(CAN),在工业应用方面起了重大的作用,而在调试SJA1000过程中,很多时候就因为一些小问题,导致固嗟喹账工业网络迟迟不能工作,大大的影响了产品的进度。
SJA1000是一个独立的CAN控制器它在汽车和普通的工业应用上有先进的特征由于它和PCA82C200在硬件和软件都兼容因此它能够完全替代PCA82C200。SJA1000有一系列先进的功能适合于多种应用特别在系统优化诊断和维护方面非常重要。
SJA1000是通过并行总线与MCU连接,如图1所示,两个器件之间需要通过地址、数据、读写控制等多个线进行连接。往往在这个时候,很多工程师都难以判断MCU与SJA1000是否已正确连接。其实,细心的工程师可能会发现,SJA1000提供了一个测试寄存器(0x09),而我们可以对该测试寄存器反复进行写入和读取操作。如果读出的数据和写入的数据保持一致,则表明了MCU和SJA1000已经正确连接了。
图2初始化流程
设置模式寄存器
进入复位模式后,我们就可以设置模式寄存器。模式寄存器用于设置SJA1000的工作模式,其定义可详见表1。
表2SJA1000分频寄存器
设置波特率
波特率是异步串行通信的重要参数,指每秒能发送数据的位单元数量。只有相同的波特率设备才能相互通信。CAN-bus使用异步串行通信技术,同样需要遵守该规则。详细的波特率计算方式可详见《SJA1000应用指南》。常用的CAN波特率对应的BTR0和BTR1的值详见表3。
表3CAN波特率设置
设置输出模式
定义CAN总线输出引脚TX0和TX1的输出模式:正常输出模式、时钟输出模式、双相输出模式或测试输出模式。
定义TX0和TX1输出引脚配置:悬空、下拉、上拉、或推挽以及极性。
退出复位模式
通过将模式寄存器的第0位清零,可使SJA1000退出复位模式,在经过128个连续11位隐性位后,进入正常工作模式。