串口初始化完成后增加两行代码:

DEMO_LPUART->MODIR |= LPUART_MODIR_TXRTSE_MASK;
    DEMO_LPUART->MODIR |= LPUART_MODIR_TXRTSPOL_MASK;

即可使用RTS引脚直接控制RS485收发器收发使能。

/** Copyright 2017 NXP* All rights reserved.** SPDX-License-Identifier: BSD-3-Clause*/#include "pin_mux.h"
#include "clock_config.h"
#include "board.h"
#include "fsl_lpuart.h"
#include "fsl_debug_console.h"/******************************************************************************** Definitions******************************************************************************/
#define DEMO_LPUART          LPUART2
#define DEMO_LPUART_CLK_FREQ BOARD_DebugConsoleSrcFreq()
#define DELAY_TIME           100000U
#define TRANSFER_SIZE     256U    /*! Transfer dataSize */
#define TRANSFER_BAUDRATE 115200U /*! Transfer baudrate - 115200 *//******************************************************************************** Prototypes******************************************************************************/
/* LPUART user callback */
void LPUART_UserCallback(LPUART_Type *base, lpuart_handle_t *handle, status_t status, void *userData);/******************************************************************************** Variables******************************************************************************/
uint8_t transferRxData[TRANSFER_SIZE] = {0U};
uint8_t transferTxData[TRANSFER_SIZE] = {0U};
lpuart_handle_t g_lpuartHandle;
volatile bool isTransferCompleted = false;/******************************************************************************** Code******************************************************************************/
/* LPUART user callback */
void LPUART_UserCallback(LPUART_Type *base, lpuart_handle_t *handle, status_t status, void *userData)
{if (kStatus_LPUART_TxIdle == status){isTransferCompleted = true;}
}
/*!* @brief Main function*/
int main(void)
{uint32_t i = 0U, errCount = 0U;status_t status = 0;lpuart_config_t config;lpuart_transfer_t sendXfer;BOARD_ConfigMPU();BOARD_InitBootPins();BOARD_InitBootClocks();BOARD_InitDebugConsole();PRINTF("This is LPUART hardware flow control example on one board.\r\n");PRINTF("This example will send data to itself and will use hardware flow control to avoid the overflow.\r\n");PRINTF("Please make sure you make the correct line connection. Basically, the connection is: \r\n");PRINTF("      LPUART_TX    --     LPUART_RX    \r\n");PRINTF("      LPUART_RTS   --     LPUART_CTS   \r\n");/** config.baudRate_Bps = 115200U;* config.parityMode = kLPUART_ParityDisabled;* config.stopBitCount = kLPUART_OneStopBit;* config.txFifoWatermark = 0;* config.rxFifoWatermark = 0;* config.enableTx = false;* config.enableRx = false;*/LPUART_GetDefaultConfig(&config);config.baudRate_Bps = BOARD_DEBUG_UART_BAUDRATE;config.enableTx     = true;config.enableRx     = true;//config.enableRxRTS  = true;//config.enableTxCTS  = true;LPUART_Init(DEMO_LPUART, &config, DEMO_LPUART_CLK_FREQ);DEMO_LPUART->MODIR |= LPUART_MODIR_TXRTSE_MASK;DEMO_LPUART->MODIR |= LPUART_MODIR_TXRTSPOL_MASK;LPUART_TransferCreateHandle(DEMO_LPUART, &g_lpuartHandle, LPUART_UserCallback, NULL);while(1){/* Set up the transfer data */for (i = 0U; i < TRANSFER_SIZE; i++){transferTxData[i] = i % 256U;transferRxData[i] = 0U;}sendXfer.data     = (uint8_t *)transferTxData;sendXfer.dataSize = TRANSFER_SIZE;LPUART_TransferSendNonBlocking(DEMO_LPUART, &g_lpuartHandle, &sendXfer);/* Delay for some time to let the RTS pin dessart. */for (i = 0U; i < DELAY_TIME; i++){__NOP();}}/* Set up the transfer data */for (i = 0U; i < TRANSFER_SIZE; i++){transferTxData[i] = i % 256U;transferRxData[i] = 0U;}sendXfer.data     = (uint8_t *)transferTxData;sendXfer.dataSize = TRANSFER_SIZE;LPUART_TransferSendNonBlocking(DEMO_LPUART, &g_lpuartHandle, &sendXfer);/* Delay for some time to let the RTS pin dessart. */for (i = 0U; i < DELAY_TIME; i++){__NOP();}status = LPUART_ReadBlocking(DEMO_LPUART, transferRxData, TRANSFER_SIZE);if (kStatus_Success != status){PRINTF(" Error occurred when LPUART receiving data.\r\n");}/* Wait for the transmit complete. */while (!isTransferCompleted){}for (i = 0U; i < TRANSFER_SIZE; i++){if (transferTxData[i] != transferRxData[i]){errCount++;}}if (errCount){PRINTF("Data not matched! Transfer error.\r\n");}else{PRINTF("Data matched! Transfer successfully.\r\n");}/* Deinit the LPUART. */LPUART_Deinit(DEMO_LPUART);while (1){}
}

RT1021使用RTS引脚控制RS485芯片收发使能相关推荐

  1. RS485自收发实现方案,典型应用电路及问题经验总结

    关注.星标公众号,不错过精彩内容 素材来源:网络 转自:8号线攻城狮 如上三张图片大致示意485芯片的收发特性,这里有个概念. RS485抗噪音抗干扰能力强.传输距离远.支持多点通信,是工控行业首选串 ...

  2. MCU简单控制DAC芯片应用(以DAC8550为例)

    DAC芯片与MCU通信的常见方式有:SPI.IIC和通用I/O模拟时序等方式控制.通俗地讲,要正确控制DAC芯片,其实就是理清该芯片的通信时序.     长话短说,本文只是简单的介绍如何通过I/O口控 ...

  3. 网络IO控制 单芯片

    网络IO单芯片介绍 ZLAN1043是单芯片以太网转串口芯片,除此之外,它还具有Modbus TCP转RTU.定时发送心跳包.发送注册报.JSON转Modbus RTU.MQTT网关等功能,本文主要介 ...

  4. 硬件控制RS485电路图设计

    作为一枚软件工程师,能力比较菜,只好麻烦硬件工程师费工夫了. 转自:http://www.elecfans.com/article/88/131/101/2014/20141008355704.htm ...

  5. SGL8022W单通道直流LED 灯光控制触摸芯片

    SGL8022W单通道直流LED 灯光控制触摸芯片版本1.4 概述 SGL8022W 是一款用于LED 灯光亮度调节及开关控制的单通道触摸芯片.使用该芯片可以实现 LED 灯光的触摸开关控制和亮度调节 ...

  6. raspberry pi_使用Raspberry Pi和GPIO引脚控制外部LED

    raspberry pi by Shahbaz Ahmed Shahbaz艾哈迈德(Shahbaz Ahmed) 使用Raspberry Pi和GPIO引脚控制外部LED (Controlling a ...

  7. linux 串口 设置rts,linux内核关于uart2配置为RTS引脚时,串口无法使用的问题

    前言: 在linux中,当gpio被配置为串口或者其他作用功能时,是无法再文件系统中再将该gpio进行导出(echo xx > /sys/class/gpio/export)的,内核不允许,因为 ...

  8. STM32F205ZET引脚控制FM24CL16B问题记录

    STM32F205ZET引脚控制FM24CL16B问题记录 1.电气连接如下图,SCL2连接STM32的PB7,SDA2连接PB8:要使用R101和R102两个上拉电阻,尤其SDA2没有上拉电阻的话, ...

  9. ESP32利用SPIFFS(闪存文件系统)创建 Web服务器实现引脚控制

    ESP32利用SPIFFS(闪存文件系统)创建 Web服务器实现引脚控制 在本教程中,我们将向您展示如何构建一个web服务器,以提供存储在ESP32文件系统中的HTML和CSS文件.我们将创建分离的H ...

  10. 如何用单片机控制语音芯片?语音芯片该如何选择?唯创知音来推荐

    在产品的开发中通常需要MCU控制语音芯片的播放,一般常用的语音芯片如:WT588F,单芯片支持2,000段的语音地址,并且支持工程师们自行烧录语音,能便捷地进行调试,节省产品的开发周期: WT588F ...

最新文章

  1. springboot+kafka(ip地址瞎写的)
  2. aspect spring_使用Aspect和Spring Profile进行电子邮件过滤
  3. Exynos4412 内核移植(四)—— MMU 相关知识解析
  4. jquery ztree 设置勾选_047 JAVA-jQuery
  5. 周志明:职业电竞选手的Java大神路
  6. linux查看xml文件的配置,Hibernate配置文件hibernate.cfg.xml的详细解释
  7. Python学习【第二篇】 : Python入门
  8. 智慧楼宇管理后台、运维配置、设备台账、设备管理、维保统计、巡检统计、维修工单、报修统计、电子巡更、智能楼宇运营、运营后台、智慧社区、楼宇设备监控管理端、智能社区管理系统、楼宇运维管理系统
  9. 如何强制卸载Google浏览器,不用担心Google打开为白板,亲测有效。
  10. [渝粤教育] 中国地质大学 工业卫生技术 复习题
  11. 博主的EMNLP2021合作工作已公开:TransPrompt——基于Prompt和迁移学习的小样本文本分类,欢迎阅读与引用
  12. 这些神奇 Bug,碰到真是让人目瞪狗呆!
  13. 【Python学习】函数
  14. 华为OD面经2022-8-9(持续更新)
  15. android 老人机模式,如何将智能手机切换成老人机模式
  16. 鼠标使用板载内存和使用计算机上,鼠标怎么选?教你选择适合自己的游戏鼠标。...
  17. 9.matplotlib contours等高线图
  18. LAD线性判别模型简介及sklearn参数
  19. 绿幕抠图直接成像_利用蒙版为事物PS抠出阴影的方法_ps抠图_ps蒙版_课课家
  20. android10.0版本下载,安卓10.0系统

热门文章

  1. C/C++ typedef用法!
  2. 宝马i3自动停泊技术
  3. html中居中方法,HTML中5种常见的居中方法
  4. mysql如何实现cas机制_CAS机制详解
  5. 集成腾讯信鸽推送遇到的大坑
  6. oracle怎么启动oem,Oracle 启动OEM
  7. Paraview 5.9.0升级为Paraview 5.10.0之后报错
  8. 超级简单的纯js 象棋,看一遍你也会写
  9. 零基础学SQL(一、数据库与SQL简介)
  10. Windows下解压tar.gz压缩文件