您的位置首页>企业动态>

基于ARM9与LINUX的RS485总线的通信接口设计

导读大家好,我是极客范的本期栏目编辑小友,现在为大家讲解基于ARM9与LINUX的RS485总线的通信接口设计问题。ARM9处理器的S3C2440上设计了RS485

音频解说

大家好,我是极客范的本期栏目编辑小友,现在为大家讲解基于ARM9与LINUX的RS485总线的通信接口设计问题。

ARM9处理器的S3C2440上设计了RS485通信接口,实现与总线上其他设备的通信。RS485通信硬件接口由集成在ARM9处理器中的UART外设和RSM485CT模块组成。在嵌入式Linux系统下设计了RS485通信程序,在RS485总线上实现与其他外设的数据交换。实验结果表明,该设计是有效的。介绍了通信接口的硬件设计、Linux下的RS485驱动程序设计和通信程序设计,重点介绍了Linux系统下RS485通信程序的编写方法和RS485总线上设备通信的实现过程。

0简介

随着ARM处理器应用范围的不断深入,ARM根据不同的需求提供的外设也越来越丰富,常用的通信接口有RS232、RS485、CAN、以太网等。RS485总线因其传输距离远、抗干扰能力强、价格低廉等优点,被广泛应用于各种工业场合。利用集成在ARM9处理器S3C2440中的UART外设和RSM485模块,设计了具有电源隔离、电气隔离和总线保护的RS485总线接口。通过修改嵌入式Linux系统的RS232驱动,在通过修改后的串口驱动发送数据时,自动控制I/O控制RS485通信的方向,简化了RS485通信的控制流程。Linux下的RS485通信程序可以通过读写串口与RS485总线上的其他设备进行通信。

1通信接口的硬件设计。

S3C2440处理器集成了丰富的片上外设资源,可以方便地实现嵌入式应用中的各种接口通信。设计采用三星-ARM9-S3C2440,片内集成三个uarts。设计中采用UART0作为嵌入式Linux操作系统的控制台接口,UART1作为RS232接口与其他RS232接口设备进行通信,UART3作为RS485数据通信接口。由于ARM9处理器的IO级别不同于RS485的电气标准,RS485采用差分信号负逻辑,2~ 6V代表“0”,而-6~-2V代表“1”。为了满足RS485总线的电气特性标准,需要连接一个外部电平转换芯片[1,3-5]。考虑到恶劣的工业应用环境等因素,需要考虑RS485总线的电源隔离、电气隔离、总线保护等因素。设计中采用了广州周立功RSM485模块。

RSM485隔离收发模块集成电源隔离、电气隔离、RS485接口芯片和总线保护装置。该模块采用灌封技术,具有良好的隔离特性。隔离电压高达2500VDC,最多支持400个节点,最高通信波特率为115200。

图1是S3C2440中UART2实现半双工RS485总线的示意图,数据只能同时单向传输。的CON引脚是接收和发送控制引脚。现在与S3C2440的IO引脚相连,这个引脚的电平控制芯片数据的方向。发送数据时设置为0,接收数据时设置为1。

图1Sa3c 2440-485接口。

2软件设计。

2.1RS485通信设计。

在图2中,首先打开驱动修改的串口2进行RS485通信,并设置其串口参数。此时串口2处于RS485总线接收模式,然后向总线上的第一个设备节点发送数据读取指令。完成select函数调用的1S3C2440-485接口初始化后,select函数根据用户设置的超时等待设备返回数据。如果选择功能返回异常,再次初始化;如果在设定时间内没有接收到来自从设备的数据,选择功能返回超时,则重置下一个从设备节点等待超时时间,发送下一个设备数据读取指令,重新进入选择,等待设备返回数据;如果在设定时间内接收到从设备返回的数据,则从串行端口接收缓冲区读取数据,用户协议数据分析完成,主设备和从设备之间的数据通信完成一次,然后轮询下一个设备。

图2RS485通信软件流程。

12下一页全文。

导航第一页:基于ARM9和LINUX的rs485总线通信接口设计第二页:RS485驱动程序设计。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。