历史上的今天
今天是: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这两个引脚为硬件流控的功能。
史海拾趣
|
nandflash用的是 K9F1G08 每个页是2K ,写一个页,然后再读这个页,发现只有前512是一样的 没办法!只能先确定是 写有问题还是读有问题 用烧录工具(此工具没有问题)将一个文件,写入nand的一个固定地址, 然后再用我自己的代码去读这个地址的一 ...… 查看全部问答> |
|
Tyep mismatch in redeclaration of \'OSTakCreate\'!!! 和他相关联的文件函数我找了,但都没找到原因。请问有谁以前遇到过这类问题,期待着您的回复!… 查看全部问答> |
|
请问在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 ...… 查看全部问答> |
|
#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 xp试用版,在Project Opction-> memory erase before programing中选择info and main 选项,但在make 或 rebuild all后,system messege 也显示info区擦除,main区擦除,program完成,写入程序后查看program memory ,其中的i ...… 查看全部问答> |
|
我说过,还会再给力的。。。。先看后下,好看再下,不好看你直接拍我就行了。。 Youku专辑地址:http://www.youku.com/playlist_show/id_16896997.html 视频下载地址:(内含视频和全部程序) 例说51单片机_前言_谈嵌入式学习.rar例说51单 ...… 查看全部问答> |




