打印

求 万利EK-STM32 的FATFS 移植好的KEIL MDK软件包

[复制链接]
1843|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
BBSTOM|  楼主 | 2013-9-5 10:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
自己移植到出现 FILE NO  SYSTEM .  搞几天没头绪了!
也发觉这个FATFS 系统经常改变。变来变去的,从R0.06---R0.09 0.09A /B.....

各位有没有  万利EK-STM32 的FATFS 移植好的KEIL MDK软件包,请发一个!
谢谢!
沙发
BBSTOM|  楼主 | 2013-9-6 08:12 | 只看该作者

使用特权

评论回复
板凳
mmuuss586| | 2013-9-6 09:34 | 只看该作者
你自己找万利就好了

使用特权

评论回复
地板
BBSTOM|  楼主 | 2013-9-6 10:53 | 只看该作者
万利木有。 只是SPI读SD的接口驱动而已,没有完整的FATFS KEIL MDK包。

万利也不过是个小公司,没有这么多人精力来开发软件的啊!

使用特权

评论回复
5
BBSTOM|  楼主 | 2013-9-9 10:23 | 只看该作者
disk_sta=disk_initialize(0);//disk_status        
f_mount(0, &fatfs[0]);
f_open(&fsrc, "0:/ABC.TXT", FA_CREATE_NEW | FA_READ);

出现
FR_NO_FILESYSTEM,                /* (13) There is no valid FAT volume */

本人使用SPI1 硬件 和 使用 IO 软件模拟SPI1读都是这样!

开发板就是万利电子的 EK-STM32F



#if defined(USE_EK_STM32F)

#define CARD_SUPPLY_SWITCHABLE   1
#define GPIO_PWR                 GPIOD
#define RCC_APB2Periph_GPIO_PWR  RCC_APB2Periph_GPIOD
#define GPIO_Pin_PWR             GPIO_Pin_10
#define GPIO_Mode_PWR            GPIO_Mode_Out_OD /* pull-up resistor at power FET */
#define SOCKET_WP_CONNECTED      0
#define SOCKET_CP_CONNECTED      0
#define SPI_SD                   SPI1
#define GPIO_CS                  GPIOD
#define RCC_APB2Periph_GPIO_CS   RCC_APB2Periph_GPIOD
#define GPIO_Pin_CS              GPIO_Pin_9
      
#define DMA_Channel_SPI_SD_RX    DMA1_Channel2
#define DMA_Channel_SPI_SD_TX    DMA1_Channel3
      
#define DMA_FLAG_SPI_SD_TC_RX    DMA1_FLAG_TC2
#define DMA_FLAG_SPI_SD_TC_TX    DMA1_FLAG_TC3
      
#define GPIO_SPI_SD              GPIOA
#define GPIO_Pin_SPI_SD_SCK      GPIO_Pin_5
#define GPIO_Pin_SPI_SD_MISO     GPIO_Pin_6
#define GPIO_Pin_SPI_SD_MOSI     GPIO_Pin_7
#define RCC_APBPeriphClockCmd_SPI_SD  RCC_APB2PeriphClockCmd
#define RCC_APBPeriph_SPI_SD     RCC_APB2Periph_SPI1


/* - for SPI1 and full-speed APB2: 72MHz/4=18MHZ */
#define SPI_BaudRatePrescaler_SPI_SD  SPI_BaudRatePrescaler_4

#endif

/*******************************************************************************
* Function Name  : static void MMC_SPI_Config(void)
* Description    : 初始化 SPI1作为SD卡的读写驱动
* Input          : None
* Output         : None
* Return         : None
* Attention             : None
*******************************************************************************/
void MMC_SPI_Config(void)
{
    SPI_InitTypeDef  SPI_InitStructure;
    GPIO_InitTypeDef GPIO_InitStructure;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA  |
            RCC_APB2Periph_GPIOD |
            RCC_APB2Periph_AFIO |
            RCC_APB2Periph_SPI1,
            ENABLE);

    //RCC_PCLK2Config(RCC_HCLK_Div4); //72/4=18MHz  降APB2时钟
      
          //SPI MISO GPIO_Pin_SPI_SD_MISO
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;//上拉输入
    GPIO_Init(GPIOA, &GPIO_InitStructure);      
      
    /* Configure SPI1 pins:  SCK, MISO and MOSI */
    GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_SPI_SD_SCK | GPIO_Pin_SPI_SD_MISO| GPIO_Pin_SPI_SD_MOSI;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_Init(GPIOA, &GPIO_InitStructure);


    /* Configure PD9 pin: CS pin  ,PD10 : SD Power as Output push-pull, used as Flash Chip select */
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9|GPIO_Pin_10;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_Init(GPIOD, &GPIO_InitStructure);

    /* SPI1 configuration */
    SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
    SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
    SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
    SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;         //CPOL=1 时钟悬空高
    SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;        //CPHA=1 数据捕获第二个
    SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
    SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256;
    SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
    SPI_InitStructure.SPI_CRCPolynomial = 7;
    SPI_Init(SPI1, &SPI_InitStructure);

    /* Enable SPI1  */
    SPI_Cmd(SPI1, ENABLE);   
               
               
}

使用特权

评论回复
6
BBSTOM|  楼主 | 2013-9-9 10:24 | 只看该作者
#define MMC_SELECT()      GPIOD->BRR=GPIO_BRR_BR9            /* MMC CS = L */
#define MMC_DESELECT()    GPIOD->BSRR=GPIO_BSRR_BS9         /* MMC CS = H */


#define SELECT()        GPIOD->BRR=GPIO_BRR_BR9  
#define DESELECT()      GPIOD->BSRR=GPIO_BSRR_BS9
//si2301 P MOS FETT  -2.5V RSON
#define MMC_POWERON()     GPIOD->BRR=GPIO_BRR_BR10      // GPIO_ResetBits(GPIOD, GPIO_Pin_10)      
#define MMC_POWEROFF()    GPIOD->BSRR=GPIO_BSRR_BS10    // GPIO_SetBits(GPIOD, GPIO_Pin_10)

使用特权

评论回复
7
BBSTOM|  楼主 | 2013-9-9 13:41 | 只看该作者
WJ

SD_FAT2(ok).rar

1.81 MB

使用特权

评论回复
8
BBSTOM|  楼主 | 2013-9-9 20:46 | 只看该作者

使用特权

评论回复
9
outstanding| | 2013-9-9 21:17 | 只看该作者

使用特权

评论回复
10
BBSTOM|  楼主 | 2013-9-10 22:47 | 只看该作者
disk_init 通过,  就是在f_open 中的 F_MOUT 里面出了问题 FR_NO_SYSTEM.

大家是如何处理这种问题的?

使用特权

评论回复
11
xzy520xr| | 2013-9-11 10:17 | 只看该作者
这个问题很典型,就是那里可以找到 FAT32文件系统的C程序

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

56

主题

282

帖子

1

粉丝