STM32 + FatFs + SD card via SPI【三】FatFS指令操作II

1. 系統初始與掛載

這是每次啟動時都要做的動作

>di 0	//disk_initialize() SD卡的上電程序
rc=0	//回覆成功

>ds 0	//disk_ioctl() 查看SD卡狀態(非必要)
Drive size: 15130624 sectors
Block size: 8192 sectors
Media type: 20
CSD:
00000000  40 0E 00 32 5B 59 00 00 39 B7 7F 80 0A 40 00 3B  @..2[Y..9....@.;
CID:
00000000  02 54 4D 53 41 30 38 47 14 44 2C DC 5A 00 F2 F9  .TMSA08G.D,.Z...
OCR:
00000000  C0 FF 80 00  ....
SD Status:
00000000  00 00 00 00 03 00 00 00 02 02 90 01 00 AA 00 00  ................
00000010  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00000020  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00000030  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................

>fi 0	//f_mount() 掛載volume
rc=0 FR_OK	//回覆成功


2. disk檔案列表

指令fl不加參數 顯示當前目錄

>fl	//f_readdir() 讀取目錄內容
D-HS- 2024/09/19 10:19         0  System Volume Information
D---- 2072/09/13 15:25         0  folder2
D---- 2024/09/19 13:54         0  folder1
----A 2024/08/29 15:48    230454  st_logo1.bmp
----A 2072/09/13 13:29        24  abc.txt
   2 File(s),    230478 bytes total
   3 Dir(s), 7729836032 bytes free

查看資料夾內容

>fl folder1	//查看folder1資料夾
----A 2024/09/19 13:55        22  test2.txt
   1 File(s),        22 bytes total
   0 Dir(s), 7729836032 bytes free


3. 讀取檔案

>fo 1 abc.txt	//f_open() 讀取檔案,參數 1 為read mode
rc=0 FR_OK

>fd 24	//顯示檔案24個字元,length大於檔案長度也沒關係
00000000  48 65 6C 6C 6F 20 41 42 43 20 57 6F 72 6C 64 21  Hello ABC World!
00000010  32 30 32 34 0D 0A 00 78  2024...x

再次執行fd 24則沒有任何資料顯示,因為上一個fd 24執行後,當前指標已移動到第25個字元位置

使用指令 fe 可以定位pointer

>fe 0	//f_lseek() 定位read/wirte時的指標位置
rc=0 FR_OK
fptr=0(0x0)

>fd 24	//在重新定址後就可以再次顯示內容
00000000  48 65 6C 6C 6F 20 41 42 43 20 57 6F 72 6C 64 21  Hello ABC World!
00000010  32 30 32 34 0D 0A 00 78  2024...x

執行完操作後把檔案關閉

>fc	//f_close()
rc=0 FR_OK


4. 建立新檔案並寫入內容

產生名為 xyz.txt檔案

>fo 4 xyz.txt	//f_open() 建立檔案,參數 4 為create mode
rc=0 FR_OK
>fl
D-HS- 2024/09/19 10:19         0  System Volume Information
D---- 2072/09/13 15:25         0  folder2
----A 2072/09/13 13:57         0  xyz.txt
D---- 2024/09/19 13:54         0  folder1
----A 2024/08/29 15:48    230454  st_logo1.bmp
----A 2072/09/13 13:29        24  abc.txt
   3 File(s),    230478 bytes total
   3 Dir(s), 7729836032 bytes free

為xyz.txt寫入數值0~9十個數

>fo 2 xyz.txt	//f_open() 開啟檔案,參數 2 為write mode
rc=0 FR_OK

>fw 10 48 49 50 51 52 53 54 55 56 57	//f_write()寫入檔案,長度10,ASCII十進制字元
10 bytes written with 0 kB/sec.

>fc	//關閉檔案
rc=0 FR_OK

>fl	//可以看到xyz.txt的size變為10 bytes
D-HS- 2024/09/19 10:19         0  System Volume Information
D---- 2072/09/13 15:25         0  folder2
----A 2072/09/13 14:01        10  xyz.txt
D---- 2024/09/19 13:54         0  folder1
----A 2024/08/29 15:48    230454  st_logo1.bmp
----A 2072/09/13 13:29        24  abc.txt
   3 File(s),    230488 bytes total
   3 Dir(s), 7729831936 bytes free
   
>fo 1 xyz.txt
rc=0 FR_OK

>fd 10	//顯示xyz.txt的內容
00000000  30 31 32 33 34 35 36 37 38 39  0123456789


5. 刪除檔案

>fl
D-HS- 2024/09/19 10:19         0  System Volume Information
D---- 2072/09/13 15:25         0  folder2
----A 2072/09/13 14:01        10  xyz.txt
D---- 2024/09/19 13:54         0  folder1
----A 2024/08/29 15:48    230454  st_logo1.bmp
----A 2072/09/13 13:29        24  abc.txt
   3 File(s),    230488 bytes total
   3 Dir(s), 7729831936 bytes free
   
>fu xyz.txt	//f_unlink()刪除檔案
rc=0 FR_OK

>fl	//檔案xyz.txt消失了
D-HS- 2024/09/19 10:19         0  System Volume Information
D---- 2072/09/13 15:25         0  folder2
D---- 2024/09/19 13:54         0  folder1
----A 2024/08/29 15:48    230454  st_logo1.bmp
----A 2072/09/13 13:29        24  abc.txt
   2 File(s),    230478 bytes total
   3 Dir(s), 7729836032 bytes free


留言

2024

11-27SPI Flash 操作 (Read/Write/Erase)
11-19Rotary Encoder Switch 旋轉編碼開關
11-14Command Line Interface - CLI via UART
11-14【STM32】USB HID - Volume Control
11-13【STM32】USB Custom HID
11-12【STM32】USB HID Keyboard + Mouse
11-12【STM32】USB HID Keyboard
11-12【STM32】USB HID Mouse
10-15SSD1306 128x64 OLED 【五】Wokwi Animator
09-2432F429IDISCOVERY - - LTDC [3] + FMC (SDRAM) + FatFS
09-2432F429IDISCOVERY - - LTDC [2] + FMC (SDRAM)
09-20STM32 + FatFs + SD card via SPI【三】FatFS指令操作II
09-19STM32 + FatFs + SD card via SPI【二】FatFS指令操作
09-18STM32 + FatFs + SD card via SPI【一】移植FatFS
09-0232F429IDISCOVERY - - LTDC [1]
04-17SSD1306 128x64 OLED 【四】Adafruit / GFX Library
04-17Arduino - Serial Plotter繪圖儀
04-16SSD1306 128x64 OLED 【三】
04-15SSD1306 128x64 OLED 【二】 Datasheet
04-12SSD1306 128x64 OLED 【一】I2C版本
03-20【freeRTOS】vTaskDelay 與 vTaskDelayUntil 的差異
03-19【freeRTOS】API功能列表
03-18【freeRTOS】Day1
03-08MBR和Blank project的差別
03-05刪除註冊檔registry的資料
02-27DFU over Bluetooth Low Energy
02-27nRF Util - 使用手冊
02-26nRF Command Line Tools
02-20建立BootLoader settings
02-19Secure DFU packet (ZIP) build 建立含袐鑰的Zip檔
02-19Secure DFU via BLE
02-19Secure DFU via UART
02-16nRF Util 安裝
01-16nRF52840 ic升級成nRF52840 Dongle的程式

2023

11-21[ SEGGER Embedded Studio ] 新增header files
11-21[ SEGGER Embedded Studio ] 編譯nRF52840時遇到的問題
11-07Arduino Nano ESP32 - Debugging除錯模式
11-03Git快速入手 - 使用Git GUI
10-30Git快速入手 - 使用Git Bash
10-12程式碼高亮顯示 -- google-code-prettify

2022

11-30[EZ-PD] CCG6DF CCG6SF的Host SDK遇到編譯錯誤(一)

2019

05-27[ Eagle PCB ] 合板成品
05-23#CASE_001_USB_TOOL_RL78_G12
05-22[ Eagle PCB ] 初次洗板
05-21[ Eagle PCB ] Panelize 併板
05-20[ Eagle PCB ] 建立自己的Library及元件
05-20[ Eagle PCB ] 添加library及元件
05-20[ Eagle PCB ] Introduce

2018

04-25[ TCP test Tool ] 好用的TCP Server/Client工具
01-16RZ/A1H -[0]- Renesas RZ/A1H YR0K77210S009BE BSP環境架設

2017

12-11EZ USB Suit使用JLink online debug FX3
10-20RL78 -[12]- CS+_CACX_Lab5_LowPower mode
10-16RL78 -[11]- CS+_CACX_Lab4_ADC_溫度感測
10-13RL78 -[10]- CS+_CACX_Lab4_ADC_內部參考電壓
10-13RL78 -[9]- CS+_Lab3_I2C + MPU6050
10-13RL78 -[8]- CS+_Lab2_Uart transmit
10-12RL78 -[7]- Renesas Flash Programmer 獨立燒錄軟體
10-12RL78 -[6]- CS+_雜記
10-12RL78 -[5]- CS+_tracking variables on debug mode
10-12RL78 -[4]- CS+_顯示ROM與RAM的使用size
10-12RL78 -[3]- CS+_Lab1_Led blinking
10-12RL78 -[2]- CS+專案建立
10-12RL78 -[1]- 開發環境介紹
10-06ESP-01 -[0]- 硬體設置
10-06LinkIt 7688 program Renesas RL78/G12 by 1-wire
10-06LinkIt Smart 7688 -[3]- Build the firmware from source codes
10-06LinkIt Smart 7688 -[2]- 使用UART進入bootloader / kernel console
10-06LinkIt Smart 7688 -[1]- 使用SSH連接kernel console
10-06LinkIt Smart 7688 -[0]- 初次使用
07-14LinkIt Smart 7688 -[9]- Using MRAA SPI in Python
07-13LinkIt Smart 7688 -[8]- Using MRAA UART in Python
07-12LinkIt Smart 7688 -[7]- Using MRAA I2C in Python
07-12LinkIt Smart 7688 -[6]- Using MRAA PWM in Python
07-12LinkIt Smart 7688 -[5]- Using MRAA GPIO in Python
07-10LinkIt Smart 7688 -[4]- 雜記
06-29輕乳酪蛋糕 Cotton Cheesecake
06-26VirtualBox 的 Ubuntu與Windows 共用資料夾

2015

04-29偵測USB PnP