I am currently working on a project in which there is a need to synchronize the clocks between the two physically separated PSoC 5LP boards. Desired frequency (that needs to be the same on both boards) is in range from 100kHz to about 150kHz, and the error should be as low as possible. Since the IMO tolerance is at best +-1%, on a clock of (for example) 120kHz it produces an uncertainty of +-1200Hz, which is a total of 2400Hz. Such error is not satisfying enough.
I am thinking of using an external 32kHz oscillator to trim the IMOs of both boards. Using 100ppm crystals, it should produce an error of about +-0.05%, which is considerably better. If I understand trimming correctly, there is not a great benefit of using a more precise crystal, since internal trim register limits the achievable accuracy to +-0.03%. Is it possible to get better results than that using another method?
How does the IMO trim API work - is it possible to "calibrate" the IMO using the 32kHz ECO at startup, or does the trimming need to continue during the time of operation?
Thanks for the reply!
Using a precise crystal and carefully adjusting the capacitance should produce a really tight tolerance (about half a Hertz).
On another note, how precise is the DDS24 component in this frequency range (100kHz-150kHz), what is the resolution? I am considering doing a continuous frequency sweep of about half a Hertz (approx. the uncertainty around the nominal value of the frequency), so the frequency error wouldn't propagate through time.
I recommend to try DDS32 component for higher resolution. It has no that many features as DDS24, but gives higher resolution: F_clock/2^32. For example, starting from the clock 16.777216 MHz final resolution will be 1/256 Hz.
Why don't you use an external oscillator and run both PSoC with an external clock. That way they are 100% in sync. (Maybe there is a phase shift because they don't start up from reset at the same time, but the clocks are 100% the same).
Or you route the clock of one PSoC to a pin and use it for the other one.
That would indeed be the best solution, if the two boards were not physically separated... no physical connection between them can be made. That's why there is a need for such similar clock generation on both boards.
Sync them to GPS (most receivers can generate a 10MHz signal). It won't get more accurate (except when you feed them both from a rubidium reference)
(I'm wondering what the requirements are that you need these two boards symced up, but the don't never ever connect to each other)