I am having some issues with the interrupt pin of the si5345. I am trying to configure the INT_N to get asserted once a specific input clock is becomes inactive.
The si5345 receives two clocks, IN0 and IN1. IN0 is an oscillator (fall back option) whereas IN1 is a recovered clock from an external source.
I am polling register 0x0D to detect when the LOS signal gets 0 (meaning that IN1 is valid). At this stage I would like to configure the INT_N pin to react if LOS gets valid again.
Prior to the above event all available interrupt masks have been disabled and once the condition is met I active the MASK corresponding to LOS, register 0x18, bit 1. Unfortunately doing this causes the INT_N to become immediately active.
After some research I discovered that it is required to clear the sticky bits from register 0x12. And here it comes: reading register 0x12 always returns 0xFF! Trying to clear it results in nothing. I have tried writing a value of 0x00 or 0xDD or whatever but the register doesn’t seem to change value. Reading register 0x0D returns the value 0x44 when only IN0 is active and 0x66 when both IN0 and IN1 are „online“. Register 0x12, on the other side, is stuck at 0xFF.
I have tried to clear it by force using a loop until the register values changes but nothing happened.
I am a bit confused at the moment and any hint would be appreciated.
PS: the hardware consists of an Artix7 which communicates with the si5345 over I2C.
thanks for your reply.
I received an email from the Silicon Labs support which also gave me the hint with AN1006. This solved the issue.