【STM32 CubeMX】I2C查询方式

文章目录

  • 前言
  • 一、CubeMX配置IIC
  • 二、查询方式的使用
    • 2.1 分析一种情况
    • 2.2 Master模式
    • 2.3 Mem模式
  • 总结


前言

在STM32 CubeMX环境中,I2C(Inter-Integrated Circuit)通信协议的查询方式是一种简单而常见的通信方式。通过查询方式,微控制器不断地检查I2C总线的状态,直到数据准备就绪并可以进行传输。这种方式适用于简单的通信需求,而且在STM32 CubeMX的图形化配置工具中,我们可以方便地配置I2C的查询方式,使得通信的实现变得更加容易。


对于我们的IIC协议来说,他和我们的串口是非常的像的,比如有查询方式,中断方式还有DMA方式,这都是有的本博客主要是讲解IIC的查询方式

一、CubeMX配置IIC

点击Connectivity
在这里插入图片描述
选择你想要的I2C
在这里插入图片描述
我们可以找到他对应的引脚:
在这里插入图片描述
接下来生成代码,我们就可以去使用I2C了

二、查询方式的使用

2.1 分析一种情况

如果我去读一个存储空间使用I2C,我先要发送我要读的地址,然后从设备把我要读的内容给我返回过来,这样就完成了一次I2C的操作了
我们可以实现两个函数,一个发送地址,一个读地址上的内容。
或者实现一个函数实现了发送地址和读地址上的内容。

HAL库帮我们实现了这几个函数

  1. 一个发送一个接收这种叫做Master模式
  2. 一个函数实现发送地址和接收地址叫做Mem模式

2.2 Master模式

我们可以使用下面这两个函数进行Master模式的发送和接收:

HAL_StatusTypeDef HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, 
uint8_t *pData, uint16_t Size, uint32_t Timeout);
HAL_StatusTypeDef HAL_I2C_Master_Receive(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, 
uint8_t *pData, uint16_t Size, uint32_t Timeout);

I2C_HandleTypeDef *hi2c 使用哪个 I2C 控制器
uint16_t DevAddress 设备地址,需要把 7 位地址左移 1 位
uint8_t *pData 数据 buffer
uint16_t Size 数据个数
uint32_t Timeout 超时时间,单位是 Tick,一般是 1ms
返回值 HAL_OK:成功
HAL_ERROR:错误
HAL_BUSY:总线忙
HAL_TIMEOUT:超时

2.3 Mem模式

MEM 模式只是软件上的概念,仍然是作为 Master 读写数据。
上述函数只能发起单向的数据传输,但是在实际编程中,比如要“读存储地址 addr 上
的数值”,涉及 2 个方向的数据传输:要向 I2C 设备发起写操作把“存储地址 addr”发给
他,然后向 I2C 设备发起读操作得到数值。
还 有 一 种 情 况 ,“ 把 数 值 val 写 到 存 储 地 址 addr ” 上 , 使 用“HAL_I2C_Master_Transmit”函数时,需要在数据 buffer 里填入 addr 和 val,不太直观。
这时可以使用下面的函数:

HAL_StatusTypeDef HAL_I2C_Mem_Read(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t 
MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout);
HAL_StatusTypeDef HAL_I2C_Mem_Write(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t 
MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t Timeout);

对于Mem模式,他会一次性把要写入/读出的I2C地址传入,然后把数据读出。一次性完成
那么对于Mem模式的函数,他们的参数区别仅仅是MemAddressMemAddSize
MemAddress的含义:
你要写入/读出的地址

MemAddSize的含义:
存储地址的大小,有 2 种取值:
I2C_MEMADD_SIZE_8BIT:存储地址为 1 字
节,就是 MemAddress 的低字节
I2C_MEMADD_SIZE_16BIT:存储地址为 2 字
节,先发送 MemAddress 的高字节,再发送低字节


总结

I2C的查询方式是一种简单而直观的通信方式,特别适用于简单的通信需求。在STM32 CubeMX环境中,通过图形化配置工具,我们可以轻松地配置I2C的查询方式,从而加快开发过程。总体而言,查询方式提供了一种直观的、易于理解的通信方式,适用于一些对实时性要求不高的应用场景。在这种方式下,STM32 CubeMX为开发者提供了方便而高效的工具,使得I2C通信的配置变得更加简便。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

揭开Markdown的秘籍:引用|代码块|超链接

🌈个人主页:聆风吟 🔥系列专栏:Markdown指南、网络奇遇记 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 📋前言一. ⛳️Markdown 引用1.1 🔔引用1.2 🔔嵌套引用1.3 &…

ARM编译器5.06下载安装

ARM编译器5.06下载安装 1.官网下载 进入官方网站ARM Complier v5.06官网下载页面 进入后的界面为 往下翻,找到如图位置的5.06 for windows的文件,点击下载,下载时需要登录账号 2.安装 先解压下载的压缩文件,在installer文件夹里…

前端工程化面试题 | 11.精选前端工程化高频面试题

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

【每日一题】06 排序链表

问题描述 给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 求解 /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/ struct ListNode* sortList(struct ListNode* head) {struct…

【友塔笔试面试复盘】八边形取反问题

问题:一个八边形每条边都是0,现在有取反操作,选择一条边取反会同时把当前边和2个邻边取反(如果是0变为1,如果是1变为0) 现在问你怎么取反能使得八条边都变为1. 当时陷入了暴力递归漩涡,给出一个…

CSS的background 背景图片自动适应元素大小,实现img的默认效果 background-size:100% 100%;

CSS的background 背景图片自动适应元素大小,实现img的默认效果 background-size:100% 100%; 关键是background-size:100% 100%; background-size:100% 100%; background-size:100% 100%; background-size:contain; 保持纵横比, 容器部分可能空白background-size:cover; 保…

比特币 P2PKH、P2SH

标准脚本P2PKH、P2SH 区块链重要基础知识7-1——标准脚本P2PKH、P2SH-CSDN博客 比特币中P2SH(pay-to-script-hash)多重签名的锁定脚本和解锁脚本 https://www.cnblogs.com/itlgl/p/10419325.html

NLP_Transformer架构

文章目录 Transformer架构剖析编码器-解码器架构各种注意力的应用Transformer中的自注意力Transformer中的多头自注意力Transformer中的编码器-解码器注意力Transformer中的注意力掩码和因果注意力 编码器的输入和位置编码编码器的内部结构编码器的输出和编码器-解码器的连接解…

使用Docker Compose搭建Redis主从复制

在Docker中搭建Redis主从架构非常方便,下面是一个示例,演示一下如何使用Docker Compose搭建一个Redis主从复制环境。首先,确保我们本地环境已经安装了Docker和Docker Compose。 我这里使用OrbStack替代了Docker desktop。 1. 创建一个名为r…

软件实例分享,药店进销存软件医药系统进销存教程

软件实例分享,药店进销存软件医药系统进销存教程 一、前言 以下软件程序教程以 佳易王药店进销存管理系统V16.0为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 软件可以对药品的有效期进行管理,可以查询还有多少天到期的…

云计算基础-网络虚拟化

虚拟交换机 什么是虚拟交换机 虚拟交换机是一种运行在虚拟化环境中的网络设备,其运行在宿主机的内存中,通过软件方式在宿主机内部实现了部分物理交换机的功能,如 VLAN 划分、流量控制、QoS 支持和安全功能等网络管理特性 虚拟交换机在云平…

Swift Combine 合并多个管道以更新 UI 元素 从入门到精通十七

Combine 系列 Swift Combine 从入门到精通一Swift Combine 发布者订阅者操作者 从入门到精通二Swift Combine 管道 从入门到精通三Swift Combine 发布者publisher的生命周期 从入门到精通四Swift Combine 操作符operations和Subjects发布者的生命周期 从入门到精通五Swift Com…