i2c read and wait_for_received_byte();

10个帖子/ 0新
最后一篇
Dave.renzo.
离线
最后一次露面:2年7个月前
加入:2015-10-08 13:21
i2c read and wait_for_received_byte();

嗨支持,

我使用I2C总线将DA14580与传感器连接到传感器。每一个,然后传感器都不会响应读取请求,并且我的代码在wait_for_received_byte()上挂断挂起;。由于我在RAM中存储记录数据我不想使用看门狗定时器从此条件中恢复,因为重置将清除所有记录的数据。有没有办法从这种情况下恢复?任何建议将不胜感激。谢谢。

设备:
mt_dialog.
离线
最后一次露面:2个月1周前
职员
加入:2015-06-08 11:34
嗨戴夫,

嗨戴夫,

您是对的,并且有一个内部机票来改进I2C驱动程序。一个想法,也许是为了实现与硬件定时器的超时处理,甚至是普通变量,它作为计数器,如果没有从奴隶侧没有活动,则在循环时会打破无条件的计数器。

谢谢mt_dialog.

离线
最后一次露面:4年6个月前
加入:2016-06-01 06:05
嗨mt_dialog,

嗨mt_dialog,

这个问题有进展吗?

mt_dialog.
离线
最后一次露面:2个月1周前
职员
加入:2015-06-08 11:34
嗨尹,

嗨尹,

到目前为止,我们还没有更新我们的I2C司机。请看看这篇文章,也许它将帮助您实现超时,当I2C连接的另一侧没有响应时。

https://support.dialog-semicondiondiondum/i2c-communication-flow-protecti ...

谢谢mt_dialog.

盲文
离线
最后一次露面:2年5个月前
加入:2016-07-29 10:01
嗨,对话框,

嗨,对话框,
这个i2c驱动程序问题是否已修复?这是新的驱动程序发布吗?我也面临这个问题。

mt_dialog.
离线
最后一次露面:2个月1周前
职员
加入:2015-06-08 11:34
嗨caiziee,

嗨caiziee,

您可以查看I2C_EEPROM示例的最新5.0.4 SDK,示例具有驱动程序,该驱动程序包含超时方案,如果设备无法使用错误代码返回。但如果在阅读数据的同时使用的传感器没有响应,则必须在其绑定交互时实现自定义方案,最长时间等待接收的字节或类似的东西。

谢谢mt_dialog.

ddddragon.
离线
最后一次露面:2年7个月前
加入:2017-08-11 05:55
嗨,对话框,

嗨,对话框,
我也面临这个问题。根据现有的讨论,我没有找到一个可行的解决方案。你帮我吗?

PM_DIALOG.
离线
最后一次露面:8小时58分钟前
职员
加入:2018-02-08 11:03
嗨ddddragon.

嗨ddddragon.

您的代码堆栈在wait_for_received_byte中的原因是为什么i2c_rxfl_reg寄存器没有从I2C接口接收的数据。因此,您应该检查从设备是否响应。此外,您还可以探测信号才能检查发生这种情况的频率,如果您愿意在(getword16(i2c_rxflr_reg)== 0)中,您应该使用我们的超时进行类似的实现。

谢谢,PM_DIALOG.

ddddragon.
离线
最后一次露面:2年7个月前
加入:2017-08-11 05:55
嗨,pm_dialog,

嗨,pm_dialog,
我有两个来自设备。根据我的测试,当您从设备获取数据时,没有问题,但是一旦我同时阅读两个数据,程序将保持WAIT_FOR_RECEIVED_BYTE大约一个小时.I DON关于超时的了解。能给我举个例子?

PM_DIALOG.
离线
最后一次露面:8小时58分钟前
职员
加入:2018-02-08 11:03
嗨ddddragon,

嗨ddddragon,

您能否解释一下你的意思是用“来自设备的两个”并同时阅读两个数据?关于wait_for_receive_byte(),宏检查计算所接收的数据的i2c_rxflr_reg寄存器,如果您留在那里,这意味着另一边还没有向您发送任何东西。该设备进入等待状态,等待另一方,以发送它应该的数据,以便计数器将增加,580可以转到I2C FIFO并获得实际数据。您是否尝试使用分析仪以检查您是否收到数据?如果收到数据,则I2C_RXFLR_REG的值应为非零。你能检查一下吗?超时的一个简单示例是具有for-循环而不是while循环,因此您的代码将在一定数量的i2c_rxflr_reg检查之后继续。

谢谢,PM_DIALOG.