草庐IT

STM32基于IIC通信协议的OLED模块使用(详解)

目录前言一、项目内容实验简介二、IIC模块1、IIC协议简介2、物理层3、协议层4、硬件IIC代码配置5、软件模拟IIC配置1、起始信号与停止信号2、从机应答信号3、数据的有效性4、数据传输三、OLED模块1、软件配置2、OLED原理1、OLED初始化函数2、写入起始坐标3、清屏函数4、显示字符串5、显示文字6、显示图片(bmp)4、总结前言本篇文章对IIC通信协议的原理做了总结,并在硬件IIC配置和软件模拟IIC上做了代码输出,由此来进行一个OLED屏幕的操作总结。一、项目内容本项实验的硬件组成有STM32F103C8T6芯片的开发板、OLED模块(0.96寸4针IIC接口OLED显示屏),

STM32单片机初学5-IIC通信驱动OLED屏幕

在我上篇文章(STM32-软件模拟IIC通信)讲解了软件模拟IIC通信。这篇文章详将细讲解利用软件模拟IIC来控制0.96寸的OLED屏幕(如下图),使其显示字符串。本文将不再对IIC通信原理做详细讲解,所以对IIC通信原理不熟悉的话可以参考我上篇文章(点击上面的链接直接跳转)。上面这款屏幕是单片机学习中最常用的产品之一,在很多单片机作品中都能见到,首先简单介绍这款OLED屏幕:分辨率:64*128(最多可显示8行ASCII字符或者4行汉字)屏幕尺寸:0.96寸通信方式:IIC端口:GND、VCC、SCL、SDA(地、3V-5V供电、IIC时钟线、IIC数据线)驱动芯片:SSD1306要使用一

12. STM32——硬件IIC驱动OLED屏幕显示

STM32——硬件IIC驱动OLED屏幕显示OLED屏幕OLED屏幕特点OLED屏幕接线说明OLED屏幕显存OLED屏幕原理OLED屏幕常用指令OLED屏幕字模软件的使用写命令写数据OLED初始化(厂家提供的代码)设置起点坐标全屏填充清屏OLED打开OLED关闭显示字符串显示中文显示黑白图片整合oled.coled.hmain.ccodetab.hOLED屏幕OLED即有机发光管(OrganicLight-EmittingDiode,OLED)。OLED显示技术具有自发光、广视角、几乎无穷高的对比度、较低功耗、极高反应速度、可用于绕曲性面板、使用温度范围广、构造及制程简单等有点,被认为是下一代

STM32——IIC(I2C)附代码

1.什么是IIC?我们可以想象一下,两个芯片该怎么通信呢?这就要用的通信协议(如IIC,USART,SPI等)了,通信协议就是规范数据交换的规则。 I2C(Inter-IntegratedCircuit)就是是一种串行通信总线协议,其目的是用于连接集成电路(IC)之间的通信(交换数据)。I2C由飞利浦公司(现在的NXP半导体)于上世纪80年代开发,是一种双向通信协议,需要两根线路:时钟线(SCL)和数据线(SDA)。其中:SCL是由主设备提供时钟信号来同步数据传输(SCL的作用)。SDA:用来传输数据的(双向传输)。I2C协议的设计使得多个设备可以通过同一条总线进行通信,其中每个设备都有一个唯

【STM32协议讲解】STM32CubeMX + STM32F103 + 逻辑分析仪分析IIC、SPI和串口协议

这段时间也是在准备STM32单片机的八股文总结,面试常问的一些关于传感器协议部分的问题,常见的为UART、RS232、RS485、IIC和SPI等。因UART、RS485和RS232同属串口协议,故只分析UART协议。本文主要是基于STM32CubeMx与正点原子的STM32F103精英学习板为实验基础,结合正点原子自产的逻辑分析仪进行波形分析。参考博客:【逻辑分析仪的简单使用介绍(附带i2c、串口、spi数据分析)】大纲一、IIC协议(以AT24C02为例)1.1IIC原理分析1.2STM32CubeMX+24C02实验1.3逻辑分析仪捕获IIC波形二、SPI协议2.1SPI协议原理2.2S

stm32的IIC协议以及IIC通信驱动OLED屏幕

    最近,一直在搞stm32开发板,今天涉及到了OLED屏幕与IIC协议,记录一下学习过程。    I2C总线是一种总线标准,由数据线SDA和时钟线SCL构成通信线路,既可用于发送数据,也可接收数据,是一种半双工通信协议。总线上的主设备与从设备之间以字节(8位)为单位进行双向的数据传输。        主机启动总线,并产生时钟用于传送数据,此时任何接收数据的器件均被认为是从机。I2C器件一般采用开漏结构与总线相连,所以I2C_SCL和I2C_SDA均需接上拉电阻,也正因此,当总线空闲时,这两条线路都处于高电平状态,当连到总线上的任一器件输出低电平,都将使总线拉低。     关于具体的读写操

IIC通信为什么使用开漏输出+上拉电阻的模式

目录前言一、什么是开漏输出和推挽输出推挽输出和开漏输出二、开漏和推挽的区别三、开漏输出上下拉电阻应用总结前言最近遇到技术群里有小伙伴在问为什么IIC通信需要挂上拉电阻,查阅了一些资料做一个小结留作备用。方便后面复习。一、什么是开漏输出和推挽输出推挽输出和开漏输出 推挽输出(Push-PullOutput)是由两个MOS或者三极管受到互补控制信号的控制,两个管子始终处在一个导通另一个截止的状态;输入逻辑1,则P-MOS激活,输出为高电平;图1;输入逻辑0,则N-MOS激活,输出为低电平;图2;                              图1                    

STM32F103硬件IIC控制4针0.96寸OLED显示屏

目录取字模程序mian.coled.coled.holedfont.hbmp.hIIC1.cIIC1.h实现效果源码模拟IIC控制OLED使用的0.96寸四针屏幕,以下直接看实际操作。取字模使用PCtoLCD2002软件提取OLED字模。注意红色方框的选项内容,不要选错了,选错会导致烧录程序后无法显示。程序此为硬件IIC,如果使用过我的模拟IIC控制程序可直接看voidOLED_Write_Command(unsignedcharIIC_Command);voidOLED_Write_Data(unsignedcharIIC_Data);这两条函数即可,OLED显示函数主要区别就在这。mian

Stm32 使用软件IIC驱动FM24CL64B-GTR

首先让我进行一个祈祷仪式(感谢原子哥给我一口饭吃阿门)先附上我的原理图 我的FM24CL64B的设备地址因为A0,A1,A2都被接地了查阅硬件手册  高四位是固定的地址低四位A2,A1 ,A0对应的是引脚电平的信号(硬件手册中没有写高电平代表1还是代表0我实测是高为1低为0)R/W这一位硬件手册中注明了  所以我们的写入从地址为10100000==0XA0读取设备地址为                10100001==0XA1ok有了以上的铺垫我们可以直接使用原子哥写好的myiic.h与myiic.c来进行iic通信我在这里先附上原子哥的代码这是myiic.c#include"myiic.h

关于STM32 HAL库 (I2C/IIC)问题的解决方法

1.情况介绍:因为某个项目想要颜色识别,去识别球的颜色,但是又不想多来个摄像头,所以想尝试一下颜色传感器的方案,简化流程。然后在淘宝上买了个TCS34725来试试,随后就遇到了问题:HAL库I2C通信了几次就死锁了。我之前也接触过I2C,OLED屏,tft屏,我那时候是通过GPIO口模拟I2C(因为淘宝的和网上的例程大多是这个)来实现的。还有就是九轴陀螺仪的磁力计数据读取,ist8310的例程是HAL库的,但是我那时候的问题是我用我的cubeMX去修改配置,更新之后,I2C就死锁了,但是那时候也没有太过深入,因为没有使用九轴陀螺仪的必要,就改成了六轴陀螺仪,间接没有使用I2C了。现在这个问题又