你好:
lsm6dsl 是i2c接口,是采用的pin_16,pin_17作为SCL,SDL线, Pin_1,Pin_2已经配置成了其他用途。lsm6dsl 此惯性器件(内包含陀螺仪和加速度计)每秒被访问100次。也就是说i2c每秒会读写100次。i2c也被配置成了高速模式。每次只能正常工作十多分钟。这十多分钟lsm6dsl 的数据都正常,然后就会出现I2C_MASTER_ERR_ARB_LOST错误,读不到数据了。整个cc3200的I2c也都卡死了。请问是什么原因?
da qin zheng sheng:
i2c配置为普通100k,或者400k速率试试。
da qin zheng sheng:
i2c配置为普通100k,或者400k速率试试。
Viki Shi:
参考下官方的I2C例程,是标准速度100Kbps 和400Kbps的: processors.wiki.ti.com/…/CC3200_I2C_Application
hongxin zhu1:
回复 Viki Shi:
配置成100k,400k都试过,时间久了都会出现I2C_MASTER_ERR_ARB_LOST错误,但是把读i2c速度降低到每秒50次,就不会错误,程序会一直正常运行,但是我们的程序要求必须每秒读取i2c外设100次,请问还有什么地方可以调,i2c_demo我已经参考过了?
Susan Yang:
回复 hongxin zhu1:
您可以看一下
e2e.ti.com/…/1739404Mainly I see this error while slave device is waiting for SCL clock which will not come. Most common reason for this behaviour is that I stopped debugging during I2C communication and from this reasons slave device not receive stop condition. Solution is simple. Switch pinumx to GPIO and generate pulse at SCL.