RS485通信方式分析 了解485通信也就基本了解了422通信

电子说

1.2w人已加入

描述

(本文为电子发烧友网用户风拂柳絮原创稿件)众所周知,串口数据通讯方式有单工模式、半双工模式以及全双工模式。单工模式:只支持数据在一个方向上传输;半双工模式:允许数据在两个方向上传输,但某一时刻只允许在一个方向上传输;全双工模式:同时在两个方向上传输,是两个单工通信的结合,要求发送设备和接收设备同时具有独立的接收和发送能力。

例如我们常见的RS232、RS485、RS422串口通讯方式,其中RS232是全双工的,RS485是半双工的,RS422是全双工的,当然两个半双工的485可以组成422通信方式。下面就讲一下今天的重点RS485通信方式,了解了485通信也就基本了解了422通信。

先介绍一下RS485的电气特性,RS485采用差分传输的方式,逻辑“1”以两线间的电压差为+(2~6)V表示;逻辑“0”以两线间的电压差为-(2~6)V表示。接口信号电平比RS232降低了,不易损坏接口电路的芯片,且该电平与TTL电平兼容,可方便与TTL电路连接。

传输速率高,抗干扰能力强,并且可以大大延长通信距离,比如RS232传输距离一般是30米,而采用RS485,完全不需要修改程序,通信距离可以达到1200米(9600bps)。且RS485一般最大支持32个节点,实现多节点收发。特制的485芯片可以实现更多节点收发。

既然RS485通信这么优秀,那么就开始今天的实例吧。

首先本次实例选用的是STM32F107VCT6,如图一所示,以及图二所分配给485通信的

RS485

RS485

管脚,本次PA2作为单片机的发送端,PA3作为单片机的接收端,PA1作为接收和发送使能的控制端。板子上输出的A2、B2引脚分别接DB9的T/R+、T/R-,此处针对不同的DB9接脚

RS485

位置不一样,读者注意辨别。硬件电路到这里就基本完成。

下面是软件调试部分,

RS485

Step1,在对应的配置里找到Device中找到本次的芯片类型F107VC,当然不同的芯片选型一定要正确。

RS485

Step2,在对应的宏定义里面将圆圈处改成CL。因为此次芯片flash是256K,属于小芯片容量。

RS485

RS485

Step3,配置jlink驱动,选择四线的SW模式,四线分别是3.3v,SWDIO,SWCLK,GND。看到SWDevice中出现此次圆圈处的型号,并点击Flash Download出现下图的界面看看芯片选型是不是256k,不是点击Add添加,选择256k的flash size即可,然后一些列OK就行。

RS485

Step4,主函数的编写,当然此次省略了新建工程等一些列操作,不懂的可以百度有步骤指示,主函数程序很简单,一个中断配置函数,一个485初始化函数,当然485初始化函数里包括很多配置,具体的往下看,延时函数此次可以不用。主函数就是一个发送接收使能的切换(RS485_TX_EN)和一个发送函数。

RS485

Step5,对485初始化函数进行定义,管脚的配置,此处是PA2输出,PA3输入,PA1是使能位,具体可参看上面原理图,同时在此函数中对波特率以及串口的中断进行了配置。

RS485

RS485

Step6,485发送函数及中断函数进行了定义,由于此次没有使用外部中断,而是采用了内部中断的方式,在串口2中断中将接收到的数据保存在receive数组中,并定义了包头和包位分别为0xAA,0xBB,并设置发送数据长度为6,不满足次三个条件的数据是无法发送的串口调试助手的,当然时刻要注意使能位(RS485_TX_EN)为1还是为0,为1则485发送,为0则485接收,因为485是半双工,前面已经讲到,某一时刻只能接收或者发送。并在头文件中将相应的函数以及数组定义成全局。

RS485

RS485

Step7,最后就是最紧张的测试环节,将串口调试助手圆圈里的配置调成与代码的配置一样的形式,并将发送数据的格式改成带有包头AA包尾BB中间4位数据格式的形式发送,点击发送,就可以在串口调试助手中收到此次的数据,当然如果不满足包头和包位分别为0xAA,0xBB,发送数据长度为6的格式,将不会在串口助手中收到数据,读者可以自行尝试,版面有限,不多说明。

Step8,本人才疏学浅,属于刚摸索单片机阶段,可能在很多地方不尽完美,希望大佬们多批评指正,不吝赐教,本人在此先谢谢大家。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分