Zeruns's Blog - 微控制器
type: channel
link: https://blog.zeruns.com/tag/%E5%BE%AE%E6%8E%A7%E5%88%B6%E5%99%A8/
items: 基于STM32G4的0.96寸OLED显示屏驱动程序（HAL库），支持硬件/软件I2C
items: 基于STM32F1的0.96寸OLED显示屏驱动程序，支持硬件/软件I2C
items: STM32F030C8T6最小系统板和流水灯（原理图和PCB）

基于STM32G4的0.96寸OLED显示屏驱动程序（HAL库），支持硬件/软件I2C
type: item
date: 2024-03-17T03:27:50+08:00
description: AI摘要 介绍了一款基于STM32G4的0.96寸OLED显示屏驱动程序，支持硬件/软件I2C，使用HAL库开发。该驱动功能丰富，支持多种内容显示与图形绘制，适用于英文、汉字、图像等展示，并提供了详细的配置与使用说明。 此内容根据文章生成，仅用于文章内容的解释与总结 基于STM32G474的0.96寸OLED(SSD1306)显示屏驱动程序（4针脚I2C接口），支持硬件IIC/软件IIC，HAL库版。这款驱动程序比较完善，可以实现 英文、整数、浮点数、汉字、图像、二进制数、十六进制数 等内容显示，可以画点、直线、矩形、圆、椭圆、三角形等，支持多种字体，差不多相当于一个简易版图形库了。该程序是基于江协科技的代码二次修改的，原版程序是基于STM32F103的，且只支持软件I2C，我修改后支持硬件I2C，也可以修改宏定义改成使用软件I2C。测试硬件为NUCLEO-G474RE开发板关于OLED的驱动原理，以及驱动程序的使用教程可以看江协科技的视频：https://url.zeruns.com/L7j6ySTM32使用硬件I2C读取SHTC3温湿度传感器：https://blog.zeruns.com/archives/692.html移植好U8g2图形库的STM32F407标准库工程模板：https://blog.zeruns.com/archives/722.html基于STM32F1的0.96寸OLED显示屏驱动程序，支持硬件/软件I2C：https://blog.zeruns.com/archives/769.html电子/单片机技术交流群：2169025065效果图I2C协议简介I2C 通讯协议(Inter－Integrated Circuit)是由 Phiilps 公司开发的，由于它引脚少，硬件实现简单，可扩展性强，不需要 USART、CAN 等通讯协议的外部收发设备（那些电平转化芯片），现在被广泛地使用在系统内多个集成电路(IC)间的通讯。I2C只有一跟数据总线 SDA(Serial Data Line)，串行数据总线，只能一位一位的发送数据，属于串行通信，采用半双工通信。半双工通信：可以实现双向的通信，但不能在两个方向上同时进行，必须轮流交替进行，其实也可以理解成一种可以切换方向的单工通信，同一时刻必须只能一个方向传输，只需一根数据线。对于I2C通讯协议把它分为物理层和协议层物理层规定通讯系统中具有机械、电子功能部分的特性（硬件部分），确保原始数据在物理媒体的传输。协议层主要规定通讯逻辑，统一收发双方的数据打包、解包标准（软件层面）。I2C物理层I2C 通讯设备之间的常用连接方式(1) 它是一个支持多设备的总线。“总线”指多个设备共用的信号线。在一个 I2C 通讯总线中，可连接多个 I2C 通讯设备，支持多个通讯主机及多个通讯从机。(2) 一个 I2C 总线只使用两条总线线路，一条双向串行数据线SDA（Serial Data Line ），一条串行时钟线SCL（Serial Clock Line ）。数据线即用来表示数据，时钟线用于数据收发同步(3) 总线通过上拉电阻接到电源。当 I2C 设备空闲时会输出高阻态，而当所有设备都空闲，都输出高阻态时，由上拉电阻把总线拉成高电平。I2C通信时单片机GPIO口必须设置为开漏输出，否则可能会造成短路。关于更多STM32的I2C相关信息和使用方法可以看这篇文章：https://url.zeruns.com/JC0Ah还有江协科技的STM32入门教程：https://www.bilibili.com/video/BV1th411z7sn?p=31我这里就不详细讲解了。使用说明默认是使用硬件IIC的，用的I2C3，SCL是PA8，SDA是PC9。硬件I2CSTM32CubeMX配置，找到你要用的I2C外设的引脚，并设置引脚功能为SCL和SDA，如下图所示是I2C3的SCL。接着配置I2C外设，启用对应的I2C外设，速度模式设置为 Fast Mode Plus，速度改成 1000，其他默认就行。配置GPIO，上面设置完后会自动把那两个引脚配置为复用开漏输出模式，接着只需要把IO输出速度改成 Very High ，还有GPIO标签(User Label)定义分别改成I2C3_SCL和I2C3_SDA就行，如果是用的别的I2C也可以设置成别的值，代码对应处要修改一下。改完后点击生成代码。OLED.c文件里，将 #define OLED_USE_SW_I2C 注释掉，将 #define OLED_USE_HW_I2C 取消注释，如果你用的是别的引脚作为I2C引脚，并且定义了别的名字那就将代码里的 I2C3_SCL 和 I2C3_SDA 也改一下。软件I2CSTM32CubeMX配置，设置两个…

基于STM32F1的0.96寸OLED显示屏驱动程序，支持硬件/软件I2C
type: item
date: 2024-02-26T00:17:00+08:00
description: AI摘要 介绍了基于STM32F1的0.96寸OLED显示屏驱动程序，支持硬件/软件I2C，可显示多种内容并绘图。 此内容根据文章生成，仅用于文章内容的解释与总结 基于STM32F103的0.96寸OLED显示屏驱动程序（4针脚I2C接口），支持硬件IIC/软件IIC。这款驱动程序比较完善，可以实现 英文、整数、浮点数、汉字、图像、二进制数、十六进制数 等内容显示，可以画点、直线、矩形、圆、椭圆、三角形等，支持多种字体，差不多相当于一个简易版图形库了。该程序是基于江协科技的代码二次修改的，原版程序只支持软件I2C，我修改后支持硬件I2C，也可以修改宏定义改成使用软件I2C。程序是使用ST标准库写的。测试硬件为STM32F103C8T6和AIR32F103CBT6，在这两款单片机上都测试过能跑，其中使用硬件I2C时STM32通信速率最高可以跑到1.3Mbit/s，AIR32最高只能跑600kbit/s。关于OLED的驱动原理，以及驱动程序的使用教程可以看江协科技的视频：https://url.zeruns.com/L7j6ySTM32使用硬件I2C读取SHTC3温湿度传感器：https://blog.zeruns.com/archives/692.html移植好U8g2图形库的STM32F407标准库工程模板：https://blog.zeruns.com/archives/722.html电子/单片机技术交流群：2169025065效果图I2C协议简介I2C 通讯协议(Inter－Integrated Circuit)是由 Phiilps 公司开发的，由于它引脚少，硬件实现简单，可扩展性强，不需要 USART、CAN 等通讯协议的外部收发设备（那些电平转化芯片），现在被广泛地使用在系统内多个集成电路(IC)间的通讯。I2C只有一跟数据总线 SDA(Serial Data Line)，串行数据总线，只能一位一位的发送数据，属于串行通信，采用半双工通信。半双工通信：可以实现双向的通信，但不能在两个方向上同时进行，必须轮流交替进行，其实也可以理解成一种可以切换方向的单工通信，同一时刻必须只能一个方向传输，只需一根数据线。对于I2C通讯协议把它分为物理层和协议层物理层规定通讯系统中具有机械、电子功能部分的特性（硬件部分），确保原始数据在物理媒体的传输。协议层主要规定通讯逻辑，统一收发双方的数据打包、解包标准（软件层面）。I2C物理层I2C 通讯设备之间的常用连接方式(1) 它是一个支持多设备的总线。“总线”指多个设备共用的信号线。在一个 I2C 通讯总线中，可连接多个 I2C 通讯设备，支持多个通讯主机及多个通讯从机。(2) 一个 I2C 总线只使用两条总线线路，一条双向串行数据线SDA（Serial Data Line ），一条串行时钟线SCL（Serial Clock Line ）。数据线即用来表示数据，时钟线用于数据收发同步(3) 总线通过上拉电阻接到电源。当 I2C 设备空闲时会输出高阻态，而当所有设备都空闲，都输出高阻态时，由上拉电阻把总线拉成高电平。I2C通信时单片机GPIO口必须设置为开漏输出，否则可能会造成短路。关于更多STM32的I2C相关信息和使用方法可以看这篇文章：https://url.zeruns.com/JC0Ah还有江协科技的STM32入门教程：https://www.bilibili.com/video/BV1th411z7sn?p=31我这里就不详细讲解了。需要用的元件STM32开发板入门套件：https://u.jd.com/fQS0YAeSTM32F103最小系统板：https://s.click.taobao.com/TsFFvwtOLED模块：https://s.click.taobao.com/EF0Evwt杜邦线：https://s.click.taobao.com/VMkDvwt面包板：https://s.click.taobao.com/bhg8TxtDAPLink（可代替ST-Link，带虚拟串口）：https://s.click.taobao.com/QVQ8Txt江协科技的STM32入门套件：https://s.click.taobao.com/NTn9Txt程序完整工程下载地址：百度网盘：https://url.zeruns.com/kSxoe 提取码: wgc3123网盘(不限速)：https://www.123pan.com/s/2Y9Djv-HGcvH.html 提取码:m7sp工程使用Keil5创建，用Vscode+EIDE开发，两个软件都可以打开此工程。工程文件全部使用UTF-8编码，如果打开显示乱码需要修改编辑器编码为UTF-8。main.c文件：#include …

STM32F030C8T6最小系统板和流水灯（原理图和PCB）
type: item
date: 2023-05-21T17:53:00+08:00
description: AI摘要 介绍了基于STM32F030C8T6的最小系统板设计与流水灯实现，开源了原理图和PCB文件，并提供了元件购买链接及例程下载。 此内容根据文章生成，仅用于文章内容的解释与总结 STM32F030C8T6最小系统板和流水灯。嵌入式课的课程设计，要做个流水灯，我就顺便画个最小系统板，开源出来了，各位大佬指点指点，有哪里需要优化改进的。那个WS2812的RGB灯用错引脚了，所以没法用PWM来控制，画的时候没考虑到，要用到可以自己换一下IO脚。画了个 MSP430F149的最小系统板 开源出来了：https://blog.zeruns.com/archives/713.html电子/单片机技术交流群：2169025065效果图资源下载例程下载地址：https://url.zeruns.com/5hTOd 提取码：ame9PCB制板文件（Gerber）下载：https://pan.baidu.com/s/1KVE2wBR3KYPoqVpxH1r4lA?pwd=hyk4 提取码：hyk4开源链接：https://oshwhub.com/zeruns/stm32f030-zui-xiao-xi-tong-he-liu-shui-deng/CubeMX配置图元件购买地址STM32F030C8T6：https://s.click.taobao.com/Hquc1HuAMS1117-3.3：https://s.click.taobao.com/4TfJgGuST-Link v2：https://s.click.taobao.com/e1Ac1Hu0805电阻样品本：https://s.click.taobao.com/oWjIgGu0805电容样品本：https://s.click.taobao.com/r9ea1Hu元器件购买推荐立创商城，优惠注册链接：https://activity.szlcsc.com/invite/D03E5B9CEAAE70A4.html原理图PCB推荐阅读高性价比和便宜的VPS/云服务器推荐: https://blog.vpszj.cn/archives/41.html怎样搭建个人博客：https://blog.zeruns.com/archives/218.html我的世界服务器搭建教程：https://blog.zeruns.com/tag/mc/STM32读取SHT3x系列温湿度传感器：https://blog.zeruns.com/archives/700.html使用VSCode代替Keil实现STM32和51单片机的开发：https://blog.zeruns.com/archives/690.html