资料介绍
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、最后就将取出来的数据(接收到的数据)显示出来。
本文转载自
转载地址:
声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有,如涉及侵权,请联系小编进行处理。
(mbbeetchina)
下载该资料的人也在下载
下载该资料的人还在阅读
更多 >
- 串口之双机通信 8次下载
- 串口实现双机通信 0次下载
- 常见的串口通信以232,485,422接口问题资料下载 4次下载
- STM32的几种串口通信协议资料下载 27次下载
- STM32单片机多串口通信仿真测试技术研究资料下载 13次下载
- STM32串口实现的两个方案资料下载 15次下载
- 使用单片机实现双机串口双向通信的C语言程序设计实例免费下载 23次下载
- 串口的循环队列是什么?(以STM32串口为例)资料下载 24次下载
- 什么是串口通信,232,485,422的常见问题资料下载 6次下载
- 通信接口背景知识与STM32串口原理资料下载 34次下载
- 使用51单片机实现双机通信程序和仿真资料免费下载 42次下载
- 使用STM32F103RB单片机实现串口实验的详细资料说明 7次下载
- STM32串口实验的详细资料简介 1次下载
- 串口双机通信 keil uVision4程序代码下载 5次下载
- 如何通过STM32的串口实现简易脱机编程器 59次下载
- 用proteus和keil实现串口通信仿真 802次阅读
- STM32进阶之串口环形缓冲区实现 1381次阅读
- STM32的串口通信 544次阅读
- RS-232接口实现串口数据传输的点对点通信设计 3312次阅读
- 基于rs-485串口实现工控机与变频器之间的通讯设计 5040次阅读
- 如何利用usb转串口实现单片机和电脑的通信 1.5w次阅读
- 基于STM32实现串口的两个分案解析 2965次阅读
- STM32串口通信数据乱码的相关问题 1.1w次阅读
- STM32串口实现485双机通信的原理 2.2w次阅读
- 串口通信协议stm32 8030次阅读
- 串口通信协议的制定及配置流程 1.3w次阅读
- 一种基于STM32的最小系统及串口通信的实现 3.2w次阅读
- 实现双机互联的方法之USB互联 1.7w次阅读
- 实现双机互联的方法之利用Modem实现远程双机互联 3014次阅读
- 实现双机互联的方法之直接电缆连接 4904次阅读
下载排行
本周
- 1储能电源市场分析
- 7.99 MB | 8次下载 | 免费
- 2储能电源市场分析报告
- 2.61 MB | 6次下载 | 免费
- 3磁环电感定制时应该注意什么
- 0.32 MB | 2次下载 | 免费
- 4labview文档教程资料(一)
- 24.29 MB | 1次下载 | 免费
- 5轻触三功能+常按 SOS 功能手筒LED驱动ICSD3302数据手册
- 0.60 MB | 1次下载 | 2 积分
- 63A 550kHz 同步降压稳压器LM2853数据表
- 952.54KB | 次下载 | 免费
- 7用于低输出电压的N沟道FET同步降压控制器LM2727/2737数据表
- 918.28KB | 次下载 | 免费
- 8宽输入范围双路同步降压控制器LM25119数据表
- 1.62MB | 次下载 | 免费
本月
- 1ES9038PRO解码芯片的电路原理图介绍
- 0.25 MB | 35次下载 | 5 积分
- 2STM32国内外发展现状
- 1.15 MB | 12次下载 | 免费
- 3ATmega8芯片中文手册
- 2.45 MB | 8次下载 | 1 积分
- 4储能电源市场分析
- 7.99 MB | 8次下载 | 免费
- 5TDK电容器产品指南
- 11.88 MB | 7次下载 | 1 积分
- 62A多电池高效开关充电器AN_SY6912A中文资料规格书
- 1.43 MB | 7次下载 | 免费
- 7传感芯片选型指南
- 3.60 MB | 6次下载 | 免费
- 8储能电源市场分析报告
- 2.61 MB | 6次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935086次下载 | 免费
- 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
- 1.48MB | 420050次下载 | 免费
- 3Altium DXP2002下载入口
- 未知 | 233068次下载 | 免费
- 4电路仿真软件multisim 10.0免费下载
- 340992 | 191316次下载 | 免费
- 5十天学会AVR单片机与C语言视频教程 下载
- 158M | 183316次下载 | 免费
- 6labview8.5下载
- 未知 | 81567次下载 | 免费
- 7Keil工具MDK-Arm免费下载
- 0.02 MB | 73786次下载 | 免费
- 8NI LabVIEW中实现3D视觉的工具和技术
- 未知 | 70088次下载 | 免费
评论
查看更多