嗨,支持,
我使用i2c总线接口的DA14580传感器。时不时传感器也不会读请求和回应我的代码会挂在WAIT_FOR_RECEIVED_BYTE ();。因为我将记录数据存储在ram中我不想使用看门狗定时器来恢复这个条件,因为重置会清除所有记录的数据。有什么方法我可以从这种状况中恢复过来的吗?任何建议将不胜感激。谢谢。
你好戴夫,
你是对的,然后有一个内部票提高i2c司机。一个想法将可能实现与硬件定时器超时处理,甚至一个普通变量作为一个计数器,将打破无条件while循环活动如果没有奴隶。
由于MT_dialog
嗨MT_dialog,
在这个问题上有任何进展吗?
你好,
到目前为止我们还没有更新我们的I2C司机。请看看这篇文章,也许会帮助你为了实现超时没有反应时,另一边的I2C连接。
https://support.dialog-semiconductor.com/i2c-communication-flow-protecti..。
嗨,对话框中,这个i2c司机问题固定了吗?有新的驱动程序版本吗?我面临这个问题。
嗨caiziee,
你可以看看最新的5.0.4 SDK i2c_eeprom例子,例子有司机,包括超时计划如果没有活动设备返回一个错误代码。但如果没有响应从您正在使用的传感器,读取数据时必须实现一个自定义方案各大剧院巡回演出互动的时间,最长时间等待接收的字节或类似的东西。
嗨,对话框中,我面临这个问题。根据现有的讨论中,我没有找到一个可行的解决方案。你能帮我吗?
嗨DDDDragon
WAIT_FOR_RECEIVED_BYTE代码栈的原因,也是为什么I2C_RXFLR_REG注册没有数据接收的I2C接口。所以,您应该检查如果奴隶设备响应。也可以探测信号,以检查发生的频率,如果你宁愿得不到堆栈时(GetWord16 (I2C_RXFLR_REG) = = 0),你应该做一个类似的实现与我们但超时。
谢谢,PM_Dialog
嗨,PM_Dialog,我有两个从设备。根据我的测试,没有问题,当你从设备获取数据,但是一旦我从设备读取两个数据同时,程序将WAIT_FOR_RECEIVED_BYTE呆大约一个小时,我不太了解超时。你能给我一个例子吗?
嗨DDDDragon,
你能解释一下你的意思与“两个从设备”和阅读两个数据在同一时间吗?关于WAIT_FOR_RECEIVE_BYTE(),宏观检查I2C_RXFLR_REG寄存器计数接收的数据,如果你停留在那里它意味着对方还没有给你任何东西。设备进入等待状态,并等待对方发送的数据,所以柜台将增加和580可以去I2C FIFO和获得实际的数据。你尝试使用一个分析器为了检查如果你收到数据?如果你收到数据,I2C_RXFLR_REG的价值应该是零。你能检查吗?暂停的一个简单的例子是有一个for循环而不是while循环,因此你的代码将继续在一定量的I2C_RXFLR_REG检查。
你好戴夫,
你是对的,然后有一个内部票提高i2c司机。一个想法将可能实现与硬件定时器超时处理,甚至一个普通变量作为一个计数器,将打破无条件while循环活动如果没有奴隶。
由于MT_dialog
嗨MT_dialog,
在这个问题上有任何进展吗?
你好,
到目前为止我们还没有更新我们的I2C司机。请看看这篇文章,也许会帮助你为了实现超时没有反应时,另一边的I2C连接。
https://support.dialog-semiconductor.com/i2c-communication-flow-protecti..。
由于MT_dialog
嗨,对话框中,
这个i2c司机问题固定了吗?有新的驱动程序版本吗?我面临这个问题。
嗨caiziee,
你可以看看最新的5.0.4 SDK i2c_eeprom例子,例子有司机,包括超时计划如果没有活动设备返回一个错误代码。但如果没有响应从您正在使用的传感器,读取数据时必须实现一个自定义方案各大剧院巡回演出互动的时间,最长时间等待接收的字节或类似的东西。
由于MT_dialog
嗨,对话框中,
我面临这个问题。根据现有的讨论中,我没有找到一个可行的解决方案。你能帮我吗?
嗨DDDDragon
WAIT_FOR_RECEIVED_BYTE代码栈的原因,也是为什么I2C_RXFLR_REG注册没有数据接收的I2C接口。所以,您应该检查如果奴隶设备响应。也可以探测信号,以检查发生的频率,如果你宁愿得不到堆栈时(GetWord16 (I2C_RXFLR_REG) = = 0),你应该做一个类似的实现与我们但超时。
谢谢,PM_Dialog
嗨,PM_Dialog,
我有两个从设备。根据我的测试,没有问题,当你从设备获取数据,但是一旦我从设备读取两个数据同时,程序将WAIT_FOR_RECEIVED_BYTE呆大约一个小时,我不太了解超时。你能给我一个例子吗?
嗨DDDDragon,
你能解释一下你的意思与“两个从设备”和阅读两个数据在同一时间吗?关于WAIT_FOR_RECEIVE_BYTE(),宏观检查I2C_RXFLR_REG寄存器计数接收的数据,如果你停留在那里它意味着对方还没有给你任何东西。设备进入等待状态,并等待对方发送的数据,所以柜台将增加和580可以去I2C FIFO和获得实际的数据。你尝试使用一个分析器为了检查如果你收到数据?如果你收到数据,I2C_RXFLR_REG的价值应该是零。你能检查吗?暂停的一个简单的例子是有一个for循环而不是while循环,因此你的代码将继续在一定量的I2C_RXFLR_REG检查。
谢谢,PM_Dialog