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:BQ32000

Guru**** 2513995 points
Other Parts Discussed in Thread: BQ32000

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

https://e2e.ti.com/support/clock-timing-group/clock-and-timing/f/clock-timing-forum/1223719/bq32000-bq32000

器件型号:BQ32000

我们将外部 RTC BQ32000用于 PIC32MM0256GPM064微控制器。我们在使用 BQ32000时遇到问题。

我们试图更新的时间在 RTC.it 是成功的,但时间不增加.

我们更改后的 rtc.it 无法正常使用。

请推荐 RTC 问题的解决方案


#include
#include
#include


#define I2Cwrite   0xD0
#define I2CRead   0xD1


void I2C_WAIT_FOR_IDLE (void)


while (I2C3CON & 0x1F);
while (I2C3STATbits.TRSTAT);
}


空 I2C_START ()

I2C_WAIT_FOR_IDLE ();
I2C3CONbits.SEN = 1;
while (I2C3CONbits。SEN = 1);
}

空 I2C_STOP ()

I2C_WAIT_FOR_IDLE ();
I2C3CONbits.pen = 1;
}

空 I2C_RESTART ()

I2C_WAIT_FOR_IDLE ();
I2C3CONbits.RSEN = 1;
while (I2C3CONbits。rsen = 1);
}
void I2C_ack (void)

I2C_WAIT_FOR_IDLE ();
I2C3CONbits.ACKDT = 0;
I2C3CONbits.ACKEN = 1;
while (I2C3CONbits.ACKEN);
}

void I2C_NACK (void)

I2C_WAIT_FOR_IDLE ();
I2C3CONbits.ACKDT = 1;
I2C3CONbits.ACKEN = 1;
while (I2C3CONbits.ACKEN);
}

void I2C_WRITE (unsigned char address、char wait_ack)

I2C3TRN =地址| 0;
while (I2C3STATbits.TBF == 1);
I2C_WAIT_FOR_IDLE ();
if (WAIT_ACK) while (I2C1STATbits.ACKSTAT =>= 1);
}

void I2C_READ (unsigned char * value、char ack_nack)

I2C3CONBITS.RCEN = 1;
while (I2C3CONbits.rCEN);
while (!I2C3STATbits.rbf);
*数值= I2C3RCV;

如果(!ack_nack)
I2C_ack ();
方案
I2C_NACK ();
}

空 I2C_Initialize()

LATC = 0x00;
ANSELBbits.ANSB13 = 0;
TRISBbits.TRISB13 = 1;
TRISBbits.TRISB7 = 1;
I2C3CONbits.on = 1;
I2C3CONBITS.DISSLW = 1;
I2C3BRG = 7;
I2C3STAT = 0x0;
}

void BQ32000_WRITE (unsigned char reg_address、unsigned char 值)

I2C_START();
I2C_WRITE (I2Cwrite,1);
I2C_WRITE (reg_address、1);
I2C_WRITE (值、1);
I2C_STOP();
}
void BQ32000_read (unsigned char reg_address、unsigned char * value)

I2C_START();
I2C_WRITE (I2Cwrite,1);
I2C_WRITE (reg_address、1);
I2C_RESTART ();
I2C_WRITE (I2CRead、1);
I2C_READ (值、1);
I2C_STOP();
}

void rtc_read()


BQ32000_read (0x00、&sec);
BQ32000_READ (0x01、&min);
BQ32000_READ (0x02、&hours);
BQ32000_READ (0x03、&DATE);
BQ32000_READ (0x04、&DAY);
BQ32000_READ (0x05、&month);
BQ32000_read (0x06、&years);


}

void rtc_write()


BQ32000_WRITE (0x00、0x00);
BQ32000_WRITE (0x01、0x00);
BQ32000_WRITE (0x02、0x00);
BQ32000_WRITE (0x03、0x05);
BQ32000_WRITE (0x04、0x06);
BQ32000_WRITE (0x05、0x05);
BQ32000_WRITE (0x06、0x23);


}

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

    您好!

    请在下面进行检查、以查看您是否在备份模式后读回