你好!
我当前使用的是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 只有一个发送空闲中断。
如何实现ESP32 uart的接收空闲中断
Re: 如何实现ESP32 uart的接收空闲中断
这多简单的东西,开个接收中断,然后收到数据后会进入中断,接下来可以有两种方案,1.一直读取数据到rx_cnt和rxfifo_cnt都为零后usleep对应比一个字节时间长的时间后再判断rx_cnt和rxfifo_cnt是否为零。这个程序比较简单,就是耗费资源,2就是首次进入接收数据中断后打开超时中断,直到超时中断触发结束一次过程罗。
-
- Posts: 13
- Joined: Mon Jul 24, 2023 1:00 pm
-
- Posts: 13
- Joined: Mon Jul 24, 2023 1:00 pm
Re: 如何实现ESP32 uart的接收空闲中断
就是SDK中,uart_EVENT例程,那里面就是接收不定长度的串口信息,仔细看例程,看懂就行了。你只要接收队列信息就可以了,也可以发送队列消息,然后会将你的消息以串口形式发出的。
Who is online
Users browsing this forum: Google [Bot] and 28 guests