UART RTS CTS硬件流量控制和唤醒

6个职位/ 0个新职位
最后发表
ankitdaf
离线
最后看到:2年11个月前
加入:2015-09-03 20:14
UART RTS CTS硬件流量控制和唤醒

我试图实现硬件流控制的UART。我注意到CTS和RTS引脚是低活跃。
是否有任何代码样本可用于如何初始化硬件流控制的UART ?我已经完成了GPIO配置,还有什么需要做的吗?我没有找到如何启用硬件流控制,以及它会影响什么。

作为一个附加问题:
在AN-B-026中,在“使用UART CTS信号唤醒DA14580”一节中,我注意到CTS默认为低,然后切换为高和低。这是否意味着它的活性很高,如果我想用它来唤醒我?如果它是活跃的高以便被用作唤醒,我如何配置它保持接收与硬件流控制的数据,这需要CTS是活跃的低

设备:
MT_dialog
离线
最后看到:4个月15个小时前
工作人员
加入:2015-06-08 34
嗨ankitdaf,

嗨ankitdaf,

您可以使用DSPS的例子来实现UART流程控制,请检查这个项目作为参考。

当你完成操作与唤醒程序和引脚不需要用作唤醒引脚,你重新配置它作为你的UART的CTS引脚。当CTS线路低,你可以发送数据,一旦CTS高,你应该停止发射机。

由于MT_dialog

ankitdaf
离线
最后看到:2年11个月前
加入:2015-09-03 20:14
谢谢你的建议,努力吧

谢谢你的建议,试试吧。

我已经打过电话了:

uart2_read((uint8_t *)uart2_rx_buffer, 1, uart2_read_completion_cb);//读取一个字符

并实现了uart2_read_completion_cb函数。

我已经配置了gpio到他们的RTS和CTS功能,他们正在被调用,感谢GPIO0 IRQn。然而,基于DSPS示例,我可以看到信令仅用于控制BLE数据流。

我想要了解的是,是否存在能够处理CTS变低的内在机制(以及可能调用的中断),以及是否有可能使用它去触发RTS信号?我目前正在手动处理这个通过设置GPIO不活跃。所有这些看起来都是手工操作的,目前,这些大头针的作用就像gpio。,没有太多的使用定义引脚为RTSN和CTSN,所以我想知道我是否错过了一些东西。

谢谢

MT_dialog
离线
最后看到:4个月15个小时前
工作人员
加入:2015-06-08 34
嗨ankitdaf,

嗨ankitdaf,

不确定你的意思,uart2_Handler回调将被调用,一旦你在UART FIFO中有数据(取决于你在硬件中设置了多少数据将触发中断)。在DSPS的例子580 CTS引脚也被称为通过GPIO0 IRQn和580 RTS是由UART的硬件处理取决于你的FIFO设置(多少字节将接受前流掉)。中断从UART中的FIFO状态触发,当CTS被切换时,没有中断被调用。当CTS上升时,uart发射器只是暂停向另一边发送数据,因为CTS被切换,uart不会引起中断。

由于MT_dialog

ankitdaf
离线
最后看到:2年11个月前
加入:2015-09-03 20:14
嗨MT_dialog

嗨MT_dialog

谢谢你的回复。这让我比以前更困惑了。让我试着换种方式问你。

1.我尝试着使用RTS和CTS功能。如何在从另一个处理器接收一个字节消息的应用程序中实现这一点?我不需要传输任何数据,只需要接收。

2.有一个uart_mcr_pack和uart2_mcr_pack方法,提到了autorts、autoct和rts。这个方法和寄存器到底是做什么的?我没有找到相关文件。

3.DSPS应用程序没有多大帮助,因为它似乎是通过BLE传递流控制信令。

4.通过GPIO0_IRQn调用CTS的确切目的是什么?我可以通过外部处理器拉高或低使用CTS引脚来使580触发/不触发Uart2_read回调吗?切换CTS引脚是否会影响是否调用该处理程序?

请帮帮我!

也许在这方面的应用程序注释会有所帮助,只是为了文档说明什么类型的硬件控制是可用的UARTs,如果这对你们来说不是太多的工作

感谢您的耐心等待

MT_dialog
离线
最后看到:4个月15个小时前
工作人员
加入:2015-06-08 34
嗨ankitdaf,

嗨ankitdaf,

1.我不确定如果我得到这个,你可以设置1个字节的UART的FIFO深度水平和启用自动流量控制如果你这样做你会发现您的RTS信号将设置为高每次你得到一个字节FIFO。你可以通过使用DSPS的例子来测试这个,只设置UART_IIR_FCR_REG为0x7,这将触发一个中断,当你收到一个字节在你的FIFO,如果检查与逻辑分析器,你会看到RTS切换接收一个字符。如果你用DSPS测试这一点,你会看到你的RTS将切换每8个字符,因为DSPS设置的FIFO是1/2满。

2.关于该函数的信息没有文档记录,检查数据表中的寄存器地址,这里有每个位所做的描述。

3.如上所述,在DSPS中硬件操作UART的传输/接收,没有对应用程序的指示,当CTS将被UART的另一边切换,因此,为了给我们的应用程序提供指示,我们使用了一个普通的IRQ,以便在流中断信号应该发送到BLE链接的另一边时给应用程序发出信号。

4.如上所述,来自外部处理器的CTS的断言或反断言不会触发任何UART中断。如果您在UART_IIR_FCR_REG上检查数据表的UART部分,可用的UART中断是由特定寄存器指示的。

关于应用说明,数据表包括大多数必要的信息。

由于MT_dialog