资源描述
AT89C51单片机控制的CAN总线/RS232
接口电路设计
目录
引言1第一章CAN总线协议和RS232接口协议分析2
1.1 CAN 总线2
1.1.1 CAN总线特点和优势2
1.1.2 CAN总线协议3
1.1.3 CAN总线报文格式和报文帧结构4
1.1.3.1 CAN报文格式4
1.1.3.2 报文帧结构4
1.1.4 CAN总线错误5
1.2 RS232 接 口协议5第二章 元器件介绍与分析7
2.1 CAN控制器芯片SJA1000介绍及特性分析7
2.2 CAN收发驱动器PCA82C250介绍及特性分析10
2.3 光电隔离芯片6N137介绍及特性分析11
2.4 电平转换芯片MAX232介绍及特性分析13
2.5 AT89C51单片机介绍及特性分析14第三章CAN总线与RS232转换接口设计17
+ 15V,逻辑“1”为一3V〜一15V。一个标准的RS-232接口包括25针的D型插座,其包括 主信道和辅助信道。但在实际使用中只使用一个主信道,此时可简化为一个九针的D型插 座,分为公型和母型,表1-2是RS-232九针接口的引脚定义。
表1-2 RS-232接口的引脚定义
9针接口
名称
方向
功能说明
1
DCD
输入
数据载波检测引脚
2
RXD
输入
数据接收引脚
3
TXD
输出
数据发送引脚
4
DTR
输出
数据终端设备DTE准备就绪引脚
5
GND
信号地
6
DSR
输出
数据通信装置DCE准备就绪引脚
7
RTS
输出
请求数据传送引脚
8
CTS
输入
清除数据传送引脚
9
RI
输入
振铃信号引脚
第二章 元器件介绍与分析
2.1 CAN控制器芯片SJA1000介绍及特性分析
SJA1000是一种独立控制器,用于移动目标和一般工业环境中的区域网络控制。它是 PHILIPS半导体PCA82C200 CAN控制器的替代产品,而且它增加了一种新的工作模式 PeliCAN,这种模式支持具有很多新特性的CAN 2.0B协议〔久此次设计采用的是Peli CAN 工作模式。
SJA1000具有如下特性:
1)和PCA82C200独立CAN控制器引脚兼容;
2)具有Peli CAN模式;
3)支持 CAN2.0A 和 CAN2.0B 协,议;
4)支持11位和29为标志符;
5)通信速率可达1Mbps;
6)最高达24MHz的时钟频率;
7)支持不同的处理器接口;
8)可编程的CAN输出驱动器配置;
9)有扩展的接收缓冲器64B (FIFO)⑷。
Peli CAN模式下增强的功能如表2T所示:
表2-1 Peli CAN模式下增强的功能7
CAN2.0B (active)
CAN2.0B active支持带有29位标识符 的网络扩展应用
发送缓冲器
有11位或29位标识符的报文的单报 文发送缓冲器
增强的验收滤波器
两个验收滤波器模式支持11位和29 位标识符的滤波
可读的错误计数器
支持错误分析在原型阶段和在正常操 作期间可用于:诊断、系统维护、系统 优化
可编程的出错警告界限
错误代码捕捉寄存器
出错中断
仲裁丧失捕捉中断
支持系统优化包括报文延迟时间的分 析
单次发送
使软件命令最小化和允许快速重载发 送缓冲器
仅听模式
SJA1OOO能够作为一个认可的CAN监 控器操作,可以分析CAN总线通信或 进行自动位速率检测
自测试模式
支持全部CAN节点的功能自测试或在 一个系统内的自接收
SJA1000管脚如图2-1所示:
图2-1 SJA1OOO管脚图
SJA1OOO内部结构如图2-2所示:
图2-2 SJA1OOO内部结构图
SJA1000的引脚功能如表2-2所示:
表2-2 SJA1000引脚说明9
vJ t
弓1脚
说明
AD7-AD0
2、1、28-23
多路地址/数据总线
ALE/AS
3
ALE输入信号(Intel模式),AS输入信号(Motorola模式)
/CS
4
片选输入,低电平允许访问SJA1000。
(/RD)/E
5
微控制器的/RD信号(Intel模式)或E使能信号(Motorola 模式)。
AVR
6
微控制器(CPU)的/WR信号Intel模式或RD//WR信号
Motorola 模式
CLKOUT
7
SJA1000产生的提供给微控制器的时钟输出信号。时钟信 号来源于内部振荡器,且通过编程驱动时钟。控制寄存器 的时钟关闭位可禁止该引脚。
VSS1
8
逻辑地
XTALk
XTAL2
9、10
外部晶振接入端
Mode
11
模式选择输入。1 =Intel模式、0=Motorola模式。
VDD3
12
输出驱动器的电源端。
TXO、TX1
13、14
CAN输出驱动器的输出端0和输出端1。
VSS3
15
输出驱动器的接地端。
/INT
16
中断输出,用于中断微控制器。/INT在内部中断寄存器 各位都被置位时低电平有效。/INT是开漏输出,且与系统 中的其它/INT是线或的。此引脚上的低电平可以把IC从睡 眠模式中激活。
/RST
17
芯片复位端。
VDD2
18
输入比拟器的电源端。
RXO、RX1
19、20
CAN输入比拟器的输入端。和输入端lo
VSS2
21
输入比拟器的接地端。
VDD1
22
电源端。
2.2 CAN收发驱动器PCA82C250介绍及特性分析
PCA82c250是CAN协议控制器和物理总线之间的接口。该器件对总线提供差动发送能 力并对CAN控制器提供差动接收能力。它是全世界使用最广泛的CAN收发器。其主要特性 如下:
1)完全符合ISO11898标准;
2)抗瞬间干扰,保护总线;斜率控制,降低射频干扰;
3)具有差分接收器,抗宽范围的共模干扰,抗电磁干扰;
4)具有热保护;
5)防止电池和地之间的短路;
6)低电流待机模式;
7)未上电的节点对总线无影响;
PCA82c250外部管脚和内部结构图如图2-3、图2-4所示:
图2-3 PCA82c250管脚图
02-4 PCA82c250内部结构图
PCA82c250的管脚功能如表2-3所示:
表2—3 PCA82c250管脚功能10
符号
管脚
功能描述
TXD
1
发送数据输入
GND
2
地
Vcc
3
电源电压
RXD
4
接收数据输出
Vref
5
参考电压输出
CANL
6
低电平CAN电压输入/输出
CANH
7
高电平CAN电压输入/输出
Rs
8
斜率电阻
PCA82c250具有三种工作模式,其工作模式的条件如表2-4所示。
1)高速模式:管脚8接地。在此高速工作模式下,发送器输出级晶体管以最快速度导 通或截止。这种模式不采取任何措施限制上升和下降斜率。用户应使用屏蔽电缆防止射频 干扰问题。
2)斜率控制模式:对于较低速度和较短总线长度,可以使用非屏蔽线或平行线作为 总线。采取措施限制上升和下降斜率降低射频干扰问题。上升和下降斜率由管脚8接至地 的连接电阻进行控制,斜率正比于管脚8的电流输出。
3)准备模式:管脚8接至高电平,电路进入低电流待机模式。在此模式下,发送器关 闭,接收器转至低电流⑷。
表2-4 PC A82c250工作模式
在RS管脚上强制条件
模式
管脚上电压和电流
Vrs>0.75 Vcc
待机模式
-10|1A</rs<10(iA
—10|iA</rs< —200|iA
斜率控制模式
0.3Vcc<Vrs<0.6 Vcc
Vrs<0.3Vcc
高速模式
/rs V —500|iA
2.3光电隔离芯片6N137介绍及特性分析
6N137光耦合器是一款用于单通道的高速光耦合器。其内部由一个850 nm波长 AlGaAs LED和一个集成检测器组成。其检测器由一个光敏二极管、高增益线性运放及一 个肖特基钳位的集电极开路的三极管组成。它具有温度、电流和电压补偿功能,高的输入 输出隔离,LSTTL/TTL兼容,高速(典型为lOMBd), 5mA的极小输入电流⑷。特性如下:
11
1)转换速率高达lOMBit/s;
2)摆率高达lOkV/ps;
3)扇出系数为8;
4)逻辑电平输出;
5)集电极开路输出;
工作参数:最大输入电流,低电平:250|iA ;最大输入电流,高电平:15mA ;最大 允许低电平电压(输出高):0.8V ;最大允许高电平电压:Vcc ;最大电源电压输出:5.5V; 扇出(TTL负载):8个(最多);工作温度范围:-4(TC〜+85。以
6N137光耦合器的内部结构、管脚如图2-5、2-6所示:
6N137
图2-6 6N137内部结构图
6N137的内部结构原理如图2-6所示,信号从脚2和脚3输入,发光二极管发光,经 片内光通道传到光敏二极管,反向偏置的光敏管光照后导通,经电流-电压转换后送到与 门的一个输入端,与门的另一个输入为使能端,当使能端为高时与门输出高电平,经输出 三极管反向后光电隔离器输出低电平。当输入信号电流小于触发阈值或使能端为低时,输 出高电平,但这个逻辑高是集电极开路的,可针对接收电路加上拉电阻或电压调整电路图。
6N137光耦合器的真值如表2-5所示:
表2-5 6N137真值表12
6N137光耦合器真值表
输入电平
EN引脚电平
输出电平
高
高
低
低
高
高
低
高
低
低
低
I 1
RI
无关
低
低
无关
高
2.4电平转换芯片MAX232介绍及特性分析MAX232芯片是美信(MAXIM)公司专为RS-232标准串口设计的单电源电平转换
芯片,是最常见的有线通讯协议RS-232的转换芯片。它使用+5V单电源供电,常用于51 单片机、51单片机和嵌入式设备、PC机进行通信。
MAX232主要特点有:
1、
符合所有的RS-232c技术标准。
2、
只需要单一+5V电源供电。
3、
4、
功耗低,典型供电电流5mA。
5、
内部集成2个RS-232C驱动器。
6、
高集成度,片外最低只需4个电容即可工作。
片载电荷泵具有升压、电压极性反转能力,能够产生+10V和-10V电压V+、V-O
MAX232管脚和内部结构如图2-7、2-8所示:
图2-7 MAX232管脚图
图2-8 MAX232内部结构图
13
第一局部是电荷泵电路。由1、2、3、4、5、6脚和4只电容构成。功能是产生+12V 和-12V两个电源,提供给RS-232串口电平的需要。
第二局部是数据转换通道。由7、8、9、10、11、12、13、14脚构成两个数据通道。 其中 13 脚(R1IN)、12 脚(R1OUT)、11 脚(T1IN)、14 脚(T1OUT)为第一数据通道。 8 脚(R2IN)、9 脚(R2OUT)、10 脚(T2IN)、7 脚(T2OUT)为第二数据通道。TTL/CMOS 数据从11引脚(TUN)、10弓|脚(T2IN)输入转换成RS-232数据从14脚(T1OUT)、7 脚(T2OUT)送至!)电脑DB9插头;DB9插头的RS-232数据从13引脚(R1IN)、8弓|脚(R2IN) 输入转换成TTL/CMOS数据后从12引脚(R1OUT)、9引脚(R2OUT)输出。
第三局部是供电。15脚GND、16脚Vcc (+5v)叫2.5 AT89C51单片机介绍及特性分析
AT89C51 是一种带 4K 字节 FLASH 存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。 AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只 读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造, 与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪速存储器组 合在单个芯片中,ATMEL的AT89C51是一种高效微控制器⑸。
AT89C51提供以下标准功能:4k字节Flash闪速存储器,128字节内部RAM, 32个 I/O 口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口, 片内振荡器及时钟电路。同时,AT89c51可降至0Hz的静态逻辑操作,并支持两种软件可 选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口 及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有 部件工作直到下一个硬件复位⑸。
AT89C51外形及引脚排列如图2-9所示:
14
u?
1
P1.0VCC
Pl.lP0.0(AD0)
Pl.2PO.l(ADl)
Pl.3P0.2(AD2)
Pl.4P0.3(AD3)
Pl.5P0.4(AD4)
Pl.6PO.5(AD5)
Pl.7P0.6(AD6)
RSTP0.7(AD7)
P3.O(RXD)(EAyVPP
P3.1(TXD) ( PROG) ALE P3.2( INTO)PSEN
P3.3( INTI)P2.7(A15)
P3.4(T0)P2.6(A14)
P3.5(T1)P2.5(A13)
P3.6(/WR)P2.4(A12)
P3.7(RD)P2.3(A11)
XTAL2P2.2(A10)
XTAL1P2.1(A9)
GNDP2.0(A8)
X
3
4
5
6
一
S
9
1
0
11
ih
13
14_
15
16
17
18
19
2
0
AT89C51
_39
38
37
34
_33
32
36
15
3_1
30
29
_28
_27
26
24
图2-9 AT89C51管脚图
vcc:供电电压。
GND:接地。
P0 n: P0 口为一个8位漏级开路双向I/O 口,每脚可吸收8TTL门电流。P0能够用 于外部程序数据存储器,它可以被定义为数据/地址的低八位。
P1 口:P1 口是一个内部提供上拉电阻的8位双向I/O 口,P1 口缓冲器能接收输出4TTL 门电流。
P2 口: P2 口为一个内部上拉电阻的8位双向I/O 口,P2 口缓冲器可接收,输出4个 TTL门电流,当P2 口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作 为输入时,P2 口的管脚被外部拉低,将输出电流。
P3 口: P3 口管脚是8个带内部上拉电阻的双向I/O 口,可接收输出4个TTL门电流。 当P3 口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉 为低电平,P3 口将输出电流(ILL)这是由于上拉的缘故。
P3 口也可作为AT89c51的一些特殊功能口,如表2-6所示:
表2-6P3 口备选功能
P3 口管脚
备选功能
P3.0
RXD (串行输入口)
15
3.1 系统总体设计17
3.2 系统硬件电路详细设计18
3.2.1 PCA82C250收发电路设计18
3.2.2 6N137 电路设计19
3.2.3 MAX232接口电路设计20
3.2.4 SJA1000 接 口 电路设计21
3.2.5 AT89C51单片机模块周围电路设计22第四章软件设计24
4.1 RS232程序设计24
4.2 CAN通信程序设计26第五章实体电路制作和实验29
5.1 实体电路的制作26
5.2 实验分析30第六章总结与展望31
致谢32参考文献:33
P3.1
TXD (串行输出口)
P3.2
/INTO (外部中断0)
P3.3
/INT1 (外部中断1)
P3.4
TO (计时器0外部输入)
P3.5
T1 (计时器1外部输入)
P3.6
AVR (外部数据存储器写选通)
P3.7
/RD (外部数据存储器读选通)
P3 口编程校验接收一些控制信号。
RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/(/PROG):当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位 字节。
/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期 两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
(/EA)/VPP:当/EA保持低电平时,那么在此期间外部程序存储器(OOOOH-FFFFH),不 管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持 高电平时,此间内部程序存储器。
XTAL1 :反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出⑸。
16
第三章CAN总线与RS232转换接口设计
3.1 系统总体设计
本设计采用的单片机为ATMEL公司生产的AT89C51单片机,其作用是初始化CAN 控制器SJA1000,并控制它的数据收发等功能,实现串行数据的接收与处理;CAN控制器 选用PHILIPS公司的SJAlOOOo它支持CAN 2.0A/B规约,集成了 CAN协议的物理层和数 据链路层功能,其地址为0x000—OxOFF; CAN接收器选用PHILIPS公司的PCA82C250, 它可以支持110个CAN节点。其作用是对总线提供差动发送能力并对CAN控制器提供差 动接收能力;光电耦合器采用Technologies公司生产的6N137,其作用是防止串入信号干 扰,实现元器件间的电气隔离;电平转换芯片采用美信(MAXIM)公司专为RS-232标准 串口设计的单电源电平转换芯片MAX232,它把RS232电平转换到微控制器接口电路的 TTL电平。MAX232把终端设备COM接口的RS-232电平转换为TTL电平后接入AT89c51 单片机的串行口,在AT89c51单片机中将串行数据转换为并行数据,然后由单片机的IO 端口发送给CAN总线控制器SJA1000,再通过CAN总线接收器PCA82C250把数据送入 CAN总线中,完成了 RS-232总线到CAN总线的转换。从CAN总线到RS232总线的转换 只要把上述过程反过来即可。系统总体结构如图3-1所示:
0
ATC89C51
单片机
「「 SJA100。
控制器
6N137
PCA82C
250接收
器
<=> 光 耦 器
7^
CAN
总线
图3-1系统总体结构框图
17
系统硬件电路详细设计
硬件电路设计分为:PCA82c250收发电路设计、6N137电路设计、MAX232接口电路 设计、SJA1000与AT89c51单片机接口电路设计、AT89C51单片机模块周围电路设计。下 面是各个电路的详细设计。
3.1.1 PC A82c250收发电路设计
PCA82c250是CAN总线收发器,是光电耦合器6N137与CAN总线的接口器件,是 对CAN总线以差分方式发送,TXD和RXD引脚分别发送和接收经过驱动后的发送信号 和接收信号。
选用PCA82C250是因为SJA1000的信号输出驱动能力比拟低,它驱动不了系统所需 节点数。其次,82C250具有高速和抗瞬间干扰保护总线的能力。它可以和110个节点相连, 当某一个节点掉电时,也不影响总线,可以有效防止电池与地之间发生短路。
设计中为提高数据通信的可靠性和抗干扰性,在CAN总线两端接一个电阻以再接入 82C250,电阻的作用是匹备总线阻抗,其阻值与使用的导线有关,这里选用120。的电阻。 PCA82c250的RS引脚控制82c250的工作模式。由于系统的数据传输速率较慢,这里选 择斜率控制模式,RS引脚接一个47kQ的电阻后再接地。TXD引脚与光电耦合器发送通 道的引脚6相接,RXD引脚与光电耦合器接收通道的引脚3相接。Vref引脚置空,具体电 路如图3-2所示:
图3-2 PCA82C250收发电路
18
3.1.2 6N137电路设计
6N137高速光电隔离芯片是将电信号先转化为光信号,再转化为电信号。它可以在传 输信号的同时有效抑制尖锋脉冲和各种噪声干扰,提高开关通道信噪比。
6N137光耦合器的使用需要注意两点:一是6N137光耦合器的第6脚Vo输出电路属 于集电极开路电路,必须上拉一个电阻;二是6N137光耦合器的第2脚和第3脚之间是一 个LED,必须串接一个限流电阻⑷。
图3-3的6N137为发送通道,引脚1和4悬空,引脚2接VCC,引脚7和8接VEE, 引脚5接地,引脚6与CAN接收器PCA82c250的TXD引脚相接,引脚3通过一个390 Q的限流电阻与CAN控制器SJA1000的TX0引脚相接,当TX0为逻辑“ 1 ”时,发光二 极管不发光,输出三极管截止,TXDout输出高电平;反之,发光二极管发光输出三极管 导通,引脚6被拉到地,TXDout输出低电平,同理可得图作为接收通道的6N137逻辑。 发送通道和接收通道的NC引脚都置空,接收通道各引脚接法不再表达,如图3-4所示:
3-3 6N137发送通道
19
图3-4 6N137接收通道
3.1.3 MAX232接口电路设计
RS-232c接口电平采用的是负逻辑电平,即逻辑为-3 V〜-15V,逻辑〃0〃为+3 V〜 + 15Vo而CAN总线采用〃显性〃和〃隐性〃两个互补的逻辑值表示〃 0〃和〃1〃,它的信号以两 线之间的〃差分〃电压形式表现。因此,MAX232构成的接口转换电路的功能是实现RS232 电平与单片机AT89c51串口的TTL电平之间的相互转换⑷。
接口电路如图3-5所示:MAX232电平转换芯片的Rlout和Tlin弓I脚接AT89C51单 片机芯片的RXD引脚和TXD引脚。而Rlin和Tlout引脚分别与DB9接口的RXD引脚 和TXD引脚相接。DB9接口的引脚5直接接地。要使MAX232电平转换芯片正常工作, 引脚1和3、4和5之间分别接一个1 uF/25V的锂电容。引脚2和引脚16接+5V的Vcc 电源,引脚2与Vcc之间需加一个1 uF/25V的锂电容。引脚15接地且与Vcc相接,中间接 入一个1 uF/25V的锂电容。引脚6接地,中间亦加一个1 nF/25V的锂电容。
20
vcc
C7
JI
C5
IpF
:C6
IgF
1 2
T
4
7
6
7
I
Cl十 v+ Cl- C2十 C2- V-
C8
T2OUT
R2IN
XIAX232
VCC
GND
T1OUT RIIN
RI OUT
T1IN
T2IN
R2OUT
图3-5 MAX232接口电路
3.1.4 SJA1000接口电路设计
集成CAN控制器具有高可靠性、读写速度快的优点,外部CAN控制器的可靠性较差、 读写速度慢,但通过有效的设计亦可得到较高的可靠性和较快的读写速度。外部CAN控制 器的种类有很多,如SJA1OOO、CC750、SAE81C90/9K PCA82c200等。但在众多的总线 控制器中,Philips公司的SJA1000CAN控制器,性能优良,购买方便,应用非常广泛。出 于性价比和购买等因素的考虑,本设计选用外部CAN控制器SJA1000, o
SJA1000在电路中是一个总线接口芯片,通过它实现上位机与现场微处理器之间的数 据通信。该电路的主要功能是通过CAN总线接收来自上位机的数据并进行分析组态,然 后下传给下位机的控制电路实现某些控制功能。当CAN总线接口接收到下位机的上传数 据,SJA1000就会产生一个中断,从而引发微处理器产生中断,通过中断处理程序来接收 每一帧的信息,再通过CAN总线上传给上位机进行分析⑶。
AT89C51负责SJA1000的初始化,控制SJA1000来实现数据的接收和发送。SJA1000 的ADO〜AD7连接至AT89C51的低8位数据/地址复用口 P0端口。将MODE连接至高电 平,设置为Intel二分频模式。片选/CS端口连接至AT89C51的P2.7弓|脚。当P2.7为0时, AT89c51选中SJA1000,并通过访问外部RAM低地址区实现P0端口的读/写操作,从而21对SJA1000相应寄存器执行读/写操作。SJA1OOO的/RD、/WR、ALE引脚分别与AT89C51 单片机的对应引脚相接。对SJA1OOO的VDD1〜VDD3三个电源输入脚外接驱动+5V电压, 而VSS1〜VSS3三个输出接地。AT89C51的P3.2 口与SJA1OOO的/INT引脚相接,单片机 通过中断方式访问SJAlOOOo SJA1OOO与AT89C51单片机共同使用一个振荡电路。
这里需要注意的是SJA1OOO的RX1引脚须符合CAN协议要求的电平逻辑,为0.5VCC, 而TX1引脚置空。其次SJA1OOO的复位是低电平有效,它和单片机共用一个复位电路时 需加一个74LS04反相器后再接入SJA1OOO的/RST引脚,74LS04反相器是一个集成的6 反相器,这里只使用其中一个反相器。具体电路图如图3-6所示:
VCC
U2Jll
Jll
VCC
1 vcc
13
12
11
10
9
10
74LS04
2
I
9
10
13
14
15
16
17
18
ATS9C51
P1.0
Pl.l
Pl.2 Pl.3
Pl.4
Pl.5
Pl.6
Pl.7 RST P3.0(RXD)
VCC
P0.0(AD0) PO.l(ADl)
P0.2(AD2)
P0.3(AD3)
P0.4(AD4)
PO.5(AD5)
P0.6<AD6)
P0.7(AD7) (EA)VPP
38
ADI
37
AD2
36
AD3
35
AIM
34
AD5
33
AD6
32
AD7
39 ADO
AD6
P3.1(TXD)( PROG) ALE
P3.2( INTO)
PSEN
P3.3(1NT1)P2.7(A15)
P3.4<T0)P2.6(A14)
P3.5(T1)P2.5(A13)
P3.&MR)P2.4(A12)
P3.7(KD)P2.3(A11)
XTAL2P2.2(A10)
XTAL1P2.1(A9)
GNDP2.0(A8)
31
■^b
29
?8
26
?5
21
•»l
AD6
AD/ ALE AS cs
(/RD)E
MR
CLKOUT
VDD1
VSS1 XTAL1 XTAL2
VDD2
mw匚
VDD3
TXO
TX1
U1
28 AD5
27AD4
3
26 AD3
4
25_AD2
24 ADI
23 ADO
R8
47kO
9
10
11
SJA1000
□
12
TT
14
12
13
15
19
Ts
图3-6 SJAOOO与单片机接口电路
3.1.5 AT89C51单片机模块周围电路设计
单片机模块采用一个“最小”的AT89c51单片机应用系统,这个模块包括单片机、复 位电路和振荡电路三个局部。这里主要设计了后面两个局部。
单片机复位电路在基本RC复位电路的基础上增加了一个由二极管构成的放电回路。 二极管可以在电源电压瞬间下降的时候使电容快速放电,从而使系统复位,并且一定宽度 的电源毛刺也可以让单片机应用系统可靠复位⑷。由于实物制作需要,电路开关采用常见 的四脚开关,复位电路如图3-7所示:
22
vcc
图3-7单片机复位电路
晶体振荡电路使用晶体作为振荡器,利用单片机内部振荡单元和外部晶体一起产生时 钟信号。设计中使用16M晶体和两个30pF的电容构成振荡电路,如图3-8所示:
23
第四章软件设计
模块的软件设计主要包括RS232通信程序和CAN通信程序两局部,采用中断方式。
4.1 RS232程序设计
AT89C51单片机与RS232之间的数据传输采用异步方式,使用偶校位和一位结束位, 数据传输速率为9600波特率。每帧数据包含10比特的信息,分别为1比特的起始标志, 8比特数据,还有1比特的校验和。帧格式如表4-1所示:
表4-1数据帧格式
1
2
3
4
5
6
7
8
9
10
起始位(PE)
8Byte数据
校验和
通信一般由PC机发起。AT89C51单片机接收到来自PC机的数据后,判断接收到的 信息是否有误码,判断是否有误码主要通过计算各校验和是否有出错,假设出错,单片机把 原信息返回。假设有错误,单片机那么不作回应。
程序设计主要使用子程序设计,在定义有关变量后分别设计了 UART_init()串口初始 化函数、com_interrup ()串口接收中断处理函数、COM_send ()串口发送函数、 CLU_checkdata()计算校验位函数四个子函数。用主函数来调度各个子函数来完成RS232 与单片机的通信。程序设计流程图如图4-1所示:
24
开始
校验和是否正确?
调用发送程序图4-1 MAX232程序流程图
下面是主函数,其功能是调度个子函数来完成RS232与单片机的通信完成通信过程。
void main(void)
{
unsigned char checkdata;
do
(
UART_init();
if(point==10)
checkdata二CLU checkdata; if(checkdata==buffer[9]) COM_send();
point=0;
) while(l);
)
〃初始化串口
〃判断数据是否接收完成
〃调用求校验和函数
〃判断校验和是否正确
〃正确那么调用发送程序
下面是UART_init()串口初始化函数。在系统时钟为16MHZ时,设定串口波特率为9600 波特率,串口接收中断允许,发送中断禁止。
void UART_init(){〃初始化串行口和波特率发生器
25
摘要 CAN (Controller Area Network)总线是一种具有国际标准的、高性价比的现场总 线,它在当今自动控制领域中的应用极为广泛,并在自动控制领域发挥着重要的作用。但 在现今的工业领域中,RS232总线仍然占有很大的比重,要使不同总线之间实现数据传输 和通信,必须在总线之间加入转换模块。论文针对这一问题设计了一个简单的CAN总线 与RS232转换接口电路的设计方案。该方案以AT89C51单片机和SJA1000 CAN总线控制 器为核心,辅以光电隔离芯片6N137、CAN收发驱动器PCA82C250和电平转换芯片 MAX232oCAN-RS232转换接口通过硬件电路的标准电平转换和软件编程的通信协议转换 来实现相关功能。论文介绍了有关元器件和详细的软硬件设计过程,并制作了具体电路进 行实验。
关键词: CAN 总线,RS232, SJA1000, AT89c51 单片机,PCA82C250, MAX232
SCON =0x58;
TMOD =0x21;
TH1 =Oxfd;
TRI =1;
ET1 =0;
ES=1;
PS=1;
EA=1;
)
〃选择串口工作方式,翻开接收允许〃定时器1工作在方式2,定时器。工作在方式1
〃实现波特率9600 (系统时钟16MHZ)〃启动定时器T1
〃允许串行口中断〃设计串行口中断优先级
〃单片机中断允许CAN通信程序设计
在SJA1000工作之前,先通过读写测试寄存器来判断SJA1000与单片机的物理连接是 否正确。然后才进行初始化操作,包括设置时钟分频寄存器OCR,设定SJA1000工作模式, 设定CLKOUT引脚输出时钟频率;设置总线定时滤波器,设定总线数据传输速率;设置 报文滤波器,设定具体的滤波值,选择特定的报文;设置输出控制滤波器,配置输出驱动 类型;设置中断寄存器,选择中断类型。以上工作必须在SJA1000的复位模式下进行,初 始化结束,设置SJA1000进入工作模式⑶。
当退出复位模式时,SJA1000按复位时设定的条件工作于工作模式,假设芯片无再次复 位,那么上次设定的值不变。当需要发送信息时,如果发送缓冲器处于空闲状态,那么由CPU 控制信息写入发送缓冲区中,再由控制寄存器控制信息的发送;假设接收缓冲器未满并且接 收信息通过ASP,那么接收到的信息将被写入RXFIFO⑶。
CAN通信程序局部将CAN总线的传输波特率设置为100k波特率,BTR0为04 H, BTR1为IC Ho采用PeliCAN模式的标准数据帧格式,每条报文的标识符ID为11位,有 效数据为。〜8个字节。其程序流程图如图4-2所示:
26
(号台)选择工作模式和频率
:一——二:一11
Y设置SJA1000复位模式
设置CAN总线工作模式设置CAN总线数据传输 工 一
设置接收报文类型设置输出类型
设置中断类型选择工作模式
接收或发送数据
图4-2 CAN程序流程图
下面是中断子函数。中断子函数名称为SJA」NTR,其中断寄存器地址为03H,功能是 中断分析,判断是什么中断,并调用相应的中断处理函数。
void SJA_INTR() interrupt 0 using 1 (
unsigned char sta;
unsigned char temp;
EXO = 0;
sta = CANREG_read
展开阅读全文