基于82527的CAN总线智能传感器节点设计
摘要:介绍一种以8051微控制器和82527独立CAN总线控制器为核心组成的CAN总线智能传感器节点的设计方法,并给出其硬件原理图和初始化程序。
关键词:CAN总线 82527 单片机 数据采集 智能节点
引言
CAN(Controller Area Network,控制局域网)属于工业现场总线,是德国Bosch公司20世纪80年代初作为解决现代汽车中众多的控制与测试仪器间的数据交换而开发的一种通信协议。1993年11月,ISO正式颁布了高速通信控制局域网(CAN)的国际标准(ISO11898)。CAN总线系统中现场数据的采集由传感器完成,目前,带有CAN总线接口的传感器种类还不多,价格也较贵。本文给出一种由8051单片机和82527独立CAN总线控制器为核心构成的智能节点电路,在普通传感器基础上形成可接收8路模拟量输入和智能传感器节点。
javascript:window.open(this.src);" style="cursor:pointer;"/>
1 独立CAN总线控制器82527介绍
82527是Intel公司生产的独立CAN总线控制器,可通过并行总线与Intel和Motrorola的控制器接口;支持CAN规程2.0B标准,具有接收和发送功能并可完成报文滤波。82527采用CHMOS 5V工艺制造,44脚PLCC封装,使用温度为-44~+125℃,其引脚的排列和定义参见参考文献[1]。
(1)82527的时钟信号
82527的运行由2种时钟控制:系统时钟SCLK和寄存器时钟MCLK。SCLK由外部晶振获得,MCLK对SCLK分频获得。CAN总线的位定时依据SCLK的频率,而MCLK为寄存器操作提供时钟。SCLK频率可以等于外部晶振XTAL,也可以是其频率的1/2;MCLK的频率可以等于SCLK或是其频率的1/2。系统复位后的默认设置是SCLK=XTAL/2,MCLK=SCLK/2。
(2)82527的工作模式
82527有5种工作模式:Intel方式8位分时复用模式;Intel方式16位分时复用模式;串行接口模式;非Intel方式8位分时复用模式;8位非分时复用模式。本文应用Intel方式8位分时复用模式,此时82527的30和44脚接地。
(3)82527的寄存器结构[2]
82527的寄存器地址为00~FFH.下面根据需要对寄存器给予介绍。
①控制寄存器(00H):
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
0 | CCE | 0 | 0 | EIE | SIE | IE | INIT |
CCE——改变配置允许位,高电平有效。该位有效时允许CPU对配置寄存器1FH、2FH、3FH、4FH、9FH、AFH写操作。
EIE——错误中断允许位,高电平有效。该位一般置1,当总线上产生异常数量的错误时中断CPU。
SIE——状态改变中断允许位,高电平有效。该位一般置0。
IE——中断允许位,高电平有效。
INIT——软件初始化允许位,高电平有效。该位有效时,CAN停止收发报文,TX0和TX1为隐性电平1。在硬件复位和总线关闭时该位被置位。
②CPU接口寄存器(02H):
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
RSTST | DSC | DMC | PWD | SLEEP | MUX | 0 | CEN |
RSTST——硬件复位状态位。该位由82527写入,为1时硬件复位激活,不允许对82527访问;为0时允许对82527访问。
DSC——SCLK分频位。该位为1,SCLK=XTAL/2;为0,SCLK=XTAL。
DMC——MCLK分频位。该位为1,MCLK=SCLK/2;为0,MCLK=SCLK。
PWD——掉电模式使能位,高电平有效。
SLEEP——睡眠模式使能位,高电平有效。
MUX——低速物理层复用标志位。该位为1,ISO低速物理层激活,PIN24=VCC/2,PIN11=INT#(#表示取反);该位为0,PIN24=INT#,PIN11=P2.6。
CEN——时钟输出允许位,高电平有效。
③标准全局屏蔽寄存器(06~07H)。该寄存器用于具有标准标识符的报文,或XTD置0的报文寄存器。该方式称为报文接收滤波。当某位为1时,报文标识符的相应位必须匹配;为0时,不必匹配。
④扩展全局屏蔽寄存器(08~0BH)。该寄存器用于扩展报文格式,或XTD置1的报文寄存器,其作用与③相同。
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
0 | COBY | POL | 0 | DCT1 | 0 | DCR1 | DCR0 |
⑤总线配置寄存器(2FH):
COBY——旁路输入比较器标志位,高电平有效。
POL——极性标志位。为1,如果旁路输入比较器,RX0的输入逻辑1为显性,逻辑0为隐性;为0,则反之。
DCT1——TX1输出切断控制位。为1,TX1输出不被驱动,该模式用于1根总线的情况,2根差分导线短路;为0,TX1输出被驱动。
DCR1——RX1输入切断控制位。为1,RX1与输入比较器的反相端断开,接至VCC/2;为0,RX1接至输入比较器反相端。
DCR0——RX0输入切断控制位。作用与DCR1相同,此时RX0接至比较器同相端。
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
SJW | BRP |
⑥位定时寄存器0(3FH);
SJW——同步跳转宽度位场,编程值1~3。
BRP——波特率分频位场,编程值0~63。
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
SPL | TSEG2 | TSEG1 |
⑦位定时寄存器1(4FH):
SPL——采样模式标志位。1表示每位采样3次;0表示每位采样1次。
TSEG1——时间段1位场,编程值2~15。
TSEG1——时间段2位场,编程值1~7。
波特率=XTAL/[(DSC+1)*(BRP+1)*(3+TSEG1+TSEG2)]
⑧报文寄存器(把每个寄存器的第1字节地址作为基址BASE)。
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
BASE+0 | MSGVAL | TXIE | RXIE | INTPND | ||||
BASE+1 | RMTPND | TXRQST | MSGLST/CPUUPD | NEWDAT |
◇控制寄存器0,1(BASE+0,BASET+1)
MSGVAL——报文寄存器有效标志位,高电平有效。10置位,01复位。
TXIE——发送中断允许标志位,高电平有效。10置位,01复位。
RXIE——接收中断允许标志位,高电平有效,10置位,01复位。
INTPND——中断申请标志位,高电平有效。10置位,01复位。
RMTPND——远程帧申请标志位,高电平有效。10置位,01复位。
TXRQ