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

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

3天内不再提示

英创信息技术ESM335x WEC7串口硬件流控使用说明

英创信息技术 来源:英创信息技术 作者:英创信息技术 2020-02-04 11:22 次阅读

ESM335x系列工控主板支持5路高速串口,其中COM2口支持硬件RTS/CTS流控功能,其RTS/CTS分别与ESM335x的GPIO1/GPIO0复用,应用程序可以独立设置是否使能RTS/CTS功能。

RTS(Request-To-Send)流量控制功能由串口参数结构体DCB的fRtsControl成员设置,该成员的可用值如下(针对ESM335x):

说明
RTS_CONTROL_DISABLE 禁止RTS功能,对应管脚可作为GPIO使用
RTS_CONTROL_HANDSHAKE 启用RTS握手功能。当串口硬件输入缓冲区字符数大于40时,RTS输出高,小于24个字符时,RTS输出低
RTS_CONTROL_TOGGLE 当发送数据时,RTS信号线被驱动为低,缓冲区数据发送完后,RTS信号为被驱动高

串口参数结构体DCB的fOutxCtsFlow成员用于指定CTS(Clear-To-Send)信号是否被监视并作为输出流量控制信号。如果此成员设置为TRUE且CTS管脚为高,则串口输出被挂起,直到CTS被拉低后重新输出。如果此成员设置为FALSE,对应管脚可作为GPIO使用。

RTS Handshake与OutxCtsFlow通常是同时使能或同时禁止的,下面是设置RTS/CTS的示例代码:

BOOL CCESerial::SetHandshake( BOOL bSet )

{

DCB dcb;

GetCommState( m_hSer, &dcb );

// Purge any pending characters in the serial port.

PurgeComm(m_hSer, (PURGE_TXABORT|PURGE_RXABORT |PURGE_TXCLEAR | PURGE_RXCLEAR));

if( bSet )

{

dcb.fRtsControl = RTS_CONTROL_HANDSHAKE;

dcb.fOutxCtsFlow = TRUE;

}

else

{

dcb.fRtsControl = RTS_CONTROL_DISABLE;

dcb.fOutxCtsFlow = FALSE;

}

returnSetCommState(m_hSer, &dcb);

}

除COM2口支持硬件流控外,ESM335x的所有串口(包括COM2)还支持 RTS Toggle功能,RTS Toggle主要用于RS485电路的数据收发方向控制,应用程序可以选择ESM335x 32位GPIO中的任意一位做为RTS信号线来实现RTS Toggle功能,下面是选择GPIO作为串口RTS信号并使能RTS_CONTROL_TOGGLE的示例代码:

BOOL CCESerial::SetRTSToggle( DWORD dwRTSPin )

{

DCB dcb;

BOOL bRet;

bRet = DeviceIoControl(m_hSer, // file handle to the driver

IOCTL_SET_UART_RTS_PIN, // I/O control code

&dwRTSPin, // in buffer

sizeof(DWORD), // in buffer size

NULL, // out buffer

0, // out buffer size

NULL, // pointer to number of bytes returned

NULL); // ignored (=NULL)

if( !bRet )

returnFALSE;

GetCommState( m_hSer, &dcb );

// Purge any pending characters in the serial port.

PurgeComm(m_hSer, (PURGE_TXABORT |PURGE_RXABORT |PURGE_TXCLEAR | PURGE_RXCLEAR));

dcb.fRtsControl = RTS_CONTROL_TOGGLE;

SetCommState(m_hSer, &dcb);

returnTRUE;

}

完整的串口例程请与英创工程师联系获取。

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

    关注

    7

    文章

    6068

    浏览量

    34728
收藏 人收藏

    评论

    相关推荐

    ESP32串口发送多于128个字节如何处理?

    ESP32串口发送多于128个字节如何处理,我想在收到100个字节时开启UART_RXFIFO_FULL_INT中断,是不是一定要设置成硬件控制模式,似乎库文件是这么写的,。各位高手是不是有更好的办法,谢谢。
    发表于 06-25 06:05

    用esp32的串口和Stm32F407串口通讯,通过TJA转CAN,结果esp32串口读到的一直是自己发的数据,为什么?

    我用esp32的串口和Stm32F407串口通讯,通过TJA转CAN。结果esp32串口读到的一直是自己发的数据,各位大神给我看看哪里有问题么
    发表于 06-19 07:00

    esp32-c3串口无法下载怎么解决?

    请教esp c3串口无法下载问题,硬件图如下图所示,目前gpio2一直拉高的,gpio9拉低后按en复位,进入到如下模式,工具一直提示等待上电同步,一直下载不了,折腾几晚了,还请大佬们帮忙
    发表于 06-17 07:40

    esp32串口控模式和硬件控模式反复切换怎么解决?

    uart_hw_flow_init()后 进入硬件控模式 esp32串口控模式和硬件
    发表于 06-13 06:57

    STM8串口工作一段时间后出现通讯异常的原因?

    ,大哥说可能是串口硬件问题,STM8串口很弱。至于是什么弱,他没说。 以上问题你有遇到过吗?大概会是什么原因?
    发表于 04-15 08:05

    STM32G031k8t6串口发送为什么会进入硬件中断?

    STM32G031k8t6串口发送进入硬件中断
    发表于 03-13 07:59

    嵌入式操作教程:2-12 RS232串口通信实验(查询方式)

    RS232串口线和电源。 硬件连接 (1)使用 RS232 交叉串口母母线和 USB 转 RS232 串口线连接实验板的UART1串口和电
    发表于 02-07 14:37

    M451串口回显问题需要怎么关闭?

    M451串口回显问题需要怎么关闭?
    发表于 01-16 06:47

    Proteus 8.9串口仿真只能发送,不能接收

    的W7系统,以前Proteus 8.9串口直接和单片机串口通讯都很正常,最近不知什么原因就出现仿真只能发送,不能接收?
    发表于 12-12 11:32

    单片机与esp8266串口通讯时,用转ttl模块发不了信息怎么解决?

    单片机与esp8266串口通讯时, uart转ttl模块同时接上,txd接单片机的txd(即esp8266的rxd)发现esp8266接收不了串口数据。猜测是单片机的txd引脚阻抗小,把信号弄没了,应该怎么办?接二极管还是电阻,哪个方向怎么接?
    发表于 11-09 08:04

    ESP8266串口发送AT指令无效怎么处理?

    ESP8266串口发送AT指令无效,串口发啥 它回啥。驱动和接线都没问题。怎么处理?
    发表于 10-19 07:39

    COM335X如何修改phy及双网络使用说明

    以 lan8720 为例,说明修改步骤。 lan8720 是 rmii 接口的 10/100m 以太网 phy 芯片,其与 com335x硬件连接和设计请参考《am335x 底板设
    发表于 10-09 06:30

    信息技术是干什么?

    广播电子技术信息技术
    橙群微电子
    发布于 :2023年09月22日 09:17:48

    M451串口回显问题需要怎么关闭?

    M451串口回显问题需要怎么关闭?
    发表于 08-25 06:22

    VCOM例程COM10串口怎么用?

    了COM10串口。 我的问题是,怎么使用这个虚拟串口?TXD、RXD引脚分别是哪个?在虚拟终端上应该设置什么样的串口的波特率、控等参数? 谢谢!
    发表于 08-24 06:46