嗨对话框,
我的任务之一负责通过I2C向外部芯片发送/接收大量数据。我经常诱惑DA14681在速度秒内发送错误的I2C信号(重新启动启动条件)并丢失BLE连接。我发现只要我增加连接间隔,就会发生这种问题的速度正在减少。此外,在添加许多从等待时间后,结果更好。我猜每个间隔的BLE TX / RX事件可能会在I2C传输期间发生。请查看附加的PDF文件以了解我的意思。问题是否可能?如果是,如何防止BLE TX / RX事件和I2C Trnasmsion同时发生?是否有可能知道BLE TX / RX事件提前发生,然后在以下步骤中执行I2C传输?
谢谢你的帮助。
设备:
嗨nigelyang,
让我检查一下,我会告诉你。
谢谢,PM_DIALOG.
嗨对话框,
我的问题有没有解决方案?感谢您的帮助
嗨nigelyang,
我为延迟道歉。因此,如果我正确地理解您的描述,就会在使用BLE事件的同时发生I2C交易时,问题存在。这样对吗?
该应用程序是否在对等设备中的通知中发送I2C值?发生此问题时,设备是否重新启动或它只是断开连接?你运行它调试模式了吗?此外,您还在使用任何睡眠模式吗?
我假设优先级比I2C更高的事件可能是它在ISR中提供。提供比I2C(Priority_2)更优先级(Priority_1)的BLE中断。
谢谢,PM_DIALOG.
嗨对话框,
是的,我的问题是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电视。
嗨nigelyang,
调试模式中的行为是什么?代码是否陷入困境?例如,您是否有任何断言或其他任何东西..只有当DA1468X与对等设备连接时,才会发生这种情况?
谢谢,PM_DIALOG.
嗨对话框,
一般来说,由I2C传输达到。我不使用断言。我将移动应用程序TX / RX数据与DA14681一起使用,然后通过I2C处理数据,然后使用外部芯片进行TX / RX数据。
我希望我能完全了解BLE事件(确认)何时发生,允许我在两个连接事件之间进行I2C传输。是否有可能知道BLE连接事件的中断?如果是,如何知道?
一个问题,如果da14681启动了更改连接速率参数的请求,它将完成并调整新的连接速率参数? one connection interval or longer ?
谢谢你的帮助。
奈杰尔
嗨nigelyang,
很抱歉,我答复晚了。所以,如果我正确地理解,你想在每个连接间隔中触发应用程序,这是您的要求吗?
关于您的第二个问题,您是否意味着连接更新参数程序?通常,连接间隔由中央定义,因此您可以做的是发出连接更新请求,并且中央将决定它是否会接受所请求的连接参数。一旦主人接受了更新参数请求,您是否意味着它会花费多少?
谢谢,PM_DIALOG.
嗨对话框,
是的,我想在连接事件之间执行i2c转换。请教我该怎么办?
感谢您的帮助
奈杰尔
嗨尼格尔,
是的,但是在睡眠模式下配置的设备?通常,系统可以进入睡眠模式BTWEEEN广告或连接间隔。
谢谢,PM_DIALOG.
嗨对话框
负责发送BLE确认的代码(或函数)在哪里?我想知道时间执行代码,允许我在发送确认之后立即执行i2c传输,以确保在下一个ACK之前完成完成I2C作业。谢谢
嗨尼格尔,
请看看7.7节BLE中断生成UM-B-044:DA1468X软件平台参考用户指南。请检查以下子弹:
ble_event_irq:广告/扫描/连接事件的结尾。用于清理/重新初始化状态和推迟TX / RX处理操作。
在此之后,请参见第8.3.4节挂钩UM-B-056:DA1468X软件开发人员指南文档。BLE挂钩机制提供了用户应用程序,该方法是关于特定BLE事件的确切发生时间的通知方式。请参见图41:连接。
谢谢,PM_DIALOG.