使能I2C时钟 (CLK_PeripheralClockConfig函数) 初始化总线参数 (I2C_Init函数) 通信频率、I2C模式(Master/Slave/DMA)、Duty、Ack自动、地址类型(7/10) 用其他设定函数重新设置或者enable选项(无需再次调用I2C_init()函数) 如果使用中断模式,开中断(I2C_ITConfig函数) 如果使用DMA,做DMA相关设置(DMA_Init/I2C_DMALa...
I2C_AcknowledgeConfig(I2C1, ENABLE); 函数I2C_ GenerateSTOP 函数名 I2C_ GenerateSTOP 函数原形 void I2C_GenerateSTOP(I2C_TypeDef* I2Cx, FunctionalState NewState) 功能描述 产生 I2Cx 传输 STOP 条件 输入参数 1 I2Cx:x 可以是 1 或者 2,来选择 I2C 外设 输入参数 2 NewState: I2Cx STOP 条件的新...
void I2C_init(uint32_t I2Cx){ GPIO_Configuration_I2C(I2Cx); i2c_clock_config(I2Cx, 400000, I2C_DTCY_2); /* I2C address configure */ i2c_mode_addr_config(I2Cx, I2C_I2CMODE_ENABLE, I2C_ADDFORMAT_7BITS, 0); /* enable acknowledge */ i2c_ack_config(I2Cx, I2C_ACK_DISABLE); /...
I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_BYTE_RECEIVED))/* BUSY, MSL and RXNE flags */ { //防止超时 count++; if(count == I2CTimeOut) { I2C_GenerateSTOP(I2C1,ENABLE); return -5; //没有产生EV7事件,导致超时返回 -5 } } //8.发送非应答信号 I2C_AcknowledgeConfig(I2C1,DISABLE); //9....
uint16_t I2C_Ack; /*!< Enables or disables the acknowledgement. This parameter can be a value of @ref I2C_acknowledgement */ uint16_t I2C_AcknowledgedAddress; /*!< Specifies if 7-bit or 10-bit address is acknowledged. This parameter can be a value of @ref I2C_acknowledged_address */...
i2c_master_write_byte(cmd, (ESP_SLAVE_ADDR << 1) | I2C_MASTER_READ, ACK_EN);二、实现步骤 1. 配置 I2C 总线:确保 I2C 总线的配置正确,包括引脚定义、时钟速率等。#define CONFIG_I2C_MASTER_SDA 21 // SDA引脚#define CONFIG_I2C_MASTER_SCL 22 // SCL引脚#define CONFIG_I2C_MASTER_FREQ_HZ ...
=SUCCESS);//等待EV5事件发生I2C_Send7bitAddress(I2C2 , MPU6050_Address , I2C_Direction_Receiver);//发送7位地址从机地址While (I2C_CheckEvent (I2C2,I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED)!=SUCCESS);//等待从机EV6事件发生//接收一个数据之前就要提前设置好ACK位和STOP位I2C_AcknowledeConfig(I2C2,...
// 重新配置Ack使能,以便下次通讯 I2C_AcknowledgeConfig(EEPROM_I2C, ENABLE); } 接下来,就是硬件i2c要注意的几个地方。事实上,直接按如下代码操作,程序会直接卡死: int main(void) { uint8_t readData[10] = {0}; USART_config(); I2C_EE_config(); ...
I2C_AcknowledgeConfig(CW_I2C1,ENABLE);//读取数据超过1个字节才发送ACK } break; case 0x50: //接收完一字节数据,在接收最后1字节数据之前设置AA=0; u8Recdata[u8RecvLen++] = I2C_ReceiveData(CW_I2C1); if(u8RecvLen==READLEN-1) { I2C_AcknowledgeConfig(CW_I2C1,DISABLE);; ...