Step 1, 把 I2C 地址改为跟我们硬件一致: Step 2, 根据实际使用的 I2C 模块和引脚进行配置: Step 3, 把地址模式改为 7BIT: Step 4, 操作EEPROM,我们不使用例子中的 HAL_I2C_Master_Transmit 和 HAL_I2C_Master_Receive,这两个函数适用于两个 I2C 器件之间进行数据传输。我们这里要用的是下面这两个函数:...
hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; hi2c1.Init.OwnAddress2 = 0; hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; if (HAL_I2C_Init(&hi2c1) != HAL_OK) { ...
HAL_I2C_Mem_Read(),用于从从设备的指定内存地址读取数据。4. 提供使用STM32 HAL库进行硬件I2C通信的基本步骤 使用STM32 HAL库进行硬件I2C通信的基本步骤如下: 配置I2C接口:使用CubeMX或手动配置I2C接口的参数,如时钟速度、地址模式等。 初始化I2C接口:在代码中调用HAL_I2C_Init()函数初始化I2C接口。 编写数据发...
staticuint8_tram[256];// 模拟I2C从机数据寄存器(主机读写的数据都放在这块内存)uint8_toffset;// 从机寄存器当前偏移地址staticuint8_tfirst_byte_state=1;// 是否收到第1个字节,也就是偏移地址(0:已收到,1:没有收到)// 侦听完成回调函数(完成一次完整的i2c通信以后会进入该函数)voidHAL_I2C_ListenCpl...
Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;/*指定禁止时钟延长模式*/HAL_I2C_Init(&hi2c1);...
i2c_read_sda() HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_1)1819externuint32_t delay1us;2021voiddelay_1us(uint32_t delay_1us);2223voidanalog_i2c_delay(void);2425voidbsp_analog_i2c_init(void);2627voidbsp_analog_i2c_start(void);2829voidbsp_analog_i2c_stop(void);3031uint8_t bsp_analog_i2c_...
HAL_I2C_Master_Receive(I2C_HandleTypeDef*hi2c,uint16_t DevAddress,uint8_t*pData,uint16_t Size,uint32_t Timeout); 功能:IIC读一个字节参数: *hi2c:设置使用的是那个IIC 例:&hi2c2 DevAddress:写入的地址 设置写入数据的地址 例 0xA0
intmain(void){// 初始化HAL库HAL_Init();// 配置系统时钟SystemClock_Config();// 初始化所有外设MX_GPIO_Init(); MX_I2C1_Init();// 要读取的数据uint8_tdata[2];uint8_treg =0x10;// 例如寄存器地址// 读取寄存器数据if(I2C_ReadRegister(I2C_ADDRESS, reg, data,2) == HAL_OK) {// 成功...
使用cubemx配置好对应的参数,可自动生成初始代码MX_I2C1_Init(),大致流程如下 1.声明I2C的初始化结构体I2C_HandleTypeDef,并赋值 2.调用HAL_I2C_MspInit函数 3.配置好相就应的通信速度,地址模式等参数 4.如果使中断或者DMA时也在初始化参数中配置好