📄 cf.h
字号:
/*
** interface library for the Compact Flash + MP3 doughter board
**
** language: MPLAB-C18
** target: PIC18F8720
** 04/14/03 Lucio Di Jasio
*/
//#define EXTERNAL_BUS_DIAGNOSTIC
#include "generic.h"
#include "_fat.def"
#include "_FATDefs.h"
#define MEDIA_SECTOR_SIZE 512
#define cmdCHECK_POWER_MODE 0xE5
#define cmdEXECUTE_DRIVE_DIAGNOSTIC 0x90
#define cmdERASE_SECTORS 0xC0
#define cmdFLUSH_CACHE 0xE7
#define cmdFORMAT_TRACK 0x50
#define cmdIDENTIFY_DEVICE 0xEC
#define cmdIDLE 0xE3
#define cmdIDLE_IMMEDIATELY 0xE1
#define cmdINITIALIZE_DRIVE_PARAMETERS 0x91
#define cmdKM_STRUCTURE_READ 0xB9
#define cmdKM_READ_KEYING_MATERIAL 0xB9
#define cmdKM_CHANGE_KM_VALUE 0xB9
#define cmdNOP 0x00
#define cmdREAD_BUFFER 0xE4
#define cmdREAD_DMA 0xC8
#define cmdREAD_LONG_SECTOR 0x22
#define cmdREAD_MULTIPLE 0xC4
#define cmdREAD_SECTORS 0x20
#define cmdREAD_VERIFY_SECTORS 0x40
#define cmdRECALIBRATE 0x10
#define cmdREQUEST_SENSE 0x03
#define cmdSEC_DISABLE_PASSWORD 0xF6
#define cmdSEC_ERASE_PREPARE 0xF3
#define cmdSEC_ERASE_UNIT 0xF4
#define cmdSEC_FREEZE_LOCK 0xF5
#define cmdSEC_SET_PASSWORD 0xF1
#define cmdSEC_UNLOCK 0xF2
#define cmdSEEK 0x70
#define cmdSET_FEATURES 0xEF
#define cmdSET_MULTIPLE_MODE 0xC6
#define cmdSET_SLEEP_MODE 0xE6
#define cmdSTANDBY 0xE2
#define cmdSTANDBY_IMMEDIATE 0xE0
#define cmdTRANSLATE_SECTOR 0x87
#define cmdWEAR_LEVEL 0xF5
#define cmdWRITE_BUFFER 0xE8
#define cmdWRITE_DMA 0xCA
#define cmdWRITE_LONG_SECTOR 0x32
#define cmdWRITE_MULTIPLE 0xC6
#define cmdWRITE_MULTIPLE_NOERASE 0xCD
#define cmdWRITE_SECTOR 0x30
#define cmdWRITE_SECTOR_NOERASE 0x38
#define cmdWRITE_VERIFY 0x3C
//----------------------------------------------------------------------
//#define ADDBH LATH // address bus High A8-15 // not available
//#define ADDBL LATE // address bus Low A0-3
//#define ADDDIR TRISE
#define ADDR0 LATBbits.LATB15
#define ADDR1 LATBbits.LATB14
#define ADDR2 LATGbits.LATG9
#define ADDR3 LATGbits.LATG8
#define ADRTRIS0 TRISBbits.TRISB15
#define ADRTRIS1 TRISBbits.TRISB14
#define ADRTRIS2 TRISGbits.TRISG9
#define ADRTRIS3 TRISGbits.TRISG8
#define DATABIN PORTE // data bus D0-7
#define DATABOUT LATE
#define DATADIR TRISE
// video signal lines
//#define SYNCH LATG,0 // o video synch signal
//#define LSDO LATG,2 // i/o DT2 video out
// control bus lines
//#define RAMCE LATH,0 // o -RAM chip select
#define CFCE LATFbits.LATF1 // o -CF card chip select
#define CFCEDIR TRISFbits.TRISF1
#define OE LATDbits.LATD5 // o -Output Enable
#define OEDIR TRISDbits.TRISD5
#define WE LATDbits.LATD4 // o -Write Enable
#define WEDIR TRISDbits.TRISD4
#define CFRST LATDbits.LATD0 // o CF Reset
#define RESETDIR TRISDbits.TRISD0
#define CFRDY PORTDbits.RD12 // i CF rdy signal
#define READYDIR TRISDbits.TRISD12
#define CFCD1 PORTCbits.RC4 // i -CF card detect (w. pull up)
#define CD1DIR TRISCbits.TRISC4
#define DATABoutput DATADIR = 0; // make the data bus active output
#define DATABinput DATADIR = 0xff; // make the data bus input hi-z
//----------------------------------------------------------------------
// ATA-CF registers definition
#define R_DATA 0
#define R_ERROR 1
#define R_COUNT 2
#define R_SECT 3
#define R_CYLO 4
#define R_CYHI 5
#define R_DRIVE 6
#define R_CMD 7
#define R_STATUS 7
//----------------------------------------------------------------------
// CF-ATA commands definition
#define C_SECTOR_READ 0x20
#define C_DRIVE_DIAG 0x90
#define C_DRIVE_IDENT 0xEC
#define C_SECTOR_WRITE 0x30
//----------------------------------------------------------------------
// CF_STATUS definitions
#define S_READY 0x58
#define S_ERROR 0x51
// return values
#define OUTPUT 0
#define INPUT 1
// booleans
#define FALSE 0
#define TRUE !FALSE
// prototypes
void BUStest( void);
BYTE MediaInit( void);
BYTE MediaDetect( void);
BYTE WriteProtectState (void);
BYTE CFread( BYTE add);
void CFwrite( BYTE add, BYTE d);
void CFwait(void);
extern DISK glbDiskData;
extern BYTE gblCFBuf[];
BYTE SECTORread( DWORD lda, BYTE * buf);
BYTE SECTORwrite( DWORD lda, BYTE * buf);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -