cancel
Showing results for 
Search instead for 
Did you mean: 

FatFs with SPI Flash porting on STM32 MCU

voyvoda .
Senior

I would like to implement FatFs on my STM32 MCU with SPI Flash, W25Q16JV.

Is there a sample code for this? How can I port it ?

20 REPLIES 20
ACice
Associate

Açıkçası ilgili vermiş olduğunuz dosya sistemi üzerinde çalışıyorum ancak ilk initialize mkfs ve mount ile ilgili kısımları geçiyorum. hatta disk size ve free space verilerini de alıyorum. Ancak restart sonrası bu durum bozuluyor. disk büyüklüklerini okumuyor. nedenini bir türlü bulamadım. başınıza geldiyse dönebilirseniz memnun olurum. Daha önce daha eski sürümünü microsd kart sürmek için başarı ile kullanmıştım. şimdi nedense bir türlü olmadı. Teşekkürler

Merhaba ilgili çalışmanızı tamamladınız mı?

embedded4ever
Associate

Merhabalar , @ACice​  , @Ogulcan Ariyurek​  , @voyvoda .​ , FatFs'i , Serial Flash ile kullanırken , yaşadığınız dezavantaj olarak nitelendirebileceğiniz bir durum oldu mu ? @ACice​bahsettiğiniz soruna karşı bir çözüm oluşturabildiniz mi?

Teşekkürler ,

Volkan

PDChauhan
Associate II

Hello @voyvoda . (Community Member)​ , I have implemented diskio.c file for my QPSI flash of 4MBytes with 4096 sector size. f_mkfs returns OK, but f_mount returns FR_NO_FILESYSTEM.

I could not open your given attachment "stm32_spi_flash_fatfs".

May you again share your attachment ?

Also, I have doubt for

     case GET_BLOCK_SIZE :

in IOCTL.

Should the return value be "BLOCK_SIZE" (which will be in bytes) or should it be value of how many sectors erased in which case value would be '1' ? I asked this as the comment for this case is

" /* Get erase block size in unit of sector (DWORD) */"

I have read the raw data from flash for the sector #63 where f_mkfs writes and data seems to be OK (FAT header)

Thanks and Regards.

PDChauhan
Associate II

it seems that Read Data in FatFs Flow and raw Flash data read outside FatFs are different!

PDChauhan
Associate II

FAT header is stored in sector #63. When I read sector 63 at the end of f_mkfs (), it is found as expected. After that I call f_mount (). I have read sector 63 at the beginning of f_mount () and found that the data is 0xFF. There is nothing between f_mkfs () and f_mount () that should change the data of sector #63.

What can be the reason for this? How can the data of sector 63 is 0xFF inside f_mount ()?

Thanks and Regards.

PDChauhan
Associate II

Hello All,

Is there any input / hint for my above observation?

Thanks.

Merhaba. SPI Flash koumayı sağlıklı şekilde tamamladınız mı ?

voyvoda .
Senior

Hello, I am able write and read successfully.

change the line in "ffconf.h" file as below

#define _MAX_SS  4096

change the line in "spi_flash.h" file as below

#define FLASH_SECTOR_SIZE 4096

the attached file should be modified as well

Hello, I am not able to create file through fatfs in w25q64 in stm32cubeide

with stm32f407vg.