我有一个程序,从BLE中获取大量字节,然后通过I2C发送到另一个与对话芯片相连的设备
我的程序基于ble\u peripheral\u app示例程序
问题是,当I2C写入发生时(由于我正在写入大量字节,因此需要一些时间才能完成),如果新数据通过BLE进入,BLE就会断开连接
我假设,如果新的BLE数据在写入I2C端口时进入,程序会尝试跳转到user\u catch\u rest\u hndl()函数,I2C会阻止这种情况发生,这会导致BLE断开连接
在所有I2C通信完成之前,是否可以阻止芯片接收任何新的BLE数据?我想做的是在开始I2C通信之前“停止BLE数据接收”,这样芯片就会忽略任何新的BLE数据,然后在所有I2C操作完成后再次“启动BLE数据接收”。
如何做到这一点?
关键词:
设备:
你好mahaju,
据我所知,显然由于I2C活动,您丢失了不可恢复的连接事件,但我不太明白输入数据的情况,您的意思是当中央设备发送数据时您断开了连接?关于停止从中央接收数据,没有本机方法可以这样做,只有当您有一个特性作为流控制信号,可以由外围设备通知,并且中央应该在发送数据之前检查这一点。
还要注意,连接是用连接事件来维护的,您应该安排这些事件只是为了维护连接,而不仅仅是为了获取数据,因此您必须确保设备能够安排连接事件的时间,而不是执行I2C事务。为了实现这一点,您必须确保I2C事务不会花费那么长的时间,并让调度程序运行以调度连接事件,所以你的I2C事务应该分成几个小部分,可以连接到app\u on \u system \u powered回调或app\u on \u ble \u powered并返回KEEP \u powered,只要有更多的事务要执行,这样设备就可以逐件执行整个事务,而不会延迟调度连接事件的调度器。
谢谢你的对话