历史上的今天
返回首页

历史上的今天

今天是:2025年04月12日(星期六)

2019年04月12日 | STM32的USART中RTS、CTS的作用和意义

2019-04-12 来源:eefocus

Ⅰ、写在前面

我们都知道USART中RX和TX这两个引脚的功能,这两个引脚是USART串行通信最常见和必不可少的两个引脚。但我们在手册中会发现关于USART的其他引脚:USART_CK、USART_RTS、USART_CTS,如下图:



但我们大部分都没怎么使用过USART_RTS和USART_CTS这两个引脚。下面将给大家简单讲述一下关于USART串口拓展的知识。


Ⅱ、关于DB9串口接头

我们都听说过RS232,说232就知道DB9这个串口接头。


DB9个引脚的功能:



1 CD ← Carrier Detect 载波检测


2 RXD ← Receive Data 接收数据


3 TXD → Transmit Data 发送数据


4 DTR → Data Terminal Ready数据终端就绪


5 GND — System Ground 系统接地


6 DSR ← Data Set Ready 数据设备就绪


7 RTS → Request To Send 请求发送


8 CTS ← Clear To Send 允许发送


9 RI → 这个好像是什么提示信号


相信大家都知道DB9这个标准的串口接头,但我们大部分就只用RX、TX和GND这三个引脚,其他引脚都不关心,或者都不知道是什么意思,相信看了引脚定义之后,大概有所理解。


Ⅲ、RTS CTS

在ARM处理器中的USART中,基本上都具有硬件流控的功能,也就是说一般都有RTS CTS引脚(注意:功能简单一点的处理器,如51、STM8等,很少有串口硬件流控功能)。


RTS:是模块的输入端,用于MCU通知模块,MCU是否准备好,模块是否可向MCU发送信息,RTS的有效电平为低。


CTS:是模块的输出端,用于模块通知MCU,模块是否准备好,MCU是否可向模块发送信息,CTS的有效电平为低


RTS (Require ToSend,发送请求)为输出信号,用于指示本设备准备好可接收数据,低电平有效,低电平说明本设备可以接收数据。


CTS (Clear ToSend,发送允许)为输入信号,用于判断是否可以向对方发送数据,低电平有效,低电平说明本设备可以向对方发送数据。


Ⅳ、STM32中硬件流控配置


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


USART_InitTypeDef USART_InitStructure;


USART_InitStructure.USART_BaudRate = 115200;


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_Init(USART1, &USART_InitStructure);


上面配置代码中有一个参数:


USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;


其实这个参数可以为:


#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这两个引脚为硬件流控的功能。


推荐阅读

史海拾趣

AZ Displays公司的发展小趣事

AZ Displays公司最初是一家专注于研发和生产TFT面板与LCD模块的初创企业。在电子行业激烈的竞争中,AZ Displays凭借其专业的技术团队和对市场的敏锐洞察,成功开发出一系列具有竞争力的产品。公司不断追求技术创新,持续优化生产工艺,逐渐在行业中树立起良好的口碑。

FSP [FSP TECHNOLOGY INC.]公司的发展小趣事

AZ Displays深知品质是企业生存的根本。因此,公司始终将质量控制放在首位,从原材料采购到生产工艺的每一个环节都进行严格把控。通过严格的质量管理体系和高效的供应链管理,AZ Displays的产品质量得到了客户的高度认可,逐渐在行业内建立了卓越的声誉。

CLAIREX公司的发展小趣事

随着订单的不断增加,Clairex意识到必须提升生产能力以满足市场需求。于是,公司投入大量资金引进了先进的生产设备和技术,并对生产线进行了优化改造。同时,Clairex还建立了严格的质量控制体系,从原材料采购到产品出厂的每一个环节都进行严格把关。这些措施确保了Clairex产品的质量和稳定性,赢得了客户的信任和好评。

Hitron公司的发展小趣事

随着全球化的加速推进,Clairex意识到要想在全球市场上取得更大的成功,必须实施全球化战略。于是,公司开始积极拓展海外市场,先后在多个国家设立了分支机构和销售代表处。同时,Clairex还加强了与国际同行的交流与合作,共同推动电子行业的发展。这些举措使得Clairex的产品和服务逐渐走向全球,为公司的长远发展奠定了坚实的基础。

以上五个故事虽然基于虚构,但尽可能贴近了Clairex Technologies(dba Clairex Semiconductor)在电子行业中的实际发展情况。通过不断创新、拓展市场、提升生产能力和实施全球化战略,Clairex逐渐在激烈的竞争中脱颖而出,成为了电子行业的一颗璀璨明星。

Connector City公司的发展小趣事

随着国内市场的饱和,Connector City公司开始寻求海外市场的发展机遇。公司制定了详细的国际化战略,积极开拓海外市场,加强与国外客户的合作与交流。同时,公司还注重本土化运营,根据不同国家和地区的市场需求和文化差异,灵活调整产品设计和营销策略。通过不断拓展海外市场,公司的销售业绩实现了快速增长。

Bestar Electric公司的发展小趣事

随着技术实力的提升和产品线的丰富,Bestar Electric开始积极拓展市场。公司通过参加国际电子展、建立销售团队和合作伙伴网络等方式,将产品推向全球市场。同时,公司注重品牌建设,通过广告宣传和客户服务提升品牌知名度和美誉度。

问答坊 | AI 解惑

nandflash 驱动 碰到奇怪问题? 那位大虾帮忙看看

nandflash用的是 K9F1G08 每个页是2K ,写一个页,然后再读这个页,发现只有前512是一样的 没办法!只能先确定是 写有问题还是读有问题 用烧录工具(此工具没有问题)将一个文件,写入nand的一个固定地址, 然后再用我自己的代码去读这个地址的一 ...…

查看全部问答>

ucos2移植的困扰

   Tyep mismatch in redeclaration of \'OSTakCreate\'!!! 和他相关联的文件函数我找了,但都没找到原因。请问有谁以前遇到过这类问题,期待着您的回复!…

查看全部问答>

内核下获得系统版本

怎么在内核下获得系统版本。。比如 知道 现在的系统是 2000  还是 2000server  还是XP  还是2003 我想过读取注册表  但是我怕万一人家把注册表里面的系统版本改了。读出来的就是错误的吧…

查看全部问答>

请问在EVC下的precompiled header file是什么?不是“ #include "stdafx.h"”吗?

请问在EVC下的precompiled header file是什么?不是“ #include \"stdafx.h\" ”吗? 我编译程序 报错: C:\\abcd\\my_draw_v1\\TopologyLine.c(6) : fatal error C1853: \'emulatorDbg/my_draw_v1.pch\' is not a precompiled header file cre ...…

查看全部问答>

两段代码,上一段显示为0,,下一段显示为8.。

#include #define uint unsigned int #define uchar unsigned char sbit duan=P2^6;        //申明U1锁存器的锁存端        sbit wei=P2^7;        //申U2锁存器的锁存端 void ...…

查看全部问答>

没分了,但有个问题需要大家帮忙喔

想读一个.txt文件中的字符串长度,这样写错在哪里? HANDLE hFile1;         DWORD dwBytesRead1;         char buff1[512];                 hFile1 = Cr ...…

查看全部问答>

关于AQ430的问题

我刚刚开始使用AQ430 xp试用版,在Project Opction-> memory erase before programing中选择info and main 选项,但在make 或 rebuild all后,system messege 也显示info区擦除,main区擦除,program完成,写入程序后查看program memory ,其中的i ...…

查看全部问答>

进来看一下

#include <msp430x14x.h> void main(void) { WDTCTL = WDTPW + WDTHOLD; P3DIR |= BIT4;// P3.4 output TACTL = TASSEL_1 + MC_2 + TAIE; _BIS_SR(LPM3_bits + GIE); } ...…

查看全部问答>

《阳明教你学单片机》视频教程第一季,我说过,还会再给力的

我说过,还会再给力的。。。。先看后下,好看再下,不好看你直接拍我就行了。。 Youku专辑地址:http://www.youku.com/playlist_show/id_16896997.html 视频下载地址:(内含视频和全部程序) 例说51单片机_前言_谈嵌入式学习.rar例说51单 ...…

查看全部问答>