串行通信(二):串口流控

        串口流控提供了由于某种原因不能进行通讯时阻塞通讯的一种机制,经常采用硬件流控和软件流控两种方式。

一、硬件流控方式:

        MODEM 硬件流控常用的有 RTS/CTS 流控制和 DTR/DSR 流控制

二:DB9串口引脚定义:

引脚编号名称含义I/O
CDCarrier Detect载波检测I
RXDReceive Data接收数据I
TXDTransmit Data发送数据O
DTRData Terminal Ready数据终端就绪O
GNDSystem Ground系统接地-
DSRData Set Ready数据设备就绪I
RTSRequest To Send请求发送O
CTSClear To Send允许发送I
RIRing Indicator响铃指示器I

三:流控逻辑:

在ARM处理器中的USART中,基本上都具有硬件流控的功能,即一般都有RTS、CTS引脚。

RTS:是主机的输出端,模块的输入端,用于MCU指示模块是否已准备好接收数据,RTS的有效电平为低

CTS:是主机的输入端,模块的输出端,用于MCU判断模块是否已准备好接收数据,CTS的有效电平为低。

示意图如下:

        如果 MCU 拉高 RTS 信号(RTS无效,通知对方停止发送),表明通知模块停止发送,模块检测 CTS 引脚无效,停止发送数据;
        如果 MCU 拉低 RTS 信号(RTS有效,请求对方开始发送),表明通知模块发送数据,模块检测 CTS 引脚有效,开始发送数据。

四:STM32硬件流控配置:

STM32配置串口时,有如下一段配置代码:

	USART_InitStructure.USART_BaudRate = bound;
	USART_InitStructure.USART_WordLength = USART_WordLength_8b;
	USART_InitStructure.USART_StopBits = USART_StopBits_1;
	USART_InitStructure.USART_Parity = USART_Parity_No;
	USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
	USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;	

代码中

USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;

点击USART_HardwareFlowControl_None,右键 选择 Go To Definition

#define USART_HardwareFlowControl_None       ((uint16_t)0x0000)
#define USART_HardwareFlowControl_RTS        ((uint16_t)0x0100)
#define USART_HardwareFlowControl_CTS        ((uint16_t)0x0200)
#define USART_HardwareFlowControl_RTS_CTS    ((uint16_t)0x0300)

可以配置使用RTS和CTS这两个引脚为硬件流控的功能。

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值