OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3197|回复: 3

sd卡文件系统接口疑问

[复制链接]

4

主题

79

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
294
金钱
294
注册时间
2018-1-31
在线时间
46 小时
发表于 2018-6-2 16:57:52 | 显示全部楼层 |阅读模式
1金钱
看了很多历程,在处理SD卡接口使用DMA字节对齐问题时,
如果不对齐的BUFF,都是通过一块一块读,然后复制数据。
其实F4不是已经支持WORD到BYTE的DMA方式吗?为什么不用呢?
当一次读多块,用一块一块读,再拷贝数据,会慢很多很多的。。。
[mw_shl_code=applescript,true]u8 SD_ReadDisk(u8*buf,u32 sector,u8 cnt)
{
        u8 sta=SD_OK;
        long long lsector=sector;
        u8 n;
        lsector<<=9;
        if((u32)buf%4!=0)
        {
                 for(n=0;n<cnt;n++)
                {
                         sta=SD_ReadBlock(SDIO_DATA_BUFFER,lsector+512*n,512);//单个sector的读操作
                        memcpy(buf,SDIO_DATA_BUFFER,512);
                        buf+=512;
                }
        }else
        {
                if(cnt==1)sta=SD_ReadBlock(buf,lsector,512);            //单个sector的读操作
                else sta=SD_ReadMultiBlocks(buf,lsector,512,cnt);//多个sector  
        }
        return sta;
}[/mw_shl_code]

DMA配置为WORD->BYTE,会有什么问题吗?
[mw_shl_code=applescript,true]  SDDMA_InitStructure.DMA_Channel = SD_SDIO_DMA_CHANNEL;
  SDDMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)SDIO_FIFO_ADDRESS;
  SDDMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)BufferDST;
  SDDMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory;
  SDDMA_InitStructure.DMA_BufferSize = BufferSize;
  SDDMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
  SDDMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
  SDDMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word;
  SDDMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;[/mw_shl_code]



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-6-3 01:03:24 | 显示全部楼层
你试试,这种对齐是SDIO外设需要的
回复

使用道具 举报

4

主题

79

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
294
金钱
294
注册时间
2018-1-31
在线时间
46 小时
 楼主| 发表于 2018-6-3 15:53:45 | 显示全部楼层
肯定试过了才提出疑问的。就是不知道会有设么隐患。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-6-4 01:44:07 | 显示全部楼层
屋脊雀 发表于 2018-6-3 15:53
肯定试过了才提出疑问的。就是不知道会有设么隐患。

能用就先用吧。用多了,不出问题就基本可以确定是oK的了
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-18 03:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表