Other Parts Discussed in Thread: BQ32000, TMS320F28027
主题中讨论的其他器件: 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.
Other Parts Discussed in Thread: BQ32000, TMS320F28027
您好!
我已经使用 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.