有没有人有在多个线程中使用多个 I2C 设备的示例?我的有点问题,这是其中之一,如果我单步运行,一切正常,如果我全速运行,一切都搞砸了——显然是比赛条件。i2C 流量实际上已经损坏(在我的逻辑分析仪上查看),这让我有点吃惊。我有点假设 I2C 操作将是原子的,但看起来情况并非如此。
我的应用程序使用温度传感器和电机控制器,它们都是 I2C 设备。温度探头正在计时器中进行采样,我认为它正在工作线程上运行。
我看到 I2C 流量的数据损坏,我认为可能发生的情况是两个线程都试图同时写入不同的从地址。
该文档对线程问题有点沉默,所以我不确定我应该在什么级别防止竞争条件。从我看到的问题来看,I2C 控制器一次只能执行一项操作,所以我必须在控制器级别进行保护。
我对如何解决这个问题有一些想法,但文档对线程要求有点沉默,所以我想在我走下一些死胡同之前,我想问问是否有人已经成功完成了它:)