基于ADμC812的CAN总线智能节点的设计

http://tech.ddvip.com   2008年07月18日    社区交流

内容摘要:介绍了一种用单片机ADμC812、CAN总线控制器SJA1000和CAN总线驱动器POA82C250组成的CAN总线智能节点的设计方案,给出了该节点的硬件结构和软件设计方法,同时介绍了CAN总线的主要特点。

  4 CAN节点的软件设计

  本节点的软件编程主要包括A/D转换(ADC)、CAN控制器的初始化、CAN总线数据的发送和接收等几个部分.主程序的流程图如图3所示.

基于ADμC812的CAN总线智能节点的设计

  下面分别对这几个主要部分的程序设计做一介绍.

  4.1 A/D转换部分

  笔者在本设计中采用的是单步A/D转换模式,并将A/D转换结果存入指定的数据存储区.具体步骤如下:

  (1)通过设置ADC控制寄存器(ADCCON1和ADCCON2)的值来确定A/D转换的工作状态和采样通道号;

  (2)使能ADC中断,置位SCONV位以启动单步A/D转换;

  (3)等待响应ADC中断,并进入中断服务程序;

  (4)把采样所得的数据从ADCDATAL和ADC-DATAH两个特殊寄存器中取出,并存入预设的片内数据存储器中,然后退出中断服务程序;

  (5)判断所需通道是否采样完毕,如果未完成,则设置采样通道号并返回步骤(2),若完成则退出A/D转换子程序.

  通过该程序可随时根据实际需要更改采样通道数,并将采样结果直接存入指定数据存储区,以为今后向CAN总线发送所得数据提供便利.

  4.2 SJA1000的初始化

  CAN的通信协议主要是由CAN控制器完成的,因此,要想实现CAN节点的数据传送,对CAN控制器的初始化是十分关键的.这个步骤直接决定着该CAN网络系统各节点所共同遵守的协议.对SJA1000进行初始化实际上就是通过单片机向其片内的各个寄存器写入控制字的过程,其寄存器包括以下几个:

  REG CONTROL—内部控制寄存器地址;

  REG COMMAND—内部命令寄存器地址;

  REG STATUS —内部状态寄存器地址;

  REG INTERRUPT—内部中断寄存器地址;

作者:黄天戍 岳 斌 汪汝宁    责编:豆豆技术应用

正在加载评论...