1、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介绍及特性
2、分析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 输出 数据发送
3、引脚 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.
4、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
5、0B active支持带有29位标识符 的网络扩展应用 发送缓冲器 有11位或29位标识符的报文的单报 文发送缓冲器 增强的验收滤波器 两个验收滤波器模式支持11位和29 位标识符的滤波 可读的错误计数器 支持错误分析在原型阶段和在正常操 作期间可用于:诊断、系统维护、系统 优化 可编程的出错警告界限 错误代码捕捉寄存器 出错中断 仲裁丧失捕捉中断 支持系统优化包括报文延迟时间的分 析 单次发送 使软件命令最小化和允许快速重载发 送缓冲器 仅听模式 SJA1OOO能够作为一个认可的CAN监 控器操作,可以分析CAN总线通信或 进行自动位速率检测 自测试
6、模式 支持全部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信号
7、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输出驱动器的输
8、出端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协议控制
9、器和物理总线之间的接口。该器件对总线提供差动发送能 力并对CAN控制器提供差动接收能力。它是全世界使用最广泛的CAN收发器。其主要特性 如下: 1)完全符合ISO11898标准; 2)抗瞬间干扰,保护总线;斜率控制,降低射频干扰; 3)具有差分接收器,抗宽范围的共模干扰,抗电磁干扰; 4)具有热保护; 5)防止电池和地之间的短路; 6)低电流待机模式; 7)未上电的节点对总线无影响; PCA82c250外部管脚和内部结构图如图2-3、图2-4所示: 图2-3 PCA82c250管脚图 02-4 PCA82c250内部结构图 PCA82c250的管脚功能如表2-3所示:
10、 表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)斜
11、率控制模式:对于较低速度和较短总线长度,可以使用非屏蔽线或平行线作为 总线。采取措施限制上升和下降斜率降低射频干扰问题。上升和下降斜率由管脚8接至地 的连接电阻进行控制,斜率正比于管脚8的电流输出。 3)准备模式:管脚8接至高电平,电路进入低电流待机模式。在此模式下,发送器关 闭,接收器转至低电流⑷。 表2-4 PC A82c250工作模式 在RS管脚上强制条件 模式 管脚上电压和电流 Vrs>0.75 Vcc 待机模式 -10|1A
12、高速模式 /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)集电极开路输出; 工作参数:最大输入
13、电流,低电平: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输入,发光二极管发光,经 片内光通道传到光敏二极管,反向偏置的光敏管光照后导通,经电流-电压转换后送到与 门的一个输入端,与门的另一个输入为使能端,当使能端为高时与门输出高电平,经输出 三
14、极管反向后光电隔离器输出低电平。当输入信号电流小于触发阈值或使能端为低时,输 出高电平,但这个逻辑高是集电极开路的,可针对接收电路加上拉电阻或电压调整电路图。 6N137光耦合器的真值如表2-5所示: 表2-5 6N137真值表12 6N137光耦合器真值表 输入电平 EN引脚电平 输出电平 高 高 低 低 高 高 低 高 低 低 低 I 1 RI 无关 低 低 无关 高 2.4电平转换芯片MAX232介绍及特性分析MAX232芯片是美信(MAXIM)公司专为RS-232标准串口设计的单电源电平转换 芯片,是最常见的有线通讯协议RS-
15、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 第
16、一局部是电荷泵电路。由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插头
17、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字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只 读存储器可以反复擦除1
18、000次。该器件采用ATMEL高密度非易失存储器制造技术制造, 与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪速存储器组 合在单个芯片中,ATMEL的AT89C51是一种高效微控制器⑸。 AT89C51提供以下标准功能:4k字节Flash闪速存储器,128字节内部RAM, 32个 I/O 口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口, 片内振荡器及时钟电路。同时,AT89c51可降至0Hz的静态逻辑操作,并支持两种软件可 选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口 及中断系统继续工作。掉电方式保
19、存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.
20、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 一
21、 S 9 1 0 11 ih 13 14_ 15 16 17 18
22、 19 2 0 AT89C51 _39 38 37 34 _33 32 36 15 3_1 30 29 _28 _27
23、 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”时,其管脚被内部上拉电阻拉高,且
24、作为输入。并因此作 为输入时,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
25、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外部输入
26、 P3.6 AVR (外部数据存储器写选通) P3.7 /RD (外部数据存储器读选通) P3 口编程校验接收一些控制信号。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/(/PROG):当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位 字节。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期 两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 (/EA)/VPP:当/EA保持低电平时,那么在此期间外部程序存储器(OOOOH-FFFFH),不 管是否有内部
27、程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持 高电平时,此间内部程序存储器。 XTAL1 :反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出⑸。 16 第三章CAN总线与RS232转换接口设计 3.1 系统总体设计 本设计采用的单片机为ATMEL公司生产的AT89C51单片机,其作用是初始化CAN 控制器SJA1000,并控制它的数据收发等功能,实现串行数据的接收与处理;CAN控制器 选用PHILIPS公司的SJAlOOOo它支持CAN 2.0A/B规约,集成了 CAN协议的物理层和数 据链路层功能,其地址为0x000—
28、OxOFF; CAN接收器选用PHILIPS公司的PCA82C250, 它可以支持110个CAN节点。其作用是对总线提供差动发送能力并对CAN控制器提供差 动接收能力;光电耦合器采用Technologies公司生产的6N137,其作用是防止串入信号干 扰,实现元器件间的电气隔离;电平转换芯片采用美信(MAXIM)公司专为RS-232标准 串口设计的单电源电平转换芯片MAX232,它把RS232电平转换到微控制器接口电路的 TTL电平。MAX232把终端设备COM接口的RS-232电平转换为TTL电平后接入AT89c51 单片机的串行口,在AT89c51单片机中将串行数据转换为并行数据,然后由单
29、片机的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与
30、AT89c51单片机接口电路设计、AT89C51单片机模块周围电路设计。下 面是各个电路的详细设计。 3.1.1 PC A82c250收发电路设计 PCA82c250是CAN总线收发器,是光电耦合器6N137与CAN总线的接口器件,是 对CAN总线以差分方式发送,TXD和RXD引脚分别发送和接收经过驱动后的发送信号 和接收信号。 选用PCA82C250是因为SJA1000的信号输出驱动能力比拟低,它驱动不了系统所需 节点数。其次,82C250具有高速和抗瞬间干扰保护总线的能力。它可以和110个节点相连, 当某一个节点掉电时,也不影响总线,可以有效防止电池与地之间发生短路。 设计中为提高
31、数据通信的可靠性和抗干扰性,在CAN总线两端接一个电阻以再接入 82C250,电阻的作用是匹备总线阻抗,其阻值与使用的导线有关,这里选用120。的电阻。 PCA82c250的RS引脚控制82c250的工作模式。由于系统的数据传输速率较慢,这里选 择斜率控制模式,RS引脚接一个47kQ的电阻后再接地。TXD引脚与光电耦合器发送通 道的引脚6相接,RXD引脚与光电耦合器接收通道的引脚3相接。Vref引脚置空,具体电 路如图3-2所示: 图3-2 PCA82C250收发电路 18 3.1.2 6N137电路设计 6N137高速光电隔离芯片是将电信号先转化为光信号,再转化为电信号。它可以在
32、传 输信号的同时有效抑制尖锋脉冲和各种噪声干扰,提高开关通道信噪比。 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输出高电平;
33、反之,发光二极管发光输出三极管 导通,引脚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构成的接口转换电路的功能是实现RS23
34、2 电平与单片机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的
35、锂电容。 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、C
36、C750、SAE81C90/9K PCA82c200等。但在众多的总线 控制器中,Philips公司的SJA1000CAN控制器,性能优良,购买方便,应用非常广泛。出 于性价比和购买等因素的考虑,本设计选用外部CAN控制器SJA1000, o SJA1000在电路中是一个总线接口芯片,通过它实现上位机与现场微处理器之间的数 据通信。该电路的主要功能是通过CAN总线接收来自上位机的数据并进行分析组态,然 后下传给下位机的控制电路实现某些控制功能。当CAN总线接口接收到下位机的上传数 据,SJA1000就会产生一个中断,从而引发微处理器产生中断,通过中断处理程序来接收 每一帧的信息,再通过CAN
37、总线上传给上位机进行分析⑶。 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三个电源输
38、入脚外接驱动+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 Jl
39、l
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 40、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 41、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 AT 42、89C51单片机模块周围电路设计
单片机模块采用一个“最小”的AT89c51单片机应用系统,这个模块包括单片机、复 位电路和振荡电路三个局部。这里主要设计了后面两个局部。
单片机复位电路在基本RC复位电路的基础上增加了一个由二极管构成的放电回路。 二极管可以在电源电压瞬间下降的时候使电容快速放电,从而使系统复位,并且一定宽度 的电源毛刺也可以让单片机应用系统可靠复位⑷。由于实物制作需要,电路开关采用常见 的四脚开关,复位电路如图3-7所示:
22
vcc
图3-7单片机复位电路
晶体振荡电路使用晶体作为振荡器,利用单片机内部振荡单元和外部晶体一起产生时 钟信号。设计中使用16M晶体 43、和两个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单片机 44、接收到来自PC机的数据后,判断接收到的 信息是否有误码,判断是否有误码主要通过计算各校验和是否有出错,假设出错,单片机把 原信息返回。假设有错误,单片机那么不作回应。
程序设计主要使用子程序设计,在定义有关变量后分别设计了 UART_init()串口初始 化函数、com_interrup ()串口接收中断处理函数、COM_send ()串口发送函数、 CLU_checkdata()计算校验位函数四个子函数。用主函数来调度各个子函数来完成RS232 与单片机的通信。程序设计流程图如图4-1所示:
24
开始
校验和是否正确?
调用发送程序图4-1 MAX232程序流程图
下面是主函数 45、其功能是调度个子函数来完成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时, 46、设定串口波特率为9600 波特率,串口接收中断允许,发送中断禁止。
void UART_init(){〃初始化串行口和波特率发生器
25
摘要 CAN (Controller Area Network)总线是一种具有国际标准的、高性价比的现场总 线,它在当今自动控制领域中的应用极为广泛,并在自动控制领域发挥着重要的作用。但 在现今的工业领域中,RS232总线仍然占有很大的比重,要使不同总线之间实现数据传输 和通信,必须在总线之间加入转换模块。论文针对这一问题设计了一个简单的CAN总线 与RS232转换接口电路的设计方案。该方案以AT89C51单片机和SJA1000 CAN总线控制 器为核 47、心,辅以光电隔离芯片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, 48、定时器。工作在方式1
〃实现波特率9600 (系统时钟16MHZ)〃启动定时器T1
〃允许串行口中断〃设计串行口中断优先级
〃单片机中断允许CAN通信程序设计
在SJA1000工作之前,先通过读写测试寄存器来判断SJA1000与单片机的物理连接是 否正确。然后才进行初始化操作,包括设置时钟分频寄存器OCR,设定SJA1000工作模式, 设定CLKOUT引脚输出时钟频率;设置总线定时滤波器,设定总线数据传输速率;设置 报文滤波器,设定具体的滤波值,选择特定的报文;设置输出控制滤波器,配置输出驱动 类型;设置中断寄存器,选择中断类型。以上工作必须在SJA1000的复位模式下进行,初 始化结 49、束,设置SJA1000进入工作模式⑶。
当退出复位模式时,SJA1000按复位时设定的条件工作于工作模式,假设芯片无再次复 位,那么上次设定的值不变。当需要发送信息时,如果发送缓冲器处于空闲状态,那么由CPU 控制信息写入发送缓冲区中,再由控制寄存器控制信息的发送;假设接收缓冲器未满并且接 收信息通过ASP,那么接收到的信息将被写入RXFIFO⑶。
CAN通信程序局部将CAN总线的传输波特率设置为100k波特率,BTR0为04 H, BTR1为IC Ho采用PeliCAN模式的标准数据帧格式,每条报文的标识符ID为11位,有 效数据为。〜8个字节。其程序流程图如图4-2所示:
26
( 50、号台)选择工作模式和频率
:一——二:一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






