freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

[信息與通信]sd卡(編輯修改稿)

2024-09-13 00:31 本頁面
 

【文章內(nèi)容簡介】 RMAT_GRP1R/W[15:15]拷貝標志COPY1R/W[14:14]永久寫保護PERM_WRITE_PROTECT1R/W[13:13]暫時寫保護TMP_WRITE_PROTECT1R/W[12:12]文件系統(tǒng)FIL_FORMAT2R/W[11:10]保留2R/W[9:8]CRCCRC7R/W[7:1]未用,始終為11[0:0] 讀取CSD 的時序:相應的程序例程如下: // 讀SD卡的CSD寄存器 共16字節(jié) 返回0說明讀取成功//unsigned char Read_CSD_SD(unsigned char *Buffer){ //讀取CSD寄存器的命令 unsigned char CMD[] = {0x49,0x00,0x00,0x00,0x00,0xFF}。 unsigned char temp。 temp=SD_Read_Block(CMD,Buffer,16)。 //read 16 bytes return(temp)。}4) 讀取SD卡信息綜合上面對CID與CSD寄存器的讀取,可以知道很多關于SD卡的信息,以下程序可以獲取這些信息。如下:////返回// SD卡的容量,單位為M// sector count and multiplier MB are in u08 == C_SIZE / (2^(9C_SIZE_MULT))// SD卡的名稱//void SD_get_volume_info(){ unsigned char i。 unsigned char c_temp[5]。 VOLUME_INFO_TYPE SD_volume_Info,*vinf。 vinf=amp。SD_volume_Info。 //Init the pointoer。/讀取CSD寄存器 Read_CSD_SD()。//獲取總扇區(qū)數(shù) vinfsector_count = [6] amp。 0x03。 vinfsector_count = 8。 vinfsector_count += [7]。 vinfsector_count = 2。 vinfsector_count += ([8] amp。 0xc0) 6。 // 獲取multiplier vinfsector_multiply = [9] amp。 0x03。 vinfsector_multiply = 1。 vinfsector_multiply += ([10] amp。 0x80) 7。//獲取SD卡的容量 vinfsize_MB = vinfsector_count (9vinfsector_multiply)。 // get the name of the card Read_CID_SD()。 vinfname[0] = [3]。 vinfname[1] = [4]。 vinfname[2] = [5]。 vinfname[3] = [6]。 vinfname[4] = [7]。 vinfname[5] = 0x00。 //end flag } 以上程序將信息裝載到一個結構體中,這個結構體的定義如下:typedef struct SD_VOLUME_INFO{ //SD/SD Card info unsigned int size_MB。 unsigned char sector_multiply。 unsigned int sector_count。 unsigned char name[6]。} VOLUME_INFO_TYPE。5) 扇區(qū)讀扇區(qū)讀是對SD卡驅動的目的之一。SD卡的每一個扇區(qū)中有512個字節(jié),一次扇區(qū)讀操作將把某一個扇區(qū)內(nèi)的512個字節(jié)全部讀出。過程很簡單,先寫入命令,在得到相應的回應后,開始數(shù)據(jù)讀取。扇區(qū)讀的時序: 扇區(qū)讀的程序例程:unsigned char SD_Read_Sector(unsigned long sector,unsigned char *buffer){ unsigned char retry。 //命令16 unsigned char CMD[] = {0x51,0x00,0x00,0x00,0x00,0xFF}。 unsigned char temp。 //地址變換 由邏輯塊地址轉為字節(jié)地址 sector = sector 9。 //sector = sector * 512 CMD[1] = ((sector amp。 0xFF000000) 24 )。 CMD[2] = ((sector amp。 0x00FF0000) 16 )。 CMD[3] = ((sector amp。 0x0000FF00) 8 )。 //將命令16寫入SD卡 retry=0。 do { //為了保證寫入命令 一共寫100次 temp=Write_Command_MMC(CMD)。 retry++。 if(retry==100) { return(READ_BLOCK_ERROR)。 //block write Error! } } while(temp!=0)。 //Read Start Byte form MMC/SDCard (FEh/Start Byte) //Now data is ready,you can read it out. while (Read_Byte_MMC() != 0xfe)。 readPos=0。 SD_get_data(512,buffer) 。 //512字節(jié)被讀出到buffer中return 0。}其中SD_get_data函數(shù)如下:// 獲取數(shù)據(jù)到buffer中//void SD_get_data(unsigned int Bytes,unsigned char *buffer) { unsigned int j。 for (j=0。jBytes。j++) *buffer++ = Read_Byte_SD()。}6) 扇區(qū)寫扇區(qū)寫是SD卡驅動的另一目的。每次扇區(qū)寫操作將向SD卡的某個扇區(qū)中寫入512個字節(jié)。過程與扇區(qū)讀相似,只是數(shù)據(jù)的方向相反與寫入命令不同而已。扇區(qū)寫的時序:扇區(qū)寫的程序例程:// 寫512個字節(jié)到SD卡的某一個扇區(qū)中去 返回0說明寫入成功//unsigned char SD_write_sector(unsigned long addr,unsigned char *Buffer){ unsigned char tmp,retry。 unsigned int i。 //, 命令24 unsigned char CMD[] = {0x58,0x00,0x00,0x00,0x00,0xFF}。 addr = addr 9。 //addr = addr * 512 CMD[1] = ((addr amp。 0xFF000000) 24 )。 CMD[2] = ((addr amp。 0x00FF0000) 16 )。 CMD[3] = ((addr amp。 0x0000FF00) 8 )。 //寫命令24到SD卡中去 retry=0。 do { //為了可靠寫入,寫100次 tmp=Write_Command_SD(CMD)。 retry++。 if(retry==100) { return(tmp)。 //send mamd Error! } } while(tmp!=0)。 //在寫之前先產(chǎn)生100個時鐘信號160
點擊復制文檔內(nèi)容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1