工具/软件:
您好!
我遇到的问题是、我的 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.