📄 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 + -