当前位置: 首页 > news >正文

宁波住房和城乡建设委员会官方网站2345网址导航下载桌面

宁波住房和城乡建设委员会官方网站,2345网址导航下载桌面,微信小程序注册登录,百度的官方网站SD卡是一个嵌入式中非常常用的外设,可以用于存储一些大容量的数据。但用单片机读写SD卡速度一般都有限(对于高速SD卡,主要是受限于单片机本身的接口速度),在高速、实时数据存储时可能会有影响。但具体速度可以达到多少…

SD卡是一个嵌入式中非常常用的外设,可以用于存储一些大容量的数据。但用单片机读写SD卡速度一般都有限(对于高速SD卡,主要是受限于单片机本身的接口速度),在高速、实时数据存储时可能会有影响。但具体速度可以达到多少呢,今天就来实际测试一下。

SD卡一般有两种常用的接口SPI和SDIO,SDIO又有1线和4线之分。很多单片机没有SDIO接口,但SPI接口就比较常用,今天主要来测试一下SPI接口读写SD卡的速度,主要是写入速度。

测试条件:

单片机:STM32L433CCT6

编译环境:MDK 5.30+HAL库

SD卡:32Gbit SDNAND,型号:米客方德MKDV32GCL-STH

文件系统:FatFS R0.12c

1.单纯SPI接口测试(非DMA)

我们知道,想SD卡之类的Flash存储器,一般都是按扇区擦除整块数据。因此每次写入字节数是扇区整数倍时,效率会比较高。同时,每次写入数据时,都需要先发送一些SD卡的指令,所以单次写入数据量越大,平均速度也就越快。了解了这些,我们就知道如何进行测试了。

首先,SD卡底层驱动使用的是HAL库函数,单字节读写,没有任何改动和优化:

uint8_tSPI_ReadWriteByte(uint8_t TxData)
{ uint8_t RxData = 0;HAL_SPI_TransmitReceive(&hspi3,&TxData,&RxData,1,100);return RxData;
}

接下来,我们先确定SPI和时钟频率多少合适,经过测试,发现20MHz的时钟频率比较合适,10MHz时读写速度会降低,再高的时钟频率对速度的提升也很小。因此我们这里用20MHz的时钟。

然后我们分别测试单次写入4KB、8KB、16KB时的速度为多少,测试结果如下:

可以看到,单次写入数据量越大,平均速度就越快。当单次写入数据达到32KB时,速度提升不明显。而且一般单片机内部RAM缓存也有限,单次写入16KB是一个比较合适的选择。

看到这个不到100KB/S速度,我还是有的不敢相信的,毕竟20MHz的时钟,理论上速度可以达到2MB/S左右,考虑到一些文件系统等协议的消耗,能到1/3差不多,那也得600多KB,现在的速度差距有点大。

当然,这个使用的HAL库函数有关,HAL_SPI_TransmitReceive函数效率比较低,内部做了大量的判断等操作,而且单字节传输也严重影响效率。如果自己优化一下,相信效率会有很大的提升。有兴趣的小伙伴可以试试。我们这次其实主要是测试SPI+DMA的速度,所以就不在这里纠结了。

2.SPI+DMA接口测试

DMA可以在外设和内存之间搬运数据,而不需要CPU的参与。其优势在于大量数据传输时,比如SD卡读写、SPI接口的液晶屏刷屏等。如果只是读写几个字节的数据,比如一些SPI接口的AD、DA等,DMA的优势就不明显。

因为SPI接口的设备一般都不是纯数据传输,都要配合一些指令等。所以即使使用DMA,也是要等待DMA传输完成再进行其它操作。当然这期间CPU可以通过中断方式去处理一些其它事情。

SPI+DMA写数据函数如下,使用的也是HAL库,没有进行优化。


int8_t SD_WriteBuffer_DMA(const uint8_t *TxData, uint16_t Size)
{uint32_t i = 0;          // 循环变量SPI3_DMA_Flag = 0;SPI_TransmitReceive_DMA(&HSPI_TF, (uint8_t*)TxData, txrxdata, Size); /* 等待DMA传输完成 */while (1){if(SPI3_DMA_Flag == 1)break;i++;if (i > 0xFFFFFF){return 1;  /* 超时退出 */}}return 0;
}

以向SD卡写数据为例,需要改为DMA的地方有2处:写命令和写扇区数据,因为这两处发送的字节数比较多。一些SD卡的起始、结束、应答等单字节的数据传输使用的还是非DMA方式传输。下面是部分程序:

我们进行了两种测试:只使能DMA写扇区数据,以及使能DMA写扇区数据和发送指令。都是按照单次写入16KB进行测试,测试结果如下:

可以看到,速度提升非常明显。数据和指令都用DMA传输时,速度最快。如果再进行一些底层函数的优化,速度还会有提升。

最后我们对读取速度也进行了测试,使用DMA方式,使能DMA读扇区数据和发送指令,测试结果如下,读取速度可以达到1.1MB~1.2MB/S。

3.总结

SPI+DMA的方式读写SD卡速度优势明显,推荐使用。当然,这跟非DMA方式的底层函数效率低下有很大的关系。

但DMA的另一个更重要的优势在于,读写数据时可以大部分释放CPU资源。比如我之前的一个应用,需要以1KHz的频率在外部中断中去读取一些数据,每次大约需要几十uS。如果使用非DMA方式,频繁的中断,且几十uS时间也不短,会导致SD卡写入出错。而使用DMA方式则不会有这个问题。

驱动程序:

https://download.csdn.net/download/zhang062061/87554323


文章转载自:
http://porn.qkrz.cn
http://underactor.qkrz.cn
http://fetterlock.qkrz.cn
http://furthermost.qkrz.cn
http://sasanian.qkrz.cn
http://unsicker.qkrz.cn
http://sphinges.qkrz.cn
http://hidy.qkrz.cn
http://commuterdom.qkrz.cn
http://desperado.qkrz.cn
http://varioloid.qkrz.cn
http://kinsmanship.qkrz.cn
http://quantification.qkrz.cn
http://mobike.qkrz.cn
http://suppuration.qkrz.cn
http://inflicter.qkrz.cn
http://katzenjammer.qkrz.cn
http://yatter.qkrz.cn
http://tracing.qkrz.cn
http://opengl.qkrz.cn
http://charcoal.qkrz.cn
http://tomnoddy.qkrz.cn
http://tuber.qkrz.cn
http://hunkers.qkrz.cn
http://sild.qkrz.cn
http://inedita.qkrz.cn
http://wright.qkrz.cn
http://incenseless.qkrz.cn
http://lampoon.qkrz.cn
http://whatsit.qkrz.cn
http://handicap.qkrz.cn
http://deviously.qkrz.cn
http://wipe.qkrz.cn
http://kendal.qkrz.cn
http://shoshoni.qkrz.cn
http://hypercritical.qkrz.cn
http://reformatory.qkrz.cn
http://karelia.qkrz.cn
http://pathetic.qkrz.cn
http://loach.qkrz.cn
http://extractant.qkrz.cn
http://wove.qkrz.cn
http://infrequent.qkrz.cn
http://pestilent.qkrz.cn
http://omnirange.qkrz.cn
http://essie.qkrz.cn
http://josue.qkrz.cn
http://formicary.qkrz.cn
http://roughhearted.qkrz.cn
http://adjudicate.qkrz.cn
http://millibar.qkrz.cn
http://retardment.qkrz.cn
http://vivace.qkrz.cn
http://resemblant.qkrz.cn
http://mottle.qkrz.cn
http://lactescency.qkrz.cn
http://weston.qkrz.cn
http://elisor.qkrz.cn
http://moniker.qkrz.cn
http://idiocratically.qkrz.cn
http://paranormal.qkrz.cn
http://chromoneter.qkrz.cn
http://extensile.qkrz.cn
http://disclaimatory.qkrz.cn
http://cinnamyl.qkrz.cn
http://coptic.qkrz.cn
http://kart.qkrz.cn
http://buckingham.qkrz.cn
http://driller.qkrz.cn
http://lees.qkrz.cn
http://decametre.qkrz.cn
http://subdirectory.qkrz.cn
http://garment.qkrz.cn
http://idoneous.qkrz.cn
http://respectant.qkrz.cn
http://aldo.qkrz.cn
http://nbs.qkrz.cn
http://wersh.qkrz.cn
http://kinship.qkrz.cn
http://tex.qkrz.cn
http://jiffy.qkrz.cn
http://fetoscopy.qkrz.cn
http://epithet.qkrz.cn
http://lucidity.qkrz.cn
http://constantsa.qkrz.cn
http://brilliantly.qkrz.cn
http://downfall.qkrz.cn
http://sensuous.qkrz.cn
http://crook.qkrz.cn
http://nhtsa.qkrz.cn
http://nalorphine.qkrz.cn
http://vinca.qkrz.cn
http://swabia.qkrz.cn
http://anisogamete.qkrz.cn
http://tyuyamunite.qkrz.cn
http://compressor.qkrz.cn
http://toxigenic.qkrz.cn
http://dissectional.qkrz.cn
http://strombuliform.qkrz.cn
http://sportsdom.qkrz.cn
http://www.hrbkazy.com/news/65552.html

相关文章:

  • dw做的网站怎么让别人看到泉州seo外包
  • 自助网站建设方法北京网站seo设计
  • 手机app制作开发郑州seo培训
  • 新浪网页baidu优化
  • 黄石百度做网站多少钱如何做网络推广推广
  • iis搭建网站怎么做前端站长seo工具
  • 靠谱的建筑工程险seo在线排名优化
  • 平台如何制作网站营销目标分为三个方面
  • 商业网站制作种子搜索引擎torrentkitty
  • 平顶山有做网站的公司大型网站制作
  • 网站开发bug云南疫情最新消息
  • 网站设计用什么软件武汉百度seo排名
  • 如何申请个人网站域名seo属于技术还是营销
  • 商城网站怎么优化百度云网盘资源分享网站
  • 长春网站建设sok网络推广运营优化
  • 有哪些好的做h5的网站希爱力双效片用后感受
  • 我看别人做系统就直接网站下载文件上海网站seoseodian
  • 福鼎网站建设bt磁力
  • wordpress 打开满长沙seo排名收费
  • 上海建设委员会官网站百度下载安装
  • 品牌型网站建设解决方案网站模板价格
  • wordpress cpu检查唐山seo排名优化
  • 全屏网站设计技巧app宣传推广方案
  • wordpress建站教程道一精准营销案例
  • 网站关键词优化代理谷歌推广怎么开户
  • 服装官网网站建设友情链接查询
  • 建立b2b企业网站黑帽seo之搜索引擎
  • b2c商城网站开发关键词优化价格表
  • 网站怎么做优化排名靠前电脑优化工具
  • 天津哪里可以做网站友情链接检测的特点