1 | /*#######################################################################################
|
2 | Connect ARM to MMC/SD
|
3 |
|
4 | Copyright (C) 2004 Ulrich Radig
|
5 | #######################################################################################*/
|
6 |
|
7 | #ifndef _MMC_H_
|
8 | #define _MMC_H_
|
9 |
|
10 | #include <avr/io.h>
|
11 |
|
12 | #define SPI_Mode 0 //1 = Hardware SPI | 0 = Software SPI
|
13 | //#define SPI_Mode 0
|
14 |
|
15 | #define MMC_Write PORTD //Port an der die MMC/SD-Karte angeschlossen ist also des SPI
|
16 | #define MMC_Read PIND
|
17 | #define MMC_Direction_REG DDRD
|
18 |
|
19 | #define SPI_DI 6 //Input Port Pin an dem Data Output der MMC/SD-Karte angeschlossen ist
|
20 | #define SPI_DO 4 //Output Pin an dem Data Input der MMC/SD-Karte angeschlossen ist
|
21 | #define SPI_Clock 5 //Output Pin an dem die Clock der MMC/SD-Karte angeschlossen ist (clk)
|
22 | #define MMC_Chip_Select 7 //Output Pin an dem Chip Select der MMC/SD-Karte angeschlossen ist
|
23 | #define SPI_SSSD 3 //Nicht Benutz muß aber definiert werden
|
24 |
|
25 | //Prototypes
|
26 | extern unsigned char mmc_read_byte(void);
|
27 |
|
28 | extern void mmc_write_byte(unsigned char);
|
29 |
|
30 | extern void mmc_read_block(unsigned char *,unsigned char *,unsigned in);
|
31 |
|
32 | extern unsigned char mmc_init(void);
|
33 |
|
34 | extern unsigned char mmc_read_sector (unsigned long,unsigned char *);
|
35 |
|
36 | extern unsigned char mmc_write_sector (unsigned long,unsigned char *);
|
37 |
|
38 | extern unsigned char mmc_write_command (unsigned char *);
|
39 |
|
40 | extern unsigned char mmc_read_csd (unsigned char *);
|
41 |
|
42 | extern unsigned char mmc_read_cid (unsigned char *);
|
43 |
|
44 | //set MMC_Chip_Select to high (MMC/SD-Karte Inaktiv)
|
45 | #define MMC_Disable() MMC_Write|= (1<<MMC_Chip_Select);
|
46 |
|
47 | //set MMC_Chip_Select to low (MMC/SD-Karte Aktiv)
|
48 | #define MMC_Enable() MMC_Write&=~(1<<MMC_Chip_Select);
|
49 |
|
50 | #define nop() __asm__ __volatile__ ("nop" ::)
|
51 |
|
52 | #endif //_MMC_H_
|