?? mmc.h
字號:
/************************************************************** * ARMSYS-P, LiYuTai elec. * * .h file for mmc functions ************************************************************/#include "../Target/44b.h"#include "../Target/44blib.h"#define CLR_SPICLK rPDATF&=~(1<<3);//rPDATF&=~(1<<8);#define SET_SPICLK rPDATF|=(1<<3);//rPDATF|=(1<<8); #define CLR_SPITXD rPDATG&=~(1<<1);//rPDATF&=~(1<<5);#define SET_SPITXD rPDATG|=(1<<1);//rPDATF|=(1<<5);#define READ_SPIRXD ((rPDATF&(1<<4))<<3);//注意這里得出的結果必須放在第7位!MSB #define mmc_select() rPDATB &= ~(1<<10);// rPDATE&=0xDF;#define mmc_deselect() rPDATB |= (1<<10); // rPDATE|=0x20;void mcu_io_init_formmc(void){//GPG1:OutputTXD; GPF4:InputRXD;GPF3:CLKoutput;GPB10(nGCS5):CS; rPCONF&=~((3<<6)|(3<<8)); rPCONF|=(1<<6)|(0<<8); rPUPF&=~(1<<3);//|(1<<4)); rPCONG&=~(3<<2); rPCONG|=(1<<2); //rPUPG&=~(1<<1); rPCONB &= ~(1<<10);}unsigned char spi_byte(unsigned char dat){ int i,tmp,tmptxd, tmprxd=0; tmptxd=dat; for(i=0;i<8;i++) { CLR_SPICLK; if(tmptxd&(0x80>>i))//MSB { SET_SPITXD; } else { CLR_SPITXD; } tmp=READ_SPIRXD; tmprxd|=tmp>>i; SET_SPICLK; } return tmprxd;} /************************** * mmc functions *************************/int mmc_init(void);int mmc_command(unsigned char, unsigned int, unsigned int );unsigned char mmc_get_r1(void);int mmc_get_r2(void);int mmc_print_card_info(void);int mmc_read_sector(unsigned long int, unsigned char *);int mmc_write_sector(unsigned long int, unsigned char *);unsigned char sdi_byte(unsigned char);void sdmmc_test(void);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -