请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号: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)
{
}
}
