I am using Spectrum digital EVMDM6446 (DaVinci EVM) and Spectrum digital XDS560v2 LC Traveller Emulator and Code Composer Studio 5.5.0 and using SanDisk compact flash ultra II (4.0 GB). I am trying to run the spectrum sample code "cf" which is given in spectrum digital Inc website support page (
**broken link removed** ). do I need to make any changes in the code? card is detecting in function Int16 cf_card_detect( ).
I am trying to read the device ID in :
Code C - [expand] |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| ATA_readId( ( Uint32 )id );
/* Check for valid identifier */
printf( " CF Identifier: 0x%x\n", ( id[0] << 8 ) + id[1] );
if ( ! ( ( id[0] == 0x8A ) && ( id[1] == 0x84 ) ) )
{
printf( " Invalid CF identifier found\n" );
return 1;
} |
Console data displayed is as below:
CF.CD2 Found
CF Identifier: 0x84
Invalid CF identifier found
Model number: [ ]
Serial number: [AS 0 0"9$5]
Capacity: [3962416] KBytes // for 4GB
Capacity: [3869] MBytes
Addr32 test [1-3] sector
InvAddr32 test [1-3] sector
FAIL... error code 4... quitting
here CF Identifier is read as: 0x84 instead of 0x848A. This is similar for all identifiers. I am getting only MSB of 16 bit data.
and reading only 0x84 and instead 0x8A I am reading 0x00. Not able to run ata_addr32() test too. in address test when I read PRI_ATA_DATA16 value I am getting DDR address (ie in the range 0x08000000). I have mot made any change in the sample code. whats wrong?
Refer Code: Sample code attached, same code and supporting files are given in davincievm.zip folder.
download davincievm.zip folder from
**broken link removed**)
file path :davincievm\examples\cf .
ref datasheets: sandisk compact flash :
http://media.digikey.com/pdf/Data Sheets/M-Systems Inc PDFs/SanDisk CompactFlash Memory.pdf
TI datasheets: SPRUE21(ATA controllers datasheet)
Regards,
Venkatraman Bhat