以下是各模块的电路框图见图2、图3、图4。
3.2 系统主要使用的元器件
(1)CAN控制器。考虑到系统拓展的需要,我们采用PHILIPS公司生产的SJA 1000来作为此系统的CAN控制器。它既和PCA82C200独立CAN控制器引脚兼容,又和PCA82C200独立CAN控制器电气兼容;既支持BasicCAN模式,又支持PeliCAN模式;和CAN2.0B协议兼容;可同时支持11位和29位识别码;位速率可达1Mbits/s。
(2)CAN收发器。采用PHILIPS公司生产TJA1050,跟PCA82C250一样,TJA 1050符合ISO 11898标准,但在关键的AM波段上它的辐射比PCA82C250低20dB以上。在不上电时总线呈现无源特性。
(3)单片机。采用P89C51。该单片机是80C51微控制器的派生器件,是采用先进CMOS工艺制造的8位微控制器,指令系统与80C51完全相同。
4 、基于CAN总线车身控制系统的软件开发
在CAN 总线构成的系统中,用户要根据自己的要求来编写应用层和用户层软件。用户层实现用户要求的控制策略和系统,而应用层则是在用户层与接口之间,CAN建立了报文发送时的方法、信号电平及协议,应用层则定义了结构、响应及报文的意义,应用层要根据CAN系统应用场合的不同而有所变化。
4.1 CAN控制器的初始化
CAN控制器SJA1000在正式收发信号之前必须进行初始化设置。对SJA 1000的初始化是对工作方式、接收滤波寄存器、接收屏蔽寄存器、接收代码寄存器、波特率参数等的设置,要求对写入每个寄存器的内容进行仔细和全面的考虑。
4.2 CAN总线上数据的发送和接收
对SJA 1000初始化成功后,就可以用它来传输和接收报文。节点向总线发送报文的过程是:单片机P89C51将待发送的数据按CAN格式组成一帧报文,写入SJA1000的发送缓冲区,然后启动SJA1000,把报文发送到总线上去。接收报文的过程是:SJA 1000从总线上自动接收报文,并经过过滤后存入接收缓冲区,并向单片机发出中断请求,单片机从缓冲区读取报文。发送和接收流程见图6、图7。