This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSP-EXP432E401Y:我使用 MSP432E401Y 从 MPU6050传感器读取数据、但不显示任何内容。

Guru**** 2534260 points
Other Parts Discussed in Thread: MSP432E401Y, SYSCONFIG

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1317220/msp-exp432e401y-i-used-msp432e401y-to-read-data-from-the-mpu6050-sensor-but-nothing-displayed

器件型号:MSP-EXP432E401Y
主题中讨论的其他器件:MSP432E401YSysConfig

大家好!

我刚刚为  MSP432E401Y 编写了 C 代码、以从 MPU6050传感器读取数据。 生成代码并刷写、没有错误。

按如下方式将 MPU6050直接配置为支持 I2C 的 MSP432E401Y:



VCC --V3V

GND ----- 接地

SCL -------- 项目2

SDA ----------------------------------------------------- 项目3

我使用 PuTTY 进行 UART 显示

它应该显示加速计、陀螺仪和温度、  但遗憾的是、我没有看到任何显示结果  


以下是代码的某些部分、用于显示有关传感器数据的信息。

// I2C 配置
I2C_Params_init (&mpu6050Params);
mpu6050Params.bitrate = I2C_400kHz;
mpu6050Params.transferMode = I2C_MODE_BLOCKING;
mpu6050Handle = I2C_open (CONFIG_I2C_0、&mpu6050Params);

MPU6050_Reset ();

while (1)
{
MPU6050_ReadData (accel_data、gyro_data、&temperature);

//在 UART 上显示传感器数据

display_print3 (uartHandle、0、0、"Accelerometer X_axis=%d Y_axis=%d Z_axis=%d\r\n"、accel_data[0]、accel_data[1]、accel_data[2]);
Display_print3 (uartHandle、1、0、"Gyroscope X_axis=%d Y_axis=%d Z_axis=%d\r\n"、gyro_data[0]、gyro_data[1]、gyro_data[2]);
Display_printf (uartHandle、2、0、"Temperature =%.2f°C\r\n "、(float)(temperature /340.0)+ 36.53);

//睡眠时间较短(根据需要调整)
usleep (100000);//睡眠100,000微秒(0.1秒)

 
 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    设置断点以确保获得数据。

    "你好,是我的孩子啊!" 以便确保您在发送串行数据?

    在 I2C 线路上放置一个示波器、以确保有活动。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

     在 Keith 的反馈之外、还请检查您的终端窗口和 UART0设置之间的波特率、停止位是否正确、并且没有奇偶校验。  

     我想您在 uartHandle 上有一个有效的句柄。 是这样吗? 您需要确保获取有效的 uartHandle。 您是否在打开 UART 显示屏之前调用了 Display_init ()?

     请参考 C:\ti\simplelink_msp432e4_sdk_4_20_00_12\examples\rtos\MSP_EXP432E401Y\drivers\i2ctmp 中的示例。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    下面是规范:

    #包含
    #包含
    #包含
    #包含
    #包含
    #包含
    #包含
    #include "ti_drivers_config.h"

    //声明为读取数据声明全局变量
    I2C_Params mpu6050Params;
    I2C_Handle mpu6050Handle;
    I2C_Transaction mpu6050Transaction ={0};

    void MPU6050_Reset ();
    void MPU6050_ReadData (int16_t accel_data[3]、int16_t gyro_data[3]、int16_t *温度);

    #define MPU6050_ADDRESS (0x68)//更正了定义

    void *mainThread (void *arg0)
    {
    int16_t accel_data[3]、gyro_data[3]、温度;

    /*调用驱动程序初始化函数*/
    GPIO_init ();
    display_init();
    I2C_init ();

    //初始化显示参数
    Display_Params uartParams;
    Display_Handle uartHandle;
    Display_Params_(&uartParams);
    uartHandle = Display_open (Display_Type_、&uartParams);

    // I2C 配置
    I2C_Params_init (&mpu6050Params);
    mpu6050Params.bitrate = I2C_400kHz;
    mpu6050Params.transferMode = I2C_MODE_BLOCKING;
    mpu6050Handle = I2C_open (CONFIG_I2C_0、&mpu6050Params);

    MPU6050_Reset ();

    while (1)
    {
    MPU6050_ReadData (accel_data、gyro_data、&temperature);


    //在 UART 上显示传感器数据
    display_print3 (uartHandle、0、0、"Accelerometer X_axis=%d Y_axis=%d Z_axis=%d\r\n"、accel_data[0]、accel_data[1]、accel_data[2]);
    Display_print3 (uartHandle、1、0、"Gyroscope X_axis=%d Y_axis=%d Z_axis=%d\r\n"、gyro_data[0]、gyro_data[1]、gyro_data[2]);
    Display_printf (uartHandle、2、0、"Temperature =%.2f°C\r\n "、(float)(temperature /340.0)+ 36.53);


    //睡眠时间较短(根据需要调整)
    usleep (100000);//睡眠100,000微秒(0.1秒)

    空 MPU6050_Reset ()
    {
    uint8_t writeData[]={0x68};//发送复位命令时发送正确的地址
    mpu6050Transaction.slaveAddress = MPU6050_address;
    mpu6050Transaction.writeBuf = writeData;
    mpu6050Transaction.writeCount = 1;
    I2C_TRANSMIT (mpu6050Handle、&mpu6050Transaction);

    void MPU6050_ReadData (int16_t accel_data[3]、int16_t gyro_data[3]、int16_t *温度)
    {
    uint8_t writeData;
    uint8_t ReadData[6];

    //读取加速度数据
    writeData = 0x3B;//唤醒器件并发送 X 轴数据的寄存器地址
    mpu6050Transaction.slaveAddress = MPU6050_address;
    mpu6050Transaction.writeBuf =&writeData;
    mpu6050Transaction.writeCount = 1;
    mpu6050Transaction.readBuf = ReadData;
    mpu6050Transaction.ReadCount = 6;
    I2C_TRANSMIT (mpu6050Handle、&mpu6050Transaction);

    ACCEL_DATA[0]=((ReadData[0]<<8)| ReadData[1]);// x 轴数据
    ACCEL_DATA[1]=((ReadData[2]<< 8)| ReadData[3]);// y 轴数据
    ACCEL_DATA[2]=((ReadData[4]<<8)| ReadData[5]);// z 轴数据

    //读取陀螺仪数据
    writeData = 0x43;//发送 X 轴速率分频比的寄存器地址
    mpu6050Transaction.slaveAddress = MPU6050_address;
    mpu6050Transaction.writeBuf =&writeData;
    mpu6050Transaction.writeCount = 1;
    mpu6050Transaction.readBuf = ReadData;
    mpu6050Transaction.ReadCount = 6;
    I2C_TRANSMIT (mpu6050Handle、&mpu6050Transaction);

    gyro_data[0]=((ReadData[0]<<8)| ReadData[1]);// x 轴数据
    gyro_data[1]=((ReadData[2]<<8)| ReadData[3]);// y 轴数据
    gyro_data[2]=((ReadData[4]<<8)| ReadData[5]);// z 轴数据

    //读取温度数据
    writeData = 0x41;//发送温度数据的寄存器地址
    mpu6050Transaction.slaveAddress = MPU6050_address;
    mpu6050Transaction.writeBuf =&writeData;
    mpu6050Transaction.writeCount = 1;
    mpu6050Transaction.readBuf = ReadData;
    mpu6050Transaction.ReadCount = 2;
    I2C_TRANSMIT (mpu6050Handle、&mpu6050Transaction);

    *temperature =(((ReadData[0]<< 8)| ReadData[1]);//将两个字节合并为一个整数值




    以下是我的配置  

    ////________________________________

    SysConfig 上的 I2C

    SysConfig 中的 UART

    显示

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

     您是否尝试过 我提到的 i2ctmp 示例? 即使不使用 BoosterPack 来运行该示例、该示例也至少会打印到终端上。 请参阅以下代码行、其中将显示消息"Starting the i2ctmp examples"

    display_printf (display、0、0、"starting the i2ctmp example\n");

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的、我尝试了 i2ctmp、并且它们都起作用。 谢谢你。