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.

[参考译文] LAUNCHXL-CC1312R1:Sensor Controller Studio

Guru**** 2595805 points
Other Parts Discussed in Thread: LAUNCHXL-CC1312R1

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

https://e2e.ti.com/support/tools/simulation-hardware-system-design-tools-group/sim-hw-system-design/f/simulation-hardware-system-design-tools-forum/1369412/launchxl-cc1312r1-sensor-controller-studio

器件型号:LAUNCHXL-CC1312R1

工具与软件:

如果在工作台上使用 LAUNCHXL-CC1312R1和 TDK InvenSense ICM -20689 6轴 MEM 分线板、在尝试访问传感器的所有12个寄存器时会出现以下错误、并且最多只能访问6个寄存器而没有错误。  在运行任务测试图时、如何修改以下代码以访问所有12个寄存器(如果可能)并同时查看 accel 和 gyro?

////////////////////////////////////////////////////////////// ERROR///////////////////////////////////////////////////

错误:并发寄存器变量过多、冲突涉及:accelZ_LSB、accelY、accelX、gyroZ_LSB、 回转 Z_MSB、回转 Y_LSB、回转 Y_MSB、回转 X_LSB、回转 X_MSB、 accelZ_msb、accelY_LSB、accelY_MSB、accelX_LSB、accelX_MSB、 accelZ

////////////////////////////////////////////////////////////////// Sensor Controller Studio 代码////////////////////////////////////////////

U16 accelX_MSB;
U16 accelX_LSB;
U16 accelY_MSB;
U16 accelY_LSB;
U16 accelZ_MSB;
U16 accelZ_LSB;

U16 gyroX_MSB;
U16 gyroX_LSB;
U16 gyroY_MSB;
U16 gyroY_LSB;
U16 gyroZ_MSB;
U16 gyroZ_LSB;

i2cDeviceWriteReg8((ICM20689_I2C_ADDR << 1), ICM20689_WHO_AM_I, 0x98);
i2cDeviceWriteReg8((ICM20689_I2C_ADDR << 1), PWR_MGMT_1, 0x00);

i2cDeviceReadReg8((ICM20689_I2C_ADDR << 1), ACCEL_XOUT_H; accelX_MSB); 
i2cDeviceReadReg8((ICM20689_I2C_ADDR << 1), ACCEL_XOUT_L; accelX_LSB);
i2cDeviceReadReg8((ICM20689_I2C_ADDR << 1), ACCEL_YOUT_H; accelY_MSB); 
i2cDeviceReadReg8((ICM20689_I2C_ADDR << 1), ACCEL_YOUT_L; accelY_LSB);
i2cDeviceReadReg8((ICM20689_I2C_ADDR << 1), ACCEL_ZOUT_H; accelZ_MSB); 
i2cDeviceReadReg8((ICM20689_I2C_ADDR << 1), ACCEL_ZOUT_L; accelZ_LSB);
i2cDeviceReadReg8((ICM20689_I2C_ADDR << 1), GYRO_XOUT_H; gyroX_MSB);
i2cDeviceReadReg8((ICM20689_I2C_ADDR << 1), GYRO_XOUT_L; gyroX_LSB);
i2cDeviceReadReg8((ICM20689_I2C_ADDR << 1), GYRO_YOUT_H; gyroY_MSB); 
i2cDeviceReadReg8((ICM20689_I2C_ADDR << 1), GYRO_YOUT_L; gyroY_LSB);
i2cDeviceReadReg8((ICM20689_I2C_ADDR << 1), GYRO_ZOUT_H; gyroZ_MSB); 
i2cDeviceReadReg8((ICM20689_I2C_ADDR << 1), GYRO_ZOUT_L; gyroZ_LSB);

U16 accelX = (accelX_MSB << 8) | accelX_LSB;
U16 accelY = (accelY_MSB << 8) | accelY_LSB;
U16 accelZ = (accelZ_MSB << 8) | accelZ_LSB;
U16 gyroX = (gyroX_MSB << 8) | gyroX_LSB;
U16 gyroY = (gyroY_MSB << 8) | gyroY_LSB;
U16 gyroZ = (gyroZ_MSB << 8) | gyroZ_LSB;

output.ax = accelX;
output.ay = accelY;
output.az = accelZ;
output.gx = gyroX;
output.gy = gyroY;
output.gz = gyroZ;

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

    我建议您检查 I2C 的状态字节、以尝试确定 I2C 通信中是否发生错误(有关详细信息、请参阅 Sensor Controller Studio 帮助文档)

    此外、由于很难调试传感器控制器代码、因此最好首先在主处理器上实施代码、确保您能够在预期的情况下使所有内容正常工作、然后在一切正常运行后将代码移植到传感器控制器。

    此外、您应使用逻辑分析仪监控 I2C 线路、以了解总线发生故障时实际发生的情况。

    Siri

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

    谢谢、Siri。

    硬件调试似乎没有问题。  逻辑分析仪结果显示、我正在获取连接到器件(F12)并持续运行任务迭代(F5)时所需的内容。  

    这是 Sensor Controller Studio 中的"执行代码"错误。

    我是一个初学者、所以我想确定一下我的 代码是否有问题、它不处理全部12个传感器寄存器 、而只处理其中6个传感器寄存器。

    -德里克

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

    德里克·赫利

    您是否可以将您的传感器控制器项目发送给我、以便我可以尝试在最后重现问题?

    如果 您不想在论坛上分享您的密码,请给我发送一个朋友的请求,您可以直接分享给我。

    除导致问题的 I2C 部分外、请从工程中删除所有其他内容。

    Siri

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

    在代码中、为什么要将 U16变量传递给 i2cDeviceReadReg8?

    原型:

    i2cDeviceReadReg8 (#i2cAddr、regAddr8;value8)

    Siri

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

    你好、Siri。

    感谢您的答复。

    我 将 accel 和 gyro 寄存器读数移到了 i2cstart()和 i2cstop()中,现在它可以正常工作了。

    -德里克