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.

CDCE913 I2C Programming

Other Parts Discussed in Thread: CLOCKPRO, CDCE925, CDCE913

Hello!
I put one of these parts on a test board as a clock generator to free up the arb gen on the bench. I have a 25MHz xtal and would need 25, 4, and 3 MHz and maybe others. I was trying to figure out the I2C write sequence to make that happen but there is unfortunately no basic programming example in the datasheet, just reference to the demo software. I have the part live on my board, so I'm past the EVM demo stage.

There seems to be missing information regarding the setting of the registers. On page 19, Table 12, there is reference to: "... for more information, see the PLL Multiplier/Divider Definition paragraph..." which doesn't appear anywhere. Does anyone have a register write sequence to make simple clock frequency changes?

Thanks!


i.

  • Hello,

    You can still use the ClockPro EVM software to generate your configuration.  I tried below, see attached.  Note the wizard did come up with a CDCE925(?) solution.  I used clock architect and repeated it's solution using 25 MHz bypass and 228 MHz as VCO frequency with needed dividers for 3 MHz and 4 MHz.

    I noticed that the change history from RevD to RevE imply that the PLL Multiplier/Divider Definition section is on page 22.  Click the hyper link on page 2 near the bottom.  Seems this section is now called PLL Frequency Planning.

       - Actually, refer to CDCE925 datasheet, this seems to still have the PLL Multiplier/Divider Definition named section.

    73,
    Timothy

    CDCE913 setup.TXT CDCE913 setup_raw_text.TXT

  • Hello Tim,


    Thanks for the insights. Yeah, I also got up to the point of getting the parameters from that handy ClockPro calculator. Where I'm stuck is how to get those numbers into the registers via basic I2C write commands. Is there any write sequence?

    73's as well,


    i

  • I would just write the registers in order.

    Perhaps you are suggesting that there isn't a singular register map which gives you an overview of all the registers.  The closest seems to be Table 7 with the details in table 9 and 10.  Reading table 9: 0x00, 0x01, 0x02, 0x03, 0x04(?), 0x05 and 0x06.  Then according to table 10: 0x10 (?), 0x11 (?), 0x12 (?), 0x13 (?), 0x14, 0x15 (?), 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f.

     -- The (?) registers are in grey, I think that means they can be pre-defined by pin.

    Sounds like you already have an board made.  Do you have some microcontroller connected to the I2C pins for programming?  You could then of course have the microcontroller read some buttons to program the different modes you desire into the CDCE913 using whatever functions are necessary for sending I2C.  If you need PC control, you'll probably want to have some USB control of the microcontroller.  If you still need to add this to your design, I might suggest this launchpad:

    73,

    Timothy

  • Hello Timothy,


    The question is what to write to which registers to change the frequency setting. Sorry if I'm being a pain in the side. I think this could be a great part but I'm having difficulty getting there. I'm thinking this should be simple register writes. Maybe I'm missing something obvious.  

    Yes, I have a board with the CDCE913 part on it. The I2C lines are brought out to a header to which I connect a USB-to-I2C adapter pod to my PC. Then I can use a program to write simple I2C commands. I can ping the part and the part responds at the expected I2C address. It outputs the 25MHz clock which I guess is the default configuration as a simple pass through. So it's alive. How do I change the frequency?

    I can use Pro-Clock software to figure out the various constants, that's OK. I get the value for N, P, Q, R and all that is dandy. What register is the value for these constants? What does "offset" mean? Is that the register to write to or do I add that to some base value?

    We can take this offline if you like. I do need to resolve and get this going.

    Thanks and 73's,

    i