OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 10857|回复: 2

求助HAL_I2C_Mem_Read的用法,硬件I2C,使用HAL

[复制链接]

9

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2015-1-30
在线时间
8 小时
发表于 2016-9-30 07:40:55 | 显示全部楼层 |阅读模式
10金钱
本帖最后由 weefnn 于 2016-9-30 08:12 编辑

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);
这个函数具体是怎么用的呢?原子用的是软件模拟的,现在需要用硬件I2C,这个函数不是非常明白,有使用过的网友吗?

(uint16_t  MemAddress, uint16_t MemAddSize,)这两个参数具体是什意思,如何使用?
它的操作时序是什么样的呢?是下面这个样子的吗?是读EEPROM 存储器的时序吗?
Master                               Slave
---------------------                  ------------------------
START
Slave Address + Write
                                       ACK
N (starting register)
                                       ACK
START (repeat)
Slave Address + Read
                                      ACK
                                      Data
ACK
                                     Data
NACK
STOP
*************************************************************************************************
附上该函数的HAL库解释,欢迎讨论感觉I2C用的还是很常见的。
/**
  * @brief  Read an amount of data in blocking mode from a specific memory address
  * @param  hi2c Pointer to a I2C_HandleTypeDef structure that contains
  *         the configuration information for I2C module
  * @param  DevAddress Target device address
  * @param  MemAddress Internal memory address
  * @param  MemAddSize Size of internal memory address
  * @param  pData Pointer to data buffer
  * @param  Size Amount of data to be sent
  * @param  Timeout Timeout duration
  * @retval HAL status
  */

手册上的解释是:
HAL_I2C_Mem_Read
Function Name 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)
Function Description Read an amount of data in blocking mode from a specific memory
address.
Parameters # hi2c: pointer to a I2C_HandleTypeDef structure that contains the configuration information for I2C module
           # DevAddress: Target device address
           # MemAddress: Internal memory address
           # MemAddSize: Size of internal memory address
           # pData: Pointer to data buffer
           # Size: Amount of data to be sent
           # Timeout: Timeout duration
Return values : HAL status


欢迎探讨!!!

最佳答案

查看完整内容[请看2#楼]

阻塞(非中断)方式的I2C读函数,硬件正确配置初始化完就可以用了。MemAddress:要读取设备的内部地址,例如EEPROM的内部存储地址;MemAddSize:要读取的数据的长度
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

50

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
314
金钱
314
注册时间
2013-7-19
在线时间
129 小时
发表于 2016-9-30 07:40:56 | 显示全部楼层
阻塞(非中断)方式的I2C读函数,硬件正确配置初始化完就可以用了。MemAddress:要读取设备的内部地址,例如EEPROM的内部存储地址;MemAddSize:要读取的数据的长度
回复

使用道具 举报

2

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2019-5-9
在线时间
10 小时
发表于 2019-9-4 16:23:08 | 显示全部楼层
queqiongtao 发表于 2016-9-30 07:40
阻塞(非中断)方式的I2C读函数,硬件正确配置初始化完就可以用了。MemAddress:要读取设备的内部地址,例 ...

HAL_I2C_Mem_Read_IT,请教一下这个函数的用法,开启中断之后,是不是要在回调函数里面发消息到前端的任务呢
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-16 07:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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