我能';t从STM32F103上的mpu6050使用I2C获取数据

我能';t从STM32F103上的mpu6050使用I2C获取数据,stm32,i2c,mpu6050,Stm32,I2c,Mpu6050,我是新的I2C通讯。我检查了一些正在运行的代码。我使用了他们的功能。但是我不能得到任何数据。我想知道I2C是否必须进行初始配置?问题在哪里。这是我写的函数: void GetI2CAccelerator(uint8\u t slaveAddress,uint8\u t AccelerData[6]) { //slaveAddress=0x68(默认地址写入数据表) HAL_I2C_Master_传输(&hi2c1,slaveAddress首先,最好使用DMA或IT数据交换。轮询不好,但可以

我是新的I2C通讯。我检查了一些正在运行的代码。我使用了他们的功能。但是我不能得到任何数据。我想知道I2C是否必须进行初始配置?问题在哪里。这是我写的函数:

void GetI2CAccelerator(uint8\u t slaveAddress,uint8\u t AccelerData[6])
{   
//slaveAddress=0x68(默认地址写入数据表)

HAL_I2C_Master_传输(&hi2c1,slaveAddress首先,最好使用DMA或IT数据交换。轮询不好,但可以进行测试

您必须将指针指向数据,而不是数据本身。良好的做法如下:

void GetI2C加速计(I2C_HandleTypeDef*hi2c,uint8_t slaveAddress,uint8_t*AccelerData,大小){
uint8_t请求=0x3B;
//slaveAddress=0x68(默认地址写入数据表)
//HAL_I2C_Master_传输(I2C_HandletTypeDef*hi2c、uint16_t DevAddress、uint8_t*pData、uint16_t大小、uint32_t超时)

虽然(HAL_I2C_Master_Transmission,hi2c,slaveAddress)I2C和GPIO的初始化代码是什么?您是否连接了I2C的正确上拉。是否有数据从管脚流出或完全没有发生任何事情?我编辑了初始I2C代码。我在主函数中编写了此代码:HAL_I2C_Init(&hi2c1);mpu6050直接连接到stm32。我没有使用任何电阻器。我看的地方没有电阻器。我应该连接吗?@Alperen,是的,你必须使用上拉电阻器。通常3.3K用于3.3V电源的短线是很好的选择。另外,什么是
HAL_I2C_Mem_Read
用于?这是使用I2C内存芯片的特殊功能。请尝试redu将速度提高到88000。在STM32s上i2c很奇怪。我使用了5k上拉电阻器。Vcc是5v。我把它们放在Vcc到sda,Vcc到scl之间。但是你的代码卡在这里:if(i2c_WaitOnFlagUntilTimeout(hi2c,i2c_标志忙,SET,i2c超时_忙,tickstart)!=HAL_OK){return HAL_BUSY;}在HAL_I2C_Master_Transmit()中function@Alperen,STM32和5V电源?@Alperen,仔细检查连接。看起来有人按住了线路。检查设备地址,它是由AD0引脚设置的。地址可能是0x68或0x69。我刚刚尝试了3.3v和3.2k,但仍然无法工作