I'm planning on using a DS3231 clock module to provide a battery backed clock option for an open source project.
I've purchased two different styles of these clock modules. The first includes a 24C32 EEPROM and has a battery holder for a LIR2032 rechargable battery. Some of these are labeled "ZS-042" others labeled "DS3231". The second module has a CR1220 battery solderd in place and no EEPROM. These are labeled "DS3231 For PI".
I had nothing better to do this weekend so I decided to test all of them and see if they meet timekeeping specifications. I used a frequency counter with A GPSDO reference to measure the 32KHz output.
I have four of each style module but had only powered up one of each type.
Some of these have the DS3231SN (Crystal osc.) and some have the DS3231M (MEMS osc.) chip. The DS3231SN is rated for +-2ppm 0 to 40 deg. +-3.5ppm -40 to +85 deg and the DS3231M for +-5ppm -45 to +85 deg.
Some of these are definitely China's finest!
Two are D.O.A., Two are out of tolerance, and the other four meet specifications.
One of the D.O.A.'s did not respond to I2C commands. The other D.O.A. unit killed the I2C bus.
The out of tolerance units also have a non functional oscillator trim register (Aging Offset 0x10). You can write a value to the register and read it back. It has no effect on the output frequency. This register is functional on all of the good units. Also, both of the out of tolerance units are the DS3231M version.
Finally, the battery charger circuit on the ZS-042 modules is poorly designed. It's just a resistor and diode from the 5V supply to the battery. Unfortunately, the diode is not dropping quite enough voltage. After 24 hours of operation the battery voltage was 4.43v. The LIR2032 has a maximum voltage of 4.2V. It's overcharging the battery. If you plan on using this module I would suggest disabling the charge circuit and use a CR2032 battery instead of the LIR2032. The CR2032 is also much cheaper.
Attached are some pictures of the modules and graphs of frequency data.
Graphs DS3231g-3 and DS3231g-5 are the out of tolerance units. DS3231g-5z and Ds3231g-6z are zomed tighter on the Y axis. You can see that 5z, a bad module has a very noisy unstable frequency. 6z is much better.