STM32
直播中

江根磊

7年用户 1065经验值
私信 关注
[问答]

STM32做IIC读写程序,利用HAL库对IIC读写遇到的疑问求解

最近在做IIC读写程序,用到HAL库,发现利用HAL库 对IIC读写问题,求助一下!

在HA库对IIC读写操作的2个库函数如下:

HAL_StatusTypeDef HAL_I2C_Mem_Write(I2C_HandleTypeDef *hi2c, uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize, uint8_t *pData, uint16_t Size, uint32_t timeout)



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)


我利用库函数对EEPROM的多字节读写做了实验如下:

HAL_StatusTypeDef EEPROM_WriteData(uint16_t MemAddr,uint8_t *pData,uint16_t Size)
{
        uint16_t i;
        HAL_StatusTypeDef sta;
        
        for(i=0;i

回帖(1)

杨诗琪

2024-4-24 09:56:32
HAL_Delay(1);
这一条延时很重要。
你在下面这三条之间必须加个延时。一般的EEPROM在发送完前一个停止位后,到下一个起始位开始之前,需要保证最大5ms的延时,最小多少得自己实际测试摸底。不知道你用的EEPROM需要多少延时。
HAL_I2C_Mem_Write( hi2c1,0XA0,0,I2C_MEMADD_SIZE_8BIT, Dat_Write[0],8,HAL_MAX_DELAY);//红色字体的8是表示连续读8个字节?
                   HAL_I2C_Mem_Write( hi2c1,0XA0,8,I2C_MEMADD_SIZE_8BIT, Dat_Write[8],8,HAL_MAX_DELAY);
                   HAL_I2C_Mem_Write( hi2c1,0XA0,16,I2C_MEMADD_SIZE_8BIT, Dat_Write[16],8,HAL_MAX_DELAY);
举报

更多回帖

发帖
×
20
完善资料,
赚取积分