嗨对话,
我的一项任务负责通过I2C将大量数据发送到外部芯片。我经常遇到DA14681发送错误的I2C信号(重新发布启动条件)并在几秒钟内失去BLE连接的问题。我发现,只要增加连接间隔,这种问题的发生率就是降低。此外,在我添加了许多奴隶延迟之后,结果更好。我想在I2C传输期间,每个间隔的BLE TX/RX事件可能发生。请查看所附的PDF文件,以理解我的意思。问题可能吗?如果是,如何防止BLE TX/RX事件和I2C TRNASSISSIRS同时发生?是否有可能知道BLE TX/RX事件提前发生,然后在以下步骤中进行I2C传输?
谢谢你的帮助。
设备:
嗨,尼古兰,
让我检查一下,我会告诉你。
谢谢,pm_dialog
嗨对话,
有我的问题解决方案吗?感谢您的帮助
嗨,尼古兰,
我为延迟表示歉意。因此,如果我正确理解了您的描述,则在I2C交易同时发生BLE事件时,问题就会存在。这个对吗?
该应用程序是否在对等设备中的通知中发送I2C值?当此问题发生时,设备会重新启动还是仅断开连接?您是否运行了调试模式?另外,您是否使用任何睡眠模式?
我认为比I2C优先级更高的事件可能是它在ISR中提供。与I2C(Priority_2)相比,BLE中断具有更高的优先级(Priority_1)。
谢谢,pm_dialog
嗨对话,
是的,我的问题是BLE事件(ACK)和I2C传输(尤其是阅读)。
似乎可以重新启动或I2C返回0x8001故障(我使用I2C适配器,例如AD_I2C_READ();)。我观察到I2C信号传输分为两个(似乎重新发布启动条件,因为DA14681在字节完成后无法给出ACK)
我通过两种模式的调试模式和生产获得了相同的结果。结果应该不同吗?问题发生时,我使用了“ PM_MODE_IDLE”。您提到的是,与I2C(Priority_2)相比,BLE中断具有更高的优先级(Priority_1)。我认为这是这样的,BLE事件(resposne ack)导致不规则的I2C传输,并让DA14681转到未知状态(稍后重新启动),或者仍然一直在等待外部数据。
我打算知道哪个任务或函数负责在每个连接间隔中发送BLE ACK,并让我在下一步中进行I2C Tramission。
嗨,尼古兰,
在调试模式下的行为是什么?代码会卡住吗?例如,您是否获得任何断言或其他任何东西。
谢谢,pm_dialog
嗨对话,
通常,由I2C传输塞。我不使用断言。我将移动应用TX/RX数据用于DA14681,然后处理数据,然后通过I2C使用外部芯片进行TX/RX数据。
我希望我能完全知道何时发生BLE事件(确认),请允许我在两个连接事件之间进行I2C传输。是否可以知道BLE连接事件的中断?如果是,怎么知道?
还有一个问题,如果DA14681启动了更改连接率参数的请求,它将完成多长时间并调整新的连接率参数? one connection interval or longer ?
谢谢你的帮助。
奈杰尔
嗨,尼古兰,
很抱歉,我答复晚了。因此,如果我正确理解,您想在每个连接间隔中触发应用程序,这是您的要求吗?
关于您的第二个问题,您是指连接更新参数过程吗?通常,连接间隔是由中央定义的,因此您可以做的是发布连接更新请求,并且中央将决定是否接受您请求的连接参数。您的意思是,一旦主人接受了更新参数请求,它将需要多少钱?
谢谢,pm_dialog
嗨对话,
是的,我想在连接事件之间进行I2C传输。请教我怎么做?
感谢您的帮助
奈杰尔
嗨,奈杰尔,
是的,但是设备是否在睡眠模式下配置?通常,该系统可以进入广告签名或连接间隔之间的睡眠模式。
谢谢,pm_dialog
嗨对话框
负责发送BLE确认的代码(或函数)在哪里?我想知道执行代码的时间,允许我在发送确认后立即进行I2C传输,以确保在下一个ACK之前完成I2C作业。谢谢
嗨,奈杰尔,
请查看第7.7节中断的一代UM-B-044:DA1468X软件平台参考用户指南。请检查以下子弹:
BLE_EVENT_IRQ:广告 /扫描 /连接事件的结束。用于清理/重新定义状态并推迟TX/RX处理操作。
之后,请参见第8.3.4节中的钩子UM-B-056:DA1468X软件开发人员指南文档。BLE钩机制为用户应用程序提供了一种通知特定BLE事件的确切时间的通知。请参见图41:连接。
谢谢,pm_dialog