0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32的USART中RTS、 CTS的作用和意义

黄工的嵌入式技术圈 来源:黄工的嵌入式技术圈 2020-03-20 11:11 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

写在前面 Ⅰ

我们都知道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;

其实这个参数可以为:

#defineUSART_HardwareFlowControl_None ((uint16_t)0x0000)

#defineUSART_HardwareFlowControl_RTS ((uint16_t)0x0100)

#defineUSART_HardwareFlowControl_CTS ((uint16_t)0x0200)

#defineUSART_HardwareFlowControl_RTS_CTS ((uint16_t)0x0300)

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • STM32
    +关注

    关注

    2313

    文章

    11195

    浏览量

    374658
  • USART
    +关注

    关注

    1

    文章

    202

    浏览量

    33327
  • RTS
    RTS
    +关注

    关注

    0

    文章

    23

    浏览量

    15022
  • CTS
    CTS
    +关注

    关注

    0

    文章

    35

    浏览量

    16119
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何在 LS1028 的 UART2 上启用 UART 流量控制 (RTS/CTS)?

    我正在使用 LS1028 板,并想将 UART2 用于 RS485,但我找不到 RTS 引脚。如何使用 RTS 进行自动方向切换?
    发表于 03-13 08:04

    LAT1171+STM32F745 USART1 Bootloader 失败原因分析与解决

    STM32 的 Bootloader 可以支持多种协议的,比如 USART,I2C,DFU 等等,USARTBootloader 是客户使用 STM32 的时候常常会用到的协议。客户在
    发表于 01-11 17:33 0次下载

    探索RTS系列环形端子温度传感器:设计与应用的理想之选

    探索RTS系列环形端子温度传感器:设计与应用的理想之选 在电子设备的设计,精确的温度测量至关重要。今天我们要深入了解的是Amphenol Advanced Sensors的RTS系列环形端子温度
    的头像 发表于 12-11 11:00 524次阅读

    USART1、USART2、UART3的串口使用

    _PM_NONE); usart_stop_bit_set(com, USART_STB_1BIT);usart_hardware_flow_rts_config(com, USART_RTS
    发表于 10-31 09:05

    RVMCU课堂「13」: 手把手教你玩转RVSTAR—UART通信篇

    通过全双工或半双工,同步或异步的方式进行传输。USART提供了可编程的波特率发生器及奇偶校验位、数据位和停止位等可编程的串口特性。它还支持多处理器通信、多种状态标志和硬件流控操作(CTS/RTS
    发表于 10-31 07:02

    SDK资源包bug drv_usart.c不能使用UART9及以上的串口怎么解决?

    的问题,USART6复用配置好像也有问题,这个没有细看不是很确定。附上图片 问题三:在stm32_uart_get_dma_config(void)函数只有串口1至串口6,虽然影响不是很大。
    发表于 09-25 06:37

    STM32串口发送数据,USART_FLAG_TC无法置位怎么解决?

    STM32串口发送数据,在经过一段时间的数据发送,大概200ms发送一下,一次发送大概二三十个字节的数据,有可能会发生USART_FLAG_TC不置位的情况,如何解决或者避免?轮询发送,后卡在了
    发表于 07-29 11:44

    请问如何为CYW5591x串行启用具有流控制的Uart?

    BT_GPIO_2 #定义 MCU_RTS BT_GPIO_7 #定义 MCU_CTS BT_GPIO_17 /*初始化外部MCU的UART外设*/ cyhal_uart_init(&
    发表于 07-17 06:53

    CYW20719B2接收uart时意外重置了,怎么解决?

    。 //设置 RTSCTS wiced_hal_puart_select_uart_pads ( #if 1 WICED_P04,//目标 #else WICED_PUART_RXD,//evboart
    发表于 07-07 06:56

    CYW20704 的 UART 4 针(TX/RX/CTS/RTS)是什么形式(推拉或漏极开路)吗?

    你知道 CYW20704 的 UART 4 针(TX/RX/CTS/RTS)是什么形式(推拉或漏极开路)吗?
    发表于 07-04 07:34

    如何对CYBT-223058-02模块(非 EVAL)进行编程?

    我已经下载了ModusToolbox,启动了一个新的应用程序,但没有选择 CYBT-223058-02模块的选项。只有 EVAL 板。 我应该如何对模块进行编程? 我有一根带有 CTSRTS、TX
    发表于 07-04 06:27

    stm32N657配置USART2,可以发送,但是为什么无法进入接收中断呢?

    https://gitee.com/liu-qingchang/code/tree/master/stm32n6 main函数和usart代码 使用stm32N657这块评估板,使用cubeMX配置
    发表于 06-18 07:13

    第十四章 USART——串口通讯

    本章介绍了USART串口通讯,含物理层(RS-232、TTL电平)、协议层(波特率、数据帧),及W55MH32的USART功能与应用。
    的头像 发表于 06-14 16:30 2039次阅读
    第十四章 <b class='flag-5'>USART</b>——串口通讯

    AS32X601驱动系列教程 USART_串口通讯详解

    USART 不仅支持同步单向通信和半双工单线通信,以及 LIN(局域互连网络)和调制解调器操作 (CTS/RTS) 通过配置多个缓冲区使用 DMA(直接存储器访问)可实现高速数据通信,其通信数据格式如下: 硬件设计 评估板板
    的头像 发表于 05-23 16:54 1027次阅读
    AS32X601驱动系列教程 <b class='flag-5'>USART</b>_串口通讯详解

    CY7C65223-24LTXI不使用流量控制功能时,RTSCTS 引脚是否应处于打开状态?

    请告诉我有关 CY7C65223-24LTXI 的引脚处理的信息。 不使用流量控制功能时,RTSCTS 引脚是否应处于打开状态?
    发表于 05-23 07:56