I2C总线技术是现代电子通信领域的一项重要发明,它由荷兰飞利浦半导体公司(现恩智浦半导体公司)在1980年代初期开发。作为一种双向二线制串行总线,I2C总线广泛应用于各种电子设备中,为不同集成电路(IC)间的通信提供了高效、低成本的解决方案。为了深入理解I2C总线的技术细节和实际应用,一份详尽的《I2C-bus specification and user manual》提供了不可或缺的帮助。 《I2C-bus specification and user manual》(第6版,2014年4月4日修订)全面介绍了I2C总线的技术规格与使用方法。I2C总线的核心设计十分简洁,只需要两条信号线:串行数据线(SDA)和串行时钟线(SCL)。尽管结构简单,I2C总线却能够以100 kbit/s的标准模式、400 kbit/s的快速模式、1 Mbit/s的快速模式Plus以及高达3.4 Mbit/s的高速模式进行数据传输。这样的数据传输速率满足了多数低速外设通信的需求。 I2C总线的一大特色是其多主总线的性质,这使得总线上可以有多个主设备。在多主设备的环境下,I2C总线系统会自动检测冲突并进行总线仲裁,有效防止数据丢失。I2C总线还拥有自己的握手机制和时序规范,确保设备间可靠通信。此外,I2C总线支持高达3.4 Mbit/s的高速模式,使其在需要高速数据传输的应用场景中同样表现出色。 对于电气特性,I2C总线能够支持低电压电源供应,非常适合于电池供电的便携式设备。小型封装设计则使得它在空间受限的应用中具有优势。同时,低功耗的特性让I2C总线成为那些对能耗敏感设备的首选。高度的互通性和兼容性是I2C总线得以广泛普及的另一个重要因素,这意味着不同厂商生产的I2C设备能够在同一总线上进行无缝集成。 《I2C-bus specification and user manual》不仅介绍了I2C总线的工作原理和操作模式,还详尽地描述了数据传输、握手和总线仲裁的机制。该手册还包括了每种操作模式下详细的时序和电气规范,为设备和系统设计人员提供了关于如何在设计中实现I2C总线的实用信息。这使得手册不仅是学习I2C总线技术的重要参考资料,同时也是进行I2C总线设计和应用时的实用指南。 I2C总线的应用范围广泛,涉及多种控制架构和应用领域。在嵌入式系统、数字控制系统、数据采集系统、实时系统、智能家居系统、汽车电子系统以及医疗设备中,I2C总线都扮演着重要角色。它被用于各种传感器和执行器的数据通信,也用于微控制器和外围设备之间的连接。由于其低功耗和简便的布线需求,I2C总线特别适合于那些资源有限的嵌入式应用。 随着技术的演进,I2C总线的性能不断增强,新的功能不断被加入。随着设备功能的日益复杂化,I2C总线不仅能够提供稳定的通信,还能在不断扩展的电子生态系统中保持互操作性。这份手册所涵盖的技术信息和实践指导,对于工程师在选择和设计I2C通信接口时具有非常高的实用价值,确保了I2C总线能够在多样的应用中保持其作为一种可靠和高效通信总线的地位。 《I2C-bus specification and user manual》是系统设计人员和工程师不可或缺的宝贵资料。通过这份手册,设计人员能够透彻地了解I2C总线的内在工作原理,掌握其配置和调试的方法,并在实践中充分利用其广泛的应用潜力,无论是在常见的嵌入式系统还是在高度集成的智能设备设计中。
2025-08-10 23:33:05 4.01MB i2c
1
I2C协议规范 7.0:I2C总线的详解与应用》 I2C(Inter-Integrated Circuit)协议,自1982年由飞利浦半导体(现NXP半导体)开发以来,已经成为电子设备间通信的常用标准。这种双线双向的通信协议在减少硬件成本和复杂性的同时,提供了高效的数据传输能力。最新的规范修订版为7.0,发布于2021年10月1日,对原有的术语进行了更新,以适应MIPI I3C规范和NXP的包容性语言项目。 I2C协议的核心在于其两根总线——串行数据线(SDA)和串行时钟线(SCL)。通过这两根线,数据以8位串行、双向的方式进行传输。协议支持多种传输速率,包括: 1. **标准模式(Standard-mode)**:最高可达100 kbps,适合对速度要求不高的应用场景。 2. **快速模式(Fast-mode)**:最大速率提升至400 kbps,适用于需要适度提高通信速度的情况。 3. **快速模式Plus(Fast-mode Plus, Fm+)**:进一步提升至1 Mbps,同时保持向标准模式和快速模式的向下兼容性。 4. **高速模式(High Speed, Hs)**:达到3.4 Mbps,适用于需要高速通信的场合。 5. **超快速模式(UltraFast-mode, UFm)**:为单向传输模式,可实现高达5 Mbps的数据传输速度,主要用于高数据量、低延迟的场景。 随着技术的发展,I2C协议也在不断进化以满足更高性能的需求。例如,快速模式Plus的引入是为了应对更长总线长度和更快传输速度的需求,它增强了驱动强度,提高了数据率,同时保持了对旧有标准的兼容性。 I2C协议的特性还包括: - **多主控器系统**:多个主控制器可以共享总线,每个设备都可以作为主控器启动数据传输。 - **寻址机制**:设备通过7位或10位地址进行唯一标识,允许总线上连接多个设备。 - **多种传输格式**:包括读写操作,以及不同长度的数据包。 - **错误检测机制**:如应答检查,确保数据正确传输。 I2C协议的广泛应用在于其灵活性和易用性,它被广泛应用于嵌入式系统、消费电子产品、物联网设备等众多领域,如传感器、微控制器、存储器等芯片之间的通信。由于其简单的硬件需求和丰富的软件支持,I2C已成为设计工程师们的首选接口之一。 随着时间的推移,I2C协议的规范不断优化和升级,以适应新的市场需求和技术挑战。版本v2.0见证了其成为全球标准,并在超过1000种不同的集成电路中得到实施,授权给50多家公司。而最新的v7.0版本则进一步体现了I2C协议在兼容性、速度和语言表述上的持续改进。
2025-08-10 23:32:50 775KB I2C I2C协议 I2C规范
1
I2C(Inter-Integrated Circuit)总线是一种由飞利浦公司(现为恩智浦半导体)开发的简单、高效、双向二线制通信协议,广泛应用于微控制器与各种电子设备之间的通信。本项目名为"I2C_slave FPGA实现",旨在通过FPGA(Field-Programmable Gate Array)实现I2C协议的从机模式,使得FPGA能够作为I2C总线上的从设备接收和发送数据。 在FPGA实现I2CSlave的过程中,我们需要理解以下几个关键知识点: 1. **I2C协议基础**:I2C协议包括主设备(Master)和从设备(Slave),通信基于两条线:SDA(数据线)和SCL(时钟线)。主设备控制通信时序,从设备响应主设备的请求。协议支持7位或10位地址空间,以及多种传输速率(如标准速100kbps,快速速400kbps,高速速3.4Mbps)。 2. **FPGA中的逻辑设计**:在FPGA中实现I2C奴隶,需要设计一系列的逻辑单元,如状态机来处理不同阶段的通信(例如:启动条件、地址识别、数据读写等),以及用于同步的边沿检测器和寄存器来存储数据。 3. **状态机**:I2C通信流程由多个状态组成,例如空闲、寻址、读写数据、停止条件等。设计一个状态机来管理这些状态,确保正确响应I2C总线上的每个事件。 4. **同步逻辑**:由于I2C协议是时钟同步的,因此需要设计适当的同步电路来处理SDA和SCL线上的上升沿和下降沿,确保数据的准确捕获和发送。 5. **数据收发**:从设备需要有数据接收和发送的逻辑。当从设备被选中且主设备要求读取数据时,FPGA需要准备好数据并在SCL的上升沿发送出去;对于写操作,FPGA需要在SCL的下降沿采样SDA线上的数据。 6. **错误检测**:I2C协议规定了严格的时序和数据校验规则,比如数据在SCL低电平时必须稳定,因此FPGA实现的I2C从机应包含错误检测机制,如检测非法时序或数据错误。 7. **接口设计**:为了方便与FPGA内部其他模块交互,通常会设计一个简单的接口,允许其他模块向I2C从机写入要发送的数据,并接收从I2C总线上接收到的数据。 8. **仿真与验证**:使用硬件描述语言(如Verilog或VHDL)编写代码后,需要进行仿真验证,确保I2C从机在各种条件下都能正确响应。这通常包括使用模型化的主设备生成各种测试用例。 9. **硬件实现**:完成软件仿真并确认无误后,将设计下载到FPGA中进行实际硬件测试。可能需要连接到真实的I2C主设备(如微控制器或开发板)进行功能验证。 10. **调试工具**:使用逻辑分析仪或者示波器来监控SDA和SCL线上的波形,有助于定位任何潜在的通信问题。 "I2C_slave FPGA实现"项目涉及到I2C协议的理解、FPGA逻辑设计、状态机构建、同步逻辑、数据收发机制、错误检测、接口设计、仿真验证及硬件测试等多个方面的知识,是一个综合性的数字系统设计任务。
2025-07-31 16:24:31 6KB I2C_slave
1
在本文中,我们将深入探讨如何在GD32F103微控制器上使用硬件I2C接口来驱动SSD1306 OLED显示屏、PCF8563实时时钟(RTC)以及SHT30温湿度传感器。GD32F103是一款基于ARM Cortex-M3内核的高性能通用MCU,它提供了丰富的外设接口,包括I2C,使得与各种外围设备的通信变得简单。 **GD32F103硬件I2C接口** GD32F103系列微控制器的I2C接口支持标准和快速模式,最高数据传输速率可达400kbps。配置I2C接口时,我们需要选择合适的SCL和SDA引脚,设置工作频率,并启用中断或DMA以处理数据传输。在代码实现中,通常会初始化I2C peripheral,设置时钟分频因子,以及配置相应的中断或DMA通道。 **SSD1306 OLED显示屏** SSD1306是一款常见的用于OLED显示屏的控制器,它通过I2C或SPI接口与主控器通信。在GD32F103上配置SSD1306,首先需要设置正确的I2C地址,然后发送初始化命令序列来配置显示屏参数,如分辨率、显示模式等。之后,可以使用I2C发送数据到显示屏的RAM来更新显示内容。在实际编程中,可以利用库函数简化操作,如使用SSD1306的ASCII字符库和图形函数。 **PCF8563 RTC实时时钟** PCF8563是一款低功耗、高精度的实时时钟芯片,也通过I2C接口与主控器进行通信。要使用PCF8563,首先要设置I2C通信的正确地址,然后读写RTC寄存器以获取或设置日期和时间。例如,要设置时间,需要向特定地址写入年、月、日、时、分、秒等值。同时,还可以配置闹钟功能和其他系统控制选项。在GD32F103上,可以编写函数来封装这些操作,方便在程序中调用。 **SHT30温湿度传感器** SHT30是盛思锐(Sensirion)公司的一款数字式温湿度传感器,它提供I2C接口并能测量环境温度和相对湿度。为了从SHT30获取数据,需要按照规定的协议发送读取命令,然后接收包含温度和湿度信息的数据包。在GD32F103上,这可以通过轮询I2C总线或设置中断来完成。数据解析后,可以将其显示在SSD1306 OLED显示屏上,或者保存到存储器供进一步处理。 在开发过程中,需要注意以下几点: 1. **错误处理**:确保处理可能的通信错误,如超时、ACK失败等。 2. **同步和异步通信**:根据需求选择中断或DMA方式处理I2C通信,中断适合简单的周期性通信,而DMA适用于大量数据传输。 3. **电源管理**:考虑到功耗,可能需要在不使用传感器时关闭I2C接口或进入低功耗模式。 4. **代码优化**:为了提高效率,可以对I2C通信过程进行优化,例如使用预编译宏或模板函数减少重复代码。 GD32F103通过硬件I2C接口驱动SSD1306 OLED显示屏、PCF8563 RTC以及SHT30温湿度传感器,涉及了嵌入式系统中多个关键环节,包括外设驱动、数据通信和实时数据处理。通过理解这些知识点,开发者可以构建一个功能完善的环境监测和显示系统。
2025-07-30 11:21:05 5.08MB SHT30 SSD1306 OLED
1
《MicroPython驱动库详解——构建智能硬件的基石》 MicroPython是一种精简版的Python编程语言,专为微控制器和嵌入式系统设计,使得在小型设备上进行高性能的编程变得简单易行。本篇文章将重点介绍标题所提及的一系列MicroPython驱动库,包括HTS221、LPS22、LIS2DW12、LIS2MDL、LSM6DSO、STTS751、BME280、BMP280、APDS9930、TM1650、TM1637、LCD1602以及各种micropython驱动器,这些库对于开发智能硬件项目至关重要。 HTS221是一款高精度湿度和温度传感器,常用于环境监测应用。MicroPython中的驱动库使得开发者可以轻松地获取实时的温湿度数据,并进行进一步的数据处理和分析。 LPS22是压力传感器,LIS2DW12和LIS2MDL分别是加速度计和磁力计,它们通常用于运动检测和方向感知。通过MicroPython库,用户可以实现对这些传感器的控制,获取三轴加速度和磁场强度,从而实现诸如倾斜检测、运动追踪等功能。 LSM6DSO集成了加速度计和陀螺仪,是实现姿态感应和运动追踪的关键部件。结合MicroPython的驱动库,开发者可以实现复杂的空间定位和动态响应。 STTS751是一款数字温度传感器,适合于需要精确温度测量的场合。BME280和BMP280则是高度集成的温湿度气压传感器,广泛应用于气象观测和环境监控项目。这些传感器的MicroPython驱动库提供了一种简便的方式来读取和处理环境参数。 APDS9930是光传感器,可以检测环境光线强度,甚至红、绿、蓝以及红外光。在照明控制或自动调节显示器亮度的场景中,它扮演着重要角色。 TM1650和TM1637是LED驱动芯片,常用于数码管显示。MicroPython库提供了控制这些LED显示的方法,使得数字和字符的显示变得轻松。 LCD1602是常见的16x2字符型液晶显示屏,MicroPython库提供了与之交互的API,可以用来显示文本信息,极大地增强了设备的可视化能力。 "micropython-drives"和"Python"标签表明这些驱动库不仅适用于MicroPython,也可以在标准的Python环境中运行,提供了更广泛的应用场景。 通过上述驱动库,开发者可以构建出各种各样的智能硬件项目,如环境监测设备、运动跟踪器、智能仪表盘等。这些库的使用大大降低了硬件开发的门槛,使得更多的人能够参与到物联网和嵌入式系统的创新中来。无论是初学者还是经验丰富的工程师,都能借助这些驱动库快速实现功能丰富的硬件解决方案。
2025-07-28 23:10:19 2.41MB micropython i2c sensor
1
内容概要:本文档详细解析了MTK摄像头架构,重点介绍了HAL层和Kernel驱动层的功能与实现细节。HAL层主要负责传感器电源控制及相关寄存器操作,而Kernel驱动层则通过imgsensor.c控制传感器的上下电及其具体操作。驱动程序分为两部分:imgsensor_hw.c负责电源管理,xxxmipiraw_sensor.c负责传感器参数配置。传感器数据经由I2C接口传输至ISP处理并保存至内存。文档还深入探讨了帧率调整机制,即通过修改framelength来间接调整帧率,并展示了关键结构体如imgsensor_mode_struct、imgsensor_struct和imgsensor_info_struct的定义与用途。此外,文档解释了传感器驱动的初始化过程,包括入口函数注册、HAL层与驱动层之间的交互流程,以及通过ioctl系统调用来设置驱动和检查传感器状态的具体步骤。 适合人群:具备一定嵌入式系统开发经验,尤其是对Linux内核有一定了解的研发人员,特别是从事摄像头模块开发或维护工作的工程师。 使用场景及目标:①理解MTK摄像头架构的工作原理,特别是HAL层和Kernel驱动层的交互方式;②掌握传感器驱动的开发与调试方法,包括电源管理、参数配置和帧率调整;③学习如何通过ioctl系统调用与内核模块进行通信,确保传感器正确初始化和运行。 阅读建议:此文档技术性强,建议读者在阅读过程中结合实际代码进行实践,重点关注传感器驱动的初始化流程、关键结构体的作用以及帧率调整的具体实现。同时,建议读者熟悉Linux内核编程和I2C通信协议,以便更好地理解和应用文档中的内容。
2025-07-22 14:01:05 15KB Camera驱动 Kernel开发 I2C
1
在本文中,我们将深入探讨如何使用Keil+C51编译器来编写自己的硬件调试DLL,特别是针对I2C通信协议。I2C(Inter-Integrated Circuit)是一种广泛应用于微控制器系统的多主设备通信总线,它允许不同设备之间进行低速数据交换,如传感器、显示驱动器和存储器。 我们需要了解Keil C51,这是一个针对8051系列微控制器的强大的C编译器。C51提供了丰富的库函数和优化选项,使得开发者可以便捷地编写和调试8051微控制器上的程序。在开发过程中,DLL(动态链接库)扮演着重要角色,它允许我们封装和重用代码,提高软件的可维护性和效率。 在创建硬件调试DLL时,我们需要考虑以下关键步骤: 1. **项目设置**:使用`SampTarg.dsp`和`SampTarg.def`文件来配置项目。`.dsp`文件是项目描述文件,包含了关于工程的信息,如源文件、库路径和编译器选项。`.def`文件用于定义DLL导出的函数和变量,确保其他程序能够正确调用这些功能。 2. **源代码组织**:压缩包中的`AGDI.CPP`、`SampTarg.cpp`、`TESTDLG.CPP`、`SETUPT.CPP`和`StdAfx.cpp`是C++源代码文件,它们包含了实现DLL功能的类和函数。例如,`AGDI.CPP`可能包含了与I2C通信相关的函数,而`SampTarg.cpp`可能是主程序或核心功能的实现。 3. **I2C通信实现**:在8051微控制器上实现I2C通信通常需要对硬件寄存器进行直接操作。你需要理解I2C协议的时序,包括起始条件、停止条件、数据传输和应答位。`SampTarg.cpp`中可能包含了初始化I2C总线、发送和接收数据的函数。 4. **调试接口**:DLL通常会提供一组API供其他程序调用,以执行特定的硬件调试任务。例如,你可能会有一个`StartI2CTransmission`函数来开始一个I2C传输,或者`ReadSensorData`函数来从I2C设备读取数据。 5. **构建过程**:使用`CLEAN.BAT`批处理文件可以清理项目生成的临时文件和编译结果,保持工作环境整洁。`SampTarg.aps`是项目的编译输出文件,记录了编译期间的链接信息。 6. **集成到Keil IDE**:将编写的DLL集成到Keil IDE中,可以通过设置项目属性来指定DLL的位置,并在需要的地方调用其提供的函数。`SampTarg.clw`是Keil的工作空间文件,用于管理项目的源代码和编译设置。 7. **测试和调试**:`TESTDLG.CPP`可能包含了一个测试对话框或测试程序,用于验证DLL的功能是否正常。使用Keil的内置调试工具,可以设置断点、查看变量值和单步执行代码,以确保DLL的正确性。 通过以上步骤,你可以成功地利用Keil+C51编写一个硬件调试DLL,实现了对I2C设备的控制。这不仅提高了代码的复用性,也简化了复杂的硬件调试流程。记住,实践是最好的老师,不断尝试和调试是掌握这个过程的关键。
2025-07-15 17:29:11 302KB
1
STM32是意法半导体(STMicroelectronics)推出的一种基于ARM Cortex-M内核的微控制器系列,广泛应用在嵌入式系统设计中。UCOSII(μC/OS-II)是一款实时操作系统(RTOS),专为微处理器设计,具有小巧、高效、可抢占式多任务的特点,适合资源有限的嵌入式系统。UIP(Micro IP)是小巧的TCP/IP协议栈,适用于资源受限的嵌入式设备。I2C(Inter-Integrated Circuit)是一种串行通信协议,常用于微控制器与外部设备之间的通信。 本项目是将UCOSII操作系统和UIP协议栈移植到STM32微控制器上,结合I2C通信协议实现了一套完整的系统。以下是对这些知识点的详细阐述: 1. **STM32**:STM32家族涵盖了多种不同的内核(如Cortex-M0、M3、M4、M7),并提供了丰富的外设接口,如GPIO、SPI、I2C、UART等。在本项目中,STM32作为主控芯片,负责整个系统的运行和数据处理。 2. **UCOSII**:UCOSII是一个开源的RTOS,支持抢占式调度,提供信号量、邮箱、消息队列等同步机制。在STM32上移植UCOSII,需要初始化堆栈、设置中断向量表、配置时钟系统等,确保操作系统能在MCU上正常运行。 3. **UIP**:UIP是一个轻量级的TCP/IP协议栈,实现了IPv4、UDP、TCP等基本网络协议。在嵌入式系统中,UIP可以实现网络通信功能,例如HTTP服务器、FTP客户端等。移植UIP到STM32需要理解协议栈的工作原理,配置网络接口,如以太网或Wi-Fi,并处理底层的数据传输。 4. **I2C**:I2C协议允许多个设备共享同一组双向数据线进行通信,常用于传感器、显示屏等设备的连接。在STM32上模拟I2C,需要配置GPIO引脚为I2C模式,设置时钟和数据线的电平状态,实现发送和接收数据的时序控制。 项目中提供的程序已通过调试,这意味着开发者已经解决了初始化配置、中断处理、多任务调度、网络协议解析和I2C通信等各方面的技术问题。对于想学习或使用这些技术的人员来说,这是一个宝贵的资源,可以帮助他们快速理解并应用到自己的项目中。 这个项目结合了嵌入式系统中的硬件平台、RTOS、网络通信和低层总线协议,展示了STM32在复杂系统中的应用能力,同时提供了关于UCOSII和UIP的实战经验,以及模拟I2C通信的示例,对于学习和开发类似系统的人们极具参考价值。
2025-07-15 09:57:43 210KB stm32 ucosii i2c
1
STM32L053是意法半导体(STMicroelectronics)推出的一款超低功耗微控制器,属于STM32L0系列。该芯片基于ARM Cortex-M0+内核,适用于电池供电的应用,如穿戴设备、传感器节点等。在I2C通信协议下,STM32L053能够作为主设备发送数据,以及作为从设备接收数据。在本程序中,我们关注的是硬件I2C接口的使用,特别是中断驱动的从机模式。 I2C(Inter-Integrated Circuit)是一种两线制串行总线,由飞利浦(现为恩智浦半导体)开发,用于连接微控制器和外围设备。它允许多个设备共享同一对数据线进行通信,减少了电路板上的布线需求。 在STM32L053中,硬件I2C接口通常由两个外设组成:I2C1和I2C2。它们提供了配置选项,如时钟频率、地址识别、中断使能等。为了实现I2C通信,我们需要设置以下步骤: 1. **初始化I2C外设**:配置时钟源、工作频率、数据速率(标准速或高速)、地址模式等。这通常在系统启动或模块初始化函数中完成。 2. **配置GPIO引脚**:STM32L053的I2C数据线(SDA)和时钟线(SCL)需要配置为推挽输出(用于主设备)和开漏输入(用于从设备)。还要开启内部上拉电阻,因为I2C协议要求外部设备具有上拉电阻。 3. **设置中断**:对于从设备,启用I2C接收中断是非常重要的。当从设备接收到主设备的数据时,中断会被触发,然后执行相应的处理函数。这通常涉及配置NVIC(Nested Vectored Interrupt Controller)以处理I2C中断。 4. **编程从设备地址**:I2C通信中,每个设备都有一个7位或10位的地址。在从设备端,我们需要设定自己的地址以便主设备可以寻址到。 5. **中断服务例程**:在中断服务例程中,你需要读取I2C接口的状态寄存器,判断当前是应答信号、数据接收还是其他事件。根据这些信息,决定如何响应并更新内部数据结构。 6. **数据传输**:I2C通信包括开始条件、地址字段、数据字段和停止条件。在中断接收模式下,主设备发送数据后,从设备会在中断中读取这些数据,并可能需要通过应答信号(ACK)确认接收到数据。 7. **错误处理**:I2C通信可能会出现错误,如超时、数据丢失或地址冲突。因此,中断服务例程需要检查错误标志,并采取适当措施,如重试传输或通知用户。 8. **关闭I2C**:在完成通信后,记得关闭I2C接口,释放资源,降低功耗。 在提供的"i2c_test"文件中,可能包含了实现这些功能的代码示例。通过阅读和理解这些代码,你可以学习如何在STM32L053上实现硬件I2C接口的发送和接收,特别是在中断驱动的从机模式下。记住,实践是检验理论的最好方式,通过编写和调试自己的I2C程序,你将更深入地理解这个重要的通信协议。
2025-07-14 14:59:59 5.06MB stm32
1
有个项目需要使用一个最小的OLED进行显示,选来选去,找了一个0.42寸的超级小的OLED.这里是使用的调试代码参考帖子:https://blog.csdn.net/li171049/article/details/130527062
2025-07-11 16:21:20 12.21MB stm32 OLED IIC SSD1306
1