初级会员

- 积分
- 103
- 金钱
- 103
- 注册时间
- 2015-1-30
- 在线时间
- 8 小时
|
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:要读取的数据的长度
|