串口流控 UART 中 CTS RTS RX TX (串口模组和MCU直接的通信)

串口介绍

串口流控,顾名思义就是流量控制的意思。目的是协调收发双方,使数据不会丢失。
 

一.硬件介绍:

      这个图是MCU和串口模组通信硬件,其中箭头方向为型号输出方向

在这里插入图片描述

二.引脚介绍

RTS:(Request To Send 请求发送)

模组的RTS是给mcu说准备好了,低电平,如果模组没有准备好,MCU给模组发数据,可能会丢包

CTS:(Clear To Send 清除发送,允许发送)

模组的cts必须要外部的mcu给低电平,模组才能发送数据,

RXD: (Receive Data 接收数据)

接收数据

TXD:( Transmit Data 发送数据)

发送数据

 
 

三.举例

     以信驰达科技的ND04(C)NRF52832/10模组为例

硬件部分:
透传时只用到GND、VCC、RTS、TX、CTS、RX这六个Pin脚,模块与MCU连接
在这里插入图片描述

MCU程序编写参考

     编程思路
  1. 模块与MCU之间的串口是用硬件流控CTS、RTS两个IO口进行发送接收的通知和控制。
  2. 这两个IO常态高位,置低触发。
  3. 当模块可以接收数据时,模块会置低本机RTS(MCU为CTS)信号通知MCU可以发送数据。
  4. 当MCU可以接收数据时,MCU要置低其RTS(模块为CTS)信号通知模块可以发送数据

参考代码(提供思路)

void main(void){
 	//等待BLE模块启动成功,信驰达模组ND04X,从机上电串口打印DEVICE_START
 	while(!memcmp(rx_ble_mode_data(),"DEVICE_START\r\n",strlen("DEVICE_START\r\n")));
 	//使能RTS,即MCU可接收BLE模块发送的数据
    set_rts_enable();
while(1){
	//获取CTS状态是否改变为低电平
	if(get_cts_state()==0){
	//发送测试数据到BLE模块
		mcu_send_to_ble_string("Testdata.\r\n");
	}
	//处理MCU获取到的数据
	mcu_data_process(mcu_uart_read_data());
}
}

知识小卡片结束啦~对串口流控 RTS CTS RX TX 没有了解呢?

如果您需要蓝牙(BLE)模组

信驰达科技【Vivi】
联系电话:13510534054 (微信)/17806715121

下面是我司 NORIDC系列蓝牙模组包括:NRF52832 52810 等

在这里插入图片描述
更多资料加v或者官网了解:
https://www.szrfstar.com/

  • 11
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Guistar~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值