曾璐阳
(武汉理工大学自动化学院,湖北 武汉 430070)
基于 STM32 的 CAN 总线 /RS232 接口转换器的设计
曾璐阳
(武汉理工大学自动化学院,湖北 武汉 430070)
RS232 接口和 CAN 总线等通信技术得到广泛的应用,但是各有优缺点。RS232 的接口容易受损,而在一般上位机上并没有CAN总线的接口。所以本设计主要提出了基于STM32的CAN总线/RS232接口的转换器的设计,以SN65HVD230芯片为 CAN 总线收发器,MAX3232 实现 RS232 的电平转换。
CAN/RS232 转换器;STM32;SN65HVD230;MAX3232
在现代工业控制中,RS232 接口和 CAN 总线等通信技术得到广泛的应用。RS232 适合用于短距离的传输,虽然成本低廉,但其接口容易受损。CAN 总线有着组网简单、传送距离远、实时性好等优点,但是一般的上位机并没有 CAN 接口。所以本文提出了一种基于 STM32 微控制器的 CAN/ RS232 转换器的设计。
(1) 硬 件 方 案 设 计。 本 设 计 中,CPU 为STM32 芯片,CAN 总线的收发器为 SN65HVD230芯片,RS232 的电平转换则用 MAX3232 实现。具体系统框图如图1所示。
图1 系统框图
(2)CPU 介绍。本设计选用的 CPU 是意法半导体公司的 STM32F103VC 芯片,其最高的工作频率可达 72MHz,内部集成有 512KB 的闪存以及64KB 的静态 随机存取存储器。具有 足够的 I/O 口资源,且内嵌有 CAN2.0B 主动接口,可以满足功能要求。STM32 与 CAN 收发器之间选用光电耦合器进行隔离,从而提高系统抗干扰性。
(3)RS232 电平转换。STM32 内置有 USART模 块, 完 全 支 持 RS-232 协 议。 但 是,STM32 的TTL 电 平 与 RS-232 电平 的 逻 辑 电 平 定义 不 同,两者之间并不兼容,因此不能直接连接。所以,本 设计 选 用 电 平转 换 芯 片 MAX3232DR 芯 片,实现 RS-232 电 平和 TTL 电 平 之间 的 相互 转 换。MAX3232DR 芯片的功能与工业标准 MAX232 相兼容,并且相比于传统的 MAX232 的 5V 供电,MAX3232DR 在 3.3V 电压下就可以正常工作了,简化了电路设计的复杂度,具体电路如图2所示。
图2 RS232 通新电路
在进行 RS-232 通讯时一般只需要 RxD、TxD以及地线即可,设计时简化了其余的接口设计。芯片的外围电路最少需要4个电容工作,其中包括一对浮动电容(C113,C114)和一对存储电容(C115,C116)来产生 V+ 和 V-的电源。在实际应用中,由于芯片对电源的噪声比较敏感,所以需要在 VCC上对地加上一个去耦电容(C117),所有电容都选用 0.1uf的电解电容。
(4)CAN 收 发 器 SN65HVD320。 一 般 CAN总线上被称为 CAN_H 和 CAN_L 两条信号线的信号均使用差分电压进行传送,这两条信号线在静态时电压均为 2.5V 左右,该时刻的状态表示为逻辑“1”,称作隐性电平;当 CAN_H 的电平比 CAN_L的电平高的时候,该时刻的状态表示为逻辑“0”,称作显性电平。一般此时 CAN_H 的电平为 3.5V,而 CAN_L 的电平为 1.5V。
本次设计中使用的是 SN65HVD230 芯片,是TI公司生产的 3.3V 的 CAN 总线收发器,其具有差分收发能力,最高速率可达 1Mb/s,广泛应用于工业自动化领域。具体的CAN 电路设计如图3所示,在 CAN 总线终端并联一个电阻,伺服系统并行连接到 CAN 总线上且可通过跳线帽选择是否接入到网络中。
图3 CAN 收发器电路原理
由于转换器分别连接 CAN 和 RS232,所以软件设计的主要目的是数据在两种协议之间的转换,同时还要保证稳定性和实时性。
为了与其他 CAN 接口能够更好的兼容,本系统采用标准 CAN2.0 协议。主程序的流程图如图4所示。
图4 主程序流程图
当程序启动时,首先进行系统初始化,包括设置 CAN 接口通信波特率为 80kbs,USART 波特率为 9600kbs,同时设置 USART 优先级低于 CAN 接口接收中断优先级。
while 死循环构成整个程序的主循环,首先判断CAN 缓存区有无数据,如有数据则进入 CAN 接收中断子程序,并将其转换成 USART 格式,同时送至发送缓冲区,确保其能用 USART 输出;如无数据则先判断 USART 缓存区有无数据,如有数据,则将其转换成 CAN 格式,并送至发送缓冲区,同时调用 CAN来发送服务程序,
服务程序为 CAN 主动发送,首先按照制定好的通信协议将待发送数据有序地放入发送数组中,然后配置标识符并选择一个空的发送邮箱,最后再调用 CAN 发送子函数即可。
在诸多领域中,都有 RS232/CAN 转换器的使用之处。实际应用中将转接器的 CAN_H 和 CAN_ L连接到外设通信设备的 CAN 接口上,并将转换器的 RS232 串口线连接到上位机的串口。
实验证明,串口通信波特率一般在1200~38400bps,而CAN通信波特率正常范围一般在 5~800kbps 之间。
本 设 计 选 用 STM32 作 为 CPU 来 设 计 一 款CAN/RS232 转 换 器,SN65HVD230 芯 片 为 CAN总线收发器,MAX3232 实现 RS232 的电平转换,经实验得出,本设计安全可靠且速度稳定,拥有一定的实用价值。
[1]周绪贵,查风 . 基于 STM32F103 的 CAN/RS232 转换板卡的设计与应用 [J]. 工业控制计算机,2014,27(5):49~51.
[2]王英志,杨佳 . 基于 STM32 的 RS232-CAN 通信协议转换器的设计 [J]. 制造业自动化,2013,35(7):141~143.
[3]陈志旺 . STM32 嵌入式微控制器快速上手 [M]. 北京:电子工业出版社,2014:58~60.
[4]谭涯 . 一种网络化智能仪器设计与实现 [D]. 武汉 :武汉理工大学,2013.
[5]黄 江 源 . 智 能 仪 器 仪 表 技 术 进 展 及 前 瞻 [J]. 科 技 资 讯,2008,14(5):41.
[6]韩成浩,高晓红 . CAN 总线技术及其应用 [J]. 制造业自动化 , 2010 (2):146~149.2.
TP336
A
1671-0711(2017)03(下)-0111-02