【STM32 CubeMX】I2C查询方式


前言

在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通信的配置变得更加简便。

  • 13
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

人才程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值