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.)
沒有留言:
張貼留言