}voidHAL_I2C_MemRxCpltCallback(I2C_HandleTypeDef *hi2c){ readCplt =1; }voidHAL_I2C_MemTxCpltCallback(I2C_HandleTypeDef *hi2c){ writeCplt =1; } 四、其他方式 当然HAL的I2C库还提供了很多其他的API函数,对AT24C02来说,读操作可以将前面写地址,与后面读操作分开来操作,并用相应的API来完成。 可以...
Step 1, 把 I2C 地址改为跟我们硬件一致: Step 2, 根据实际使用的 I2C 模块和引脚进行配置: Step 3, 把地址模式改为 7BIT: Step 4, 操作EEPROM,我们不使用例子中的 HAL_I2C_Master_Transmit 和 HAL_I2C_Master_Receive,这两个函数适用于两个 I2C 器件之间进行数据传输。我们这里要用的是下面这两个函数:...
使用HAL_I2C_Mem_Write等于先使用HAL_I2C_Master_Transmit传输第一个寄存器地址,再用HAL_I2C_Master_Transmit传输写入第一个寄存器的数据。可以传输多个数据 代码语言:javascript 代码运行次数:0 运行 AI代码解释 voidSingle_WriteI2C(uint8_t REG_Address,uint8_t REG_data){uint8_t TxData[2]={REG_Address,RE...
本书配套的开发板上就配备了一个I2C接口的EEPROM芯片AT24C02,该芯片来自ATMEL公司。值得注意的是,市面上还有其他厂商生产的与AT24C02引脚和功能完全兼容的芯片,本书中将这些芯片统称为24C02。开发板上的24C02芯片通过STM32F407微控制器的I2C1接口进行连接。具体而言,其SCL引脚与MCU的I2C1_SCL引脚PB8相连,而SDA引...
I2C(IIC,Inter-Integrated Circuit)总线是由Philips公司开发的一种简单、双向二线制同步串行总线。 它只需要两根线即可在连接于总线上的器件之间传送信息。 主器件用于启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件。
MX_I2C2_Init();while(AT24CXX_Check()){ printf("AT24C02 Checked Failed!\r\n");HAL_Delay(...
开发板上有一个I2C接口的EEPROM芯片AT24C02,是ATMEL公司的产品。因为其他一些厂家的芯片与AT24C02引脚和...
I2CWriteBuffer()是自定义的任意字节写入I2C-AT24C02的函数,I2CReadBuffer()是任意字节读写函数。这两个函数的实现采用HAL库的这两个函数: 1)HALStatusTypeDef HALI2CMemWrite(I2CHandleTypeDef *hi2c, uint16t DevAddress, uint16t MemAddress, uint16t MemAddSize, uint8t *pData, uint16t Size, uint32_t...
关于EEPROM存储器,请参考“常用存储器介绍”章节,实验中的EEPROM,请参考其规格书《AT24C02》来了解。 22.1.I2C协议简介¶ I2C 通讯协议(Inter-Integrated Circuit)是由Phiilps公司开发的,由于它引脚少,硬件实现简单, 可扩展性强,不需要USART、CAN等通讯协议的外部收发设备,现在被广泛地使用在系统内多个集成电路(I...
然后在at24c02_i2c_drv.c中引入i2c.h,基于HAL提供的硬件IIC操作函数,编写AT24C02的一些底层函数,如下。 任意地址写一个字节 根据AT24C02的数据手册可知,AT24C02写一个字节的格式如下: 编写的函数如下: /** * @brief AT24C02任意地址写一个字节数据 * @param addr —— 写数据的地址(0-255) * @param dat —...