HAL库学习梳理——I2C

   笔者跟着B站铁头山羊视频学习 STM32-HAL库 开发教程。下面对HAL库有关 I2C 课程知识和应用做一个梳理。

省流:

uint8_t commands[] = {0x00, 0x8d, 0x14, 0xaf, 0xa5};HAL_I2C_Master_Transmit(&hi2c1,0x78,commands,sizeof(commands)/sizeof(commands[0]) ,HAL_MAX_DELAY);sizeof(commands)/sizeof(commands[0])        // 结果等于5,表示5个元素

主机发送5个元素数据给从机。

uint8_t Data_Receive;HAL_I2C_Master_Receive(&hi2c1,0x78,&dataRcvd,1,HAL_MAX_DELAY);if((dataRcvd & (0x01<<6)) == 0)
{HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,GPIO_PIN_RESET);
}

读取从机的数据保存到自定义的变量中,再判断第6位是否为0。

1、I2C 总线基本原理

I2C 总线框图
起始位
寻址
数据传输
停止位
I2C总线 读写过程

这里的示例模拟了I2C总线主机的写读过程,有弹幕和评论说主机在寻址完之后应该发送从机寄存器地址,这里笔者在学习江科大标准库的时候确实是这样的。可能铁头山羊想把这部分内容放到进阶版视频再详细讲。作为入门的初学者来说,用这4个阶段来理解I2C正合适不过。实际开发与基础理论有出入更能让我们记忆深刻。

数据传输模式

2、示例

2.1 简单数据传输

(1)I2C模式参数

I2C 接口配置

I2C 模式配置

(2)程序 

I2C总线主机读写数据——HAL函数接口
主机发送 5个 元素的数据
uint8_t commands[] = {0x00, 0x8d, 0x14, 0xaf, 0xa5};sizeof(commands)                            // uint8_t 规定元素占1个字节,结果等于1*5个元素=4sizeof(commands[0])                         // 一个数据元素占1个字节,结果等于1sizeof(commands)/sizeof(commands[0])        // 结果等于5

主机读取 从机地址的数据并控制LED灯

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

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

相关文章

灌区信息化发展趋势展望

灌区信息化作为现代农业发展的重要组成部分&#xff0c;正逐渐成为提升水资源管理效率、保障粮食安全与促进农业可持续发展的关键途径。随着信息技术的飞速进步和智能化技术的广泛应用&#xff0c;灌区信息化的未来发展趋势展现出多维度、深层次的变革与创新&#xff0c;其发展…

基坑气膜:创新的绿色施工防护方案—轻空间

随着我国城市化进程的加快&#xff0c;建筑工地密集施工给城市居民带来了扬尘、噪音等环境问题。基坑气膜作为一种创新的绿色施工技术&#xff0c;正在成为解决这些问题的有效方案。该技术在降低环境污染、保障施工进度和提高施工安全性方面发挥着重要作用&#xff0c;逐渐受到…

深度学习张量变换操作利器 einops 基础实践

今天在一个项目调试的时候无意间报错&#xff1a; 以前其实并没有怎么多接触过einops&#xff0c;今天正好碰到了&#xff0c;就简单总结记录下。 解决上面的报错很简单&#xff0c;直接pip安装即可&#xff1a; einops 是一个用于操作张量的库&#xff0c;它提供了一种简洁且…

SpringBoot整合WebSocket实现消息推送或聊天功能示例

最近在做一个功能&#xff0c;就是需要实时给用户推送消息&#xff0c;所以就需要用到 websocket springboot 接入 websocket 非常简单&#xff0c;只需要下面几个配置即可 pom 文件 <!-- spring-boot-web启动器 --><dependency><groupId>org.springframewo…

springboot老年康复中心—计算机毕业设计源码27406

摘 要 随着互联网趋势的到来&#xff0c;各行各业都在考虑利用互联网将自己推广出法&#xff0c;最好方式就是建立自己的互联网系统&#xff0c;并对其进行维护和管理。在现实运用中&#xff0c;应用软件的工作规则和开发步骤,采用Springboo框架建设老年康复中心信息管理系统。…

vue2基础系列教程之v-model及面试高频问题

v-model是表单组件里面的核心知识点&#xff0c;这个指令给我们写表单业务带来了很大的方便。 元素标签上的 v-model 指令用于双向绑定数据,它是一个语法糖&#xff0c;可以用于代替 v-bind:value 和 input 例如&#xff1a;<input v-model"message" placeholder…

用户洞察|从被动养老到主动康养,新康养人群的幸福生活新思路

图源&#xff1a;NewAgingPro团队访谈摄影 全龄康养&#xff0c;大势所趋 作者 | NewAgingPro团队 排版 | Lucy 前言 本文将从我国银发经济发展背景出发&#xff0c;结合AgeClub旗下的NewAgingPro新老年商业研究团队持续多年的用户需求调研及访谈分析&#xff0c;深度洞察…

OpenCV运动分析和目标跟踪(1)累积操作函数accumulate()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 将一个图像添加到累积图像中。 该函数将 src 或其部分元素添加到 dst 中&#xff1a; dst ( x , y ) ← dst ( x , y ) src ( x , y ) if mask…

SQL Server小技巧之遍历日期

使用背景 一般项目中会遇到&#xff0c;求每日的日报这种&#xff0c;以及计算2个日期内的工作日&#xff0c;或者休息日可能会用到&#xff0c;计算休息日可以用额外的一个字段用来标记当前日期是否是休息日 遍历方式一 DECLARE StartDate DATE 2023-01-01, EndDate DATE …

SSM基于响应式的网上书店系统—计算机毕业设计源码27119

摘 要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理系统的实施在技术上已逐步成熟。管理系统是一个不断发展的新型学科&#xff0c;本文主要通过对响应式的网上书店系统的功能性需求分析&#xff0c;对系统的安全性和可扩展性进行了非功能性需求分析。在详细的…

【C++】详细介绍类的相关语法概念,this,默认成员函数,static,友元,内部类

目录 1. 类的基本概念 1.1 类的语法 1.2 类的访问限定符 1.3 类的两种定义方式 1.4 类的作用域 1.5 类的实例化 1.6 类对象的大小 2. this指针 2.1 概念 2.2 特性 2.3 面试题 3. 类的六个默认成员函数 3.1 构造函数 3.1.1 特性 3.1.2 默认构造函数 3.1.3 函数…

高效数据移动指南 | 如何快速实现数据库 MySQL 到 MongoDB 的数据同步?

在现代企业中&#xff0c;数据无处不在&#xff0c;贯穿于各个业务环节和系统之间。无论是跨系统的数据集成、多地域的数据协同&#xff0c;还是实时应用的数据同步&#xff0c;数据的一致性和及时性都至关重要。在数字化转型的过程中&#xff0c;如何确保不同系统、地域、设备…

OCR2.0--General OCR Theory

引领光学字符识别&#xff08;OCR&#xff09;的新篇章 引言&#xff1a;OCR技术进化的必要性 光学字符识别&#xff08;OCR&#xff09;是一项广泛应用的技术&#xff0c;它能够从图像中提取字符并将其转换为可编辑格式。虽然OCR-1.0在过去取得了广泛应用&#xff0c;但传统…

水滴式多功能粉碎机:粉碎中草药的好帮手

水滴式中草药粉碎机&#xff0c;顾名思义&#xff0c;其设计灵感源自自然界中水滴的柔和与力量。它摒弃了传统粉碎机粗犷的粉碎方式&#xff0c;采用低速研磨技术&#xff0c;模拟水滴穿透岩石的细腻与持久&#xff0c;对中草药进行温和而深入的粉碎。这种技术不仅保留了药材中…

Redis集群_cluster

cluster集群 cluster翻译就是集群&#xff0c;所以cluster集群也叫做redis集群相比于哨兵模式&#xff0c;cluster集群能支持扩容&#xff0c;并且无需额外的节点来监控状态&#xff0c;所以使用这种模式集群的系统会用的更多些redis cluster采用的是去中心化网络拓扑架构&…

2024.9.14(RC和RS)

一、replicationcontroller &#xff08;RC&#xff09; 1、更改镜像站 [rootk8s-master ~]# vim /etc/docker/daemon.json {"registry-mirrors": ["https://do.nark.eu.org","https://dc.j8.work","https://docker.m.daocloud.io",&…

探索UWB技术的独特优势:实现高精度定位

UWB定位技术是一种利用无线信号进行精确位置定位的技术&#xff0c;它利用超宽带无线电信号通过测量信号的到达时间、相位差和信号能量等参数来确定物体的精确位置。 UWB定位技术具有多种优势&#xff0c;首先&#xff0c;它具有较高的定位精度&#xff0c;可实现毫米级的精确…

哈工大“计算机设计与实践”(cpu)处理器实验设计报告

哈工大“计算机设计与实践”&#xff08;cpu&#xff09;处理器实验设计报告 【哈工大“计算机设计与实践”&#xff08;cpu&#xff09;处理器实验设计报告】 在计算机科学领域&#xff0c;CPU&#xff08;中央处理器&#xff09;是计算机系统的核心部件&#xff0c;负责执行指…

性能诊断的方法(四):自下而上的资源诊断方法和发散的异常信息诊断方法

关于性能诊断的方法&#xff0c;我们可以按照“问题现象—直接原因—问题根源”这样一个思路去归纳。我们先从问题的现象去入手&#xff0c;包括时间的分析、资源的分析和异常信息的分析。接下来再去分析产生问题现象的直接原因是什么&#xff0c;这里我们归纳了自上而下的资源…

C语言 13 指针

指针可以说是整个 C 语言中最难以理解的部分了。 什么是指针 还记得在前面谈到的通过函数交换两个变量的值吗&#xff1f; #include <stdio.h>void swap(int, int);int main() {int a 10, b 20;swap(a, b);printf("a %d, b %d", a, b); }void swap(int …