如何实现ESP32 uart的接收空闲中断

Andy_Zhou7
Posts: 2
Joined: Sun Feb 20, 2022 12:28 pm

如何实现ESP32 uart的接收空闲中断

Postby Andy_Zhou7 » Sun Feb 20, 2022 12:44 pm

你好!
我当前使用的是ESP-IDF.当uart接收不定长的数据时,希望通过空闲中断或者事件的方式来结束一帧uart数据的接收。我看了\esp-idf-v4.4\examples\peripherals\uart\uart_events ,我当前有3个疑问。
1.event.type的UART_BREAK如何理解?注释写的是Event of UART RX break detected ,什么情况认为是UART RX break,能否详细解释一下,一帧数据接收结束认为是UART RX break?
2.structuart_event_t的timeout_flag如何使用?需要开中断吗?有关于这个标志位使用的例程可以参考吗?
3.基于我的这种应用需求(接收不定长数据),是推荐直接开uart接收空闲中断还是使用ESP-IDF中已经定义好uart event实现? 如果使用uart接收空闲中断有相关例程吗?\esp-idf-v4.4\components\driver\test\test_uart.c 只有一个发送空闲中断。

Andy_Zhou7
Posts: 2
Joined: Sun Feb 20, 2022 12:28 pm

Re: 如何实现ESP32 uart的接收空闲中断

Postby Andy_Zhou7 » Mon Feb 28, 2022 3:37 am

能回复一下吗?

Lifeihai
Posts: 9
Joined: Sat Dec 18, 2021 6:49 am

Re: 如何实现ESP32 uart的接收空闲中断

Postby Lifeihai » Tue May 09, 2023 3:17 am

这多简单的东西,开个接收中断,然后收到数据后会进入中断,接下来可以有两种方案,1.一直读取数据到rx_cnt和rxfifo_cnt都为零后usleep对应比一个字节时间长的时间后再判断rx_cnt和rxfifo_cnt是否为零。这个程序比较简单,就是耗费资源,2就是首次进入接收数据中断后打开超时中断,直到超时中断触发结束一次过程罗。

15618021569
Posts: 13
Joined: Mon Jul 24, 2023 1:00 pm

Re: 如何实现ESP32 uart的接收空闲中断

Postby 15618021569 » Sun Apr 28, 2024 7:21 am

Lifeihai wrote:
Tue May 09, 2023 3:17 am
这多简单的东西,开个接收中断,然后收到数据后会进入中断,接下来可以有两种方案,1.一直读取数据到rx_cnt和rxfifo_cnt都为零后usleep对应比一个字节时间长的时间后再判断rx_cnt和rxfifo_cnt是否为零。这个程序比较简单,就是耗费资源,2就是首次进入接收数据中断后打开超时中断,直到超时中断触发结束一次过程罗。
请问中断程序如何进入,是怎么写中断的函数的?没找到那种串口接收中断的例程。ESP8266 RTOS SDK的。

15618021569
Posts: 13
Joined: Mon Jul 24, 2023 1:00 pm

Re: 如何实现ESP32 uart的接收空闲中断

Postby 15618021569 » Sat Jun 08, 2024 12:54 am

就是SDK中,uart_EVENT例程,那里面就是接收不定长度的串口信息,仔细看例程,看懂就行了。你只要接收队列信息就可以了,也可以发送队列消息,然后会将你的消息以串口形式发出的。

Who is online

Users browsing this forum: Google [Bot] and 28 guests