2017-07-17 04:01 AM
to use the FATFs on the STM32F746NG-Discovery Board, I generate the code using the CubeMX.
this is my main.c file.
during the debugging, I found that the value returned by the f_mount is FR_NOT_READY, so that the function will always fall into Error_Handle();
but with the same board and sd card, the demo project:
STM32Cube_FW_F7_V1.7.0\Projects\STM32746G-Discovery\Applications\FatFs\FatFs_uSD\MDK-ARM
it could work well.
I want to know whether there is any other thing I've forgot to add to the project? Or the code generator itself has a big bug?
the method i generate the code is:
2. config the pinout
and choose the FATFS
3. resolve the clock
4.do nothing
5. change the heap size
7. and generate the project
8.open project and add this line to main.c
FATFS SDFatFs; /* File system object for SD card logical drive */
FIL MyFile; /* File object */char SDPath[4]; /* SD card logical drive path */if(f_mount(&SDFatFs, (TCHAR const*)SDPath, 1) != FR_OK)
{ Error_Handler(); }and rebuilt it, debug, falls into error_handle.
2018-07-06 05:24 PM
My bad for implicating the HAL code. To be specific:
1) the stm32h743i_eval_sd.c code (used in the application example in the repo which does work) doubles with the bsp_driver_sd.c generated by CubeMX.
There significant differences. Notably, the handling of the detection pin unique to the 743i_eval board via the IO port expander. The other differences are __weak assignments that are eventually redefined.
The sd_diskio.c appears to be generated by CubeMX using the sd_diskio_dma_rtos_template (I am guessing). I ran a diff of sd_diskio_dma_rtos_template against sd_diskio.c and they do not contain any code differences except for the user code areas. I did not think to do that before since the project\application example was using the template file with the 'template' removed from the file name and the #include '...h' fixed to point to the appropriate ..._eval .h.
So questions for John:
1) is the information you show taken from code generated by CubeMX?
2) was it using the 743i_eval board?
3) does the code also open/read/write without error? (I ask because you show the result of a mount which does work for me as well.)
4) If all the above are affirmative, can you attach a CubeMX project (.ioc) and a diff file for the generated code that needed adjustment as well as adjustments to the BSP/Driver code?
2018-07-06 06:37 PM
the bsp code works. instead of excluding the bsp code, exclude the non-working hal code
Found uSD Card
uSD file system mounted MicroSD Card-------------------------------------- Manufacturer : SanDisk Product name : SU04G Revision : 0x80 Serial number : 0xB2D90CEA Manufacture date : 0x103 Card type : SDHC/SDXC Version : 1 Class : 1461 Block Number : 7744512 Block Size : 512 Capacity : 3965190144 bytes Status : TRANSFER