RT1021使用RTS引脚控制RS485芯片收发使能
串口初始化完成后增加两行代码:
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芯片收发使能相关推荐
- RS485自收发实现方案,典型应用电路及问题经验总结
关注.星标公众号,不错过精彩内容 素材来源:网络 转自:8号线攻城狮 如上三张图片大致示意485芯片的收发特性,这里有个概念. RS485抗噪音抗干扰能力强.传输距离远.支持多点通信,是工控行业首选串 ...
- MCU简单控制DAC芯片应用(以DAC8550为例)
DAC芯片与MCU通信的常见方式有:SPI.IIC和通用I/O模拟时序等方式控制.通俗地讲,要正确控制DAC芯片,其实就是理清该芯片的通信时序. 长话短说,本文只是简单的介绍如何通过I/O口控 ...
- 网络IO控制 单芯片
网络IO单芯片介绍 ZLAN1043是单芯片以太网转串口芯片,除此之外,它还具有Modbus TCP转RTU.定时发送心跳包.发送注册报.JSON转Modbus RTU.MQTT网关等功能,本文主要介 ...
- 硬件控制RS485电路图设计
作为一枚软件工程师,能力比较菜,只好麻烦硬件工程师费工夫了. 转自:http://www.elecfans.com/article/88/131/101/2014/20141008355704.htm ...
- SGL8022W单通道直流LED 灯光控制触摸芯片
SGL8022W单通道直流LED 灯光控制触摸芯片版本1.4 概述 SGL8022W 是一款用于LED 灯光亮度调节及开关控制的单通道触摸芯片.使用该芯片可以实现 LED 灯光的触摸开关控制和亮度调节 ...
- raspberry pi_使用Raspberry Pi和GPIO引脚控制外部LED
raspberry pi by Shahbaz Ahmed Shahbaz艾哈迈德(Shahbaz Ahmed) 使用Raspberry Pi和GPIO引脚控制外部LED (Controlling a ...
- linux 串口 设置rts,linux内核关于uart2配置为RTS引脚时,串口无法使用的问题
前言: 在linux中,当gpio被配置为串口或者其他作用功能时,是无法再文件系统中再将该gpio进行导出(echo xx > /sys/class/gpio/export)的,内核不允许,因为 ...
- STM32F205ZET引脚控制FM24CL16B问题记录
STM32F205ZET引脚控制FM24CL16B问题记录 1.电气连接如下图,SCL2连接STM32的PB7,SDA2连接PB8:要使用R101和R102两个上拉电阻,尤其SDA2没有上拉电阻的话, ...
- ESP32利用SPIFFS(闪存文件系统)创建 Web服务器实现引脚控制
ESP32利用SPIFFS(闪存文件系统)创建 Web服务器实现引脚控制 在本教程中,我们将向您展示如何构建一个web服务器,以提供存储在ESP32文件系统中的HTML和CSS文件.我们将创建分离的H ...
- 如何用单片机控制语音芯片?语音芯片该如何选择?唯创知音来推荐
在产品的开发中通常需要MCU控制语音芯片的播放,一般常用的语音芯片如:WT588F,单芯片支持2,000段的语音地址,并且支持工程师们自行烧录语音,能便捷地进行调试,节省产品的开发周期: WT588F ...
最新文章
- springboot+kafka(ip地址瞎写的)
- aspect spring_使用Aspect和Spring Profile进行电子邮件过滤
- Exynos4412 内核移植(四)—— MMU 相关知识解析
- jquery ztree 设置勾选_047 JAVA-jQuery
- 周志明:职业电竞选手的Java大神路
- linux查看xml文件的配置,Hibernate配置文件hibernate.cfg.xml的详细解释
- Python学习【第二篇】 : Python入门
- 智慧楼宇管理后台、运维配置、设备台账、设备管理、维保统计、巡检统计、维修工单、报修统计、电子巡更、智能楼宇运营、运营后台、智慧社区、楼宇设备监控管理端、智能社区管理系统、楼宇运维管理系统
- 如何强制卸载Google浏览器,不用担心Google打开为白板,亲测有效。
- [渝粤教育] 中国地质大学 工业卫生技术 复习题
- 博主的EMNLP2021合作工作已公开:TransPrompt——基于Prompt和迁移学习的小样本文本分类,欢迎阅读与引用
- 这些神奇 Bug,碰到真是让人目瞪狗呆!
- 【Python学习】函数
- 华为OD面经2022-8-9(持续更新)
- android 老人机模式,如何将智能手机切换成老人机模式
- 鼠标使用板载内存和使用计算机上,鼠标怎么选?教你选择适合自己的游戏鼠标。...
- 9.matplotlib contours等高线图
- LAD线性判别模型简介及sklearn参数
- 绿幕抠图直接成像_利用蒙版为事物PS抠出阴影的方法_ps抠图_ps蒙版_课课家
- android10.0版本下载,安卓10.0系统