【经验】先楫hpm6000使用SPI接口配合DMA实现40MB/S理论速度性能应用指南

2023-08-05 先楫半导体HPMicro公众号
hpm6000,先楫半导体 hpm6000,先楫半导体 hpm6000,先楫半导体 hpm6000,先楫半导体

在《 【经验】先楫hpm6000的SPI外设使用四线模式操作读写华邦flash的教程  》 一文中介绍了先楫SPI外设是为flash器件而生的控制器,但是在该篇文章读写flash的页是用的poll轮询读写spi fifo的接口,并没用DMA来进行加速优化。本篇就是基于SPI配合DMA实现理论速度性能。


一、问题点

(一) SPI FIFO poll阻塞发送无法发挥SPI理论速度性能

使用spi poll阻塞的时候,虽然能实现数据的完整传输,但是传输的时间并不能达到理想传输速度,比如SPI四线模式下,30M的SPI SCLK时钟,理论可以达到15MB/S速度。但实际测量当中并未达到该性能。从逻辑分析仪看到,发送flas一页数据,也就是256字节,从开始传输到结束传输的时间需要37.034μs,合计为6.91MB/S,与理论速度相差了2到3倍的距离。

从波形上看,导致这个速度达不到原因就在于,每个字节之间存在了一定的间隔时间,这些间隔的累积导致传输时间变长,导致总的时间变长,进而速度远远跟不上。

(二)使用了DMA仍然有SPI SCLK时钟不连续问题

从(一)的问题可以看出,要想达到理论速度,必须消除每个字节的SCLK间隔,缩短传输时间。这时候需要DMA来加持速度性能,但实际上,在使用了相关配置之后,速度虽然有些提升,但还是存在些许间隔产生。


在这里的例子验证条件是:SPI SCLK时钟频率为50M,主机发送512字节。理论传输速度可以25MB/S.从逻辑分析仪可看到,间隔有所缩短,但依然存在字节间隔。512字节传输需要45.97μs,合计为11.173MB/S。距离25MB/S也有两倍的差距。

二、解决问题

在一问题的所有描述当中,速度达不到理想性能,归根到底是字节之间产生间隔累积形成。

所以我们的问题解决点是:再配合DMA,进行其他优化。达到理想速度性能。


(一) 使用AHB SRAM(内存32KB空间)作为数据交互RAM。

hpm6000系列中,AHB/APB外设总线连接了一个内存为32KB空间的AHB SRAM,与之同时连接的也有DMA控制器之一HDMA。


从官方文档可知,AHB SRAM和HDMA以及SPI外设同样位于AHB/APB外设总线中,AHB SRAM是专门给HDMA进行低延时访问的内存,也是SPI进行DMA低延时传输保证。

在上面的DMA搬运中,待发送的数据放在AXI SRAM中。那么把这发送的数据放在AHB SRAM,看下会不会有所提升。

从以下逻辑分析仪结果看出,传输512字节,相比放在AXI_SRAM中,在AHB_SRAM只需要22.97μs,缩短了23μs, 合计22MB/S,提高了两倍速度性能。当仍与25MB/S理想速度有些许差距。


通过放大波形查看,有些字节依然产生间隔,这也是导致速度没达到理想速度的原因。


(二)使用DMA的burst突发传输

先楫的DMA,对于源地址数据来说,支持突发传输。例如传输位宽为8,设置burst数量为4,那么就是相当一次DMA请求设置了4个节拍,连续传输4个字节。是单次传输的4倍效率。在这里来说,待发送的数据就是源地址数据。

先楫的SPI控制器有四个字的FIFO数据空间,每个FIFO是32位。SPI请求DMA搬运是通过发送FIFO阈值请求。从效率上来看,最好是一次请求中能把FIFO数据全部搬运。从上面的优化流程来看,都设置为了默认,TX FIFO阈值设置为了0,也就是只要TXFIFO有一个为空就请求一次,DMA的源数据burst数量为0,也就是相当设置了1个节拍的突发传输,传输宽度为8位,一次DMA请求就塞给一次FIFO,等待FIFO完全塞满后这时候没法请求,所以会导致一次周期的间隔,当DMA收到请求后连这样能解释上面为何每隔四个字节会产生间隔的原因。

  

所以这里我们可以SPI的TXFIFO阈值为3,当出现一个空位的时候就请求一次,设置burst数量为2,也就是四个字节,一次请求搬运四个字节。通过逻辑分析仪可看到:


配合(一)的方案,传输512字节,只需要20.468μs,合计为25MB/S左右,接近了理想速度性能了。

放大波形查看,也能看到SCLK时钟连续了。


(三)压榨性能(使用SPI的字节合并merge功能)

先楫官方手册说明的是SPI时钟可以80M,保守是40M。在四线模式下,SPI时钟SCLK为80M,相比单线来说可以提高四倍性能传输,也就是可以达到40MB/S。


但是在实际操作的时候,分频SPI SCLK频率到66M,又出现了SCLK时钟不连续的情况,导致与理想速度不符合。

仔细翻下官方手册,可以知道SPI有个寄存器是TRANSFMT,有一个位是DATAMERGE,对于描述如下:


特别说明的是,由于SPI的数据FIFO是32位,这个功能只在数据单位长度为8位的时候有效,而且合并的数据量需要以四的整数倍。如此来说,在配置DMA的时候,传输宽度可以从8位变到32位,传输的带宽也能提高了四倍。那么我们这样配置下,逻辑分析仪结果如下:


在66M的SPI SCLK时钟下,逻辑分析仪抓到的SCLK能保持连续,并且数据能对得上。512字节耗时15.352μs,合计33MB/S左右,与理论速度33MB/S接近。

80M的SPI SCLK频率,传输512字节,耗时12.794μs,合计40MB/S左右,也能满足预期40MB/S速度。


SCLK波形也能保持连续。


三、号外(单线SPI总线可以达到120M)

四线模式既然能达到80M,那么楼主想试下80M的单线,也是没问题的,效果如下:

再尝试一把,把SPI SCLK分频到120M,只是稍微有点间隔,但单线SPI也是没问题的。


四、总结

对于先楫这个SPI外设来说,配合DMA,SPI的数据FIFO以及相关SPI配置,能达到手册描述的性能。无论是四线模式还是二线模式还是单线模式,都能到达80M的SPI时钟性能。   


对于SCLK不连续的问题在于DMA搬运和SPI传输不同步造成,导致传输间隔中断,特别是SPI频率越来越高的情况下。解决同步问题就不会有SCLK不连续的问题存在。

授权代理商:世强先进(深圳)科技股份有限公司
技术资料,数据手册,3D模型库,原理图,PCB封装文件,选型指南来源平台:世强硬创平台www.sekorm.com
现货商城,价格查询,交期查询,订货,现货采购,在线购买,样品申请渠道:世强硬创平台电子商城www.sekorm.com/supply/
概念,方案,设计,选型,BOM优化,FAE技术支持,样品,加工定制,测试,量产供应服务提供:世强硬创平台www.sekorm.com
集成电路,电子元件,电子材料,电气自动化,电机,仪器全品类供应:世强硬创平台www.sekorm.com
  • +1 赞 0
  • 收藏
  • 评论 0

本文由ll转载自先楫半导体HPMicro公众号,原文标题为:开发者分享| [玩转先楫SPI外设系列之一] 细说SPI主机发送性能最大化实现方案,本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关研发服务和供应服务

评论

   |   

提交评论

全部评论(0

暂无评论

相关推荐

先楫半导体HPM 16 位ADC+ENET开发案例:以2MSPS进行采样,通过ENET LWIP TCP方式发送到上位机

本文以先楫半导体 HPM6300 开发板为例介绍以 2MSPS 采样率进行 16 位 ADC 采样并将采样数据通过 ENET LWIP TCP 的方式发送到上位机的应用,ADC 采样使用抢占转换模式、PWM 触发的方式,ENET LWIP TCP 每次发送 1024 个 16 位采样数据。在HPM6300EVK 上进行测试验证,验证结果表明该方案是可行的。

2023-12-06 -  设计经验 代理服务 技术支持 批量订货

【经验】先楫HPM6000系列双核MCU的使用和操作方法

本文通过对先楫半导体HPM6000系列双核MCU的使用方法、工程编译与调试、双核通信方式和资源分配等内容的介绍,全方位给大家介绍双核的使用和操作,让大家轻松玩转双核,完成更多的片上系统功能开发。

2023-05-11 -  设计经验 代理服务 技术支持 批量订货

伺服电机、无刷电机选型要素解析,高性能RISC-V电机驱动芯片、方案介绍

作为国内领先的高性能MCU研发企业,先楫半导体芯片产品可应用于工业自动化中的编码器和伺服驱动器领域,先楫HPM6000系列采用全新的RISC-V芯片系统架构定义、全新CPU内核、大量自主创新的IP设计,以及完整的配套生态,打造出高性能的国产MCU系列,客户可以在不必增加成本和功耗的前提下,满足更高效的工业控制,更丰富的显示功能和更强大的数据处理要求。

2023-12-19 -  设计经验 代理服务 技术支持 批量订货

先楫半导体(HPMicro)HPM6000家族MCU选型指南

目录- HPM6000家族MCU   

型号- HPM6320IEP,HPM6454IAN,HPM6754IAN,HPM6450,HPM6750IAN,HPM6350,HPM6754IVM,HPM6300系列,HPM6450IAN,HPM6454IVM,HPM6320IPA,HPM6750IVM,HPM6000家族,HPM6360IPA,HPM6360IEP,HPM6364IPA,HPM6430IVM,HPM6300,HPM6400,HPM6320,HPM6364,HPM6364IEP,HPM6700,HPM6430IAN,HPM6350IPA,HPM6340,HPM6000,HPM6340IEP,HPM6360,HPM6730IAN,HPM6730IVM,HPM6350IEP,HPM6340IPA,HPM6700系列,HPM6450IVM,HPM6454,HPM6730,HPM6400系列,HPM6430,HPM6750,HPM6754

2022/9/16  - 先楫半导体  - 选型指南 代理服务 技术支持 批量订货

HPM6000 系列 MCU Flash 使用指南(一)------如何使用片内 Flash

描述- 本文档为HPM6000系列微控制器中支持4MB片内闪存的型号提供了使用指南,包括硬件和软件开发注意事项。指南详细介绍了如何使用片内Flash,以及与其他型号产品的异同,并提供了开发时需要注意的具体步骤,如创建新板目录、修改openocd脚本文件、调整board.c文件和yaml配置文件等。此外,还强调了使用片内闪存的优势,如节省开发调试成本和缩小PCB面积。

型号- HPM6400 系列,HPM6000,HPM6264,HPM6360,HPM6284,HPM6200 系列,HPM6700 系列,HPM6000 系列,HPM6300,HPM6454,HPM6400,HPM6364,HPM6200,HPM6700,HPM6300 系列,HPM6754

2023-11-01  - 先楫半导体  - 用户指南  - V1.1 代理服务 技术支持 批量订货 查看更多版本

先楫hpm6000系列产品Linux环境是否可以自动生成工程?

3、本地化生成的工程,如果取消本地化需要先删除工程所在目录的CMakeLists.txt.unlocalized.bak文件。 ninja localize_sdk -C ~/workspace/HPM6000/User_proj/samples/hello_world/hpm6750evk_flash_sdram_xip_debug #ninja unlocalize_sdk -C ~/workspace/HPM6000/User_proj/samples/hello_world/hpm6750evk_flash_sdram_xip_debug 4、通过GCC直接编译工程,输出文件在Output文件夹查找。 ninja -C ~/workspace/HPM6000/User_proj/samples/hello_world/hpm6750evk_flash_sdram_xip_debug

2024-11-15 -  技术问答 代理服务 技术支持 批量订货

【IC】工业芯标杆!先楫HPM6E00国内首款拥有德国倍福公司正式授权EtherCAT从站控制器的高性能MCU

上海先楫半导体科技有限公司(HPMicro)官宣将于2024年6月27日,线上直播国内首款拥有德国倍福公司(Beckhoff)正式授权EtherCAT从站控制器(ESC, EtherCAT Slave Controller) 的高性能MCU产品——HPM6E00系列新品全面上市!

2024-06-18 -  产品 代理服务 技术支持 批量订货

先楫HPM6000系列高性能MCU在Linux环境下自动生成SDK本地化工程

​本文介绍先楫半导体HPM6000系列高性能MCU在Linux环境下自动生成SDK本地化工程,SDK下载地址可通过世强FAE获取并提供技术支持。工程支持世强整合的SekormStudio(eclipse+GCC)以及第三方Segger Studio集成开发环境。

2024-11-07 -  设计经验 代理服务 技术支持 批量订货

【经验】如何使用先楫半导体MCU HPM6000系列的UART模块?

先楫半导体高性能MCU产品HPM6000家族以开源的RISC-V架构为核心,性能达到世界领先水平,做到全部自主可控,同时扩展性、兼容性、可靠性和通用性非常强。为了新开发者快速创建属于自己的项目,本文将展示在使用初期遇到的PWM问题。

2023-06-22 -  设计经验 代理服务 技术支持 批量订货

上海先楫半导体:国产领先高性能通用MCU厂商

描述- 先楫半导体,位于上海张江高科技园,专注于高性能MCU产品研发。公司产品包括HPM6700/6400、HPM6300、HPM6200和HPM6800系列,覆盖单双核、不同主频和闪存容量。产品特性包括图形加速、DSP、双千兆以太网等,对标国际知名品牌。先楫提供配套开发工具和生态系统,支持RISC-V架构,具备高集成度、低功耗、安全可靠等特点。公司通过ISO 9001和AEC-Q100认证,与台积电、中芯国际等合作,产能充足。

型号- HPM9000,HPM6450,HPM6250,HPM688A,HPM5000 SERIES,HPM8000 SERIES,HPM6400,HPM6364,HPM6320,HPM6200,HPM6800,HPM6260,HPM6340,HPM6220,HPM8000,HPM6000 SERIES,HPM64 系列,HPM9000 SERIES,HPM6410,HPM6730,HPM6400系列,HPM6254,HPM5000,HPM3000 SERIES,HPM7000,HPM6350,HPM6300系列,HPM6200系列,HPM63 系列,HPM6300,HPM67 系列,HPM67,HPM6420,HPM6700,HPM63,HPM64,HPM6280,HPM6880,HPM6000,HPM6360,HPM6284,HPM6700 系列,HPM6700系列,HPM6430,HPM6750,HPM3000,HPM7000 SERIES,HPM6800系列,HPM6754

2022/7/11  - 先楫半导体  - 商品及供应商介绍 代理服务 技术支持 批量订货

【经验】如何解决MCU HPM6000系列使用初期遇到的PWM问题?

先楫半导体高性能MCU产品HPM6000家族以开源的RISC-V架构为核心,性能达到世界领先水平,做到全部自主可控,同时扩展性、兼容性、可靠性和通用性非常强。为了新开发者快速创建属于自己的项目,本文将展示在使用初期遇到的PWM问题。

2023-06-23 -  设计经验 代理服务 技术支持 批量订货

先楫半导体与SEGGER联合推出免费商用Embedded Studio,共同推动RISC-V生态的发展

先楫半导体与国际领先的嵌入式开发系统供应商德国SEGGER联合宣布:通过买断许可,先楫半导体向所有使用其HPM6000系列RISC-V微控制器的客户提供免费的SEGGER的多平台集成开发环境“Embedded Studio”,共同推动RISC-V生态的发展。

2022-09-10 -  原厂动态 代理服务 技术支持 批量订货

HPM6000系列 MCU Flash 使用指南(二)------ 如何使用片外Flash

型号- HPM6400 系列,HPM6000,HPM6000系列,HPM6300,HPM6400,HPM6200 系列,HPM6200,HPM6300 系列,HPM6700 系列,HPM6700,HPM6750EVK2

2023-10-23  - 先楫半导体  - 用户指南  - V1.0 代理服务 技术支持 批量订货
展开更多

电子商城

查看更多

品牌:先楫半导体

品类:高性能微控制器

价格:¥33.9025

现货: 250

品牌:先楫半导体

品类:高性能微控制器

价格:¥25.7561

现货: 130

品牌:先楫半导体

品类:高性能微控制器

价格:¥20.4879

现货: 119

品牌:先楫半导体

品类:高性能微控制器

价格:¥34.7561

现货: 116

品牌:先楫半导体

品类:高性能微控制器

价格:¥40.1220

现货: 83

品牌:先楫半导体

品类:开发板

价格:¥326.8293

现货: 1

品牌:先楫半导体

品类:32位高性能微控制器

价格:

现货: 0

品牌:先楫半导体

品类:32位高性能微控制器

价格:

现货: 0

品牌:先楫半导体

品类:32位高性能微控制器

价格:

现货: 0

品牌:先楫半导体

品类:32位高性能微控制器

价格:

现货: 0

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

现货市场

查看更多

暂无此商品

海量正品紧缺物料,超低价格,限量库存搜索料号

查看更多

授权代理品牌:接插件及结构件

查看更多

授权代理品牌:部件、组件及配件

查看更多

授权代理品牌:电源及模块

查看更多

授权代理品牌:电子材料

查看更多

授权代理品牌:仪器仪表及测试配组件

查看更多

授权代理品牌:电工工具及材料

查看更多

授权代理品牌:机械电子元件

查看更多

授权代理品牌:加工与定制

世强和原厂的技术专家将在一个工作日内解答,帮助您快速完成研发及采购。
我要提问

954668/400-830-1766(工作日 9:00-18:00)

service@sekorm.com

研发客服
商务客服
服务热线

联系我们

954668/400-830-1766(工作日 9:00-18:00)

service@sekorm.com

投诉与建议

E-mail:claim@sekorm.com

商务合作

E-mail:contact@sekorm.com

收藏
收藏当前页面