![豆皮 - STM32開發(fā)板入門教程(十三) - SPI模式讀寫SD卡 (原創(chuàng))_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/25/845f5e04-2656-45b5-9cfe-ace5bd5297eb/845f5e04-2656-45b5-9cfe-ace5bd5297eb1.gif)
![豆皮 - STM32開發(fā)板入門教程(十三) - SPI模式讀寫SD卡 (原創(chuàng))_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/25/845f5e04-2656-45b5-9cfe-ace5bd5297eb/845f5e04-2656-45b5-9cfe-ace5bd5297eb2.gif)
![豆皮 - STM32開發(fā)板入門教程(十三) - SPI模式讀寫SD卡 (原創(chuàng))_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/25/845f5e04-2656-45b5-9cfe-ace5bd5297eb/845f5e04-2656-45b5-9cfe-ace5bd5297eb3.gif)
![豆皮 - STM32開發(fā)板入門教程(十三) - SPI模式讀寫SD卡 (原創(chuàng))_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/25/845f5e04-2656-45b5-9cfe-ace5bd5297eb/845f5e04-2656-45b5-9cfe-ace5bd5297eb4.gif)
![豆皮 - STM32開發(fā)板入門教程(十三) - SPI模式讀寫SD卡 (原創(chuàng))_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-1/25/845f5e04-2656-45b5-9cfe-ace5bd5297eb/845f5e04-2656-45b5-9cfe-ace5bd5297eb5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、豆皮 - STM32開發(fā)板入門教程(十三) - SPI模式讀寫SD卡 (原創(chuàng))豆皮 - STM32開發(fā)板入門教程(十三) - SPI模式讀寫SD卡 (原創(chuàng)) 版權(quán)所有 STMFANS 原創(chuàng),轉(zhuǎn)載請(qǐng)保留出處 功能介紹 :使用SPI模式 讀寫SD卡block數(shù)據(jù) 可通過串口發(fā)送到PC機(jī)查看 SD卡是Secure Digital Card卡的簡稱,直譯成漢語就是“安全數(shù)字卡”,是由日本松下公司、東芝公司和美國SANDISK公司共同開發(fā)研制的全新的存儲(chǔ)卡產(chǎn)品。SD存儲(chǔ)卡是一個(gè)完全開放的標(biāo)準(zhǔn)(系統(tǒng)),多用于MP3、數(shù)碼攝像機(jī)、數(shù)碼相機(jī)、電子圖書、AV器材等等,尤其是被廣泛應(yīng)用在超薄數(shù)碼相機(jī)上。呵呵 現(xiàn)在
2、偶們做東西也喜歡用sd卡了 為啥? 容量大啊 價(jià)格便宜啊 讀寫次數(shù)100000次以上(也有資料說是300000次 呵呵) 這個(gè)次數(shù)夠猛了啊 讀寫的速度也很快 現(xiàn)在高速的SD卡寫速度可以達(dá)到20M/S 呵呵 如果你買的SD卡達(dá)不到這個(gè)速度 就應(yīng)該考慮一下是不是買到假貨了 呵呵 現(xiàn)在SD卡都是白菜價(jià)了啊 貌似4G的也就50塊錢一個(gè)啦 嗯 不扯遠(yuǎn)了 繼續(xù)正題 SD卡讀寫有2種方式 一種是SD模式 一種是SPI模式 SD模式操作時(shí)序復(fù)雜 使用的IO口也多 呵呵 常用的一般是SPI模式 我們今天介紹的也是SPI模式 接口簡單 移植也方便 速度也不慢了啊 使用高速的SPI模式 1M/S應(yīng)該是很容易達(dá)到的
3、剛剛把STM32下的SD卡讀寫移植好 也沒測試讀寫速度 呵呵 下回有時(shí)間把讀寫速度測試了發(fā)上來 呵呵 SD卡初始化過程:1. 初始化STM32的SPI接口 使用低速模式2. 延時(shí)至少74clock3. 發(fā)送CMD0,需要返回0x01,進(jìn)入Idle狀態(tài)4. 循環(huán)發(fā)送CMD55+ACMD41,直到返回0x00,進(jìn)入Ready狀態(tài)5. 設(shè)置讀寫block大小為512byte 5. 把STM32的SPI設(shè)置為高速模式讀一個(gè)block塊的過程1. 發(fā)送CMD17(單塊)或CMD18(多塊)讀命令,返回0x002. 接收數(shù)據(jù)開始令牌0xfe + 正式數(shù)據(jù)512Bytes + CRC 校驗(yàn)2Bytes寫一個(gè)
4、block塊的過程1. 發(fā)送CMD24(單塊)或CMD25(多塊)寫命令,返回0x002. 發(fā)送數(shù)據(jù)開始令牌0xfe + 正式數(shù)據(jù)512Bytes + CRC校驗(yàn)2Bytes附上一個(gè)datasheet上的標(biāo)準(zhǔn) spi mode initialization flow 初始化函數(shù)/* Function Name : SD_MMC_SPI_Init* Description : SD_MMC_SPI_Init* Input : None* Output : None* Return : zero init success, non-zero init error*/u8 SD_MMC_SPI_In
5、it(void) GPIO_InitTypeDef GPIO_InitStructure; /* Enable SPI1 and GPIO clocks */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1 | RCC_APB2Periph_GPIOA | RCC_APB2Periph_SD_MMC_SPI_CS, ENABLE); /* Configure SPI1 pins: SCK, MISO and MOSI */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
6、 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); /* Configure SD_MMC_SPI_CS */ GPIO_InitStructure.GPIO_Pin = SD_MMC_SPI_CS_Pin_CS; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(SD_MMC_SPI_CS, &a
7、mp;GPIO_InitStructure); / /* initialize SPI with lowest frequency */ SD_MMC_Low_Speed(); /* card needs 74 cycles minimum to start up */ for(u8 i = 0; i < 10; +i) /* wait 8 clock cycles */ SD_MMC_ReadWrite_Byte(0x00); /* address card */ SD_MMC_SPI_SELECT(); /* reset card */ u8 response; for(u16 i
8、= 0; ; +i) response = SD_MMC_Send_Command(CMD_GO_IDLE_STATE , 0 ); if( response = 0x01 ) break; if(i = 0x1ff) SD_MMC_SPI_DESELECT(); return 1; /* wait for card to get ready */ for(u16 i = 0; ; +i) response = SD_MMC_Send_Command(CMD_SEND_OP_COND, 0); if(!(response & (1 << R1_IDLE_STATE) bre
9、ak; if(i = 0x7fff) SD_MMC_SPI_DESELECT(); return 1; /* set block size to 512 bytes */ if(SD_MMC_Send_Command(CMD_SET_BLOCKLEN, 512) SD_MMC_SPI_DESELECT(); return 1; /* deaddress card */ SD_MMC_SPI_DESELECT(); /* switch to highest SPI frequency possible */ SD_MMC_High_Speed(); return 0; 發(fā)送一個(gè)命令/* Func
10、tion Name : SD_MMC_Send_Command* Description : SD_MMC_Send_Command* Input : None* Output : None* Return : None*/u8 SD_MMC_Send_Command(u8 cmd, u32 arg) u8 Response; u8 Retry = 0; SD_MMC_ReadWrite_Byte(0xff); SD_MMC_SPI_SELECT(); /分別寫入命令 SD_MMC_ReadWrite_Byte(cmd | 0x40); SD_MMC_ReadWrite_Byte(arg &g
11、t;> 24); SD_MMC_ReadWrite_Byte(arg >> 16); SD_MMC_ReadWrite_Byte(arg >> 8); SD_MMC_ReadWrite_Byte(arg); SD_MMC_ReadWrite_Byte(0x95); do / 等待響應(yīng),響應(yīng)的開始位為0 Response = SD_MMC_ReadWrite_Byte(0xff); Retry+; while( (Response&0x80)!=0) && (Retry < 200) ); SD_MMC_SPI_DESELECT();
12、return Response; /返回狀態(tài)值 讀一個(gè)block塊 讀取成功返回0 非0 則讀取失敗/* Function Name : SD_MMC_Read_Single_Block* Description : SD_MMC_Read_Single_Block* Input : sector number and buffer data point* Output : None* Return : zero success, non-zero error*/u8 SD_MMC_Read_Single_Block(u32 sector, u8* buffer) u8 Response; u
13、16 i; u16 Retry = 0; /讀命令 send read command Response = SD_MMC_Send_Command(CMD_READ_SINGLE_BLOCK, sector<<9); if(Response != 0x00) return Response; SD_MMC_SPI_SELECT(); / start byte 0xfe while(SD_MMC_ReadWrite_Byte(0xff) != 0xfe) if(+Retry > 0xfffe) SD_MMC_SPI_DESELECT(); return 1; /timeout
14、 for(i = 0; i < 512; +i) /讀512個(gè)數(shù)據(jù) *buffer+ = SD_MMC_ReadWrite_Byte(0xff); SD_MMC_ReadWrite_Byte(0xff); /偽crc SD_MMC_ReadWrite_Byte(0xff); /偽crc SD_MMC_SPI_DESELECT(); SD_MMC_ReadWrite_Byte(0xff); / extra 8 CLK return 0; 寫一個(gè)block塊 成功返回0 非0 則寫入失敗/* Function Name : SD_MMC_Write_Single_Block* Descrip
15、tion : SD_MMC_Write_Single_Block* Input : sector number and buffer data point* Output : None* Return : zero success, non-zero error.*/u8 SD_MMC_Write_Single_Block(u32 sector, u8* buffer)u8 Response;u16 i;u16 retry=0; /寫命令 send write commandResponse = SD_MMC_Send_Command(CMD_WRITE_SINGLE_BLOCK, secto
16、r<<9);if(Response != 0x00) return Response;SD_MMC_SPI_SELECT();SD_MMC_ReadWrite_Byte(0xff);SD_MMC_ReadWrite_Byte(0xff);SD_MMC_ReadWrite_Byte(0xff); /發(fā)開始符 start byte 0xfeSD_MMC_ReadWrite_Byte(0xfe); /送512字節(jié)數(shù)據(jù) send 512 bytes datafor(i=0; i<512; i+) SD_MMC_ReadWrite_Byte(*buffer+);SD_MMC_ReadW
17、rite_Byte(0xff); /dummy crcSD_MMC_ReadWrite_Byte(0xff); /dummy crcResponse = SD_MMC_ReadWrite_Byte(0xff);/等待是否成功 judge if it successfulif( (Response&0x1f) != 0x05) SD_MMC_SPI_DESELECT(); return Response;/等待操作完 wait no busywhile(SD_MMC_ReadWrite_Byte(0xff) != 0x00) if(retry+ > 0xfffe) SD_MMC_SPI_DESELECT(); return 1; SD_MMC_SPI_DESELECT();SD_MMC_ReadWrite_Byte(0xff);/ extra 8 CL
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代醫(yī)療用品的冷鏈物流管理策略
- 現(xiàn)代農(nóng)業(yè)技術(shù)推廣與農(nóng)業(yè)可持續(xù)發(fā)展
- 媽媽班活動(dòng)方案國慶節(jié)
- 2023八年級(jí)物理上冊(cè) 第二章 物質(zhì)世界的尺度、質(zhì)量和密度第二節(jié) 物體的質(zhì)量及其測量說課稿 (新版)北師大版
- 4《同學(xué)相伴》第一課時(shí) 說課稿-2023-2024學(xué)年道德與法治三年級(jí)下冊(cè)統(tǒng)編版
- 《6~9的加減法-用減法解決問題》說課稿-2024-2025學(xué)年一年級(jí)上冊(cè)數(shù)學(xué)人教版001
- 1少讓父母為我擔(dān)心(說課稿)-統(tǒng)編版(五四制)道德與法治四年級(jí)上冊(cè)
- 2024-2025學(xué)年高中物理 第四章 勻速圓周運(yùn)動(dòng) 第3節(jié) 向心力的實(shí)例分析說課稿 魯科版必修2
- Unit3《It's a colourful world!》(說課稿)-2024-2025學(xué)年外研版(三起)(2024)英語三年級(jí)上冊(cè)(2課時(shí))
- Unit 4 I have a pen pal Part B Let's learn(說課稿)-2023-2024學(xué)年人教PEP版英語六年級(jí)上冊(cè)
- (二模)遵義市2025屆高三年級(jí)第二次適應(yīng)性考試試卷 地理試卷(含答案)
- 二零二五隱名股東合作協(xié)議書及公司股權(quán)代持及回購協(xié)議
- 浙江省湖州是吳興區(qū)2024年中考語文二模試卷附參考答案
- 風(fēng)電設(shè)備安裝施工專項(xiàng)安全措施
- IQC培訓(xùn)課件教學(xué)課件
- 2025年計(jì)算機(jī)二級(jí)WPS考試題目
- 高管績效考核全案
- 2024年上海市中考英語試題和答案
- 教育部《中小學(xué)校園食品安全和膳食經(jīng)費(fèi)管理工作指引》知識(shí)培訓(xùn)
- 長沙醫(yī)學(xué)院《無機(jī)化學(xué)》2021-2022學(xué)年第一學(xué)期期末試卷
- eras婦科腫瘤圍手術(shù)期管理指南解讀
評(píng)論
0/150
提交評(píng)論