memory card.h

来自「AVR读写CF卡的应用例子」· C头文件 代码 · 共 78 行

H
78
字号
#ifndef __MEMORY_CARD
#define __MEMORY_CARD 1

unsigned char getDriveNumber(void);
void setDriveNumber(unsigned char);

void setOperatingMode(unsigned char);
unsigned char send_command(unsigned char cmd, unsigned char drive,unsigned long address,unsigned char nSectors);
unsigned char writeSector(unsigned long address);
unsigned char readSector(unsigned long address);

unsigned char getByteFromSector(unsigned int);
void setByteInSector(unsigned int,unsigned char);

unsigned long initMemoryCard(void);




// CF registers

#define CORCON 0x0200
#define SOCKET_COPY 0x0206

// registers

#define RD_DATA 0x0
#define WR_DATA 0x0
#define ERROR_REG 0x1
#define FEATURES 0x1
#define SECTOR_CNT 0x2
#define SECTOR_NO 0x3
#define CYLINDER_LO 0x4
#define CYLINDER_HI 0x5
#define DRIVE_HEAD 0x6
#define STATUS 0x7
#define COMMAND 0x7
#define ALT_STATUS 0xe
#define DEVICE_CTRL 0xe
#define DRIVE_ADDRESS 0xf

// register bits

#define BAD_BLOCK 0x80
#define UNCORRECTABLE 0x40
#define SECTOR_ID_ERROR 0x10
#define ABORT 0x04
#define GENERAL_ERROR 0x01

#define LBA 0x40
#define DRIVE_NO 0x10

#define BUSY 0x80
#define READY 0x40
#define WRITE_FAULT 0x20
#define CARD_READY 0x10
#define DATA_REQUEST 0x08
#define CORRECTABLE_ERROR 0x04
#define ERROR 0x01



// CORCON values

#define MEMORY_MAPPED 0
#define IO_MAPPED 1
#define IO_MAPPED_1F 2
#define IO_MAPPED_17 3

// ATA COMMANDS

#define READ_SECTOR 0x20
#define WRITE_SECTOR 0x30

#define IDENTIFY_DRIVE 0xec

#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?