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.

[参考译文] BQ32000:实现写入和读取协议

Guru**** 2527370 points
Other Parts Discussed in Thread: BQ32000, TMS320F28027

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

https://e2e.ti.com/support/clock-timing-group/clock-and-timing/f/clock-timing-forum/701554/bq32000-write-and-read-protocol-realization

器件型号:BQ32000
主题中讨论的其他器件: TMS320F28027

您好!

  我已经使用 BQ32000设计了一个 RTC 电路。 TMS320F28027  每天都在实时写入和读取一次。 我想从 BQ32000有经验的人那里了解、在阅读和编写协议方面、人们可能会犯什么错误? 请分享您的想法。

此致、

Mahesh K.R.  

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

    您好、Mahesh、

    我看到您一直在与另一个线程中的另一位工程师互动。 您能否详细说明您正在寻找的内容?
    e2e.ti.com/.../695428

    假设 I2C 通信已正确实现、需要注意的一个重要细节是、如果主电源小于备用电源(VCC < VBACK)、器件将不会通过 I2C 进行通信。 如需更多信息、请参阅数据表第8.2.2.1节。

    此致、
    通道

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Lane、
    在我的电路中、Vcc 和 Vback 都是3.3V。 现在、我更改为 VCC=3.3、Vback 更改为2.6V。 还有一些问题。 写入不正确,我检查了中断,写入后没有信号出来。

    我想澄清从器件地址(BQ32000)。 数据表显示、对于写入命令为11010000b、这意味着读取命令为0xD0、对于读取命令为11010001b、这意味着0xD1。 我是对的吗? 或者、如果我们考虑对写入命令执行7位操作11010000b、这意味着对读取命令执行0x68和11010001b、这意味着0x68。 请澄清。
    此致、
    Mahesh K.R.
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Mahesh、

    是的、根据数据表、这似乎是8位操作的正确地址、但我没有电路板可以检查这一点。 但是、我将尝试帮助您进行调试。 我建议首先检查 I2C 波形(确保您正确遵循数据表第7.5.1节中列出的 I2C 协议):

    • 在 SDA 和 SCL 线路上是否有适当的上拉电阻器?
    • 您是否正确发送了 START 和 STOP (时钟处于高电平时、分别为高电平至低电平转换和低电平至高电平转换)
    • 您是否在写入器件地址、寄存器地址和寄存器数据后收到 ACK?

    我还想提供与论坛中其他与您的问题相关的帖子的链接(摘录和链接如下);

    BQ32000  有一个内部缓冲器、此缓冲器每秒更新一次 RTC 计数器数据。 用户只能访问此内部缓冲区、而不能访问实时保留计数器。 如果用户正在从内部缓冲区中读取时间、1秒更新将停止、直到读取完成。 然后、内部缓冲区在读取完成后立即更新(而不是等待下一个1秒更新)。因此、用户在读取寄存器时将永远不会看到翻转条件。 我希望这能回答你的问题。"

    相关帖子:

    此致、
    通道

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

    您好、Lane、

     非常感谢您的支持。

    在 SDA 和 SCL 线路上是否有适当的上拉电阻器?  -是4.7K

    您是否正确发送了 START 和 STOP (时钟处于高电平时、分别为高电平至低电平转换和低电平至高电平转换)

    您是否在写入器件地址、寄存器地址和寄存器数据后收到 ACK?

    写入函数以及 SDA 和 SCL 波形如下所示。 我正在使用7位数据。  

    空 I2CA_WriteInit2()

    EALLOW;

    //设置要发送的字节数

    I2caRegs.I2CMDR.bit.MST = 1;

    I2caRegs.I2CMDR.bit.TRX = 1;

    I2caRegs.I2CCNT = 0x02;

    I2caRegs.I2CMDR.bit.STT = 1;

    I2caRegs.I2CDXR = 0x01;

    I2caRegs.I2CDXR = 0x80;

    I2caRegs.I2CMDR.bit.STP= 1;

    EDIS;

    下面给出了读取函数及其 SDA-SCL 波形。

    空 I2CA_ReadData1()

    EALLOW;
    I2caRegs.I2CMDR.bit.MST = 1;
    I2caRegs.I2CMDR.bit.TRX = 1;
    I2caRegs.I2CCNT = 0x01;
    I2caRegs.I2CMDR.bit.STT = 1;
    I2caRegs.I2CDXR = 0x00;
    I2caRegs.I2CMDR.bit.STP= 1;
    I2caRegs.I2CMDR.bit.TRX = 0;
    I2caRegs.I2CCNT = 0x01;
    I2caRegs.I2CMDR.bit.STT = 1;
    second= I2caRegs.I2CDRR;
    I2caRegs.I2CMDR.bit.STP= 1;
    EDIS;

    请回顾并提出您的想法。

    此致、

    Mahesh K.R.

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

    我无法就此提供反馈、而 Lane 本周已不在办公室。 我会把这件事转交给他、也许他会帮忙。

    此致、
    Dean