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
    +关注

    关注

    2270

    文章

    10896

    浏览量

    355786
  • IIC
    IIC
    +关注

    关注

    11

    文章

    300

    浏览量

    38315
  • 库函数
    +关注

    关注

    0

    文章

    177

    浏览量

    33974
  • HAL库
    +关注

    关注

    1

    文章

    121

    浏览量

    6220
收藏 人收藏

    评论

    相关推荐

    STM32库函数—点灯实验_实验三

    概述: 从最简单的“点灯”实验入手,涉及到STM32的最基础最简单的操作。 实验目的: 本实验的目的很简单,就是让LED亮起来,并闪烁。 通过实验了解STM32固件函数库的使用方法。 本实验用到以下4个
    发表于 02-22 15:45 11次下载

    stm32库函数解释

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

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

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

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

    STM32库函数代码自动生成器正式版,感兴趣的可以看看。
    发表于 07-13 16:55 0次下载

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

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

    STM32F10X库函数合集免费下载

    本文档的主要内容详细介绍的是STM32F10x库函数合集免费下载。
    发表于 10-15 08:00 27次下载
    <b class='flag-5'>STM32</b>F10X<b class='flag-5'>库函数</b>合集免费下载

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

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

    STM32的标准例程库函数资料合集免费下载

    本文档的主要内容详细介绍的是STM32的标准例程库函数资料合集免费下载。
    发表于 12-28 08:00 31次下载

    STM32F4 HAL库函数说明下载

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

    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 14次下载
    <b class='flag-5'>STM32</b><b class='flag-5'>库函数</b>开发-GPIO

    STM32F103使用(3.5)库函数新建工程

    意法半导体的STM32系列都支持库函数编程,库函数比常规的寄存器方式编程更加好移植,特别是项目需要在几个系列芯片上移植,使用库函数编程,底层的配置都不用改。而业务逻辑本身就是通用的,所
    的头像 发表于 05-28 14:00 3563次阅读
    <b class='flag-5'>STM32</b>F103使用(3.5)<b class='flag-5'>库函数</b>新建工程

    CH32和stm32库函数一样吗?

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

    STM32库函数SystemInit()详解

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