请问呢I2C中HAL_I2C_Mem_Write的一个参数

MemAddSize请问是什么意思?
已邀请:

Sphinx

赞同来自: A GUNSLINGER

是内存地址大小,有八位,有十六位 看你控制的器件要求

admin

赞同来自: A GUNSLINGER

/**
* @brief Write an amount of data in blocking mode to 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
*/
每个函数上面都有相应参数的注释

老发

赞同来自:

MemAddress是接收用的缓冲地址吗?还是外部目标存储器的地址?

发送用的是指针,接收用的又不是指针,搞得不好理解搞了一天,用不转这个HAL的IIC,用模拟的不到30分钟就搞定了


admin

赞同来自: A GUNSLINGER

/**
* @brief Write an amount of data in blocking mode to 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 目标器件地址,比如24c02的读地址为0xA1,写地址为0xA0
* @param MemAddress: Internal memory address 寄存器地址,比如你要写数据从24c02的第2个字节开始,那么就是0x02,要完整的写入所有的寄存器那么就从0x00开始写入
* @param MemAddSize: Size of internal memory address 准备写入的寄存器大小,比如24c02你要写入2K个字节那么就是0x800
* @param pData: Pointer to data buffer 指向数据(数组)的指针,这里存放了你准备写入的一系列数据..
* @param Size: Amount of data to be sent 准备写入的数据数量,比如你只准备写入10个,就是0x0a
* @param Timeout: Timeout duration 超时时间,如果在给定时间没收到ack则超时退出写入
* @retval HAL status
*/


nideyangzi2046

赞同来自: BG4RFF bardeen

* @brief Write an amount of data in blocking mode to 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 目标器件地址,比如24c02的读地址为0xA1,写地址为0xA0
* @param MemAddress: Internal memory address 寄存器地址,比如你要写数据从24c02的第2个字节开始,那么就是0x02,要完整的写入所有的寄存器那么就从0x00开始写入
* @param MemAddSize: Size of internal memory address 准备写入的寄存器大小,比如24c02你要写入2K个字节那么就是0x800
* @param pData: Pointer to data buffer 指向数据(数组)的指针,这里存放了你准备写入的一系列数据..
* @param Size: Amount of data to be sent 准备写入的数据数量,比如你只准备写入10个,就是0x0a
* @param Timeout: Timeout duration 超时时间,如果在给定时间没收到ack则超时退出写入
* @retval HAL status
*/

MemAddSize 指的是内存寄存器数据格式 有I2C_MEMADD_SIZE_8BIT 以及 I2C_MEMADD_SIZE_16BIT

bardeen

赞同来自:

楼上admin对MemAddSize的注释是错的,根本就没理解对英文注释的意思!

MemAddSize指的是寄存器地址类型;

只能取I2C_MEMADD_SIZE_8BIT 或者 I2C_MEMADD_SIZE_16BIT;

参看“stm32f1xx_hal_i2c.h”第272行和“stm32f1xx_hal_i2c.c”第5016行;

搜狗截图20181107164120.jpg

222222.jpg

要回复问题请先登录注册