完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
所用源码为ESP8266_RTOS_SDK-2.0.0。
读取Uart0寄存器代码部分: fifo_len = (READ_PERI_REG(UART_STATUS(UART0)) >> UART_RXFIFO_CNT_S)&UART_RXFIFO_CNT; while (pack_num < fifo_len) { read_package[pack_num] = READ_PERI_REG(UART_FIFO(UART0)) & 0xFF; pack_num++; } 下位机向Uart0发送数据,数据为16进制,长度为10,数据字段为: ff ff 00 0a 04 03 01 01 01 00 UART0第一次接收数据: ff ff 00 0a 04 03 01 01 01 00 第二次接收数据: 00 00 00 00 00 00 00 00 00 00 ff ff 00 0a 04 03 01 01 01 00 下位机停止发送,fifo_len = 10,依然判断出有数据,数据为: 00 00 00 00 00 00 00 00 00 00 第三次接收数据: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff ff 00 0a 04 03 01 01 01 00 之后下位机停止发送,fifo_len = 10,依然判断出有数据,数据为: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ****数据填充位数与要接收的位数相同 |
|
相关推荐
1个回答
|
|
在使用ESP8266_RTOS_SDK-2.0.0进行UART0读取时,如果出现地址偏移问题,可以尝试以下方法进行解决:
1. 确保使用的SDK版本与硬件兼容:请确保您使用的ESP8266_RTOS_SDK-2.0.0与您的硬件版本兼容。如果不兼容,可能会导致寄存器地址偏移或其他问题。 2. 检查寄存器地址:请检查UART_STATUS(UART0)和UART_FIFO(UART0)寄存器的地址是否正确。如果地址错误,可能会导致读取数据时出现偏移。 3. 检查位操作:在您的代码中,使用了位移操作符(>>)和位掩码操作符(&)。请确保这些操作符的使用是正确的。例如,UART_RXFIFO_CNT_S和UART_RXFIFO_CNT的值是否正确。 4. 检查循环条件:在while循环中,使用pack_num < fifo_len作为循环条件。请确保pack_num和fifo_len的值在循环过程中正确更新。 5. 检查数据读取:在读取UART_FIFO(UART0)寄存器时,使用了read_package = READ_PERI_REG(UART_FIFO(UART0)) & 0xFF。请确保这个操作正确地读取了8位数据。 6. 检查中断和DMA设置:如果您的系统使用了中断或DMA来处理UART数据传输,请确保这些设置正确,以避免数据丢失或偏移。 7. 使用调试工具:如果问题仍然存在,可以使用调试工具(如ESP-WROOM-02模块的UART接口)来检查硬件层面的数据传输是否正常。 8. 更新SDK:如果问题仍然无法解决,可以尝试更新到较新的ESP8266_RTOS_SDK版本,以获取可能的修复和改进。 通过以上步骤,您应该能够解决ESP8266读取UART0发生地址偏移的问题。如果问题仍然存在,请提供更多详细信息,以便进一步分析和解决问题。 |
|
|
|
只有小组成员才能发言,加入小组>>
406浏览 6评论
338浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
321浏览 5评论
322浏览 4评论
309浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-16 08:23 , Processed in 0.658598 second(s), Total 75, Slave 61 queries .
Powered by 电子发烧友网
© 2015 www.ws-dc.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号