0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

细说SPI主机发送性能最大化实现方案

先楫半导体HPMicro 2023-07-31 23:03 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

一、背景

在《先楫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.034us,合计为6.91MB/S,与理论速度相差了2到3倍的距离。


53e38048-2fb3-11ee-bbcf-dac502259ad0.png

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

5418fe94-2fb3-11ee-bbcf-dac502259ad0.png

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

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


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

5442dd9a-2fb3-11ee-bbcf-dac502259ad0.png

三、解决问题

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

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


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

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


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

5481dde2-2fb3-11ee-bbcf-dac502259ad0.png

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

54ac15c6-2fb3-11ee-bbcf-dac502259ad0.png

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

54c34318-2fb3-11ee-bbcf-dac502259ad0.png

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

54daedba-2fb3-11ee-bbcf-dac502259ad0.png

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

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

5504adee-2fb3-11ee-bbcf-dac502259ad0.png

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

553c9e70-2fb3-11ee-bbcf-dac502259ad0.png

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


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

5591a99c-2fb3-11ee-bbcf-dac502259ad0.png

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

55b32838-2fb3-11ee-bbcf-dac502259ad0.png

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

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


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

55d5be02-2fb3-11ee-bbcf-dac502259ad0.png

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

55f75526-2fb3-11ee-bbcf-dac502259ad0.png

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

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


564514f0-2fb3-11ee-bbcf-dac502259ad0.png

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

566b762c-2fb3-11ee-bbcf-dac502259ad0.png

SCLK波形也能保持连续。

568a2266-2fb3-11ee-bbcf-dac502259ad0.png

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

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

56aeecc2-2fb3-11ee-bbcf-dac502259ad0.png

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

56c8aec8-2fb3-11ee-bbcf-dac502259ad0.png

五、总结

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


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

以上内容来自先楫开发者的原创分享。

我们始终相信开发者共创的力量。先楫社区坚持开源共享、互惠互利,贴近每一个开发者,一步一个脚印,一点一滴积累,为成为更好的我们而不断努力。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 主机
    +关注

    关注

    0

    文章

    1062

    浏览量

    36826
  • 时钟
    +关注

    关注

    11

    文章

    1999

    浏览量

    135226
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1900

    浏览量

    102109
  • dma
    dma
    +关注

    关注

    3

    文章

    582

    浏览量

    106257
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    江苏省镇江市分布光伏接入电网容量发布,安科瑞助力投资主体效益最大化

    实现绿电效益最大化。安科瑞产品咨询:15000363176 江苏镇江分布式光伏接入电网开放容量明细: 一、精准监测与实时预警:为并网运行装上“千里眼” 可开放容量公告中高达36.13%的配变倒送电比例,折射出分布式光伏项目普遍面临“自
    的头像 发表于 04-10 14:46 572次阅读
    江苏省镇江市分布光伏接入电网容量发布,安科瑞助力投资主体效益<b class='flag-5'>最大化</b>

    微电网经济调度理论:成本最小化与效益最大化的优化模型

    与效益最大化的具体量化指标;约束条件是模型的运行底线,确保调度方案的可行性与安全性;优化变量是模型的调控对象,决定了调度方案的实施路径。
    的头像 发表于 03-12 11:05 217次阅读
    微电网经济调度理论:成本最小化与效益<b class='flag-5'>最大化</b>的优化模型

    中兴通讯在MWC 2026正式发布AIR MAX解决方案

    2026年3月2日,中兴通讯在MWC26巴塞罗那上正式发布AIR MAX解决方案,以最大化能量效率、人力效率、投资效率为核心,打造面向AI时代的移动网络最优解,赋能运营商经营转型和价值升级。
    的头像 发表于 03-05 14:29 2183次阅读

    RDMA设计31:RoCE v2 发送模块3

    队列非空时,则从接收队列中提取一个接收队列条目,根据不同的接收队列条目状态和不同的操作类型进入不同的数据包生成流程,这一过程由应答状态机实现,应答状态机的状态转移图如图 1所示,对于各个状态的详细说
    发表于 01-28 07:58

    告别逆流罚款!西格电力防逆流方案,让光伏并网零风险、收益最大化

    合规性的管控愈发严格,违规逆流不仅面临经济处罚,还可能影响项目并网资格。西格电力防逆流柔性控制方案,精准对标政策要求,从源头破解痛点,实现光伏并网零合规风险、发电收益最大化的双重目标。
    的头像 发表于 01-27 16:23 1935次阅读
    告别逆流罚款!西格电力防逆流<b class='flag-5'>方案</b>,让光伏并网零风险、收益<b class='flag-5'>最大化</b>

    SPI的4个引脚介绍

    SPI 一般通过 4 个引脚与外部设备相连: •MOSI 主机输出 / 从机输入,用于主机模式下的数据发送和从机模式下的数据接收; •MISO 主机
    发表于 12-15 06:54

    FPG推出CheckMax,以AI洞察助力餐饮业利润最大化

    -FPG推出CheckMax,Frontline Performance Group推出CheckMax,以AI洞察助力餐饮业利润最大化 更高利润、更优服务:CheckMax直击餐厅头号经营挑战
    的头像 发表于 12-10 19:02 1143次阅读
    FPG推出CheckMax,以AI洞察助力餐饮业利润<b class='flag-5'>最大化</b>

    聚飞光电PLM系统升级推动IPD全流程价值最大化落地

    研发全流程的规范化管控与高效协同,为产品创新提速、市场响应提质注入核心动力,推动IPD全流程价值最大化落地。
    的头像 发表于 12-05 09:55 1016次阅读
    聚飞光电PLM系统升级推动IPD全流程价值<b class='flag-5'>最大化</b>落地

    提升PLC数据采集效率:性能瓶颈分析与实践

    面对“越快越好”的PLC数据采集需求,如何准确评估设备能力瓶颈?又该如何突破极限,实现采集速度的最大化?本文将系统探讨如何科学评估PLC的数据采集能力极限,并在此基础上,提供一系列旨在最大化采集速度
    的头像 发表于 11-26 11:33 498次阅读
    提升PLC数据采集效率:<b class='flag-5'>性能</b>瓶颈分析与实践

    天合光能解决方案如何助力光伏发电收益最大化

    ,重点介绍了基于市场化电力交易特点打造的综合解决方案,并深度解析该方案如何在竞争性电力市场助力光伏发电收益最大化
    的头像 发表于 10-22 11:36 1414次阅读
    天合光能解决<b class='flag-5'>方案</b>如何助力光伏发电收益<b class='flag-5'>最大化</b>

    SPI主机/从机接收发送都开启DMA通信

    AT32_SPI主机/从机接收发送都开启DMA通信 示例目的 本示例代码展示了如何使用 AT32 的 DMA 进行 SPI 数据传输。SPI
    发表于 09-10 16:56

    性能开关在自动导引车的应用

    性能开关在现代自动导引车运行和控制中的价值从未像现在如此巨大。自1928年以来,C&K 的产品组合一直以多种轻触开关、带灯轻触开关、 按动开关和防破坏开关为主,为自动导引车设计师提供最大化的选择。
    的头像 发表于 09-08 11:42 1074次阅读

    从GX连接器到应用:如何选择合适的连接器以提高设备性能

    的连接器,从而实现设备性能最大化提升。在这一过程中,德索精密工业凭借其优质的GX连接器系列,为客户提供了可靠的连接解决方案,助力各行各业的技术创新和设备升级。如有GX
    的头像 发表于 08-26 14:39 935次阅读
    从GX连接器到应用:如何选择合适的连接器以提高设备<b class='flag-5'>性能</b>

    MAX3421E USB外设/主机控制器,SPI接口技术手册

    串行接口引擎(SIE)处理底层USB协议,如错误校验和总线重试。通过频率高达26MHz的SPI™接口访问寄存器组,实现MAX3421E的控制。利用简易的3线或4线SPI接口,可为任何SPI
    的头像 发表于 05-22 16:39 1787次阅读
    MAX3421E USB外设/<b class='flag-5'>主机</b>控制器,<b class='flag-5'>SPI</b>接口技术手册

    借助DFT技术实现竞争力最大化

    通过改进和优化设计与制造的各个方面,半导体行业已经能够实现 IC 能力的巨大进步。可测试性设计 (DFT)——涵盖从在 RTL 中插入测试逻辑,到对现场退回产品进行失效分析等全流程,是半导体企业获得
    的头像 发表于 05-22 15:16 1102次阅读