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.

[参考译文] INA260EVM:无法设置配置寄存器和屏蔽/启用寄存器

Guru**** 1133870 points
Other Parts Discussed in Thread: INA260, INA260EVM, SYSCONFIG, INA226
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/amplifiers-group/amplifiers/f/amplifiers-forum/1321674/ina260evm-unable-to-set-config-register-and-mask-enable-registers

器件型号:INA260EVM
主题中讨论的其他器件: SysConfigINA226、INA260

您好、TI 团队、

尝试从 MCU 验证 INA260EVM 的功能。 读取制造商和芯片 ID、电压、电流和功率寄存器均正常。

但是、我无法执行软件复位或更新配置寄存器。

示例代码:

static void dump_reg(void) {
	printf("dump: %04X; %04X; %04X\n", i2c_read_w(0x40, 0), i2c_read_w(0x40, 6), i2c_read_w(0x40, 7) );
	printf("measure: %04X; %04X; %04X\n", i2c_read_w(0x40, 1), i2c_read_w(0x40, 2), i2c_read_w(0x40, 3));
	printf("ID: %04X, %04X\n", i2c_read_w(0x40, 0xFE), i2c_read_w(0x40, 0xff));
}

// main loop
	{
		printf("power on\n");
		dump_reg();
		vTaskDelay(pdMS_TO_TICKS(300));

		printf("software config\n");
		i2c_write_w(0x40, 0x00, 0x6fff);
		vTaskDelay(pdMS_TO_TICKS(300));
		dump_reg();

		tprintf("software reset\n");
		i2c_write_w(0x40, 0x00, 0x8000);
		vTaskDelay(pdMS_TO_TICKS(300));
		dump_reg();
	}

日志:

power on
dump: 6127; 0008; 0000
measure: 0000; 0000; 0000
ID: 5449, 2270
software config
dump: 61FF; 0008; 0000
measure: 0000; 0000; 0000
ID: 5449, 2270
software reset
dump: 6100; 0000; 0000
measure: 0000; 0000; 0000
ID: 5449, 2270

如日志所示、我无法将新配置写入配置寄存器。

在软件复位后、配置 寄存器为0x6100。 (非默认值、0x6127)。

您能否帮助提供正确的寄存器初始化顺序以供参考?

谢谢  

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

    Mike、您好!

    虽然您似乎能够正确读取寄存器值、但您的写入函数似乎存在问题。 例如、当您在配置中写入0x6FFF 时、回读显示为0x61FF。 这将解释您无法重置的原因。 为了确认、您可以尝试将一个值写入警报限值寄存器、然后查看是否可以读回相同的值。 另请注意、复位器件时、需要等待重新启动之后才能读回值。  

    例如代码/初始化、我们有一个名为 SysConfig 的工具。 SysConfig 帮助根据您所需的配置设置生成 C 代码。  尽管  INA260在 SysConfig 中尚不可用、但 INA226位于 SysConfig 中、并具有近乎相同的寄存器映射。 可以在以下位置找到: https://dev.ti.com/sysconfig/index.html?product=ascstudio&module=/ti/sensors/currentsensor/INA226。

    此致、

    米奇

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

    尊敬的 Mitch:

    感谢您的建议。 经过一些测试,我发现我没有 在 i2c_write_word ()函数中发送高字节。

    修复编码错误后、我可以写入配置寄存器。 此外、我还可以从警报限值寄存器中写入和读回所有 uint16值。

    谢谢

    BR、Mike

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

    尊敬的 Mitch:

    我没有看到 INA260软件复位的超时要求。

    您是指轮询配置寄存器的复位位吗?

    (在 RESET 位被清除后、继续配置 INA260。)

    谢谢

    BR、Mike

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

    尊敬的 Mike:  

    我很高兴您找到了这个问题。 很抱歉混淆了复位、我的意思是设置 RESET 位与上电复位相同、因此您需要等待器件引导备份:

    此致、

    米奇