CAN(Controller Area Network)总线是德国BOSCH公司为解决现代汽车中众多控制与测试之间的数据交换开发的一种串行数据通信协议,是一种多主方式的串行通信总线。CAN总线是一种开放式、数字化、多点通信的控制系统局域网,具有通信速率高、传输时间短、传输距离远、纠错能力强、控制简单、扩展能力强以及性价比高等特点,是目前国际上应用最广泛的现场总线之一。但是目前PC机普遍配置RS232串行通信接口,没有CAN总线接口。实际中很多设备带有RS-232接口没有CAN总线接口,为了方便具有RS-232接口的设备与CAN总线的数据通信,本文完成了基于单片机ATMega16控制的CAN总线与RS-232转换器电路设计和软件设计,实现了CAN总线数据与RS-232接口设备的数据传输。
一、简述CAN总线与RS232协议
CAN作为一种多主方式的串行通讯总线,其基本设计规范要求高位速率和较高的抗电磁干扰性能,而且要能够检测出通讯总线上产生的任何错误。当信号传输距离达10km时,CAN仍可提供高达5kbit/s的数据传输速率。表1为CAN总线上任意两个节点之间最大传输距离
与其位速率之间的对应关系。
由此可见,无论从实时性、适应性、灵活性,还是可靠性上来看,CAN总线都是一种比较优秀的串行总线。当两台串口设备的相距较远,不能直接用RS-232把它们连接起来时,就可以把RS-232转换为CAN,通过CAN总线来实现串口设备的网络互连。
表1 CAN总线系统任意两节鼎足之势之间的最大距离
RS-232和CAN在电平和帧格式上都是很大的不同。具体表现如下:RS-232标准电平±(3V~15V)之间。而CAN信号则使用差分电压传送,两条信号线称为“CAN_H”和“CAM_L”,静态时均为2.5V左右;RS-232串口的帧格式为:一位起始位,八位数据位,一位可编程的第九位,一位停止位。而CAN的数据帧格式为:帧信息+ID+数据。
二、CAN总线转RS232总体设计
CAN总线转2 3 2 的接口硬件电路, 主要选用MAX232、ATMega16、SJAl000和MCP2551设计实现。
其原理框图如图1所示。
三、转换器硬件设计
3.1 主控制器设计
主控制器选择ATMEL公司的ATMega16作为主处理器,该芯片是一个低电压,高性能单片机,片内含可反复擦写的EEPROM和随机存取数据存储器(RAM),兼容标准MCS-51指令系统。
ATMega16有44个引脚,32个外部双向I/0端口,同时内含3个外中断口,2个8位和1个16位可编程定时计数器,1个全双工串行通信口,ATMega16可按常规方法进行编程,也可在线编程。ATMega16的4脚接复位电路,低电平有效;9,10脚接MAX232的数据接收/发送端;PD口脚接SJAl000的控制端端;7,8脚接晶振电路;PB口接SJAl000的复用地址/数据总线。
3.2 MAx232电路设计
选择MAX232芯片作为RS232与CAN总线的电平转换器。MAX232是一种电平转换驱动器,提供TTL与RS232电平的转换。其13、14脚接到232接口的2、3针;11、12脚接到单片机的接收、发送端。
3.3 CAN控制器电路设计
选用Phi l ip公司的SJAl000芯片实现CAN控制器和CAN总线驱动器。SJAl000控制器与单片机硬件连接电路设计,如图2、3所示。
为使SJAl000正确复位,CAN控制器必须连接一个稳定的振荡器时钟,这里选择16MHz的晶振。
3.4收发器电路设计
收发器是协议控制器和物理传输线路之间的接口,这里由MCP2551实现。协议控制器通过串行数据输出线(Tx)和串行数据输入线(RX)连接到收发器,收发器通过有差动发送和接收功能的两个总线终端CANH和CANI。连接到总线电缆,实现CAN总线的数据通信。如图4所示。
四、主程序设计
在微处理控制下,RS-232和CAN进行数据交换时,采用CAN查询方式和串口发送可提高工作效率。其主程序流程图如图5所示。SJA1000的初始化在复位模式下才可以进行,主要包括工作方式的设置、时钟分频和验收滤波寄存器的设置、波特率参数的设置以及中断允许寄存器的设置等。数据能否准确传递还取决于波特率和流量控制,这也是软件设计时不可忽略的地方。
串口波特率采用9600 bit/s,系统上电初始化后CAN控制器查询发送标志位,一旦发送缓冲区空就发送数据。同时也检测状态寄存器的接收标志位,当有数据接收时读取接收缓冲区,然后判断接收数据帧,当接收帧为错误帧就丢掉数据并将CAN控制器复位,如果数据帧是正确帧就将该帧打包成符合RS232协议的帧结构,通过串口发送出去。
五、结束语
本文采用ATMega16、SJAl000、MCP2551和MAX232,设计开发了CAN总线转232的接口,完成了两种协议的转换,实现了CAN总线与RS232通信接口设备之间的通信。测试和实际使用表明该接口运行稳定、可靠,达到了设计要求。
关键字:单片机 ATMega16 CAN总线 RS-232转换器
引用地址:
基于单片机ATMega16控制的CAN总线与RS-232转换器电路
推荐阅读最新更新时间:2024-03-16 15:58
把32位微控制器性能带入工业和汽车应用
现今的嵌入式工业及汽车系统中,有许多是基于8位或16位微控制器架构来设计的。随着新的低功耗32位架构的面市,这些应用有可能获得更高的性能、准确度和功效。此外,处理能力的提高也有助于实现新产品的差异性功能,包括先进的控制算法,GUI显示器、语音控制,以及电容式触摸感测等下一代接口。 例如,在许多工业应用中,马达效率是影响功耗的主要因素之一。利用先进的控制算法可以提高马达效率,但这些算法又需要更高性能的微控制器来实现。另一方面,通信速度也同样会影响效率,因为通信速度越高,系统就能够从传感器收集到更多的信息,同时更快速地识别事件并采取相应的行动。 过去32位架构转换一直受拖延的原因很多,比如微控制器的成本较高,不支持5V I/O等等。
[单片机]
MCU软件基准测试实用技巧:编译器优化能力评测指引
在MCU开发和应用中,工程师都需要进行MCU的能力测试,通用的做法是用Benchmark(基准)程序来测试。然而,在做基准测试时,编译器的优化能力也在测试结果中有较为明显的影响,同一套硬件平台,选用不同的编译器和不同的优化选项,可能得出的结果相差较大。 为了最大程度释放MCU的性能,在基准测试中取得最理想的结果,往往需要工程师不仅对自身的硬件比较了解,更需要深入了解编译器的优化原理,并灵活应用,才能在基准测试中发挥出MCU的全部性能。IAR Systems作为全球知名的嵌入式工具厂商,其编译器在优化能力上有独特的优势,MCU配合IAR的编译器往往能够得出较好的基准测试结果。 本文以已在MCU领域内广泛使用的IAR Embe
[嵌入式]
51单片机扩充串行口的方法
基本的 51 单片机有四个并行口,其中还包含了一个串行口。 当接口不够用的时候,大家就会想到,使用什么外接芯片来扩充。 但是,各种教材、参考书、网络文章,介绍扩充并行口的花样不少,扩充串行口的方法,几乎无人问津。 偶尔见到一个,也是使用 8250、8251 等“巨型”芯片来扩充的 使用这些芯片,就要占用单片机很多的更为紧缺的并行口,基本上就是得不偿失。更别说还要设置复杂的控制字了。 使用简单的三态门,即可为单片机扩充串行口,仅仅占用单片机的一、二个引脚作为控制引线而已。 实际上是很简单的,就像使用 74LS373、74LS244 扩充并行口一样,为串行口,配上合适三态门就行了。 选用 74LS125(低电平
[单片机]
单片机程序中为什么要禁止看门狗
单片机程序中为什么要禁止看门狗 设置看门狗定时器的时候,必须先关闭它才能设置,否则在开启状态下设置看门狗定时器可能会出现问题。一般单片机和DSP、还有ARM芯片里设置内部功能的时候,都是先关闭这个功能,再设置。中断也是类似的,我们通常它把中断全部关闭了,然后在程序里面进一步设置。 要搞清楚关闭看门狗定时器的深层次原因,我们先得明白其用途: 它其实就是一个定时器,这个定时器溢出是会产生一个中断响应,这个中断响应对应的中断服务就是跳回程序开头,也就是复位。启动看门狗后,要定时在程序中把看门狗的计数器清0,以防止它进入中断然后复位,这就叫做喂狗。 看门狗定时器常用在程序很容易跑飞的情况下(比如等待超时,意外
[单片机]
基于DSPIC30F4011单片机的CAN总线通信设计
0 引言
CAN (CONtroller Area Network) 即控制器局域网络, 属于工业现场总线的范畴。与一般的通信总线相比, CAN总线的数据通信具有突出的可靠性、实时性和灵活性。事实上, 由于其良好的性能及独特的设计, CAN总线越来越受到人们的重视。同时, 由于CAN总线本身的特点, 其应用范围目前已不再局限于汽车行业, 而且向着自动控制、航空航天、航海、过程工业、机械工业、纺织机械、农用机械、机器人、数控机床、医疗器械及传感器等领域发展。为此, 本文给出了利用两片DSPIC30F4011, 并用双绞线将两单片机的CAN模块连接起来组成一个CAN总线, 而两单片机相当于CAN总线上的两个结点, 再
[嵌入式]
基于STC15单片机的循迹避障遥控车
Altium Designer画的基于STC15的循迹避障遥控车原理图和PCB图如下: 单片机源程序如下: #include all.h extern unsigned char code INRECO ,TL ,TriLU ,TriLD ,TRU ,TRD ,FR ,TriRU ,TriRD ,ST ,TR ,BR ,Back ; extern bit deal_over; extern bit deal_over_flag; extern bit flag; extern ADC_BF_value,ADC_LR_value; bit Show_flag,Tracing_flag,U_flag,clean_flag,ligh
[单片机]
基于51单片机的智能恒温箱设计
一.系统概述 系统使用的模块有AT89C51单片机+8位共阳极数码管+DS18B20温度检测模块+按键+小灯。 本设计采用51单片机为核心控制,使用数码管进行温度以及阈值的显示,通过按键可以对温度上限和温度的下限进行设置,当检测到温度超过温度上限和温度下限后会通过小灯进行报警。 二.仿真概述 1.使用8位共阳数码管显示实时温度。 2.通过按键可以调节温度阈值,阈值分为上限和下限,通过按键可以对阈值进行加减调节。 3.当温度低于温度下限阈值后黄灯就会亮。 4.当液位高于温度上限阈值后绿灯就会亮。 三.程序设计 使用Keil 51进行程序设计,打开Proteus时程序是默认烧录的状态,如果没有烧录点击AT89C
[单片机]
单片机控制GSM模块实现短信收发的软件设计
GSM(Global System for Mobile communication)系统是目前基于时分多址技术的移动通信体制中,比较成熟完善,且应用最广泛的一种系统。目前已建成的覆盖全国的GSM数字蜂窝移动通信网,是我国公众移动通信网的主要方式。基于GSM的短信信息服务,是一种在移动网络上传送简短信息的无线应用,是一种信息在移动网络上存储和转寄的过程。由于公众GSM网络在全球范围内实现了联网和漫游,建议上述系统不需再组建专用通信网络,所以具有实时传输数据功能的短信应用将得到迅速普及。笔者开发设计的基于GSM网络的温度数据采集与无线传输系统正是借助该网络平台,利用短信息业务实现数据的自动双向传递。系统模型图如图1所示。
本
[单片机]