学习HAL库STM32F103C8T6(IIC、OLED驱动显示字符、字符串、图片)
I2C总线相比串口通信具有线路少、支持多机通信、同步传输等优势。I2C采用主从架构,通过起始/停止信号控制通信,利用应答机制确保可靠传输,广泛应用于传感器、存储器等设备。0.96寸OLED屏幕采用SSD1306驱动芯片,具有高对比度、自发光等优点,通过I2C接口实现显示控制。实验通过编写驱动代码,实现了OLED对字符、字符串、汉字及图片的显示功能,关键点包括取模工具使用和GDDRAM存储管理。
IIC
1. 串口通信缺点
1. 串口通信通常需要至少三条线(TX、RX和GND),而 I2C 总线仅需要两条信号线(SDA和SCL);
2. 串口通信仅支持一对一通信,而 I2C 总线支持多机通信,允许单个主机与多个从机设备进行通信;
3. 串口通信通常无应答机制,而 I2C 必须有应答机制;
4. 串口通讯一般是异步通信,而 I2C 使用同步传输方式,数据在时钟信号(SCL)的控制下传输。
2. IIC总线介绍
I2C总线,全称Inter-Integrated Circuit(互连集成电路),是一种由Philips(现NXP半导体)公司在1980年 代初开发的同步 串行 半双工通信总线。

工作原理:
主从关系:
主器件用于启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址的器件均被 认为是从器件。在总线上主和从、发和收的关系不是恒定的,而取决于此时数据传送方向。
数据传送:
如果主机要发送数据给从器件,则主机首先寻址从器件,然后主动发送数据至从器件,最后由主 机终止数据传送。
如果主机要接收从器件的数据,首先由主器件寻址从器件,然后主机接收从器件发送的数据,最 后由主机终止接收过程。
时钟同步:
SCL用于数据的时钟同步,确保主从设备之间的数据传输同步进行。
主要特点
硬件简单:
I2C总线只需要一根数据线和一根时钟线两根线,总线接口已经集成在芯片内部,不需要特 殊的接口电路。
多主机总线:
I2C总线是一个真正的多主机总线,如果两个或多个主机同时初始化数据传输,可以通过 冲突检测和仲裁防止数据破坏。
在线检测:
I2C总线可以通过外部连线进行在线检测,便于系统故障诊断和调试。
数据传输与地址设定:
数据传输和地址设定由软件设定,非常灵活。总线上的器件增加和删除不影响其 他器件正常工作。
负载能力:
由于线路中电容会影响总线传输速度,I2C总线的负载能力为400pF,因此可以估算出总线 允许长度和所接器件数量。
应用领域
I2C总线广泛应用于各种设备和应用领域,例如传感器、存储器(如EEPROM)、显示屏、温度传感器、实时 时钟(RTC)、扩展IO芯片等。
3. IIC总线时序
3.1 起始信号
起始信号由主设备发起,用于通知总线上的所有设备即将开始数据传输。
当SCL为高电平时,SDA由高电平变为低电平,产生一个下降沿,表示起始信号的开始。

3.2 停止信号
停止信号也由主设备发起,用于通知总线上的所有设备数据传输已经结束。
当SCL为高电平时,SDA由低电平变为高电平,产生一个上升沿,表示停止信号的开始。

3.3 应答信号
每当一个字节的数据传输完成后,接收方会向发送方发送一个应答信号(ACK)或非应答信号 (NACK)。
应答信号在SCL的第9个时钟周期(当SCL为高电平时)发送。
如果SDA线为低电平,则表示ACK(有效应答),表示接收方已成功接收该字节。
如果SDA线为高电平,则表示NACK(非应答),通常表示接收方接收该字节没有成功。

3.4 读写时序
发送一个字节:SCL低电平期间,主机将数据位依次放到SDA线上(高位先行),然后释放SCL,从机将在 SCL高电平期间读取数据位,所以SCL高电平期间SDA不允许有数据变化,依次循环上述过程8次,即可发送 一个字节
接收一个字节:SCL低电平期间,从机将数据位依次放到SDA线上(高位先行),然后释放SCL,主机将在 SCL高电平期间读取数据位,所以SCL高电平期间SDA不允许有数据变化,依次循环上述过程8次,即可接收 一个字节(主机在接收之前,需要释放SDA)

3.5 一次完整的I2C时序

模块:OLED显示屏

1. 0.96寸OLED屏幕介绍
0.96 寸 4P OLED 屏幕模块是一种显示屏模块,它包括一个 0.96 英寸的 OLED 显示屏和四个引脚。这种 OLED 屏幕模块通常用于嵌入式系统和小型电子设备中,可以显示文本、图像和其他类型的信息。由于其小 尺寸和低功耗,也常用于智能手表、健康追踪器和其他便携式设备中。
0.96OLED 参数:
驱动芯片:SSD1306
分辨率:128 × 64
显示尺寸:0.96英寸
外形尺寸:27.5 × 27.8(mm)
玻璃尺寸:26.7 × 19.26 × 1.4(mm)
显示区域:21.74(W)× 10.864(mm)
视角:全视角
工作电压:3.3V ~ 5V
工作温度:-20℃ ~ 70℃
存储温度:-30℃ ~ 80℃
使用寿命:>=16000 小时
支持接口:I2C
0.96OLED 屏幕模块的优点有:
1. 高对比度和高亮度:OLED 屏幕模块可以提供深黑色背景和明亮的字色,因此可以实现高对比度和高亮 度的显示效果;
2. 自发光:OLED 屏幕模块不需要背光灯,因此可以实现更薄、更轻的设计;
3. 响应速度快:OLED 屏幕模块的响应速度非常快,可以实现流畅的动画和视频效果;
4. 视角宽:OLED 屏幕模块的视角非常宽,即使从不同角度观察,图像和文字也能保持清晰。
0.96OLED 屏幕模块的缺点有:
1. 显示寿命短:与 LCD 显示屏相比,OLED 的显示寿命相对较短,因为它的有机材料会随着时间的推移 而逐渐失效;
2. 显示面积小:0.96 寸 OLED 屏幕模块的显示面积相对较小,因此不适合用于需要大屏幕的应用。
2. 如何驱动OLED屏幕显示内容?

3. OLED通讯协议

4. SSD1306(OLED显示屏驱动芯片)


5. GDDRAM(OLED存储显示数据的专用内存)

页地址模式:

水平地址模式:

垂直地址模式:

6. OLED命令


7.取模工具

OLED实验
实验目的:驱动 OLED 屏幕,显示字符、字符串、汉字、图片等内容。

编写代码
OLED头文件编写

取模的头文件编写(相当于字符库)

OLED相关函数编写






主函数轮番调用显示字符、字符串、图片函数OLED显示为



更多推荐



所有评论(0)