Hi Bob Paddock,
Every chip has a version ID, and not all zero, so I think maybe your read method has some problem.
You can try to read again according to the following code,
INT8U FTFA_RDRSRC(INT32U addr, INT8U resource_select_code, INT32U *data)
{
INT8U cmd_ary[12];
INT32U ret_val;
INT32U data0;
/*
* initialize return variables.
*/
*data = 0;
/*
* Don't forget to do this ->
*/
addr = ftfa_convert_addr_to_ccob_addr(addr);
/*
* if youare using a pflash/FLEXNVM part.
*/
cmd_ary[0] = FTFA_RDRSRC_CMD;
cmd_ary[1] = bits_23_16(addr);
cmd_ary[2] = bits_15_8(addr);
cmd_ary[3] = bits_7_0(addr);
cmd_ary[8] = resource_select_code;
ret_val = ftfa_run_ccob_cmd(cmd_ary, 9);
if (ret_val == 0)
{
/*
* Read the data out of the CCOB's
*/
data0 = (FTFA_FCCOB4 << 24) + (FTFA_FCCOB5 << 16) + (FTFA_FCCOB6 << 8) + FTFA_FCCOB7;
*data = data0;
}
/*
* returns 0 for pass or fstat error bits for fail.
*/
return ret_val;
}
and read in main.c
INT32U ulDataStore[10] ;
ucTemp = FTFA_RDRSRC(0x0,FTFA_VERSION_ID_RSRC,ulDataStore);
ucTemp = FTFA_RDRSRC(0x4,FTFA_VERSION_ID_RSRC,&ulDataStore[1]);
printf("Read Vesion ID : %#8x %#8x\r\n",ulDataStore[0],ulDataStore[1]);
I use this code read out the right version ID, not all zero!
I hopes it helps you!
Best regards!
Jing