I2C Master Driver Code.
2. 測試的硬體是使用STM32F072B Discovery Board + MPU6050 Sensor Board, I2C Clock =
400KHz.
3. 首先下載i2c_master.c & i2c_master.h, 並把它加入專案內.
4. 加入後, 接著就可以進行i2c init 和 read/write測試了, 如下面程式碼所示, 使用i2c write 對
mpu6050 初始化, 接著再使用i2c read 讀取 mpu6050 chip id.
/* I2C Init */ I2C_Master_Init(); /* I2C Test (mpu6050) */ uint8_t i2c_tmp = 0; // Reset device. i2c_tmp = 0x80; I2C_Write(0xD0, 0x6B, &i2c_tmp, 0x01); // Delay some time for(int i=0; i<2000; i++){__asm("nop");} // Wake up chip. i2c_tmp = 0x00; I2C_Write(0xD0, 0x6B, &i2c_tmp, 0x01); // Read chip id I2C_Read(0xD0, 0x75, &i2c_tmp, 0x01);
5. 可以從MPU6050 Datasheet看到, mpu6050 chip id的位址在0x75, 且chip id固定為0x68, 因此代表 i2c init 及 read chip id皆正常.
6. Logic analyzer 波形圖:
- I2C Write: (Reset device.)
- I2C Write: (Wake up chip.)
沒有留言:
張貼留言