当STM32遇到串口RS485双机通信,这样处理最便捷

2017-10-11 13:57:00 来源:互联网
分享到:
标签:

 

RS485通信想必大家都知道,在学习RS232时,都会拿485(RS485下文就用485代替)和其作对比。485优缺点不说,网上有。
 
我用的是STM32库函数学的485通信,所以接下来就讲讲STM32串口实现485双机通信的原理:
 
485和232都是基于串口的通讯接口,在数据的收发操作上都是一致的。但是他两的通讯模式却大不相同~!232是全双工(例:A->B的同时B->A,瞬时同步)工作模式,而485是半双工(发时不能收,收时不能发)工作模式。在232通信中,主机在发送数据的同时可以收到从机发过来的数据;但在485通信中,收发要经过模式位的切换来进行,譬如,发送数据时,会把模式为置‘1’,表示为发送模式,此时不能接收;当接收数据时,会把模式位置‘0’,表示为接收模式,此时不能发送。
 
在讲STM32串口实现485双机通信的原理之前,先来复习一下串口中的中断知识点:
 
串口的中断类型有很多种。这里主要讲两种:接收到数据中断和发送数据完成中断。这两个中断跟两个标志位有密切关系:RXNE(读数据寄存器非空)和TC(发送完成)。譬如在接收到数据的时候(RXNE,读数据寄存器非空),我们要产生中断。在发送数据结束的时候(TC,发送完成)要产生中断。这两种中断的产生方法都是在开启串口中断函数(USART_ITConfig();)中配置。并在获取中断状态函数(USART_ITStatus();)中判断是发送中断还是接受中断。
 
注意:1、有人问当产生接收中断时,没看到程序中清除中断标志啊,那不就一直中断下去了吗?这里官方规定有两种方法清除中断标志(书里面也有):1、尽快读取USART_DR(数据寄存器),通过读USART_DR可以将该位清零;2、可以直接向该位写‘0’,直接清零。
 
2、两块板子的串口波特率一定要相同,否则将得不到想要的数据。
 
STM32串口实现485双机通信的原理(库函数):
1、在主函数中,扫描按键。一旦key0按下,首先将5个字节的数据存入rs485buf[]数组中,然后调用RS485_Send_Data(rs485buf,5);函数将5个字节的数据发送到串口。
 
 
2、进入RS485_Send_Data();函数中,先通过标志位将485设置为发送模式(RS485_TX_EN=1),然后循环5次,将这5个字节数据,通过库函数:USART_Send_Data();发送到USART_DR寄存器(自动发送),最后通过标志位将485设置为接收模式(RS485_TX_EN=0)。
 
   
3、前两个是发送。现在是接收了。主函数中通过RS485_Receive_Data();不停的接收。
 
4、进入RS485_Receive_Data();函数中,
 
如果一直没有按按键,则不会发送数据,也就不会产生接收中断,也就不会往我们定义的接收缓冲区(RS485_RX_BUF[64])里写数据。RS485_RX_CNT计数器的值也就是‘0’,对应在RS485_Receive_Data();函数中就不会进入里面的if语句(下图中红框)
 
 
如果按键按下了,就会发送数据,就会产生接收中断,就会往我们定义的接收缓冲区(RS485_RX_BUF[64])里写数据,RS485_RX_CNT计数器的值也就开始自增,对应在RS485_Receive_Data();函数中就会进入里面的if语句,从之前定义的接收缓冲区(RS485_RX_BUF[64])里面取数据。
 
5、最后就将取出来的数据(接收到的数据)显示出来。
 
关注与非网微信 ( ee-focus )
限量版产业观察、行业动态、技术大餐每日推荐
享受快时代的精品慢阅读
 

 

继续阅读
COVAL真空技术引领行业未来
COVAL真空技术引领行业未来

未来工厂不再只是一个设想,信息在工作场所内的设备和工作台之间无时不刻的传递,机器、系统和产品之间及其外部设备也会进行通信传递。

GPIO内部结构、工作原理及相关寄存器详解(以STM32为例)
GPIO内部结构、工作原理及相关寄存器详解(以STM32为例)

STM32F1系列IO口的基本结构()IO口内部电路结构)

51/STM32/MSP430/STC/TMS/PIC/AVR,七大主流单片机最全面对比

单片机现在可谓是铺天盖地,种类繁多,让开发者们应接不暇,发展也是相当的迅速,从上世纪80年代,由当时的4位8位发展到现在的各种高速单片机

小人物创造大历史,是谁撬动了华为的这30年
小人物创造大历史,是谁撬动了华为的这30年

本文根据华为管理顾问田涛教授在2017年11月15日的演讲整理而成 ,是“睡前未来实验室”推动华为“枪林弹雨中成长”系列主题公益讲座北大分场。

5G标准的大名就叫5G,为什么如此任性?
5G标准的大名就叫5G,为什么如此任性?

众说周知,3GPP 5G的Logo已经近一年前在出炉,这也坐实了的5G标准的名称:5G标准的大名就叫5G,就是这么直白,就是这么任性。

更多资讯
安森美半导体2017年在亚洲获得业界显著的赞誉

推动高能效创新的安森美半导体回顾2017年的成就,荣幸地从亚洲领先客户赢得不少业界奖项,在新的一年蓄势再发,更进一步。

康佳特与康佳特携手提供AMD Geode 处理器长期供货支持
康佳特与康佳特携手提供AMD Geode 处理器长期供货支持

具备领先科技的嵌入式计算机模块,单板计算机(SBCs)与EDMS定制化服务领导厂商-德国康佳特科技,宣布与AMD合作共同为世界上最古老的x86处理器提供延长供货的支持。康佳特将对搭载AMD Geode™ 处理器的模块提供至2021年底的供货支持。

意法半导体在2018日本汽车技术博览会上,展示其最新的智能驾驶解决方案

横跨多重电子应用领域、全球领先的半导体供应商意法半导体将在日本汽车技术博览会(AUTOMOTIVE WORLD 2018)上展出其最新的智能驾驶半导体解决方案。

为什么说3D NAND为实现四级单元提供了可行性?
为什么说3D NAND为实现四级单元提供了可行性?

与此前的平面NAND相比,3D NAND技术的运用将使得错误检查代码更易于实现,这也进一步确定了容量提升的四级单元技术的可行性。

2018年半导体短期和长期预测,3D传感技术将是增长最快的市场之一
2018年半导体短期和长期预测,3D传感技术将是增长最快的市场之一

SEMI行业战略研讨会(ISS 2018)今天开幕,第一场是关于经济趋势的。丹尼尔·奈尔斯(Alpha One资本合作人)以“全球增长的黄金时代——半导体收入同比增长20%(好消息也是坏消息)”开场。

Moore8直播课堂