Hi, I am working on a project using the STM32H730 with the M24C64 I2C EEPROM chip. In my project I am using the HAL_I2C_Mem_Write functions to load
而I2C分主从模式,不同I2C器件有不同的协议细节,在此基础还要向上支持SMBus/PMBus等协议,导致API冗杂。API大概可以按以下方式组合: 【主机/从机】-【序列】-【阻塞/中断/DMA】-【收/发】 其中主机模式特有【内存存取】模式 例如: HAL_I2C_Master_Transmit,为【主机阻塞方式普通发送】 HAL_I2C_Mem_Read_DMA,为...
在 HAL_I2C_Mem_Read 中观察到STM32I2C Hal 驱动程序中存在问题,但其他读取命令中可能存在相同问题。
readCplt =0;HAL_I2C_Mem_Read_IT(&hi2c1,0xa0, addr, I2C_MEMADD_SIZE_8BIT, &data,1);while(readCplt ==0);printf("addr : 0x%02x, data : 0x%02x\n", addr, data); }voidHAL_I2C_MemRxCpltCallback(I2C_HandleTypeDef *hi2c){ readCplt =1; }voidHAL_I2C_MemTxCpltCallback(I2C_Hand...
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 *...
I2C_HandleTypeDef hi2c; // I2C句柄 // 从PCF8563读取一个字节 uint8_t PCF8563_ReadByte(uint8_t reg) { uint8_t data; HAL_I2C_Mem_Read(&hi2c, PCF8563_ADDRESS, reg, I2C_MEMADD_SIZE_8BIT, &data, 1, HAL_MAX_DELAY); return data; ...
注意,在使用HAL_I2C_Mem_Write和HAL_I2C_Mem_Read函数时,我们需要指定外设地址、寄存器地址、数据长度等参数。 通过配置I2C硬件和编写相应的代码,我们可以轻松地实现在STM32上使用I2C接口进行外设通信的功能。读者可以根据需要选择合适的I2C接口和引脚,并根据具体的应用场景进行配置和定制。
STM32 HAL库硬件I2C 1. 介绍STM32 HAL库 STM32 HAL(Hardware Abstraction Layer)库是STMicroelectronics提供的一套硬件抽象层库,旨在简化STM32微控制器的编程。通过HAL库,开发者可以更容易地访问和控制微控制器的各种硬件资源,而不需要深入了解底层寄存器的操作。
HAL_I2C_Mem_Read( I2C_HandleTypeDef *hi2c, // 使用的 I2C 模块的 Handle 的指针 uint16_t DevAddress, // I2C 器件的地址,这里是 24C02 的地址 0xA0 uint16_t MemAddress, // 存储器内部地址 uint16_t MemAddSize, // 存储器内部地址位数 8BIT or 16BIT ?
uint8_t MPU_Read_Len(uint8_t reg,uint8_t len,uint8_t *buf) { HAL_I2C_Mem_Read(&hi2c1, MPU_READ, reg, I2C_MEMADD_SIZE_8BIT, buf, len, 0xfff); HAL_Delay(1); return 0; } //IIC写一个字节 //reg:寄存器地址 //data:数据 ...