你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

关于 STM32G0/G4/L4 HAL_IIC HAL_I2C_Mem_Read 函数读取M24C64存储芯片遇到的问题

[复制链接]
STMCU小助手 发布时间:2022-12-15 13:31
由于错误的定义了HAL_I2C_Mem_Read函数第四个形数,随意的写成了 85 B  J: f- l1 s$ s
  1. HAL_I2C_Mem_Read( &hi2c1,IIC_ReadAddr, 10, 8, array_read, 10, 1000 );7 f3 V  A/ h% \/ ]% \% [" `+ O
复制代码

3 {2 V: i' E9 H6 C造成了,IIC在通讯过程中不正常的停止,函数并报出错误代码“HAL_ERROR“,波形如下6 S9 G; N1 F7 l: }: F
9 \4 W, R0 L% N2 p, q
bfa961fc8816433c8ca397f640dcab67.png & T) A6 r( C, O4 z* l
$ X& e! S/ R" m# U: G7 p3 b. v' K1 O
将代码改成如下方式1 ?( r* k+ g( J- L9 `0 F
  1. HAL_I2C_Mem_Read( &hi2c1,IIC_ReadAddr, 10, I2C_MEMADD_SIZE_16BIT, array_read, 10, 1000 );1 ~. Q$ g. P) a6 s  `/ K
复制代码

! }3 \8 B+ Z0 m4 O, {函数的第四个参数使用了官方库的宏定义,官方库宏定义如下
7 s  l8 y& z5 k9 O' A" _# s/ O
( ^! n* t! M4 o
  1. /** @defgroup I2C_MEMORY_ADDRESS_SIZE I2C Memory Address Size" V* X8 W$ P' Y2 A; S/ c4 ^
  2.   * @{' ]! \) b1 Q' t
  3.   */
    , ]/ ]4 y  V  H0 Q
  4. #define I2C_MEMADD_SIZE_8BIT            (0x00000001U)
    9 M# Z# T; L# u
  5. #define I2C_MEMADD_SIZE_16BIT           (0x00000002U)) O9 i0 N3 o+ d2 {; u: h
复制代码
% E2 A' j6 i. G' m0 k3 t* R1 s
目前通讯正常) {& e. F6 v, G# z
总结:由于随意的参数定义,没有严格使用官方的宏定义,造成查找问题忽略了这个点,所以以后要尽量使用官方宏定义,保证程序的可移植,并且减少很容易被忽略的错误
9 z6 T4 X5 u% z4 A4 p/ w2 {0 h————————————————
# T/ [, s9 O6 d9 h1 E' b版权声明:xyang18
6 X; W' @4 _% q: z: E5 b

. j! a6 W% m& T3 @+ \( G, I* [$ c3 [
收藏 评论0 发布时间:2022-12-15 13:31

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版