当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 )
限量版产业观察、行业动态、技术大餐每日推荐
享受快时代的精品慢阅读
 

 

继续阅读
与非网专访ST曹锦东:STM32如何承担责任和探索未来?
与非网专访ST曹锦东:STM32如何承担责任和探索未来?

意法半导体(以下简称:ST)中国区微控制器事业部市场及应用总监曹锦东在接受与非网专访时表示,物联网和智能驾驶会是我们持续关注、投入、拓展的方向。

高端光电芯片如此一来进口,中国光通信怎么强大?

中国是全球最重要的光通信大国,在光纤光缆领域拥有举足轻重的地位。然而在光器件领域,特别是光通信芯片领域,中国还有很大的进步空间,特别是高端光电芯片。

爱立信能否抓住5G机会,重振雄风?
爱立信能否抓住5G机会,重振雄风?

“我们已经走在向好的路上。”2018年6月28日,在MWC2018上海世界移动通信大会现场,接受科技杂谈等多家媒体专访时,爱立信总裁兼CEO鲍毅康(Borje Ekholm)说。

谈论一下发展历史悠久的GPRS模块
谈论一下发展历史悠久的GPRS模块

整个通信模块的发展历史,是一部半导体核心器件的国产化历史。从法国的wavecom,德国的西门子,加拿大的SIERRA,再到Simcom,移远,合宙等中国厂商,笔者从行业内的视角来回顾这个有趣的缓慢的历程, 同时这也是中国通信芯片行业国产化进程的直观缩影。

我国5G捷报频传,华为已率先完成5G研发试验第三阶段NSA全部用例测试

6月以来,我国5G测试捷报频传。20日,华为宣布率先完成IMT-2020 5G推进组组织的中国5G技术研发试验第三阶段NSA(非独立组网)全部用例测试。

更多资讯
一文带你看到半导体激光器的未来
一文带你看到半导体激光器的未来

总体来说,由于技术不断发展,导致半导体激光器的应用领域不断在改变,这些改变目前仍在发生。总体而言,半导体激光器正向发射波长更短、发射功率更大的方向发展,以适应当前的市场需求。

中国自主研发DRAM启动!长鑫存储新CEO上任

国际电子商情报道,日前,消息称长鑫存储DRAM项目正式首次投片,启动试产8Gb DDR4工程样品。这将是第一个中国自主研发的DRAM芯片。

华为麒麟980将采用台积电7nm工艺?

7月18日华为将发表nova 3及nova 3i两款新智能手机,所搭载麒麟710、970处理器芯片确定由台积电12、10纳米抢下大单。

英特尔已解决XMM 7560良率问题?有望独吞iPhone新机基带订单
英特尔已解决XMM 7560良率问题?有望独吞iPhone新机基带订单

Fast Company最新报告指出,英特尔已解决最新基带芯片XMM 7560的良率问题,有望赢得今年iPhone基带的所有订单。尽管与苹果的合作如日中天,但在未来,英特尔或许面临联发科分羹基带订单的现实。

NVIDIA确认加入PCIE 4.0, Vegas 7也将支持7nm技术

不久前,有消息曝光,AMD将在新平台中加入PCIE 4.0技术,而AMD的 Vegas 7也将支持7nm技术。理论上,PCIE 4.0的传输速度将是现有PCIE 3.0速度的一倍以上。NVIDIA在去年发布Volta架构时,便有传闻其支持PCIE 4.0,对此,NVIDIA未有正面回应。

Moore8直播课堂
电路方案