查看: 461|回复: 0

[评测分享] 【更适合初学者的开发板ELF 1】+ 4.IIC设备驱动OLED

[复制链接]
  • TA的每日心情
    奋斗
    2024-4-19 21:11
  • 签到天数: 66 天

    连续签到: 1 天

    [LV.6]常住居民II

    发表于 2023-12-17 11:02:26 | 显示全部楼层 |阅读模式
    分享到:
    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 设备:
    1.png
    帧起始:I2C 通信起始标志,通过这个起始位就可以告诉 I2C 从机,“我”要开始 进行 I2C 通信了。在 SCL 为高电平的时候,SDA 出现下降沿就表示为起始位:
    2.png
    帧停止:停止 I2C 通信的标志位,和起始位的功能相反。在 SCL 位高电平的时候,SDA 出现上升沿就表示为停止位:
    3.png
    数据传输:I2C 总线在数据传输的时候要保证在 SCL 高电平期间,SDA 上的数据稳定,因此 SDA 上 的数据变化只能在 SCL 低电平期间发生:
    4.png
    IIC写时序:首先是给一个起始信号,发送IIC设备地址,读写位,从机发送应答信号,重新发送起始信号,发送要写入数据的寄存器地址,从机发送应答信号,发送要写入的数据,从机发送应答信号,停止信号:
    5.png
    2.IIC-tools
    I2CTOOL 是一个专门调试 I2C 接口的开源工具,可以获取挂载的设备及设备地址,具 有在对应的设备上读取和设置寄存器值等功能。

    下载工具并拷贝到虚拟机,解压并添加文件操作权限:
    6.png
    修改makefile,屏蔽CC , AR , STRIP这几行:
    7.png
    输入make编译,并查看生成的可执行文件:
    8.png
    将i2cdetect,i2cdump,i2cget,i2cset,i2ctransfer 拷贝到开发板/usr/bin 目录下:
    9.png
    将 lib 下的库文件拷贝到开发板/usr/lib目录:
    10.png
    接收OLED,检测总线和检测总线上的设置,可以看到有3c的这个设备地址:
    11.png
    3.代码设计
    OLED初始化,打开I2C设备:
    12.png
    IIC写数据给OLED
    13.png
    OLED头文件:
    14.png
    主函数初始化OLED,并写入显示逻辑,先进行清屏幕,显示Hello Elf Board,然后清屏显示图片:
    15.png
    编译代码,并生产可执行文件,拖入开发板,添加可执行权限:
    16.png
    4.效果:

    4.OLED.gif





    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-5-20 15:31 , Processed in 0.114218 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.