全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > LED照明 >

第七章OLED显示“Hello”

时间:2023-06-20 10:37

人气:

作者:admin

标签: IIC  OLED 

导读:第一节IIC基础IIC最重要的就是时序,主要如下:1.起始条件(StartCondition):-I2C通信开始时,主设备将SDA从高电平切换到低电平时,SCL处于高电平状态。-起始条件至少需要持续一个SCL周...

第一节IIC基础

IIC最重要的就是时序,主要如下:

1. 起始条件(Start Condition):

-I2C通信开始时,主设备将SDA从高电平切换到低电平时,SCL处于高电平状态。

-起始条件至少需要持续一个SCL周期。

2. 地址传输(Address Transmission):

-主设备发送设备地址和读写位(R/W)位来选择特定的从设备。

-地址传输是以一个起始位开始的,表示数据的开始。

-7位地址模式:主设备发送7位设备地址,最后一位是R/W位,指示读取(R=1)或写入(W=0)操作。

-10位地址模式:主设备先发送第一个字节的高6位,然后发送一个仅包含从设备地址的位(R/W位)的起始位,最后发送第一个字节的低位。

3. 应答位(ACK/NACK):

-在每个字节的传输之后,接收设备需要提供一个应答位(ACK或NACK)。

-主设备接收到每个字节的最后一个位后,会释放SDA线,接收设备通过将SDA线拉低来提供应答位。

-如果接收设备成功接收到数据,则提供ACK(拉低SDA线),否则提供NACK(保持SDA线为高电平)。

4. 数据传输(Data Transmission):

-主设备发送数据字节给从设备,每个字节由8个数据位和一个应答位组成。

-数据传输是以起始位开始的,并在每个SCL周期传输一个位。

-每个数据位都在SCL的上升沿或下降沿传输。

-数据传输的最后一个位由接收设备提供应答位。

5. 停止条件(Stop Condition):

-主设备将SDA从低电平切换到高电平时,SCL处于高电平状态。

-停止条件至少需要持续一个SCL周期。

-停止条件表示I2C通信的结束。

6. 时钟速率(Clock Speed):

-I2C总线的时钟速率由主设备控制。

-标准模式下,时钟频率为100 kHz;快速模式下,时钟频率为400 kHz。

-高速模式和超高速模式下,时钟频率更高。

第二节 硬件解读

88ff9cfa-0f0e-11ee-a579-dac502259ad0.png

上图就是物联网开发板上面的OLED模块的原理图,哪里来的?为什么是这样的?请大家打开改OLED的数据手册就知道了,如下图:

89087032-0f0e-11ee-a579-dac502259ad0.png

这个就是数据手册提供的原理图,是不是和蓝桥杯物联网开发板上面的原理图一模一样?当芯片厂家提供了参考电路设计图,我们工程师只需要把它COPY就可以啦。

需要注意的是OLED模块的供电引脚是A_3V3,如下:

8912c640-0f0e-11ee-a579-dac502259ad0.png

而A_3V3引脚又是同过STM32L071KBU6来控制的,如下图:

89191d74-0f0e-11ee-a579-dac502259ad0.png

通过上图看出来,当PB5为低电平时,三极管SI2301导通,A_3V3得电,OLED工作;反之,三极管SI2301不导通,A_3V3失电,OLED熄灭。

说完OLED的电源引脚,来看看OLED的IIC引脚,如下:

891fa4d2-0f0e-11ee-a579-dac502259ad0.png

看得出来STM32与OLED引脚的关系:

STM32引脚

OLED引脚

PA8

I2C3_CS

PB4

I2C3_SDA

第三节 CubeMX配置

第一步:配置PB5为输出模式,并初始化为低电平,使得OLED可以正常工作,不要忘记和6处一样使用用户标签哦。

8926e92c-0f0e-11ee-a579-dac502259ad0.png

第二步:配置OLED的I2C3,如下图:配置完后PA8和PB4会自动变成绿色。

892d2512-0f0e-11ee-a579-dac502259ad0.png

第四节 MDK代码

第一步:找到比赛提供的代码驱动,将oled.h和font.h粘贴到“项目名/Core/Inc”文件夹中,如下图:

8939673c-0f0e-11ee-a579-dac502259ad0.png

第二步:找到比赛提供的代码驱动,将oled.c粘贴到“项目名/Core/Src”文件夹中,如下图:

894387bc-0f0e-11ee-a579-dac502259ad0.png

第三步:按照如下图将oled.c文件添加到项目中,如下图:注意oled.c文件的目录,在“项目名/Core/Src”中,不要选到其他位置,否则编译过程中会报错。

894b7c9c-0f0e-11ee-a579-dac502259ad0.png

第四步:添加之后会看见oled.c,如下图:然后改点“Colse”点“Colse”,改点“OK”点“OK”。

89529630-0f0e-11ee-a579-dac502259ad0.png

第五步:可以看见项目栏的多了一个oled.c文件,如下图:

895b9a32-0f0e-11ee-a579-dac502259ad0.png

第六步:编译代码,发现有一个错误,如下图:原来是OLED_Write函数有问题。这个函数就是需要我们手写的OLED的驱动。

896454e2-0f0e-11ee-a579-dac502259ad0.png

第七步:编写OLED_Write函数,如下图:

896c3ab8-0f0e-11ee-a579-dac502259ad0.png

第八步:添加头文件,如下图:

8972c1ee-0f0e-11ee-a579-dac502259ad0.png

第九步:编写OLED相关代码。如下图:

897903ec-0f0e-11ee-a579-dac502259ad0.png


第五节 实验现象

注意:

1,下载程序的时候,请选择A开发板。

现象:OLED第一行显示”Hello”。

来源:撞上电子微信公众号

版权:东莞市东城墨竹公子电子工作室

日期:2023.06.07

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信