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.

[参考译文] TMAG3001:MAG_RESULT 和 ANGLE_RESULT 寄存器在读取 X、Y 和 Z 测量值时返回零

Guru**** 2465890 points
Other Parts Discussed in Thread: TMAG3001

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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/1552668/tmag3001-mag_result-and-angle_result-registers-returning-zero-although-reading-x-y-and-z-measurements

器件型号:TMAG3001


工具/软件:

您好!

我遇到的问题是、我的 TMAG3001 中的 MAG_RESULT 和 ANGLE_RESULT 寄存器都始终返回 零值。 即使 我通过 I2C 从 GET 测量 X、Y 和 Z 接收到合理的值、也会发生这种情况。

我将代码设置为与 TI 网站上 TMAG3001 代码示例中的 RESULT_READ_CALCULATION_EXAMPLE 相同: www.ti.com/.../1.0.0

编码器的配置方式如下:

  // ***** Configure encoder *****
  TMAG3001enableMagChannels(&hi2c1,MAG_CH_EN_XYZ);                // Configure MAG_CH_EN bits to enable magnetic channels
  TMAG3001enableAngleMeasurement(&hi2c1,ANGLE_EN_X1stZ2nd);       // Configure ANGLE_EN bits to enable angle calculations (X an Z axis)
  TMAG3001setRanges(&hi2c1, RANGE_80mTor240mT, RANGE_80mTor240mT); // Sets the magnetic range of the device
  TMAG3001setMagGainConfigIn8Bit(&hi2c1, tmag3001_gain_channel, tmag3001_gain_bits);
  TMAG3001selectLowCurrentNoiseMode(&hi2c1, DEVICE_CONFIG_2_LP_LN_LowNoise);

在我的主 while 循环中、我尝试读取幅度和原始角度结果。 尽管 x、y 和 z 测量值正在更新、但两个零输出值均为:

uint8_t trigger_result = TMAG3001readSingleRegisterWithTrigger(&hi2c1,SENSOR_CONFIG_2_ADDRESS); // Trigger a conversion using an I2C read command
    HAL_Delay(1); // delay to allow conversion to complete

    uint8_t magnitude = TMAG3001getMAGresult(&hi2c1); //check if magnetic flux is measured (note: currently outputting zero)

    uint16_t raw_angle = ((uint16_t)TMAG3001getAngleMSBresult(&hi2c1) << 8) |
                       ((uint16_t)TMAG3001getAngleLSBresult(&hi2c1));  // read raw angle (note: currently outputting zero)

设置中是否可能缺少任何可能导致无法执行角度和幅度计算的内容?

谢谢、

e.

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

    尊敬的 E:

    感谢您发布到传感器论坛!

    正如完整性检查一样、当您读回 Sensor_Config_ 2 寄存器 Angle_EN 会读回 1h、对吗? 我只需要确保一点、因为看起来好像您对该寄存器进行两次写入、我想验证第二次写入该寄存器(您在这里设置磁场范围)不会覆盖启用角度/幅度计算的命令。

    此致、

    ~Alicia

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

    尊敬的 Alicia:

    感谢您的快速响应! 您的提示使我意识到我的写入函数中有逻辑错误、我意外地将 Sensor_2_Config 寄存器写入为全零(因此将 Angle_EN 位设置为零)。

    我修复了逻辑、现在正在从编码器读取原始角度、感谢您的帮助!

    e.

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

    尊敬的 E:  

    我很高兴我能帮助!

    此致、

    ~Alicia