1.IIC简介
I2C 是很常见的一种总线协议,I2C 是 NXP 公司设计的,I2C 使用两条线在主控制器和从 机之间进行数据通信。一条是 SCL(串行时钟线),另外一条是 SDA(串行数据线),这两条数据 线需要接上拉电阻,总线空闲的时候 SCL 和 SDA 处于高电平。I2C 总线标准模式下速度可以 达到 100Kb/S,快速模式下可以达到 400Kb/S。I2C 总线工作是按照一定的协议来运行的,接下 来就看一下 I2C 协议。 I2C 是支持多从机的,也就是一个 I2C 控制器下可以挂多个 I2C 从设备,这些不同的 I2C 从设备有不同的器件地址,这样 I2C 主控制器就可以通过 I2C 设备的器件地址访问指定的 I2C 设备了,一个 I2C 总线连接多个 I2C 设备:
帧起始:I2C 通信起始标志,通过这个起始位就可以告诉 I2C 从机,“我”要开始 进行 I2C 通信了。在 SCL 为高电平的时候,SDA 出现下降沿就表示为起始位:
帧停止:停止 I2C 通信的标志位,和起始位的功能相反。在 SCL 位高电平的时候,SDA 出现上升沿就表示为停止位: 数据传输:I2C 总线在数据传输的时候要保证在 SCL 高电平期间,SDA 上的数据稳定,因此 SDA 上 的数据变化只能在 SCL 低电平期间发生: IIC写时序:首先是给一个起始信号,发送IIC设备地址,读写位,从机发送应答信号,重新发送起始信号,发送要写入数据的寄存器地址,从机发送应答信号,发送要写入的数据,从机发送应答信号,停止信号: 2.IIC-tools I2CTOOL 是一个专门调试 I2C 接口的开源工具,可以获取挂载的设备及设备地址,具 有在对应的设备上读取和设置寄存器值等功能。
下载工具并拷贝到虚拟机,解压并添加文件操作权限: 修改makefile,屏蔽CC , AR , STRIP这几行: 输入make编译,并查看生成的可执行文件: 将i2cdetect,i2cdump,i2cget,i2cset,i2ctransfer 拷贝到开发板/usr/bin 目录下: 将 lib 下的库文件拷贝到开发板/usr/lib目录: 接收OLED,检测总线和检测总线上的设置,可以看到有3c的这个设备地址: 3.代码设计 OLED初始化,打开I2C设备: IIC写数据给OLED: OLED头文件: 主函数初始化OLED,并写入显示逻辑,先进行清屏幕,显示Hello Elf Board,然后清屏显示图片: 编译代码,并生产可执行文件,拖入开发板,添加可执行权限: 4.效果:
|