IIC发送数据的时候,被蓝牙活动打断了,如何协调

8 posts / 0 new
Last post
kingwheat
Offline
Last seen:1 year 1 week ago
加入:2016-12-08 09:21
IIC发送数据的时候,被蓝牙活动打断了,如何协调

hi, Qinjiny_Dialog

IIC对OLED的write的发送方式为ad_i2c_async_transact;写多帧数据的时候,会有数据丢失,IIC总线没发送完成就stop了。导致我的OLED花屏。
经过测试,发现关掉蓝牙广播之后,就不会有花屏的现象出现。可能蓝牙的活动影响到了IIC通讯。
请教一下,如何协调IIC发送和蓝牙的相关活动?

Device:
Qinjiny_Dialog
Offline
Last seen:1 month 4 days ago
Staff
加入:2016-11-01 05:47
可以尝试用OS_ENTER_CRITICAL

可以尝试用OS_ENTER_CRITICAL_SECTION()进入系统临界区保证发送不被其它活动中断,完成传输后OS_LEAVE_CRITICAL_SECTION回到正常状态。

注意不要过于长时间或者过于频繁的使用这个功能,进入临界区会阻止其他所有中断,时间长了会影响整个系统的正常schedule。

kingwheat
Offline
Last seen:1 year 1 week ago
加入:2016-12-08 09:21
hi,Qinjiny_Dialog

hi,Qinjiny_Dialog
多谢你的回答,我用逻辑分析仪看了,发完一个全屏的数据,大概需要40ms(iic_speed = 400khz).40ms的屏蔽中断时间是否可能会有其他的蓝牙的问题?
还有,我是打算使用DMA来做的,但是配置完I2C_SLAVE_DEVICE_DMA(I2C2, SSD1306, 0x3c, HW_I2C_ADDRESSING_7B, HW_I2C_SPEED_FAST, 2)后,
使用hw_i2c_write_buffer_dma_ex() 发送数据,但是打印出来的device->dma_channel = -1;
也就是说,IIC的使用没有使用DMA通道。请问,我还需要做什么配置来激活dma通道吗?

Jelphi
Offline
Last seen:6 months 18 hours ago
Staff
加入:2015-09-10 12:07
Hi sir,

Hi sir,

你也可以尝试提高I2c的Clock 频率,最好是使用spi接口的屏,数据传得快

kingwheat
Offline
Last seen:1 year 1 week ago
加入:2016-12-08 09:21
hi, Jelphi

hi, Jelphi
IIC已经是400khz了。硬件他们已经做好了,暂时没法修改了。只能以后的项目在修改了。多谢你的回答!
祝好!

Jelphi
Offline
Last seen:6 months 18 hours ago
Staff
加入:2015-09-10 12:07
Hi sir,

Hi sir,

这不是一个好的选择:用I2c去刷屏,这决定了你始终会拉慢系统的性能,另外,你在用i2c 一定要使用dma

kingwheat
Offline
Last seen:1 year 1 week ago
加入:2016-12-08 09:21
Hi,Jelphi

Hi,Jelphi
嗯嗯,多谢你的建议。dma在用的时候,也是没有文档可以看怎么来配置。可以简要说下IIC使用dma的配置流程不,我配置玩后,发现还是没有启动dma通道。

------------------------------------------------------------------------------------------------------------------------
结婚,2017-03-08 07:48
kingwheat
hi,Qinjiny_Dialog
多谢你的回答,我用逻辑分析仪看了,发完一个全屏的数据,大概需要40ms(iic_speed = 400khz).40ms的屏蔽中断时间是否可能会有其他的蓝牙的问题?
还有,我是打算使用DMA来做的,但是配置完I2C_SLAVE_DEVICE_DMA(I2C2, SSD1306, 0x3c, HW_I2C_ADDRESSING_7B, HW_I2C_SPEED_FAST, 2)后,
使用hw_i2c_write_buffer_dma_ex() 发送数据,但是打印出来的device->dma_channel = -1;
也就是说,IIC的使用没有使用DMA通道。请问,我还需要做什么配置来激活dma通道吗?
-------------------------------------------------------------------------------------------------------------------------

Jelphi
Offline
Last seen:6 months 18 hours ago
Staff
加入:2015-09-10 12:07
dma 在sdk中已有配置

dma 在sdk中已有配置,你是否其他地方申请了相同的dma channel,代码可以debug