Hi sir
We encountered CDCI6214 configuration process issues and found that there are individual differences in the chip? In the case, please help your company to provide technical support.
Our configuration process is as follows:
@. Each time the machine starts, it will configure CDCI6214 according to different needs;
@. 6214 IO port logic level, will be configured before the 6214 power-on, the configuration process according to the TICS software "Write All Registers" prompt column to configure the 6214 register;
Our configuration code is detailed in "Configuration Code.txt"
The phenomenon is as follows:
1. The output clock, if all are divided by integer, CDCI6214 has not found no abnormality.
2. Output clock, if fractional frequency is used, the ic of individual boards is abnormal and the jitter is very large.
3. The ic is interchanged with the normal board and the problem is found to follow the ic individual.
For details, see "CDCI6214 Fractional Output Waveform Jitter Abnormality Test.docx"
Please help your company to deal with the following issues:
1. CDCI6214 does not have source code configured on the Internet. Our configuration process is written with reference to the specification and TICS software, so please provide the configuration source for your reference.
2. After the exchange test, it is found that following the ic individual, that is, there are individual differences in the chip.
,0x00460000 ,0x00450000 ,0x00440000 ,0x00430020 ,0x00420200 ,0x00410F34 ,0x0040000D ,0x003F4210 ,0x003E4218 ,0x003D1500 ,0x003C0018 ,0x003B1063 ,0x003A0008 ,0x00390851 ,0x00380405 ,0x00378002 ,0x003600F7 ,0x0035911A ,0x00340008 ,0x00330861 ,0x00320435 ,0x0031800E ,0x0030012E ,0x002F78F9 ,0x002E0008 ,0x002D0851 ,0x002C0415 ,0x002B800E ,0x002A00F2 ,0x002973C6 ,0x00280008 ,0x00270851 ,0x00260405 ,0x00250003 ,0x002401F6 ,0x00238295 ,0x00220050 ,0x00210007 ,0x00200000 ,0x001F1E72 ,0x001E5146 ,0x001D8129 ,0x001C0000 ,0x001B0410 ,0x001A0E1C ,0x00192406 ,0x00180000 ,0x00170000 ,0x00160000 ,0x00150000 ,0x00140001 ,0x00130000 ,0x0012FFFF ,0x001126C4 ,0x0010921F ,0x000FA037 ,0x000E0000 ,0x000D0000 ,0x000C0000 ,0x000B0000 ,0x000A0000 ,0x00090000 ,0x00080001 ,0x00070C0D ,0x000619CA ,0x00050020 ,0x00040001 ,0x00030000 ,0x00020050 ,0x00016824 ,0x00001000
const uint32_t cdci6214_3G_reg[]= { 0x00460000, 0x00450000, 0x00440000, 0x00430020, 0x00420000, 0x00410F34, 0x0040000D, 0x003F0210, 0x003E4209, 0x003D1500, 0x003C0018, 0x003B106B, 0x003A0008, 0x00390A65, 0x00380405, 0x00370003, 0x00360000, 0x00358000, 0x00340008, 0x00330A65, 0x00320415, 0x0031C001, 0x00300000, 0x002F7600, 0x002E0008, 0x002D0A65, 0x002C0415, 0x002B0003, 0x002A0000, 0x00298000, 0x00280008, 0x00270A65, 0x00260405, 0x00250003, 0x00240000, 0x00238000, 0x00220050, 0x00210007, 0x00200000, 0x001F1E72, 0x001E5142, 0x001D8129, 0x001C0000, 0x001B2410, 0x001A0718, 0x00190000, 0x00180001, 0x00170000, 0x00160000, 0x00150000, 0x00140000, 0x00130000, 0x00120000, 0x001126C4, 0x0010921F, 0x000FA037, 0x000E0000, 0x000D0000, 0x000C0000, 0x000B0000, 0x000A0000, 0x00090000, 0x00080000, 0x00070000, 0x00060000, 0x00050020, 0x00040055, 0x00030000, 0x00020050, 0x00016822, 0x00001000, }; void CDCI6214_config(void) { //unlock data[0]=0xa0; data[1]=0x37; reg_data[0]=0; reg_data[1]=0xf; Write_I2C(CDCI6214_ADDR,reg_data,data,2,2); //unlock data[0]=0x40; data[1]=0x03; reg_data[0]=0; reg_data[1]=0x37; Write_I2C(CDCI6214_ADDR,reg_data,data,2,2); //unlock data[0]=0xa0; data[1]=0x37; reg_data[0]=0; reg_data[1]=0xf; Write_I2C(CDCI6214_ADDR,reg_data,data,2,2); for(i=0;i<71;i++) { union_TEMP.unsigned_int32=cdci6214_3G_reg[i]; data[0]=union_TEMP.unsigned_char8[1]; data[1]=union_TEMP.unsigned_char8[0]; reg_data[0]=union_TEMP.unsigned_char8[3]; reg_data[1]=union_TEMP.unsigned_char8[2]; Write_I2C(CDCI6214_ADDR,reg_data,data,2,2); } union_TEMP.unsigned_int32=cdci6214_3G_reg[70-60]; data[0]=union_TEMP.unsigned_char8[1]; data[1]=union_TEMP.unsigned_char8[0]; reg_data[0]=union_TEMP.unsigned_char8[3]; reg_data[1]=union_TEMP.unsigned_char8[2]; Write_I2C(CDCI6214_ADDR,reg_data,data,2,2); union_TEMP.unsigned_int32=cdci6214_3G_reg[70-61]; data[0]=union_TEMP.unsigned_char8[1]; data[1]=union_TEMP.unsigned_char8[0]; reg_data[0]=union_TEMP.unsigned_char8[3]; reg_data[1]=union_TEMP.unsigned_char8[2]; Write_I2C(CDCI6214_ADDR,reg_data,data,2,2); union_TEMP.unsigned_int32=cdci6214_3G_reg[70-62]; data[0]=union_TEMP.unsigned_char8[1]; data[1]=union_TEMP.unsigned_char8[0]; reg_data[0]=union_TEMP.unsigned_char8[3]; reg_data[1]=union_TEMP.unsigned_char8[2]; Write_I2C(CDCI6214_ADDR,reg_data,data,2,2); for(i=0;i<3;i++) { union_TEMP.unsigned_int32=cdci6214_3G_reg[70-59]; data[0]=union_TEMP.unsigned_char8[1]; data[1]=union_TEMP.unsigned_char8[0]; reg_data[0]=union_TEMP.unsigned_char8[3]; reg_data[1]=union_TEMP.unsigned_char8[2]; Write_I2C(CDCI6214_ADDR,reg_data,data,2,2); } SYS_Delay(500); // while(GPIO_GetBit(CDCE6214_STATUS_IO,CDCE6214_STATUS)==0) { union_TEMP.unsigned_int32=cdci6214_3G_reg[70]; data[0]=union_TEMP.unsigned_char8[1]; data[1]=0x10; reg_data[0]=union_TEMP.unsigned_char8[3]; reg_data[1]=union_TEMP.unsigned_char8[2]; Write_I2C(CDCI6214_ADDR,reg_data,data,2,2); SYS_Delay(500); union_TEMP.unsigned_int32=cdci6214_3G_reg[70]; data[0]=union_TEMP.unsigned_char8[1]; data[1]=0x0; reg_data[0]=union_TEMP.unsigned_char8[3]; reg_data[1]=union_TEMP.unsigned_char8[2]; Write_I2C(CDCI6214_ADDR,reg_data,data,2,2); SYS_Delay(500); }