硬汉嵌入式论坛

 找回密码
 立即注册
查看: 646|回复: 2
收起左侧

[有问必答] 硬件I2C。使用Hal库怎么操作?

[复制链接]

333

主题

2031

回帖

3035

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3035
发表于 2023-5-25 14:33:55 | 显示全部楼层 |阅读模式
本帖最后由 caicaptain2 于 2023-5-25 14:35 编辑

I2C已经用cubemx配置好了,典型的参数,stm32是master,去读取一个芯片的ID。没有什么反应。。。
不知道Hal库中的参数这么操作对不对:

[C] 纯文本查看 复制代码
   I2CSendBuf[0] = 0x0d;//需要读取的芯片ID地址
   HAL_I2C_Master_Transmit(&hi2c1,(0x76)<<1,I2CSendBuf,1,HAL_MAX_DELAY)     ;
  // HAL_Delay(1000);
   HAL_I2C_Master_Receive(&hi2c1,((0x76)<<1)|0x01,I2CReceBuf,1,HAL_MAX_DELAY)     ;



回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106519
QQ
发表于 2023-5-25 14:57:09 | 显示全部楼层
HAL库的I2C地址要注意。

HAL库硬件I2C地址配置大坑排雷注意事项
https://www.armbbs.cn/forum.php? ... 2596&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

333

主题

2031

回帖

3035

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3035
 楼主| 发表于 2023-5-25 15:56:20 | 显示全部楼层
本帖最后由 caicaptain2 于 2023-5-25 16:06 编辑

终于发现了问题,这个I2C芯片像米粒大小,原来是焊接有问题。。。。

对比eeprom的例程,用以下函数就直接成功了。
[C] 纯文本查看 复制代码
HAL_I2C_Mem_Read(&hi2c1,((0x76)<<1),0x0d,I2C_MEMADD_SIZE_8BIT,I2CReceBuf,3,HAL_MAX_DELAY);


为了判断这个I2C芯片知否焊接好,可以使用这个函数验证:
[C] 纯文本查看 复制代码
I2CStatus=HAL_I2C_IsDeviceReady(&hi2c1,(0x76)<<1,2,HAL_MAX_DELAY);


如果返回了HAL_OK就完事大吉。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-23 19:10 , Processed in 0.306035 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表