6.IIC

news2024/11/15 8:07:59

理论

参考51单片机IIC理论:链接

在起始信号后必须发送一个7位从机地址 + 1位方向位,用“0”表示主机发送数据,“1”表示主机接收数据

代码编写

IIC三个模式配置

IIC(阻塞模式)配置

主要方式

IIC(阻塞模式)配置

IIC(中断模式)配置

IIC(中断模式)配置

IIC(DMA模式)配置

IIC(DMA模式)配置

阻塞模式

mian.c

/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();	//75行
MX_I2C1_Init();
/* USER CODE BEGIN Init */
OLED_Init();			//初始化OLED
OLED_Clear();
OLED_ShowCHinese(0,0,0);	//�?
OLED_ShowCHinese(18,0,1);	//�?
OLED_ShowCHinese(36,0,2);	//�?
OLED_ShowCHinese(54,0,3);	//�?
OLED_ShowCHinese(72,0,4);	//�?
OLED_ShowCHinese(90,0,5);	//�?
OLED_ShowCHinese(108,0,6);	//�?
OLED_ShowCHinese(0,2,6);	//�?
/* USER CODE END Init */

olde.c

/**********************************************
// IIC Write Command命令
**********************************************/
void Write_IIC_Command(unsigned char IIC_Command)	//10行
{
//   IIC_Start();
//   IIC_Write_Byte(0x78);            //Slave address,SA0=0
//   IIC_Write_Byte(0x00);			//write command
//   IIC_Write_Byte(IIC_Command);
//   IIC_Stop();
	 uint8_t IIC_Send_Cmd[]={0x00,IIC_Command};	//将两个数据放进数组
	 /* 参数1:指向 I2C_HandleTypeDef 结构的指针,该结构包含指定 I2C 的配置信息
	  * 参数2:设备地址,参数3:
	  * 参数4:要发送的数据量,参数5:超时持续时间
	  */
	 HAL_I2C_Master_Transmit(&hi2c1, 0x78, IIC_Send_Cmd, 2, 100);	//调用库函数阻塞发送IIC

}
/**********************************************
// IIC Write Data数据
**********************************************/
void Write_IIC_Data(unsigned char IIC_Data)
{
//   IIC_Start();
//   IIC_Write_Byte(0x78);			//D/C#=0; R/W#=0
//   IIC_Write_Byte(0x40);			//write data
//   IIC_Write_Byte(IIC_Data);
//   IIC_Stop();
   uint8_t IIC_Send_Data[]={0x40,IIC_Data};	//将两个数据放进数组
   /* 参数1:指向 I2C_HandleTypeDef 结构的指针,该结构包含指定 I2C 的配置信息
	* 参数2:设备地址,参数3:
	* 参数4:要发送的数据量,参数5:超时持续时间
	*/
   HAL_I2C_Master_Transmit(&hi2c1, 0x78, IIC_Send_Data, 2, 100);

}

中断模式

mian.c与阻塞相同

oled.c

/**********************************************
// IIC Write Command命令
**********************************************/
void Write_IIC_Command(unsigned char IIC_Command)	//10行
{
//   IIC_Start();
//   IIC_Write_Byte(0x78);            //Slave address,SA0=0
//   IIC_Write_Byte(0x00);			//write command
//   IIC_Write_Byte(IIC_Command);
//   IIC_Stop();
	 uint8_t IIC_Send_Cmd[]={0x00,IIC_Command};	//将两个数据放进数组
	 /* 参数1:指向 I2C_HandleTypeDef 结构的指针,该结构包含指定 I2C 的配置信息
	  * 参数2:设备地址,参数3:
	  * 参数4:要发送的数据量
	  */
	 HAL_I2C_Master_Transmit_IT(&hi2c1, 0x78, IIC_Send_Cmd, 2);
	 HAL_Delay(1);	//如果不延时发太快不显示,但OLED显示太慢
}
/**********************************************
// IIC Write Data数据
**********************************************/
void Write_IIC_Data(unsigned char IIC_Data)
{
//   IIC_Start();
//   IIC_Write_Byte(0x78);			//D/C#=0; R/W#=0
//   IIC_Write_Byte(0x40);			//write data
//   IIC_Write_Byte(IIC_Data);
//   IIC_Stop();
   uint8_t IIC_Send_Data[]={0x40,IIC_Data};	//将两个数据放进数组
   /* 参数1:指向 I2C_HandleTypeDef 结构的指针,该结构包含指定 I2C 的配置信息
	* 参数2:设备地址,参数3:
	* 参数4:要发送的数据量
	*/
   HAL_I2C_Master_Transmit_IT(&hi2c1, 0x78, IIC_Send_Data, 2);
   HAL_Delay(1);

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2039001.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

智源研究院举办第一期数据与行业应用Workshop

近日,北京智源人工智能研究院联合中国互联网协会人工智能工委会、中国AIIA联盟数据委员会、CSDN举办了以“行业革新,数据先行”为主题的第一期数据与行业应用Workshop。来自智源研究院、中国信息通信研究院、航天信息技术有限公司、北京市科学技术研究院…

学习记录第二十七天

进程 wait函数 功能 等待子进程结束:父进程调用wait函数后,会暂停执行,直到它的某个子进程结束。收集子进程状态:当子进程结束时,wait函数会返回子进程的终止状态,包括是正常终止还是被信号终止等信息。…

单链表leetcode刷题/中(C语言版)

目录 题目1:合并两个有序链表 题目2:分割链表 题目3:随机链表的复制 “单链表leetcode刷题/上”的链接:https://blog.csdn.net/2302_80297338/article/details/140409360?spm1001.2014.3001.5501 题目1:合并两个有…

Ecovadis认证评估的四个方面 Ecovadis评估结果呈现形式

Ecovadis的认证过程严谨,基于国际公认的标准和准则进行评估。获得Ecovadis认证的企业,在社会责任、环境保护、商业道德和可持续采购等方面的表现得到了专业认可,这有助于提升企业的信誉度和透明度,增强利益相关者的信任。 Ecovad…

【CTF | WEB】003、攻防世界WEB题目之xff_referer

文章目录 xff_referer题目描述:解题思路:XFF与Referer基本了解1. XFF(X-Forwarded-For):2. Referer:简单总结: 解题实操: xff_referer 题目描述: X老师告诉小宁其实xff和referer是可以伪造的。…

在 Linux 系统中下载 Python 并配置环境

哈喽,大家好,木易巷来啦! 在 Linux 系统中下载 Python 并配置环境,主要包含以下几个核心步骤: ▍1、安装 Python 多数 Linux 发行版已预装 Python,但您可能需要安装不同版本或更新现有版本。 打开终端。 …

SpringBoot(Ⅰ)——HelloWorld和基本打包部署+Pom依赖概述+@SpringBootApplication注解+自动装配原理+约定大于配置

前言 如果SSM学的比较好,那么SpringBoot说白了就两件事:约定大于配置和自动装配 SpringBoot不会提供任何的功能拓展,完全依赖我们手动添加 所以SpringBoot的本质是一个依赖脚手架,可以快速集成配置各种依赖 1.1 SpringBoot相关依赖 创建…

失败:Windows--WSL2--Ubuntuon--Docker

编写目的: 在Windows上安装Docker,用Docker安装Gitlab、Jenkins等软件。 文章记录一下Windows上安装Docker的过程。 参考文档: 旧版 WSL 的手动安装步骤 | Microsoft Learn 下面用"参考文档"代替 目录 第一步:启…

学习计算机网络(三)——IP地址

一、IP协议(IPV4、IPV6) 表示形式(两种): 点分十进制、二进制 地址被点分为4个部分,每个部分8位,总共32位。 A、B、C类地址都是单播地址(一对一通信),D类…

谷粒商城实战笔记-175~177-商城业务-检索服务-检索查询接口开发

文章目录 一,175-商城业务-检索服务-检索查询参数模型分析抽取二,176-商城业务-检索服务-检索返回结果模型分析抽取三,177-商城业务-检索服务-检索DSL测试-查询部分四,178-商城业务-检索服务-检索DSL测试-聚合部分问题记录解决方案…

redis散列若干记录

字典 redis本身使用字典结构管理数据 redis使用hash表实现字典结构 使用了什么hash算法 使用SipHash算法,该算法能有效防止Hash表碰撞,并有不错的性能 hash冲突怎么解决 使用链表法解决hash冲突 hash表如何扩容 渐进式扩容,不会引起线程长期阻…

趣味算法------可截断素数

目录 题目描述: 思路解析: 质数判断函数: 反转函数: 右截断素数判断函数: 左可截断素数: 具体代码: 题目描述: 左截断素数是不包含 0 位的素数,当连续删除第一个数…

大四生都在的用8款AI论文生成器在线网站!

在当前的AI技术浪潮中,智能AI写作工具已经成为了学术研究和论文撰写的重要助手。对于大四生来说,选择合适的AI论文生成器可以大大提高写作效率和质量。以下是8款值得推荐的AI论文生成器在线网站: 一、千笔-AIPassPaPer 这是一款功能全面且高…

花几千上万学习Java,真没必要!(四十六)

Lambda表达式: 测试代码1: package test.lambda; public class LambdaDemo { // 实现Runnable接口的类 static class MyThread implements Runnable { Override public void run() { System.out.println("线程运行中:通过实现Runn…

【智能流体力学】ANSYS Fluent流体仿真基础、深度学习驱动思想及其CAX计算机辅助集成技术

目录 一、CAX计算机辅助集成技术二、计算机辅助工程(CAE)三、SCDM (Species Concentration Display Model) 显示和分析物质浓度分布的模型1. **SCDM概述**2. **主要功能**3. **功能特点**4. **使用步骤**5. **应用实例**6. **优点与限制**四、行业应用五、Fluent 软件功能1. …

Datawhale AI 夏令营 第四期 AIGC Task2

活动简介 活动链接:Datawhale AI 夏令营(第四期) 以及AIGC里面的本次任务说明:Task 2 精读代码,实战进阶 和上次任务一样,链接里的教程非常详细,对小白非常友好,从使用AI助手理解…

网工内推 | 网络、集成工程师,最高17K,NP以上认证优先

01 广东南方新媒体股份有限公司 🔷招聘岗位:网络工程师 🔷岗位职责: 1、负责基础设施运维管理,包括机房环境设备、网络设备、安全设备与服务器等,负责机房设备上架、下架、位置调整、布线等的常规操作。…

day36——homework

二、基于UDP的TFTP文件传输 1)tftp协议概述 简单文件传输协议,适用于在网络上进行文件传输的一套标准协议,使用UDP传输 特点: 是应用层协议 基于UDP协议实现 数据传输模式 octet:二进制模式(常用&am…

数据同步工具DataX

目录 1.概要 2.简介 3.DataX处理异构数据源 4.DataX的框架 5.DataX的核心架构 6.DataX的安装 7.DataX的使用案例 8.mysql同步到mysql案例 1.概要 本篇文件将介绍一款数据同步工具DataX的原理,安装,以及使用。 2.简介 官网连接:https…

STL经典案例(二)——公司招员工

需求:公司招了十个员工ABCDEFGHIJ,公司有五个部门,公司随机给这十个员工分配薪水,并且随机将这十名员工分配到不同的部门。 员工类中成员属性为姓名和工资,成员方法为设置姓名、设置工资、获得姓名、获得工资 部门有五…