yygk 发表于 2015-10-20 15:33:21

STM32F407 Discovery + MPU6050 I2C 不工作

本帖最后由 yygk 于 2015-10-20 15:41 编辑

各位大侠,
最近接触STM32,想着把MPU6050这种小板接上来小练习一下,但是I2C一直调不通,不知为何,老是AF错误。
Transmit一开始就fail了,老是报AF错误HAL_I2C_ERROR_AF。有玩过的不?

上来读一下deviceID =MPU6050_Read_1BYTE((0x68<<1), 0x75);

unsigned char MPU6050_Read_1BYTE(unsigned char SlaveAddress,unsigned char REG_Address) {
   HAL_StatusTypeDef status;
   uint8_t data;

status = HAL_I2C_Master_Transmit(&hi2c1, SlaveAddress, ®_Address, 1, 1000);
if(status != HAL_OK) {
   printf("I2C transmit error\n\r");
}

   status = HAL_I2C_Master_Receive(&hi2c1, SlaveAddress, (uint8_t*)&data, 1, 1000);
if(status != HAL_OK) {
   printf("I2C read 1 byte error\n\r");
}

return (unsigned char)data;
}
这个是I2C配置:
void MX_I2C1_Init(void)
{
hi2c1.Instance = I2C1;
hi2c1.Init.ClockSpeed = 100000;
hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
hi2c1.Init.OwnAddress1 = 0;
hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLED;
hi2c1.Init.OwnAddress2 = 0;
hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLED;
hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLED;
HAL_I2C_Init(&hi2c1);
}

void HAL_I2C_MspInit(I2C_HandleTypeDef* hi2c)
{
GPIO_InitTypeDef GPIO_InitStruct;
if(hi2c->Instance==I2C1)
{
/* USER CODE BEGIN I2C1_MspInit 0 */
/* USER CODE END I2C1_MspInit 0 */

    /**I2C1 GPIO Configuration   
    PB6   ------> I2C1_SCL
    PB7   ------> I2C1_SDA
    */
    GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;
    GPIO_InitStruct.Alternate = GPIO_AF4_I2C1;
    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
    /* Peripheral clock enable */
    __I2C1_CLK_ENABLE();
/* USER CODE BEGIN I2C1_MspInit 1 */
/* USER CODE END I2C1_MspInit 1 */
}
}

小板子图片就不上了,用的比较常见的淘宝小板,接口如下:
VCC 3.3v
GND 接地
SCL I2C 的时钟
SDA I2C 数据
XDA 可不接
XCL 可不接
AD0 mpu6050 地址选择(这里接地了)



你好我好大家好! 发表于 2015-10-20 17:24:55

:):):):):):):):):):)

alisa123 发表于 2015-10-20 19:09:02

没有过F4的,F030的I2C刚调试过,感觉还行!

wambob 发表于 2015-10-20 21:07:38

用模拟I2C吧

yygk 发表于 2015-10-22 09:29:22

wambob 发表于 2015-10-20 21:07
用模拟I2C吧

这个板子的I2C我用过,同样的配置,接口;接的是一个别的设备,都工作的好好的。。。
页: [1]
查看完整版本: STM32F407 Discovery + MPU6050 I2C 不工作