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.

对 TPL0102 执行的 配置数据, 好像 Non-volatile 保存 不 成功: 掉电重启以后, 读取的, 仍是 默认值



通过 I2C 向 TPL0102 的 addr-00 寄存器 写入 0x55, 电阻 调整正常; 此时, 读取 addr-00 的信息, 也能 读取得到 0x55.
但是, TPL0102 掉电重启以后, 从 addr-00 寄存器 读取的 信息, 是 芯片的 默认值, 不是 配置的 0x55。

我 也做过 下面这些 调试操作:
* 默认情况下, addr-10 的默认值 是 0x40; 这个状态下, 向 addr-00 写入 0x55, 读取值 是 0x55;
* 然后, 我将 addr-10 修改为 0xC0, 读取 addr-00 是 0x55; 然后 我向 addr-00 写入 0x33, 然后 读取 addr-00 得到 0x33;
* 我再将 addr-10 修改为 0x40; 此时, 读取 addr-00, 得到的 数值是 0x55
(上面的理解:addr-10 分别为 0x40 和 0xC0, 对应于 Non-volatile 和 Volatile)
* 将 TPL0102 关电再上电, 此时 读取 addr-00, 读取值 是 默认值, 不是 我 曾经写入的 0x55 或者 0x33

请问, 是否 还需要 先做 哪些配置, 才能 使得 写入到 addr-00 寄存器的 信息, 能够 被 顺利 保存, 不会 因为掉电 而 失去?

  • The TPL0102 has non-volatile memory (EEPROM) which can be used to store the wiper position. When the device is powered down, the last value stored in the Initial Value Register (IVR) will be maintained in the non-volatile memory. When power is restored, the contents of the IVR are automatically recalled and loaded into the corresponding WR register to set the wipers . The internal registers of the TPL0102 can be accessed using the I2C interface. The factory-programmed default value for the IVR upon power up is 0x80h (1000 0000). The WR register can be written to directly without first writing to the IVR, depending upon the setting of the volatile memory (VOL) in the ACR (Access Control Register). If the WR register is written to directly without writing to the IVR as well, this results in the wiper position changing to a desired position, but the position will not be stored in memory and will not be reloaded upon powering up the device.

    As stated in the Overview, the VOL bit from the ACR (Access Control Register) provides two options for register accessibility. Either only volatile registers (WR) are accessible to change the wiper setting without storing the value in non-volatile memory or volatile registers (WR) and non-volatile registers (IVR) are accessible to change the wiper setting, which allows the value to be stored in non-volatile memory.

  • 上电 默认情况下, addr-10 的默认值 是 0x40, 此时 VOL 是 0, 它 表示 Non-volatile registers (IVRA, IVRB) are accessible.
    这个 状态下, 我 向 addr-00 写入 0x55,它表示 将 0x55 写入到 IVRA 寄存器中;
    完成上述 两个 操作以后, 将 TPL0102 掉电重启, 然后 读 addr-00 的数据,它 是 默认值, 不是 前面 写入的 0x55。

    我也试了 将 addr-10 写入 0xC0 (此时 VOL 是 1), 再 向 addr-00 中写入 0x55 (此时 读取 也是 0x55), 但将 TPL0102 掉电重启以后, 仍是 默认值。

    另外, 规格书中 addr-00 默认值是 0x80; 目前 我们 单板上 焊接的 三个 TPL0102, 默认值都是 0xAA
    请问, 目前 TI 实际销售的 TPL0102 芯片,它的 addr-00 默认值 是否 有的是 0x80, 也有的 是 0xAA?

  • 您好,
    建议您先上电后对ACR寄存器写入0x40h(虽然默认值是0x40h,但先写入0x40h试一下),再向 IVRA或 IVRB 寄存器写入电阻值,后,将 TPL0102 掉电重启, 然后 读 IVRA或 IVRB的值。
    另外,上电后对ACR寄存器先写入0x40h,看下addr-01 默认值是多少?addr-00 和addr-01默认值 都是 0x80h才对。