请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TM4C123GE6PM 主题中讨论的其他器件:TM4C123GH6PM
您好!
我正在尝试在 TM4C123G Launchpad 和具有 MPU6050的 GY52分线板之间进行通信。
传感器的 I2C SDA 连接到 PE4、SCL 连接到 PE5。
传感器由 Launchpad 的5V 引脚供电(LDO 将5V 转换为3.3V 以为 MPU6050供电)。
请参阅随附的照片:
蓝线:SDA
黑线:SCL
红线:5V VCC
绿线:GND
我测试了电路板的 LDO 是否正常工作、我测量的电压正好是3.3V。
我使用以下代码并在 CCS 中使用 F6逐行运行。
它会卡在具有 MPU6050Init 函数的线路上。
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #include #include /////////////////////////////////fc/////////////////////////////////////////////fc///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////fc/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //我的 I2C 定义并包括 #include "driverlib/i2c.h" #include "driverlib/interrv.h" #include "inc/hw_i2c.h" #include "sensorlib/i2cm_drv.h" #include "sensorlib/mpu6050.h"//// /////////////////////////////////////////////////////////////#////#//////////////////////////#//////////////////////////#/////////////////////////////////////////// #include "definitions _mpu6050.h" tI2CMInstance g_sI2CInst;// I2C 主驱动程序结构。 "tI2CMInstance"是在 i2cm_drv.h 文件中定义的。 tMPU6050 g_sMPU6050Inst;// MPU6050传感器驱动程序结构。 "tMPU6050"在 mpu6050.h 文件中定义。 volatile unsigned long g_vui8DataFlag;//数据就绪标志 volatile unsigned long g_vui8ErrorFlag;//错误标志 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// int main (void) { //配置时钟 SysCtlClockSet (SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTAL_16MHz|SYSCTL_OSC_MAIN); ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //我的 I2C 初始化代码 //启用包含 I2C 2的 GPIO 外设 SysCtlPeripheralEnable (SYSCTL_Periph_GPIOE); //启用 I2C 模块2 SysCtlPeripheralEnable (SYSCTL_Periph_I2C2); //为端口 E4和 E5上的 I2C2功能配置引脚多路复用。 GPIOPinConfigure (GPIO_PE4_I2C2SCL); GPIOPinConfigure (GPIO_PE5_I2C2SDA); //为这些引脚选择 I2C 功能。 GPIOPinTypeI2CSCL (GPIO_Porte _BASE、GPIO_PIN_4); GPIOPinTypeI2C (GPIO_Porte _BASE、GPIO_PIN_5); IntMasterEnable(); I2CMInit (&g_sI2CInst、I2C2_base、INT_I2C2、0xFF、0xFF、 SysCtlClockGet (); SysCtlDelay (SysCtlClockGet ()/3); fAccel[3]、fGyro[3]; //如果 MPU6050Init 成功,USER_MPU6050Callback 会将 g_BMPU6050Done 变量修改为 true。 G_bMPU6050Done = false; //初始化 MPU6050 MPU6050Init (&g_sMPU6050Inst、&g_sI2CInst、MPU6050_I2C_address、USER_MPU6050Callback、&g_sMPU6050Inst); while (!g_bMPU6050Done){} //如果 MPU6050ReadModifyWrite 成功,USER_MPU6050Callback 会将 g_BMPU6050Done 变量修改为 true。 G_bMPU6050Done = false; //将 MPU6050配置为+/- 4 g 加速计范围。 MPU6050ReadModifyWrite (&G) sMPU6050Inst、MPU6050_O_ACCEL_CONFIG、~MPU6050_ACCEL_CONFIG_AFS_SEL_M、MPU6050_ACCEL_CONFIG_AFS_SEL_4G、USER_MPU6050Callback、 0); while (!g_bMPU6050Done){} while (1) { } }