RTC issue - PCF2127

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

RTC issue - PCF2127

5,343 Views
sharmila_devada
Contributor III

Hi,

I am using RTC PCF2127 in our custom board.  I am always getting the below error when date setting at the time of booting.

"oscillator stop detected, date/time is not reliable"

According to the data sheet this error will occur when OSF bit is set. How to clear this bit for first time reading the RTC time.

This error will not come when we write the date and try to read the same. The steps which I followed

1. Set current date using  "date -s" command

2. hwclock -w

3. hwclock

Issue observed : hwclock command is not giving me the date which I have set .  Any configuration is required for solving the issue ?

Please provide the input for the same 

Thank you,

Regards,

Sharmila

0 Kudos
Reply
6 Replies

4,569 Views
sandheepbalasub
Contributor I

Hi 

Thanks for your reply . In my case battery health is good Vbat 3.05V. 

when i set the date and try to write to hwclock i get the below message 

root@imx6q-dms-ba16:~# hwclock -w
rtc-pcf2127-spi spi4.1: low voltage detected, check/replace RTC battery.
rtc-pcf2127-spi spi4.1: oscillator stop detected, date/time is not reliable

root@imx6q-dms-ba16:~# hwclock -r
rtc-pcf2127-spi spi4.1: low voltage detected, check/replace RTC battery.
rtc-pcf2127-spi spi4.1: oscillator stop detected, date/time is not reliable
hwclock: RTC_RD_TIME: Invalid argument

I'm using SPI communication is there any issue in my dts file 

&ecspi5 {
fsl,spi-num-chipselects = <2>;
cs-gpios = <&gpio1 17 0>,
                  <&gpio2 0 0>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_ecspi5>;
status = "okay";

m25_eeprom: m25p80@0 {
compatible = "atmel,at25";
spi-max-frequency = <20000000>;
size = <0x8000>;
pagesize = <64>;
reg = <0>;
address-width = <16>;
};
rtc:pcf2127@0{
#address-cells = <1>;
#size-cells = <1>;
compatible = "nxp,pcf2127";
spi-max-frequency = <5000000>;
interrupt-parent = <&gpio2>;
interrupts = <7 IRQ_TYPE_LEVEL_LOW>;
reg = <1>;
};
};

do i go wrong in above?

Thanks

sandy

0 Kudos
Reply

4,569 Views
sharmila_devada
Contributor III

Hi,

The "hwclock: RTC_RD_TIME: Invalid argument" is due to driver is returning -EINVAL when low voltage is detected.

You can try with below step:

Read the control register 1 in pcf2127_rtc_set_time () function and set the STOP bit and write back the new value.

static int pcf2127_rtc_set_time(struct device *dev, struct rtc_time *tm)

{

//Add the below lines in the beginning of the function

        regmap_read(pcf2127->regmap,PCF2127_REG_CTRL1,(unsigned int *)(&read));

        read = read | 0x20 ;

      regmap_write(pcf2127->regmap,PCF2127_REG_CTRL1,(unsigned int)(read));

.....

}

Thanks and regards,

Sharmila

0 Kudos
Reply

4,569 Views
sharmila_devada
Contributor III

Hi,

Please provide the solution for the above query.

Regards,

Sharmila

0 Kudos
Reply

4,569 Views
diegoadrian
NXP Employee
NXP Employee

Hello, 

I really apologize for the delay.

Do you have the connecting of your RTC?

Probably is an error with the value of the components. The parts need to be exact since any variance could harm the integrity of the signal, giving a bad read of the time.

Please see the below application note, there you could find the schematics of how you need to connect the RTC.

https://www.nxp.com/docs/en/application-note/AN11266.pdf 

Furthermore, Do you know if your RTC hardware is being seen by the kernel? Probably, the PCF2127 has not been set correctly.

Hope this can help you.

Best regards,

Diego.

0 Kudos
Reply

4,569 Views
sandheepbalasub
Contributor I

Hi 

I face the same issue i'm using 4.1.29 kernel with spi communication 

I get the log as below 

rtc-pcf2127-spi spi4.1: low voltage detected, check/replace RTC battery.
rtc-pcf2127-spi spi4.1: oscillator stop detected, date/time is not reliable
rtc-pcf2127-spi spi4.1: rtc core: registered rtc-pcf2127-spi as rtc0

hwclock -r
rtc-pcf2127-spi spi4.1: low voltage detected, check/replace RTC battery.
rtc-pcf2127-spi spi4.1: oscillator stop detected, date/time is not reliable
hwclock: RTC_RD_TIME: Invalid argument

please provide me the input to solve this issue

Thanks

sandy

0 Kudos
Reply

4,569 Views
sharmila_devada
Contributor III

Hi,

I have faced this issue because of low voltage in RTC battery. After mounting the new RTC battery issue got solved.

For checking the date use below commands

date -s "yyyy-mm-dd h:m:s"

hwclock -w

hwclock -r

Thanks

Regards,

Sharmila

0 Kudos
Reply