前面的随笔完成了I2C时序分析(不涉及仲裁)
现在可以学使用控制器的I2C了。
1.先回顾I2C的基础知识
(1)总线包括SCL + SDA。
(2)通信的特点:
同步,串行,电平
所以决定了 I2C 低速,抗干扰不强,无法长距离传输。
(3)从设备 + 主设备
I2C总线上可以来连接多个从设备,形成一对多,
为了识别从设备,主设备通过从设备地址来识别。
(4)传输数据格式
2. 接下来看SoC上I2C控制器的逻辑结构
3.I2C的操作与具体的外设有关,下面以g-sensor为例
先理清思路:
(1)设置GPIO和电源(看原理图)
(2)获得从设备的地址,和最大工作频率(外设芯片手册)
(3)查看外设的I2C通信流程图(外设芯片手册)
首先需要看g-sensor的原理图,解决其电源和GPIO工作模式
可以看出,g-sensor要工作,需要将 PWMTOUT3设置位输出高电平,I2C相关的GPIO需要设置为 I2C 模式
现在需要从设备地址和最大工作电频
这样就晓得了从设备地址 0x0001111
最大通信频率 400KHZ
然后从 SoC 的数据手册可以晓得 0 写 1 读。
这样,就能让 CPU 和 g-sensor 通信了。
但是如何通信,需要查看 g-sensor 的通信流程
上面这张图指示了SoC的通信的流程图中,Data应该发什么
思路有了,现在看代码