完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
因此,我正在编写代码,以便 ESP8266 是主设备,Atmega1284 是从设备。
我将数据发送到 Arduino - 然后我取回数据。我遇到了可靠性问题,因为 RETURN 数据对于一个字节来说是可以的 - 但超过一个字节,我往往会得到错误的数据 - 而且 ESP 有重启的趋势。 所以对于那些熟悉 ESP 上的 I2CMaster 代码的人来说,问题很多。 1. 什么可能导致 ESP 在接收数据时重新启动 - 查看 I2c 代码,我看不到它可以挂断等待并导致看门狗计时器超时......还有其他人有过这样的经历吗? 2. 在试图缩小范围的过程中,我在 i2c 上安装了一个逻辑分析器,并在开始时注意到了一大堆 CLOCK。我回到了 ESP 的I2c_master代码中,并注意到即使在最新版本的 SDK 中 - 函数 i2c_master_gpio_init() 在最后调用 i2c_master_init(),我本来认为它只需要确保时钟和数据线都很高 - 但实际上发送了一大堆东西,包括不少于 28 个时钟 - 这到底是怎么回事???? |
|
相关推荐
1个回答
|
|
ESP8266在发送超过一个字节的数据时可能会遇到问题,这可能是由多种原因导致的。以下是一些可能的原因和解决方案:
1. **I2C总线冲突**:当I2C总线上有多个设备时,可能会发生总线冲突。确保所有设备都正确连接到总线,并且地址没有冲突。 2. **时钟频率不匹配**:ESP8266和Atmega1284之间的时钟频率可能不匹配,导致通信问题。尝试调整ESP8266的时钟频率,使其与Atmega1284的时钟频率相匹配。 3. **电源不稳定**:不稳定的电源可能导致ESP8266在接收数据时重新启动。确保为ESP8266提供稳定的电源。 4. **代码问题**:检查ESP8266和Atmega1284的代码,确保它们正确地实现了I2C协议。可能存在一些逻辑错误或未处理的异常,导致ESP8266在接收数据时重新启动。 5. **硬件问题**:检查ESP8266和Atmega1284的硬件连接,确保它们之间的连接正确且没有损坏。 6. **软件库问题**:确保你使用的I2CMaster库是最新版本,并且与你的ESP8266和Atmega1284兼容。如果可能,尝试使用其他I2C库,看看问题是否仍然存在。 7. **缓冲区溢出**:在发送或接收数据时,确保你的代码正确处理了缓冲区溢出的情况。如果缓冲区溢出,可能会导致数据丢失或ESP8266重新启动。 8. **看门狗计时器**:检查你的代码,确保在I2C通信过程中没有触发看门狗计时器。如果看门狗计时器被触发,ESP8266可能会重新启动。 为了解决这些问题,你可以尝试以下步骤: 1. 使用逻辑分析仪检查I2C总线上的信号,确保通信正常。 2. 检查电源连接,确保为ESP8266提供稳定的电源。 3. 检查代码,确保正确实现了I2C协议,并处理了可能的异常。 4. 尝试使用其他I2C库,看看问题是否仍然存在。 5. 检查硬件连接,确保它们之间的连接正确且没有损坏。 通过这些步骤,你应该能够找到导致ESP8266在发送超过一个字节的数据时出现问题的原因,并采取相应的措施来解决它。 |
|
|
|
只有小组成员才能发言,加入小组>>
545浏览 6评论
457浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
435浏览 5评论
441浏览 4评论
410浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-20 18:21 , Processed in 0.819352 second(s), Total 82, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号