主题中讨论的其他器件: TMS320F28027
您好!
我已经使用 BQ32000设计了一个 RTC 电路。 TMS320F28027 每天都在实时写入和读取一次。 我想从 BQ32000有经验的人那里了解、在阅读和编写协议方面、人们可能会犯什么错误? 请分享您的想法。
此致、
Mahesh K.R.
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设计了一个 RTC 电路。 TMS320F28027 每天都在实时写入和读取一次。 我想从 BQ32000有经验的人那里了解、在阅读和编写协议方面、人们可能会犯什么错误? 请分享您的想法。
此致、
Mahesh K.R.
您好、Mahesh、
我看到您一直在与另一个线程中的另一位工程师互动。 您能否详细说明您正在寻找的内容?
e2e.ti.com/.../695428
假设 I2C 通信已正确实现、需要注意的一个重要细节是、如果主电源小于备用电源(VCC < VBACK)、器件将不会通过 I2C 进行通信。 如需更多信息、请参阅数据表第8.2.2.1节。
此致、
通道
您好、Mahesh、
是的、根据数据表、这似乎是8位操作的正确地址、但我没有电路板可以检查这一点。 但是、我将尝试帮助您进行调试。 我建议首先检查 I2C 波形(确保您正确遵循数据表第7.5.1节中列出的 I2C 协议):
我还想提供与论坛中其他与您的问题相关的帖子的链接(摘录和链接如下);
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.