I2C教程stm32hal_逻辑分析仪_oled屏幕

1.理论基础

基础通信协议之 IIC详细讲解https://zhuanlan.zhihu.com/p/556505577
【IIC总线原理】 https://www.bilibili.com/video/BV1jL4y1x7fb/?share_source=copy_web&vd_source=a5058e7a9022325237e9d20af2d2a2de

2. OLED显示屏介绍

http://t.csdnimg.cn/Q3gUk

3. 软件I2C实验+逻辑分析仪使用

3-1,CubeMx配置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2OLED驱动添加

  1. 首先在建立Hardware文件,添加OLED.c如下图所示:
    .在这里插入图片描述
  2. 接着对OLED.H进行添加如下图所示:
    在这里插入图片描述
    OLED驱动链接:

OLED https://www.aliyundrive.com/s/BM82mufCiQc 点击链接保存,或者复制本段内容,打开「阿里云盘」APP

3.3 主函数代码

首先引用头文件,如下所示:

#include "OLED.h"

接着初始化OLED,如下所示:

OLED_Init();  //初始化OLED

最后进行数据读取打印,如下所示:

OLED_ShowString(1, 1, "1123");

3.4 逻辑分析仪抓取波形

在这里插入图片描述

3.5波形与程序对应

通过这一小节可以直观的感受到软件I2C的运行逻辑和实际现象

  1. 我们让程序从1断点运行到2断点,程序如下,逻辑分析仪抓取波形如下

在这里插入图片描述

在这里插入图片描述


/*引脚配置*/
#define SCL_Pin GPIO_PIN_6
#define SCL_GPIO_Port GPIOB
#define SDA_Pin GPIO_PIN_7
#define SDA_GPIO_Port GPIOB
#define OLED_W_SCL(x) HAL_GPIO_WritePin(GPIOB, SCL_Pin, (GPIO_PinState)(x))
#define OLED_W_SDA(x) HAL_GPIO_WritePin(GPIOB, SDA_Pin, (GPIO_PinState)(x))

 * @brief  I2C发送一个字节
 * @param  Byte 要发送的一个字节
 * @retval 无
 */
void OLED_I2C_SendByte(uint8_t Byte)
{
	uint8_t i;
	for (i = 0; i < 8; i++)
	{
		OLED_W_SDA(Byte & (0x80 >> i));
		OLED_W_SCL(1);
		OLED_W_SCL(0);
	}
	OLED_W_SDA(1);//释放SDA总线
	OLED_W_SCL(1); //额外的一个时钟,不处理应答信号
	OLED_W_SCL(0);
}

/**
 * @brief  I2C开始
 * @param  无
 * @retval 无
 */
void OLED_I2C_Start(void)
{
	OLED_W_SDA(1);
	OLED_W_SCL(1);
	OLED_W_SDA(0);
	OLED_W_SCL(0);
}

/**
 * @brief  I2C停止
 * @param  无
 * @retval 无
 */
void OLED_I2C_Stop(void)
{
	OLED_W_SDA(0);
	OLED_W_SCL(1);
	OLED_W_SDA(1);
}

  1. 接线实物图
    在这里插入图片描述

3.6、oled屏幕显示

作者找不到屏幕了。。。。。

4. CubeMx硬件I2C配置

在这里插入图片描述

进阶-0.96oled实现贪吃蛇游戏

http://t.csdnimg.cn/wExa8

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值