一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

細說SPI主機發(fā)送性能最大化實現(xiàn)方案

先楫半導體HPMicro ? 2023-07-31 23:03 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、背景

在《先楫hpm6000的SPI外設使用四線模式操作讀寫華邦flash》一文中介紹了先楫SPI外設是為flash器件而生的控制器,但是樓主在該篇文章讀寫flash的頁是用的poll輪詢讀寫spi fifo的接口,并沒用DMA來進行加速優(yōu)化。本篇就是基于SPI配合DMA實現(xiàn)理論速度性能。

二、問題點

(一) SPI FIFO poll阻塞發(fā)送無法發(fā)揮SPI理論速度性能

使用spi poll阻塞的時候,雖然能實現(xiàn)數(shù)據(jù)的完整傳輸,但是傳輸?shù)臅r間并不能達到理想傳輸速度,比如SPI四線模式下,30M的SPI SCLK時鐘,理論可以達到15MB/S速度。但實際測量當中并未達到該性能。從邏輯分析儀看到,發(fā)送flas一頁數(shù)據(jù),也就是256字節(jié),從開始傳輸?shù)浇Y束傳輸?shù)臅r間需要37.034us,合計為6.91MB/S,與理論速度相差了2到3倍的距離。


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

從波形上看,導致這個速度達不到原因就在于,每個字節(jié)之間存在了一定的間隔時間,這些間隔的累積導致傳輸時間變長,導致總的時間變長,進而速度遠遠跟不上。

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

(二)使用了DMA仍然有SPI SCLK時鐘不連續(xù)問題

從(一)的問題可以看出,要想達到理論速度,必須消除每個字節(jié)的SCLK間隔,縮短傳輸時間。這時候需要DMA來加持速度性能,但實際上,在使用了相關配置之后,速度雖然有些提升,但還是存在些許間隔產(chǎn)生。


在這里的例子驗證條件是:SPI SCLK時鐘頻率為50M,主機發(fā)送512字節(jié)。理論傳輸速度可以25MB/S.從邏輯分析儀可看到,間隔有所縮短,但依然存在字節(jié)間隔。512字節(jié)傳輸需要45.97us,合計為11.173MB/S。距離25MB/S也有兩倍的差距。

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

三、解決問題

在二問題的所有描述當中,速度達不到理想性能,歸根到底是字節(jié)之間產(chǎn)生間隔累積形成。

所以我們的問題解決點是:再配合DMA,進行其他優(yōu)化。達到理想速度性能。


(一) 使用AHB SRAM(內(nèi)存32KB空間)作為數(shù)據(jù)交互RAM。

在HPM6000系列中,AHB/APB外設總線連接了一個內(nèi)存為32KB空間的AHB SRAM,與之同時連接的也有DMA控制器之一HDMA。


從官方文檔可知,AHB SRAM和HDMA以及SPI外設同樣位于AHB/APB外設總線中,AHB SRAM是專門給HDMA進行低延時訪問的內(nèi)存,也是SPI進行DMA低延時傳輸保證。

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

在上面的DMA搬運中,待發(fā)送的數(shù)據(jù)放在AXI SRAM中。那么把這發(fā)送的數(shù)據(jù)放在AHB SRAM,看下會不會有所提升。

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

從以下邏輯分析儀結果看出,傳輸512字節(jié),相比放在AXI_SRAM中,在AHB_SRAM只需要22.97us,縮短了23us, 合計22MB/S,提高了兩倍速度性能。當仍與25MB/S理想速度有些許差距。

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

通過放大波形查看,有些字節(jié)依然產(chǎn)生間隔,這也是導致速度沒達到理想速度的原因。

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

(二)使用DMA的burst突發(fā)傳輸

先楫的DMA,對于源地址數(shù)據(jù)來說,支持突發(fā)傳輸。例如傳輸位寬為8,設置burst數(shù)量為4,那么就是相當一次DMA請求設置了4個節(jié)拍,連續(xù)傳輸4個字節(jié)。是單次傳輸?shù)?倍效率。在這里來說,待發(fā)送的數(shù)據(jù)就是源地址數(shù)據(jù)。

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

先楫的SPI控制器有四個字的FIFO數(shù)據(jù)空間,每個FIFO是32位。SPI請求DMA搬運是通過發(fā)送FIFO閾值請求。從效率上來看,最好是一次請求中能把FIFO數(shù)據(jù)全部搬運。從上面的優(yōu)化流程來看,都設置為了默認,TX FIFO閾值設置為了0,也就是只要TXFIFO有一個為空就請求一次,DMA的源數(shù)據(jù)burst數(shù)量為0,也就是相當設置了1個節(jié)拍的突發(fā)傳輸,傳輸寬度為8位,一次DMA請求就塞給一次FIFO,等待FIFO完全塞滿后這時候沒法請求,所以會導致一次周期的間隔,當DMA收到請求后連這樣能解釋上面為何每隔四個字節(jié)會產(chǎn)生間隔的原因。

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

所以這里我們可以SPI的TXFIFO閾值為3,當出現(xiàn)一個空位的時候就請求一次,設置burst數(shù)量為2,也就是四個字節(jié),一次請求搬運四個字節(jié)。通過邏輯分析儀可看到:


配合(一)的方案,傳輸512字節(jié),只需要20.468us,合計為25MB/S左右,接近了理想速度性能了。

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

放大波形查看,也能看到SCLK時鐘連續(xù)了。

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

(三)壓榨性能(使用SPI的字節(jié)合并merge功能)

先楫官方手冊說明的是SPI時鐘可以80M,保守是40M。在四線模式下,SPI時鐘SCLK為80M,相比單線來說可以提高四倍性能傳輸,也就是可以達到40MB/S。


但是在實際操作的時候,分頻SPI SCLK頻率到66M,又出現(xiàn)了SCLK時鐘不連續(xù)的情況,導致與理想速度不符合。

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

仔細翻下官方手冊,可以知道SPI有個寄存器是TRANSFMT,有一個位是DATAMERGE,對于描述如下:

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

特別說明的是,由于SPI的數(shù)據(jù)FIFO是32位,這個功能只在數(shù)據(jù)單位長度為8位的時候有效,而且合并的數(shù)據(jù)量需要以四的整數(shù)倍。如此來說,在配置DMA的時候,傳輸寬度可以從8位變到32位,傳輸?shù)膸捯材芴岣吡怂谋丁D敲次覀冞@樣配置下,邏輯分析儀結果如下:

在66M的SPI SCLK時鐘下,邏輯分析儀抓到的SCLK能保持連續(xù),并且數(shù)據(jù)能對得上。512字節(jié)耗時15.352us,合計33MB/S左右,與理論速度33MB/S接近。


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

80M的SPI SCLK頻率,傳輸512字節(jié),耗時12.794us,合計40MB/S左右,也能滿足預期40MB/S速度。

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

SCLK波形也能保持連續(xù)。

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的數(shù)據(jù)FIFO以及相關SPI配置,能達到手冊描述的性能。無論是四線模式還是二線模式還是單線模式,都能到達80M的SPI時鐘性能。


對于SCLK不連續(xù)的問題在于DMA搬運和SPI傳輸不同步造成,導致傳輸間隔中斷,特別是SPI頻率越來越高的情況下。解決同步問題就不會有SCLK不連續(xù)的問題存在。

以上內(nèi)容來自先楫開發(fā)者的原創(chuàng)分享。

我們始終相信開發(fā)者共創(chuàng)的力量。先楫社區(qū)堅持開源共享、互惠互利,貼近每一個開發(fā)者,一步一個腳印,一點一滴積累,為成為更好的我們而不斷努力。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 主機
    +關注

    關注

    0

    文章

    1038

    瀏覽量

    35997
  • 時鐘
    +關注

    關注

    11

    文章

    1901

    瀏覽量

    133244
  • SPI
    SPI
    +關注

    關注

    17

    文章

    1804

    瀏覽量

    96034
  • dma
    dma
    +關注

    關注

    3

    文章

    576

    瀏覽量

    103292
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    MAX3421E USB外設/主機控制器,SPI接口技術手冊

    串行接口引擎(SIE)處理底層USB協(xié)議,如錯誤校驗和總線重試。通過頻率高達26MHz的SPI?接口訪問寄存器組,實現(xiàn)MAX3421E的控制。利用簡易的3線或4線SPI接口,可為任何SPI
    的頭像 發(fā)表于 05-22 16:39 ?333次閱讀
    MAX3421E USB外設/<b class='flag-5'>主機</b>控制器,<b class='flag-5'>SPI</b>接口技術手冊

    借助DFT技術實現(xiàn)競爭力最大化

    通過改進和優(yōu)化設計與制造的各個方面,半導體行業(yè)已經(jīng)能夠實現(xiàn) IC 能力的巨大進步??蓽y試性設計 (DFT)——涵蓋從在 RTL 中插入測試邏輯,到對現(xiàn)場退回產(chǎn)品進行失效分析等全流程,是半導體企業(yè)獲得
    的頭像 發(fā)表于 05-22 15:16 ?415次閱讀

    深度解析如何利用時延解決方案最大化相控陣性能

    本文將探討TDU在相控陣系統(tǒng)中的角色、它們與天線性能的關系,以及不同的設計考量如何影響系統(tǒng)效率。討論還將深入到TDU與移相器的集成、真時延技術,以及波束寬度、掃描角和陣列尺寸之間的關系。
    的頭像 發(fā)表于 03-25 11:36 ?1176次閱讀
    深度解析如何利用時延解決<b class='flag-5'>方案</b><b class='flag-5'>最大化</b>相控陣<b class='flag-5'>性能</b>

    使用STM32的SPI主機通訊需要喚醒嗎?

    在使用STM32生成的工程里面,使用SPI作為主機模式,在與從機通訊的時候,第一次發(fā)送字節(jié)之前,需要發(fā)送一個空字節(jié),SPI通訊才正常,要不
    發(fā)表于 03-10 08:22

    EE-19:最大化DSP-21xx系列DSP(不包括ADSP-218x)的引導內(nèi)存效率

    電子發(fā)燒友網(wǎng)站提供《EE-19:最大化DSP-21xx系列DSP(不包括ADSP-218x)的引導內(nèi)存效率.pdf》資料免費下載
    發(fā)表于 01-14 16:09 ?0次下載
    EE-19:<b class='flag-5'>最大化</b>DSP-21xx系列DSP(不包括ADSP-218x)的引導內(nèi)存效率

    EE-365:在ADSP-CM40x混合信號控制處理器上實現(xiàn)ADC采樣速率最大化

    電子發(fā)燒友網(wǎng)站提供《EE-365:在ADSP-CM40x混合信號控制處理器上實現(xiàn)ADC采樣速率最大化.pdf》資料免費下載
    發(fā)表于 01-13 16:52 ?0次下載
    EE-365:在ADSP-CM40x混合信號控制處理器上<b class='flag-5'>實現(xiàn)</b>ADC采樣速率<b class='flag-5'>最大化</b>

    璟豐機電丨派克parker江蘇代理,攜手打造工業(yè)自動化巔峰性能

    蘇州璟豐機電作為派克Parker中國江蘇代理商,提供全面的派克自動化解決方案,包括伺服電機、驅動器和減速機。其專業(yè)團隊提供選型建議與技術支持,確保系統(tǒng)性能最大化,還與多品牌合作提供一站式服務。
    的頭像 發(fā)表于 12-10 13:36 ?521次閱讀
    璟豐機電丨派克parker江蘇代理,攜手打造工業(yè)自動化巔峰<b class='flag-5'>性能</b>

    光伏發(fā)電如何實現(xiàn)能效最大化

    光伏發(fā)電實現(xiàn)能效最大化是一個綜合性的問題,需要從多個方面入手。以下是一些關鍵措施: 一、選用優(yōu)質設備 太陽能板 :選用具有高光電轉化效率和穩(wěn)定性的太陽能板是基礎。例如,單晶硅太陽能板通常比多
    的頭像 發(fā)表于 12-05 11:06 ?900次閱讀

    運營商如何實現(xiàn)差異化連接

    如今,運營商正置身于一場關于如何極致釋放5G投資的高難度挑戰(zhàn)。本期《信觀察》將聚焦于如何通過“差異化連接”推動基于性能的服務,進而實現(xiàn)可擴展、可持續(xù)的解決方案,助力運營商將5G投資的價值“最大
    的頭像 發(fā)表于 11-18 14:38 ?9388次閱讀

    spi master接口的fpga實現(xiàn)

    前言 當你器件的引腳賊少的時候,需要主機和從機通信,spi就派上了用場,它可以一對多,但只是片選到的從機能和主機通信,其他的掛機。 spi:serial peripheral inte
    的頭像 發(fā)表于 11-16 10:35 ?1196次閱讀
    <b class='flag-5'>spi</b> master接口的fpga<b class='flag-5'>實現(xiàn)</b>

    KM振動分析與動平衡服務實現(xiàn)工廠設備效率最大化

    振動儀
    KM預測性維護專家
    發(fā)布于 :2024年10月16日 15:57:14

    擴展塢使用技巧:如何最大化你的筆記本電腦接口能力

    最大化您的筆記本電腦接口能力,以下是一些實用的擴展塢使用技巧: 了解您的需求:在購買擴展塢之前,明確您需要哪些類型的端口(如HDMI, USB-C, RJ45等)以及是否需要充電功能,以選擇最適合
    的頭像 發(fā)表于 10-08 10:52 ?1326次閱讀

    液冷充電槍線最大化提高充電效率

    法法易提供的液冷充電槍線可以最大化的提升充電效率,讓大家的充電時間進一步縮短。? 液冷充電槍線使用液體循環(huán)來冷卻電纜,以避免因高溫而導致電纜損壞或充電速度減緩。而且液冷充電槍線采用銅芯導線和耐高溫、耐磨損、
    的頭像 發(fā)表于 09-11 14:25 ?904次閱讀

    【GD32 MCU 入門教程】GD32 MCU 常見外設介紹(8)SPI 模塊介紹

    串行外設接口(Serial Peripheral Interface,縮寫為 SPI) 提供了基于SPI 協(xié)議的數(shù)據(jù)發(fā)送和接收功能, 可以工作于主機或從機模式。
    的頭像 發(fā)表于 08-17 09:36 ?1506次閱讀
    【GD32 MCU 入門教程】GD32 MCU 常見外設介紹(8)<b class='flag-5'>SPI</b> 模塊介紹

    Renesa RA如何使用SPI實現(xiàn)高速比特流的發(fā)送

    有些特殊的外設會使用基于SPI模式,發(fā)送連續(xù)比特流來傳輸數(shù)據(jù)。本文主要介紹對于Renesa RA,如何使用SPI實現(xiàn)高速比特流的發(fā)送。
    的頭像 發(fā)表于 07-22 14:38 ?2025次閱讀
    Renesa RA如何使用<b class='flag-5'>SPI</b>來<b class='flag-5'>實現(xiàn)</b>高速比特流的<b class='flag-5'>發(fā)送</b>