本帖最后由 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 地址选择(这里接地了) |
STM32F407 定时器触发DMA 求助大神
【MCU实战经验】基于STM32F407的音频播放器设计
盘古UE-STM32F407工控板原理图
【STM32F429心得\疑问】+STM32F4之FSMC和FMC
STM32F429读取IO口传输的数据速率
STM32F407ZGT6 手摸芯片背部重启
STM32F4 SPI 动作时,软件片选信号被拉高,IO口程序逻辑失控
STM32F401RE NUCLEO求助,串口一直不能进中断
读取STM32F407内部温度传感器值错误
STM32F429多路内部ADC独立采集的办法
这个板子的I2C我用过,同样的配置,接口;接的是一个别的设备,都工作的好好的。。。