CDCEL913: Clock config issue

Part Number: CDCEL913
Other Parts Discussed in Thread: CLOCKPRO, , CODELOADER, USB2ANY

Dear,

I want to use ClockPro to generate 24MHz clock setting for CDCEL913. However, after I sending Byte 27, CDCEL913 returns to default value, bypass the input crystal clock(25MHz crystal) to output. 

I have tried many times, all failed.

Could you help to check is there something wrong about this setting ?

Here is the setting saved from ClockPro.

Thank you.

Bit => 7 6 5 4 3 2 1 0
Byte0 0 0 0 0 0 0 0 1 00000001 1
Byte1 0 0 0 0 0 0 0 0 00000000 0
Byte2 1 0 1 1 0 1 0 0 10110100 B4
Byte3 0 0 0 0 1 0 0 1 00001001 9
Byte4 0 0 0 0 0 0 1 0 00000010 2
Byte5 0 1 1 0 0 0 0 0 01100000 60
Byte6 0 1 0 0 0 0 0 0 01000000 40
Byte7 0 0 0 0 0 0 0 0 00000000 0
Byte8 0 0 0 0 0 0 0 0 00000000 0
Byte9 0 0 0 0 0 0 0 0 00000000 0
Byte10 0 0 0 0 0 0 0 0 00000000 0
Byte11 0 0 0 0 0 0 0 0 00000000 0
Byte12 0 0 0 0 0 0 0 0 00000000 0
Byte13 0 0 0 0 0 0 0 0 00000000 0
Byte14 0 0 0 0 0 0 0 0 00000000 0
Byte15 0 0 0 0 0 0 0 0 00000000 0
Byte16 0 0 0 0 0 0 0 0 00000000 0
Byte17 0 0 0 0 0 0 0 0 00000000 0
Byte18 0 0 0 0 0 0 0 0 00000000 0
Byte19 0 0 0 0 0 0 0 0 00000000 0
Byte20 0 1 1 0 1 1 0 1 01101101 6D
Byte21 0 0 0 0 0 0 1 0 00000010 2
Byte22 0 0 0 0 0 0 0 0 00000000 0
Byte23 0 0 0 0 0 0 0 0 00000000 0
Byte24 1 1 1 1 0 0 1 1 11110011 F3
Byte25 0 0 0 0 0 0 1 1 00000011 3
Byte26 1 1 1 1 0 0 1 0 11110010 F2
Byte27 0 0 1 0 0 1 1 1 00100111 27
Byte28 1 1 1 1 0 0 1 1 11110011 F3
Byte29 0 0 0 0 0 0 1 1 00000011 3
Byte30 1 1 1 1 0 0 1 0 11110010 F2
Byte31 0 0 1 0 0 1 0 0 00100100 24

Brs,

Leon

  • Hello Leon,

    How are you loading in your configuration, with a .txt file? I've used your configuration and here is the resulting configuration on ClockPro, it's working fine for me.

  • Dear, Aaron

    It's our own board.

    I loaded this setting by our I2C master chip.

    BTW, is there any sequence between these setting when loading ?

    Or, I just send from Byte 0 to Byte 31 one by one ?

    Brs,

    Leon

  • Hello Leon,

    When programming the device please note you can program using Block Read / Write operation or Byte Read / Write operation. This is determined by Register 06h 'BCOUNT' [7:1].

    All of these sequences begin with a 'Start Condition', Device Address', 'Write' Transmission and 'CommandCode'. This will help understand how you would like to interface with the device.

    When utilizing ClockPro to load in a .txt or .hex file these files will be loaded in following the above mentioned Programming Sequence.

    Please see an example from a previous E2E question - here.

    Hope this helps!

  • Dear. Aaron

    We communicate to CDCEL913 in "Byte Read/Wirte" way.

    So, the actually register address is "0x80 ~ 0x8F" for "Generic Configuration Register", and "0x90 ~ 0x9F" for "PLL1 Configuration Register".

    Here is my configure method.

    At first, CDCEL913 is in default value, bypass the 25M Crystal to output Y1.

    Here is the value from REG 0x80 to 0x9F.

    REG Value Clock
    80 01 25M
    81 01 25M
    82 B4 25M
    83 01 25M
    84 02 25M
    85 50 25M
    86 0E 25M
    87 0E 25M
    88 00 25M
    89 00 25M
    8A 00 25M
    8B 00 25M
    8C 00 25M
    8D 00 25M
    8E 00 25M
    8F 00 25M
    90 00 25M
    91 00 25M
    92 00 25M
    93 00 25M
    94 ED 25M
    95 02 25M
    96 01 25M
    97 01 25M
    98 00 25M
    99 40 25M
    9A 02 25M
    9B 08 25M
    9C 00 25M
    9D 40 25M
    9E 02 25M
    9F 08 25M

    Next, I modify the REG one by one (follow the ClockPro value), observing the YI output.

    Find that, after I configure 0x9B , YI output changes from 11.2MHz to 25MHz.

    And I read REG 0x9B again, The value is no longer 0x27, it change back to 0x08 (the default value).

    So, what is the error in the procedure ?

    Procedure shows in the table below, I stop to configure after 0x9B.

    REG Value Clock
    80 01 25M
    81 01 25M
    82 B4 25M
    83 09 2.78M
    84 02 2.78M
    85 50 2.78M
    86 0E 2.78M
    87 0E 2.78M
    88 00 2.78M
    89 00 2.78M
    8A 00 2.78M
    8B 00 2.78M
    8C 00 2.78M
    8D 00 2.78M
    8E 00 2.78M
    8F 00 2.78M
    90 00 2.78M
    91 00 2.78M
    92 00 2.78M
    93 00 2.78M
    94 6D 11.2MHz
    95 02 11.2MHz
    96 00 11.2MHz
    97 00 11.2MHz
    98 F3 11.2MHz
    99 03 11.2MHz
    9A F2 11.2MHz
    9B 27 25MHz
    9C
    9D
    9E
    9F

    Brs,

    Leon

  • Hello Leon,

    I'm not sure I'm following what's happening - the default you've sent previously has a default BCOUNT of 0x20h while your most recent specifications have this changed to 0x0Eh.

    This will be messing with how much information is able to be sent at once.

    While using the USB2ANY and CodeLoader --- Read data will have the format:

    • 20 81 05 7C 01 FF 30 40 40 40 40 40 4A 5B FF FF FF 00 00 00 00 6F FF 03 00 1F F0 F2 07 1F F0 F2 07
    • The first byte 0x20 doesn't represent contents on register 00h, it represents the value in BCOUNT (register 06h [7:1])
    • BCOUNT: “7-bit byte count (defines the number of bytes which will be sent from this device at the next Block Read transfer); all bytes must be read out to finish the read cycle correctly.”
    • If BCOUNT < number of bytes needed to be read back, USB2ANY Explorer will read back 1s or FFs.
    • To avoid this write 0x40 to register 06h
      • Set “Internal Address” to 06
      • Set number of bytes text box to 2
      • Read data should be “20 40” if it is anything else “xx yy”
      • Write “xx 40” to register 06h to set BCOUNT to 0x20. Where xx matches the previous read data.

    Please note that within Register 0x03h (3) you have in fact changed the 10-bit Y1-output-divider Pdiv1 from 001h to 081h or a divider value of 129.

    Register 0x14h (20) the MUX1 bit has changed to power on PLL1 and subsequently turning off Y2 and Y3 by setting Pdiv2 and Pdiv3 to 0, registers 0x16h & 0x17h (22 & 23).

    I'm not able to go through the rest of your program but hopefully that helps clarify your needs.

  • Dear. Aaron

    Our I2C controller can not do "block write" or "block read".

    Can only do "byte write" and "byte read".

    Can you help to do "byte write" to CDCEL913, to see if the setting can be download right ?

    Thank you.

    Brs,

    Leon

  • Hello Leon,

    Sorry, we've only used "block read / write" when utilizing the I2C. When programming the device the first register should set the write mode from the beginning - register 0x06h should be programmed first. I would recommend you follow the same procedure of confirming register '86' from your above table before you start programming the device. 

    Here is a clean configuration .txt file - please try and utilize this file to program into the associated device. Settings:

    25 MHz input, 24 MHz output

    E2E_Check_Config_2.txt
    Bit  ==>  76543210
    Byte 00 - 00000001
    Byte 01 - 00000000
    Byte 02 - 10110100
    Byte 03 - 00001001
    Byte 04 - 00000010
    Byte 05 - 01010000
    Byte 06 - 00001110
    Byte 07 - 00000000
    Byte 08 - 00000000
    Byte 09 - 00000000
    Byte 10 - 00000000
    Byte 11 - 00000000
    Byte 12 - 00000000
    Byte 13 - 00000000
    Byte 14 - 00000000
    Byte 15 - 00000000
    Byte 16 - 00000000
    Byte 17 - 00000000
    Byte 18 - 00000000
    Byte 19 - 00000000
    Byte 20 - 01101101
    Byte 21 - 00000010
    Byte 22 - 00000000
    Byte 23 - 00000000
    Byte 24 - 11110011
    Byte 25 - 00000011
    Byte 26 - 11110010
    Byte 27 - 00100111
    Byte 28 - 11110011
    Byte 29 - 00000011
    Byte 30 - 11110010
    Byte 31 - 00100100
    

    Also feel free to double-check those settings or generate your own .txt file with ClockPro