请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TMAG5273 存在一个奇怪的问题、在触发阈值范围内、进入 ws 模式将立即唤醒。 例如、如果当前磁场强度为1mT 且我将阈值设置为小于1.25mT、则会发生中断。 然后、如果我将其配置为进入 ws 模式、它将立即被唤醒。 唤醒后、我将其配置为在连续转换模式下运行大约10秒、并继续重复之前的操作。 如果我将其配置为进入 ws 模式、它也会立即被唤醒。 下面是两种切换模式的配置。
RetTypeDef hall_sensor_logic_set_continuous_mode(void)
{
RetTypeDef ret = RET_OK;
uint8_t value;
if (g_op_mode == CONTINUOUS_MODE)
{
DEBUG_LOG_ERROR("[HALL] already in continuous mode.\r\n");
return RET_OK;
}
g_op_mode = CONTINUOUS_MODE;
DEBUG_LOG_ERROR("[HALL] set continuous mode.\r\n");
value = 0x14;
hall_sensor_hal_write_byte(TMAG5273_REG_DEVICE_CONFIG_1, &value);
value = 0x87;
hall_sensor_hal_write_byte(TMAG5273_REG_SENSOR_CONFIG_1, &value);
value = 0x00;
hall_sensor_hal_write_byte(TMAG5273_REG_INT_CONFIG_1, &value);
value = 0x14;
hall_sensor_hal_write_byte(TMAG5273_REG_SENSOR_CONFIG_2, &value);
value = 0xC5;
hall_sensor_hal_write_byte(TMAG5273_REG_MAG_GAIN_CONFIG, &value);
value = 0x02;
hall_sensor_hal_write_byte(TMAG5273_REG_DEVICE_CONFIG_2, &value);
return ret;
}
RetTypeDef hall_sensor_logic_set_w_s_mode(void)
{
RetTypeDef ret = RET_OK;
uint8_t value;
if (g_op_mode == W_S_MODE)
{
DEBUG_LOG_ERROR("[HALL] already in W&S mode.\r\n");
return RET_OK;
}
g_op_mode = W_S_MODE;
DEBUG_LOG_ERROR("[HALL] set W&S mode.\r\n");
value = 0x14;
hall_sensor_hal_write_byte(TMAG5273_REG_DEVICE_CONFIG_1, &value);
value = 0x17;
hall_sensor_hal_write_byte(TMAG5273_REG_SENSOR_CONFIG_1, &value);
value = 0x20;
hall_sensor_hal_write_byte(TMAG5273_REG_SENSOR_CONFIG_2, &value);
value = 0x64;
hall_sensor_hal_write_byte(TMAG5273_REG_INT_CONFIG_1, &value);
value = 0x04;
hall_sensor_hal_write_byte(TMAG5273_REG_X_THR_CONFIG, &value);
value = 0x23;
hall_sensor_hal_write_byte(TMAG5273_REG_DEVICE_CONFIG_2, &value);
return ret;
}
