在I2C传输过程中丢失BLE连接。

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
12个帖子/ 0新
最后一篇
尼格利
离线
最后一次露面:2个月2天前
加入:2018-03-20 08:24.
在I2C传输过程中丢失BLE连接。

嗨对话框,

我的任务之一负责通过I2C向外部芯片发送/接收大量数据。我经常诱惑DA14681在速度秒内发送错误的I2C信号(重新启动启动条件)并丢失BLE连接。我发现只要我增加连接间隔,就会发生这种问题的速度正在减少。此外,在添加许多从等待时间后,结果更好。我猜每个间隔的BLE TX / RX事件可能会在I2C传输期间发生。请查看附加的PDF文件以了解我的意思。问题是否可能?如果是,如何防止BLE TX / RX事件和I2C Trnasmsion同时发生?是否有可能知道BLE TX / RX事件提前发生,然后在以下步骤中执行I2C传输?

谢谢你的帮助。

设备:
PM_DIALOG.
离线
最后一次露面:1天18小时前
职员
加入:2018-02-08 11:03
嗨nigelyang,

嗨nigelyang,

让我检查一下,我会告诉你。

谢谢,PM_DIALOG.

尼格利
离线
最后一次露面:2个月2天前
加入:2018-03-20 08:24.
嗨对话框,

嗨对话框,

我的问题有没有解决方案?感谢您的帮助

PM_DIALOG.
离线
最后一次露面:1天18小时前
职员
加入:2018-02-08 11:03
嗨nigelyang,

嗨nigelyang,

我为延迟道歉。因此,如果我正确地理解您的描述,就会在使用BLE事件的同时发生I2C交易时,问题存在。这样对吗?

该应用程序是否在对等设备中的通知中发送I2C值?发生此问题时,设备是否重新启动或它只是断开连接?你运行它调试模式了吗?此外,您还在使用任何睡眠模式吗?

我假设优先级比I2C更高的事件可能是它在ISR中提供。提供比I2C(Priority_2)更优先级(Priority_1)的BLE中断。

谢谢,PM_DIALOG.

尼格利
离线
最后一次露面:2个月2天前
加入:2018-03-20 08:24.
嗨对话框,

嗨对话框,

是的,我的问题是BLE事件(ACK)和I2C传输(尤其是读数)同时进行。

它似乎重启或i2c返回0x8001失败(我使用i2c适配器,e.g ad_i2c_read();)。我观察到I2C信号传输分为两个(似乎重新启动的启动条件,因为DA14681无法在字节完成时给出ACK)

我通过两种模式,调试模式和生产得到了相同的结果。结果是否有所不同?当问题发生时,我使用了“PM_Mode_Idle”。您提到的是,BLE中断具有比I2C(Priority_2)更高的优先级(Priority_1)。我认为这样,BLE事件(RESPOSNE ACK)导致不规则的I2C传输,让DA14681转到未知状态(稍后重新启动)或仍然等待外部数据。

我打算知道哪些任务或职能负责在每个连接间隔中发送BLE ACK,并允许我在以下步骤中执行I2C电视。

PM_DIALOG.
离线
最后一次露面:1天18小时前
职员
加入:2018-02-08 11:03
嗨nigelyang,

嗨nigelyang,

调试模式中的行为是什么?代码是否陷入困境?例如,您是否有任何断言或其他任何东西..只有当DA1468X与对等设备连接时,才会发生这种情况?

谢谢,PM_DIALOG.

尼格利
离线
最后一次露面:2个月2天前
加入:2018-03-20 08:24.
嗨对话框,

嗨对话框,

一般来说,由I2C传输达到。我不使用断言。我将移动应用程序TX / RX数据与DA14681一起使用,然后通过I2C处理数据,然后使用外部芯片进行TX / RX数据。

我希望我能完全了解BLE事件(确认)何时发生,允许我在两个连接事件之间进行I2C传输。是否有可能知道BLE连接事件的中断?如果是,如何知道?

一个问题,如果da14681启动了更改连接速率参数的请求,它将完成并调整新的连接速率参数? one connection interval or longer ?

谢谢你的帮助。

奈杰尔

PM_DIALOG.
离线
最后一次露面:1天18小时前
职员
加入:2018-02-08 11:03
嗨nigelyang,

嗨nigelyang,

很抱歉,我答复晚了。所以,如果我正确地理解,你想在每个连接间隔中触发应用程序,这是您的要求吗?

关于您的第二个问题,您是否意味着连接更新参数程序?通常,连接间隔由中央定义,因此您可以做的是发出连接更新请求,并且中央将决定它是否会接受所请求的连接参数。一旦主人接受了更新参数请求,您是否意味着它会花费多少?

谢谢,PM_DIALOG.

尼格利
离线
最后一次露面:2个月2天前
加入:2018-03-20 08:24.
嗨对话框,

嗨对话框,

是的,我想在连接事件之间执行i2c转换。请教我该怎么办?

感谢您的帮助

奈杰尔

PM_DIALOG.
离线
最后一次露面:1天18小时前
职员
加入:2018-02-08 11:03
嗨尼格尔,

嗨尼格尔,

是的,但是在睡眠模式下配置的设备?通常,系统可以进入睡眠模式BTWEEEN广告或连接间隔。

谢谢,PM_DIALOG.

尼格利
离线
最后一次露面:2个月2天前
加入:2018-03-20 08:24.
嗨对话框

嗨对话框

负责发送BLE确认的代码(或函数)在哪里?我想知道时间执行代码,允许我在发送确认之后立即执行i2c传输,以确保在下一个ACK之前完成完成I2C作业。谢谢

PM_DIALOG.
离线
最后一次露面:1天18小时前
职员
加入:2018-02-08 11:03
嗨尼格尔,

嗨尼格尔,

请看看7.7节BLE中断生成UM-B-044:DA1468X软件平台参考用户指南。请检查以下子弹:

ble_event_irq:广告/扫描/连接事件的结尾。用于清理/重新初始化状态和推迟TX / RX处理操作。

在此之后,请参见第8.3.4节挂钩UM-B-056:DA1468X软件开发人员指南文档。BLE挂钩机制提供了用户应用程序,该方法是关于特定BLE事件的确切发生时间的通知方式。请参见图41:连接。

谢谢,PM_DIALOG.