0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32的IIC库函数使用误区

CHANBAEK 来源:嵌入式随笔 作者:嵌入式随笔 2023-10-17 16:56 次阅读

HAL库里有很多的IIC的库函数,比如

HAL_I2C_Master_Transmit(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout)
HAL_I2C_Master_Receive(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size, uint32_t Timeout)
HAL_I2C_Master_Transmit_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size)
HAL_I2C_Master_Receive_IT(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size);
HAL_I2C_Master_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size);
HAL_I2C_Master_Receive_DMA(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint8_t *pData, uint16_t Size)等

这些函数参数需要使用发送的器件地址,数据地址和数据长度。具体的器件地址需要查询数据手册。很多原理图会标记出器件的地址(七位地址),如果不看手册,直接使用此地址进行读写的话往往是不行的。

这里的地址一般使用的是八位地址,IIC的器件手册给的一般是七位地址比如下两个图的A2A1A0如果全都为0,七位地址就是1110000=0x70;

图片

图片

但是根据读写要将此地址左移一位,然后最低位赋值0或者1。此例子中,读地址为11100001=0xE1;

写地址为11100000=0xE0。使用库函数的时候要使用这两个地址,不要直接使用0x70这个地址。

以此地址为例可以进行如下读写。

写:
HAL_I2C_Master_Transmit_IT(&hi2c1,0xE0, Pointer_Register,1);
while (HAL_I2C_GetState(&hi2c1) != HAL_I2C_STATE_READY)
{
  ;
}
读:
HAL_I2C_Master_Receive_IT(&hi2c1, 0xE1, pData,1);
while (HAL_I2C_GetState(&hi2c1) != HAL_I2C_STATE_READY)
{
  ;
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • STM32
    +关注

    关注

    2240

    文章

    10674

    浏览量

    348806
  • IIC
    IIC
    +关注

    关注

    11

    文章

    285

    浏览量

    37806
  • 库函数
    +关注

    关注

    0

    文章

    177

    浏览量

    33730
  • HAL库
    +关注

    关注

    1

    文章

    112

    浏览量

    5878
收藏 人收藏

    评论

    相关推荐

    stm32库函数解释

    库函数的详细介绍,很实用,本人菜鸟,正在慢慢学习。
    发表于 05-06 15:06 14次下载

    STM32库函数代码自动生成器V1.2

    stm32库函数代码自动生成器是STM32学习的小工具。 stm32库函数代码自动生成器可以根据你的配置生成相应的
    发表于 06-17 17:55 0次下载

    STM32库函数代码自动生成器正式版

    STM32库函数代码自动生成器正式版 STM32库函数代码自动生成器正式版
    发表于 07-25 18:52 0次下载

    STM32不完全手册_库函数版本_V3.1

    STM32不完全手册_库函数版本_V3.1
    发表于 12-09 23:11 0次下载

    STM32f103zet6使用库函数点亮一个LED

    STM32f103zet6使用库函数点亮一个LED
    发表于 05-22 10:34 102次下载
    <b class='flag-5'>STM32</b>f103zet6使用<b class='flag-5'>库函数</b>点亮一个LED

    STM32 IAR的库函数资料免费下载

    本文档的主要内容详细介绍的是STM32 IAR的库函数资料免费下载。
    发表于 03-27 09:48 43次下载
    <b class='flag-5'>STM32</b> IAR的<b class='flag-5'>库函数</b>资料免费下载

    STM32F4 HAL库函数说明下载

    STM32F4 HAL库函数说明下载
    发表于 05-26 09:27 68次下载

    STM32F1开发指南-库函数版本_V3.3(上)

    STM32F1开发指南-库函数版本_V3.3(上)
    发表于 09-28 09:34 0次下载

    STM32F1开发指南-库函数版本_V3.3(下)

    STM32F1开发指南-库函数版本_V3.3(下)
    发表于 09-28 09:36 0次下载

    stm32下标准库函数与HAL库函数编程方式的差异

    stm32下标准库函数与HAL库函数编程方式的差异标准库函数HAL库函数标准库函数与HAL
    发表于 12-09 14:21 15次下载
    <b class='flag-5'>stm32</b>下标准<b class='flag-5'>库函数</b>与HAL<b class='flag-5'>库函数</b>编程方式的差异

    基于标准库函数与基于HAL库函数stm32编程方式对比

    以实例程序(串口通信),分析基于标准库函数与基于HAL库函数stm32编程方式的差异一、基于标准库函数stm32编程方式二、基于HAL
    发表于 12-28 19:09 30次下载
    基于标准<b class='flag-5'>库函数</b>与基于HAL<b class='flag-5'>库函数</b>的<b class='flag-5'>stm32</b>编程方式对比

    STM32库函数开发-GPIO

    2021-01-11 学习日志STM32f1库函数开发学习实战一 · I/O口1. 文件夹结构2. 配置细节 · 从寄存器到库函数3. 跑马灯4. 按键输入STM32f1
    发表于 01-13 16:17 13次下载
    <b class='flag-5'>STM32</b><b class='flag-5'>库函数</b>开发-GPIO

    基于STM32F407库函数开发按键控制LED灯

    STM32库函数实际是ST公司对寄存器开发封装。
    的头像 发表于 05-19 15:09 1582次阅读
    基于<b class='flag-5'>STM32</b>F407<b class='flag-5'>库函数</b>开发按键控制LED灯

    CH32和stm32库函数一样吗?

    CH32和stm32库函数一样吗? STM32是ST公司推出的一款32位微控制器,其拥有强大的性能及丰富的外设功能,实现了嵌入式应用的功能。而在STM32的开发中,
    的头像 发表于 08-16 11:15 550次阅读

    STM32库函数SystemInit()详解

    STM32库函数SystemInit()详解
    的头像 发表于 09-18 15:45 1996次阅读
    <b class='flag-5'>STM32</b><b class='flag-5'>库函数</b>SystemInit()详解