串口协议总结

串口协议总结1 定义串口通信是一种设备间非常常用的串行接口 以比特位的形式发送或接收数据 电子工程师经常使用这种方式来调试数据

大家好,欢迎来到IT知识分享网。

一、串口概述

在这里插入图片描述
在这里插入图片描述

帧格式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


硬件流控

在这里插入图片描述
如果使能了硬件流控,在三线串口通信模式增加两根控制线,一根叫 CTS(Clear To Send 为输入信号,一根叫 RTS(Require To Send 为输出信号)。一个是接收控制,一个是发送控制。
  从硬件连接原理图中我们可以看到,如果从 USART 1 向 USART 2 发送的话,USART 1 的 TX 和 USART 2 的 RX 相连,USART 1 的 CTS 和 USART 2 的 RTS 相连,数据的方向是从 TX 到 RX,从串口1到串口2,流控是从 RTS 到 CTS 也就是从串口2到串口1。
RTS(Require To Send,发送请求)为输出信号,用于指示本设备准备好可接收数据,低电平有效,低电平说明本设备可以接收数据。
CTS(Clear To Send,发送允许)为输入信号,用于判断是否可以向对方发送数据,低电平有效,低电平说明本设备可以向对方发送数据。
4.2 软件流控
由于电缆线的限制,我们在普通的控制通讯中一般不用硬件流控制,而用软件流控制。一般通过xon/xoff来实现软件流控制。常用方法是:当接收端的输入缓冲区内数据量超过设定的高位时,就向数据发送端发出xoff字符(十进制的19或十六进制的0x13或control-s,设备编程说明书应该有详细阐述),发送端收到 xoff字符后就立即停止发送数据;当接收端的输入缓冲区内数据量低于设定的低位时,就向数据发送端发出xon字符(十进制的17或十六进制的0x11或control-q),发送端收到xon字符后就立即开始发送数据。一般可以从设备配套源程序中找到发送的是什么字符。





应该注意,若传输的是二进制数据,标志字符也有可能在数据流中出现而引起误操作,这是软件流控制的缺陷,而硬件流控制不会有这个问题。

RS-232详解

接口定义

下图是公头9针RS232接口详细定义:

在这里插入图片描述
在这里插入图片描述
电平及时序
RS232采用负逻辑电平,定义如下:
在这里插入图片描述



RS-485详解

在这里插入图片描述

二、信号电平

根据RS-485标准,当485总线差分电压大于+200mV时,485收发器输出高电平;当485总线差分电压小于-200mV时,485收发器输出低电平;当485总线上的电压在-200mV~+200mV时,485收发器可能输出高电平也可能输出低电平,但一般总处于一种电平状态,若485收发器的输出低电平,这对于UART通信来说是一个起始位,此时通信会不正常。

在开发使用到的芯片为SP3485,引脚详细描述如下:

在这里插入图片描述

该芯片真值表如下:

在这里插入图片描述

三、调试工具

3.2 引脚说明

在这里插入图片描述

五、参考代码

RS485_TX_EN=1; //设置为发送模式 delay_ms(1); for(i=0; i<len; i++) //循环发送数据 { USART_SendData(USART2,pbuf[i]); //发送数据 while(USART_GetFlagStatus(USART2,USART_FLAG_TXE)==RESET); } delay_ms(1); RS485_TX_EN=0; //设置为接收模式 delay_ms(1); 

}

if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET) //接收到数据 { d =USART_ReceiveData(USART2); USART1_WriteBytes(&d,1); USART_ClearITPendingBit(USART2, USART_IT_RXNE); } 

}

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/120267.html

(0)
上一篇 2025-10-30 20:33
下一篇 2025-10-30 21:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信