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

⚠️
大家好. .谢谢你来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,包含在主对话网站中。所有岗位和账户都已迁移。我们现在只接受新论坛的流量-请在上面发布任何新帖子//www.wsdof.com/support.我们将在未来几天修复bug /优化搜索和标记。
12个职位/ 0个新职位
最后发表
nigelyang
离线
最后看到:2周5天前
加入: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
离线
最后看到:11小时53分钟前
工作人员
加入:2018-02-08 11:03
嗨nigelyang,

嗨nigelyang,

让我查一下,然后告诉你。

谢谢,PM_Dialog

nigelyang
离线
最后看到:2周5天前
加入:2018-03-20 08:24
嗨,对话框中,

嗨,对话框中,

对我的问题有什么解决办法吗?谢谢你的帮助

PM_Dialog
离线
最后看到:11小时53分钟前
工作人员
加入:2018-02-08 11:03
嗨nigelyang,

嗨nigelyang,

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

应用程序是否通过对端设备的通知发送I2C值?当这个问题发生时,设备是重新启动还是仅仅断开连接?你是在调试模式下运行的吗?另外,你有使用任何一种睡眠模式吗?

我假设一个比I2C具有更高优先级的事件可能是在ISR中服务的。BLE中断优先级(PRIORITY_1)高于I2C中断优先级(PRIORITY_2)。

谢谢,PM_Dialog

nigelyang
离线
最后看到:2周5天前
加入:2018-03-20 08:24
嗨,对话框中,

嗨,对话框中,

是的,我的问题是BLE事件(ack)和I2C传输(特别是读取)同时发生。

它似乎重新启动或I2C返回0x8001失败(我使用I2C适配器,例如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
离线
最后看到:11小时53分钟前
工作人员
加入:2018-02-08 11:03
嗨nigelyang,

嗨nigelyang,

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

谢谢,PM_Dialog

nigelyang
离线
最后看到:2周5天前
加入:2018-03-20 08:24
嗨,对话框中,

嗨,对话框中,

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

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

还有一个问题,如果DA14681发起更改连接速率参数的请求,需要多长时间才能完成并适应新的连接速率参数?一个连接间隔还是更长?

谢谢你的帮助。

奈杰尔

PM_Dialog
离线
最后看到:11小时53分钟前
工作人员
加入:2018-02-08 11:03
嗨nigelyang,

嗨nigelyang,

抱歉回复晚了。所以,如果我理解正确的话,您希望在每个连接间隔内触发应用程序,这是您的需求吗?

关于第二个问题,你是指连接更新参数的过程吗?通常,连接间隔由中心定义,因此您可以做的是发出连接更新请求,中心将决定是否接受您请求的连接参数。你的意思是当主服务器接受更新参数请求时需要多少?

谢谢,PM_Dialog

nigelyang
离线
最后看到:2周5天前
加入:2018-03-20 08:24
嗨,对话框中,

嗨,对话框中,

是的,我想在连接事件之间进行I2C传输。请教我怎么做?

谢谢你的帮助

奈杰尔

PM_Dialog
离线
最后看到:11小时53分钟前
工作人员
加入:2018-02-08 11:03
你好,奈杰尔,

你好,奈杰尔,

是的,但是设备是否配置为休眠模式?一般来说,系统可以在通告或连接间隔之间进入睡眠模式。

谢谢,PM_Dialog

nigelyang
离线
最后看到:2周5天前
加入:2018-03-20 08:24
嗨对话框

嗨对话框

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

PM_Dialog
离线
最后看到:11小时53分钟前
工作人员
加入:2018-02-08 11:03
你好,奈杰尔,

你好,奈杰尔,

请查看在UM-B-044: DA1468x软件平台参考用户指南。请检查以下项目:

ble_event_irq:结束发布/扫描/连接事件。用于清除/重新初始化状态和延迟TX/RX处理操作。

在这之后,请参见8.3.4钩子UM-B-056: DA1468x软件开发人员指南文档。BLE Hooks机制为用户应用程序提供了一种方法来通知特定BLE事件发生的确切时间。请参见图41:Connected。

谢谢,PM_Dialog