日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

STM32F103C8T6+SD/Micro TF卡+SFATS+软SPI+硬SPI

發布時間:2023/12/31 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 STM32F103C8T6+SD/Micro TF卡+SFATS+软SPI+硬SPI 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

使用環境(藍色粗體字為特別注意內容)
1、軟件環境:Keil MDK 5.15
2、硬件環境:STM32F103C8T6最小系統,Micro TF卡

在一個項目中需要用到SD卡,于是在某寶買了一塊Micro TF卡插槽,SPI驅動:

貌似不用那個小芯片好像可以用IO口直接驅動TF卡,不知道那個小芯片干嘛用的,也沒工夫去追究了,廢話少說,先來看接線:

TF卡模塊 ? STM32單片機 GND ? ? -> ? ?GND CS ? ? ?-> ? ?PB12/SPI2_NSS SCK ? ? -> ? ?PB13/SPI2_SCK MISO ? -> ? ?PB14/SPI2_MISO MOSI ? -> ? ?PB15/SPI2_MOSI


關于CS/NSS管腳,即我們熟知的片選信號,作為主設備NSS管腳為高電平,從設備NSS管腳為低電平。

一開始為了性能考慮,打算使用硬件SPI2,后來發現速度太快了,SD/TF卡的速度跟不上,調了半天調不出來,必須降低APB總線速率:

//配置APB1(PCLK1)鐘=AHB 1/2時鐘

?RCC_PCLK2Config(RCC_HCLK_Div4); //72/4=18MHz ,會降低總線頻率,導致串口不正常!慎用!

但是總線速率一下降,延時函數,串口通信函數都會受影響,于是考慮使用兩種方式實現即硬件SPI+軟件模擬SPI。

最終使用軟件模擬SPI并且移植SFATS,讀取2G的SD卡成功,

?

main函數如下?

/******************************************************************************** @file SDFatFS/source/main.c* @author Pang* @version V1.0.2* @date 1/1/2019* @brief******************************************************************************/#include "common.h" #include "led.h" #include "delay.h" #include "usart_printf.h"char path[10] = "0:";// SD卡根目錄 FATFS fs;char wbuff[] = "This is FATFS function test\r\n * f_open\r\n * f_write\r\n * f_close\r\n"; char wbuff2[512 * 26];// ******************************************************************************* // Function Name : main // Description : // Input : None // Output : None // Return : None // ******************************************************************************* int main(void) {u16 i, j;LED_Init();Hardware_Configuration();ffext_mount(0, &fs);ffext_scanfiles (path);for(i = 0; i < 26; i++){for(j = 0; j < 512; j++){wbuff2[i * 512 + j] = 'A' + i;}}ffext_read("0:/test/test.ini", wbuff2, (512 * 26), FA_OPEN_ALWAYS | FA_READ);ffext_write("0:/test/out.ini", wbuff2, (512 * 26), FA_OPEN_ALWAYS | FA_WRITE);printu(">%s", wbuff2);// ffext_write("0:CardInfo.txt", wbuff, sizeof(wbuff)-1, FA_OPEN_ALWAYS | FA_WRITE);// ffext_write("0:ffext2.ini", wbuff2, (512*26), FA_OPEN_ALWAYS | FA_WRITE);for(i = 0; i < 26; i++){for(j = 0; j < 512; j++){wbuff2[i * 512 + j] = 0;}}ffext_read("0:ffext2.ini", wbuff2, (512 * 26), FA_OPEN_ALWAYS | FA_READ);ffext_write("0:ffext1.txt", wbuff2, (512 * 26), FA_OPEN_ALWAYS | FA_WRITE);while (1){} }

?

總結

以上是生活随笔為你收集整理的STM32F103C8T6+SD/Micro TF卡+SFATS+软SPI+硬SPI的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。