精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

SPI總線的特點、工作方式及常見錯誤解答

FPGA設計論壇 ? 來源:未知 ? 2022-11-15 13:55 ? 次閱讀


1.SPI總線簡介

SPI(serial peripheral interface,串行外圍設備接口總線技術是Motorola公司推出的一種同步串行接口。它用于CPU與各種外圍器件進行全雙工、同步串行通訊。它只需四條線就可以完成MCU與各種外圍器件的通訊,這四條線是:串行時鐘線(CSK)、主機輸入/從機輸出數據線(MISO)、主機輸出/從機輸入數據線(MOSI)、低電平有效從機選擇線CS。當SPI工作時,在移位寄存器中的數據逐位從輸出引腳(MOSI)輸出(高位在前),同時從輸入引腳(MISO)接收的數據逐位移到移位寄存器(高位在前)。發送一個字節后,從另一個外圍器件接收的字節數據進入移位寄存器中。即完成一個字節數據傳輸的實質是兩個器件寄存器內容的交換。主SPI的時鐘信號(SCK)使傳輸同步。其典型系統框圖如下圖所示。

圖1 典型系統框圖

2.SPI總線的主要特點

· 全雙工;

· 可以當作主機或從機工作;

· 提供頻率可編程時鐘;

· 發送結束中斷標志;

· 寫沖突保護;

.總線競爭保護等。

3.SPI總線工作方式

SPI總線有四種工作方式,其中使用的最為廣泛的是SPI0和SPI3方式(實線表示):

圖2 SPI0和SPI3方式(實線表示)

四種工作方式時序分別為:

圖3 四種工作方式時序

時序詳解:

CPOL:時鐘極性選擇,為0時SPI總線空閑為低電平,為1時SPI總線空閑為高電平

CPHA:時鐘相位選擇,為0時在SCK第一個跳變沿采樣,為1時在SCK第二個跳變沿采樣

工作方式1:

當CPHA=0、CPOL=0時SPI總線工作在方式1。MISO引腳上的數據在第一個SPSCK沿跳變之前已經上線了,而為了保證正確傳輸,MOSI引腳的MSB位必須與SPSCK的第一個邊沿同步,在SPI傳輸過程中,首先將數據上線,然后在同步時鐘信號的上升沿時,SPI的接收方捕捉位信號,在時鐘信號的一個周期結束時(下降沿),下一位數據信號上線,再重復上述過程,直到一個字節的8位信號傳輸結束。

工作方式2:

當CPHA=0、CPOL=1時SPI總線工作在方式2。與前者唯一不同之處只是在同步時鐘信號的下降沿時捕捉位信號,上升沿時下一位數據上線。

工作方式3:

當CPHA=1、CPOL=0時SPI總線工作在方式3。MISO引腳和MOSI引腳上的數據的MSB位必須與SPSCK的第一個邊沿同步,在 SPI傳輸過程中,在同步時鐘信號周期開始時(上升沿)數據上線,然后在同步時鐘信號的下降沿時,SPI的接收方捕捉位信號,在時鐘信號的一個周期結束時(上升沿),下一位數據信號上線,再重復上述過程,直到一個字節的8位信號傳輸結束。

工作方式4:

當CPHA=1、CPOL=1時SPI總線工作在方式4。與前者唯一不同之處只是在同步時鐘信號的上升沿時捕捉位信號,下降沿時下一位數據上線。

4.SPI總線常見錯誤

4.1 SPR設定錯誤

在從器件時鐘頻率小于主器件時鐘頻率時,如果SCK的速率設得太快,將導致接收到的數據不正確(SPI接口本身難以判斷收到的數據是否正確,要在軟件中處理)。

整個系統的速度受三個因素影響:主器件時鐘CLK主、從器件時鐘CLK從和同步串行時鐘SCK,其中SCK是對CLK主的分頻,CLK從和 CLK主是異步的。要使SCK無差錯無遺漏地被從器件所檢測到,從器件的時鐘CLK從必須要足夠快。下面以SCK設置為CLK主的4分頻的波形為例,分析同步串行時鐘、主時鐘和從時鐘之間的關系。

圖4主從時鐘和SCK的關系

如圖4所示,當T從圖5中,當T從≥TSCK/2=2T主時,在clk_s的兩個上升沿都檢測不到SCK的低電平,這樣從器件就會漏掉一個SCK。在某些相位條件下,即使CLK從僥幸能檢測到SCK的低電平,也不能保證可以繼續檢測到下一個SCK。只要遺漏了一個SCK,就相當于串行數據漏掉了一個位,后面繼續接收/發送的數據就都是錯誤的了。

圖5主從時鐘和SCK的關系

根據以上的分析,SPR和主從時鐘比的關系如表1所列。

表1 SPR的設置和主從時鐘周期比值之間的關系


在發送數據之前按照表1對SPR進行設置,SPR設定錯誤可以完全避免。

4.2 模式錯誤(MODF)

模式錯誤表示的是主從模式選擇的設置和引腳SS的連接不一致。

器件工作在主模式的時候(MSTR=1),它的片選信號SS引腳必須接高電平。在發送數據的過程中,如果它的SS從高電平跳至低電平,在SS的下降沿,SPI模塊將檢測到模式錯誤,對MODF位置1,強制器件從主模式轉入從模式(即令MSTR=0),清空內部計數器counter,并結束正在進行的數據傳輸,如圖6(a)所示。

對從模式(MSTR=0),在沒有數據傳送的時候,SS高電平表示從器件未被選中,從器件不工作,MISO輸出高阻;在數據傳輸過程中,片選信號SS必須接低電平,且SS不允許跳變。如果SS從低電平跳到高電平,在SS的上跳沿,SPI模塊也將檢測到模式錯誤,清空內部計數器counter,并結束正在進行的數據傳輸。直到SS恢復為低電平,重新使SPEN=1時,才重新開始工作,如圖6(b)所示。

圖6模式錯誤的檢測

4.3 溢出錯誤(OVR

溢出錯誤表示連續傳輸多個數據時,后一個數據覆蓋了前一個數據而產生的錯誤。

狀態標志SPIF表示的是數據傳輸正在進行中,它對數據的傳輸有較大的影響。主器件的SPIF有效由數據寄存器的空標志SPTE=0產生,而從器件的SPIF有效則只能由收到的第一個SCK的跳變產生,且又由于從器件的SPIF和主器件發出的SCK是異步的,因此從器件的傳輸標志SPIF從相對于主器件的傳輸標志SPIF主有一定的滯后。如圖7所示,在主器件連續發送兩個數據的時候將有可能導致從器件的傳輸標志和主器件下一個數據的傳輸標志相重疊(圖7中虛線和陰影部分),第一個收到的數據必然被覆蓋,第二個數據的收/發也必然出錯,產生溢出錯誤。

圖7溢出錯誤

通過對從器件的波形分析發現,counter=8后的第一個時鐘周期,數據最后一位的傳輸已經完成。在數據已經收/發完畢的情況下,counter=8狀態的長短對數據的正確性沒有影響,因此可以縮短counter=8的狀態,以避免前一個SPIF和后一個SPIF相重疊。這樣,從硬件上避免了這一階段的溢出錯誤。

但是,如果從器件工作速度不夠快或者軟件正在處理其他事情,在SPI接口接收到的數據尚未被讀取的情況下,又接收到一個新的數據,溢出錯誤還是會發生的。此時,SPI接口保護前一個數據不被覆蓋,舍棄新收到的數據,置溢出標志OVR=1;另外發出中斷信號(如果該中斷允許),通知從器件及時讀取數據。

4.4 偏移錯誤(OFST)

SPI接口一般要求從器件先工作,然后主器件才開始發送數據。有時在主器件往外發送數據的過程中,從器件才開始工作,或者SCK受到外界干擾,從器件未能準確地接收到8個SCK。如圖8所示,從器件接收到的8個SCK其實是屬于主器件發送相鄰的兩個數據的SCK主。這時,主器件的SPIF和從器件的SPIF會發生重疊,數據發生了錯位,從器件如果不對此進行糾正的話,數據的接收/發送便一直地錯下去。

圖8偏移錯誤

在一個數據的傳輸過程中,SPR是不允許改變的,即SCK是均勻的,而從圖5可以看出,從器件接收到的8個SCK并不均勻,它們是分別屬于兩個數據的,因此可以計算SCK的占空時間來判斷是否發生了偏移錯誤。經分析,正常時候SCK=1時的時鐘周期數n的取值滿足如下關系:

但由于主從時鐘之間是異步的,并且經過了取整,所以正常時候SCK=1時的時鐘周期計數值COUNT應滿足:

比如在圖5中,COUNT的最大值COUNT(max)=2或者1,都可認為是正常的。但當出現COUNT(max)=8時,可以判定出現了偏移錯誤。在實際設計中,先記錄下第一個COUNT(max)的值,如果后面又出現與記錄值相差1以上的COUNT(max)出現,可知有偏移錯誤OFST 發生。SPI接口在“不均勻”的地方令SPIF=1,然后準備等待下一個數據的第一個SCK。其中COUNT的位數固定為8位,為了避免溢出時重新從 00H開始計數,當計數達到ffH時停止計數。

4.5 其他錯誤

設定不當,或者受到外界干擾,數據傳輸難免會發生錯誤,或者有時軟件對錯誤的種類判斷不清,必須要有一種方法強制SPI接口從錯誤狀態中恢復過來。在SPI不工作,即SPEN=0的時候,清除SPI模塊內部幾乎所有的狀態(專用寄存器除外)。如果軟件在接收數據的時候,能夠發現數據有錯誤,無論是什么錯誤,都可以強制停止SPI的工作,重新進行數據傳輸。例如,在偏移錯誤(OFST)中,如果SPR2、SPR1和SPR0的設置適當,也可以使 SCK顯得比較“均勻”。SPI接口硬件本身不可能檢測到有錯誤,若用戶軟件能夠發現錯誤,這時就可以強制停止SPI的傳輸工作,這樣就可以避免錯誤一直持續下去。

在應用中,如果對數據的正確性要求較高,除了要在軟件上滿足SPI接口的時序要求外,還需要在軟件上作適當的處理。

5.設計SPI總線控制器

目前的項目中使用了SPI總線接口的FLASH存儲器存儲圖像數據。FLASH的SPI總線頻率高達66M,但MCU的頻率較低,晶振頻率 7.3728M,SPI最大頻率為主頻1/2。對于320*240*16的圖像讀取時間為333ms,而且還忽略了等待SPI傳輸完成、寫顯存、地址坐標設定等時間。實際測試約為1s。成為GUI設計的極大瓶頸。由于TFT驅動是自己FPGA設計的,資源尚有余量,決定把SPI控制器(主)及寫圖像部分邏輯放入FPGA中用硬件完成。

首先接觸到的是SPI的SCK時鐘頻率問題。FPGA的頻率是48M,未使用PLL。能否以此頻率作為SCK頻率呢?要知道所有的MCU提供的 SPI頻率最大為主頻的1/2!為什么呢?查過一些資料后發現,SPI從機接收數據并不是以SCK為時鐘的,而是以主頻為時鐘對SCK和MISO進行采樣,由采樣原理得知SCK不能大于1/2主頻,也就有了MCU提供最大master頻率是1/2主頻,最大slaver頻率是1/4主頻。FPGA在只作為主機時能否實現同主頻一樣頻率的SCK呢??答案貌似是肯定的!但我還是有點擔心,用組合邏輯控制SCK會不會出現較大毛刺影響系統穩定性呢?




掃描二維碼獲取

更多精彩

FPGA設計論壇




歡迎關注至芯科技

至芯官網:www.zxopen.com

至芯科技技術論壇:www.fpgaw.com

至芯科技淘寶網址:

https://zxopen.taobao.com

至芯科技FPGA初級課程(B站):

https://space.bilibili.com/521850676

至芯科技FPGA在線課程(騰訊課堂):

https://zxopenbj.ke.qq.com/

至芯科技-FPGA 交流群(QQ):282124839






精彩推薦



至芯科技12年不忘初心、再度起航11月12日北京中心FPGA工程師就業班開課、線上線下多維教學、歡迎咨詢!
FPGA職業生涯的五個層次
FPGA各存儲器之間的關系
掃碼加微信邀請您加入FPGA學習交流群




歡迎加入至芯科技FPGA微信學習交流群,這里有一群優秀的FPGA工程師、學生、老師、這里FPGA技術交流學習氛圍濃厚、相互分享、相互幫助、叫上小伙伴一起加入吧!



點個在看你最好看





原文標題:SPI總線的特點、工作方式及常見錯誤解答

文章出處:【微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。

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

    關注

    1626

    文章

    21667

    瀏覽量

    601843

原文標題:SPI總線的特點、工作方式及常見錯誤解答

文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    PNP傳感器輸出信號的特點工作方式

    PNP傳感器的輸出信號是其工作過程中的關鍵環節,它決定了傳感器如何與外部電路或控制系統進行交互。以下將詳細解釋PNP傳感器的輸出信號,包括其特點工作方式、應用場景以及相關的接線和注意事項。
    的頭像 發表于 09-13 17:32 ?1521次閱讀

    CAN總線錯誤狀態的種類

    CAN總線錯誤狀態的種類主要包括以下幾種,每種狀態都反映了CAN總線網絡中節點或總線的不同錯誤情況,以及相應的通信能力和限制。
    的頭像 發表于 09-03 14:17 ?929次閱讀

    SPI總線的定義和特點

    領域得到了廣泛的應用,尤其是在微控制器(MCU)與外部設備(如傳感器、存儲器等)之間的數據傳輸中扮演著重要角色。以下將詳細闡述SPI總線的定義、特點及其工作原理。
    的頭像 發表于 09-03 14:05 ?602次閱讀

    串行口的四種工作方式各有什么特點

    ,分別是方式0、方式1、方式2和方式3,每種方式都有其獨特的特點和應用場景。以下是對這四種
    的頭像 發表于 08-22 17:37 ?916次閱讀

    放大器的非線性工作方式

    放大器的非線性工作方式是一個復雜而廣泛的主題,它涉及到電子學、信號處理以及電路設計等多個領域。在非線性工作方式下,放大器的輸出信號不再是輸入信號的簡單線性放大,而是會引入各種非線性效應,如失真、頻率變換、諧波產生等。
    的頭像 發表于 08-08 17:32 ?506次閱讀

    定時器的工作方式介紹

    定時器是計算機和嵌入式系統中常見的一種硬件模塊,用于實現定時和計數功能。定時器的工作方式通常由一組寄存器來控制,這些寄存器定義了定時器的配置參數和工作狀態。 定時器概述 定時器是一種用于測量時間間隔
    的頭像 發表于 07-12 10:29 ?730次閱讀

    三相步進電機有哪幾種工作方式

    ? ? ? 三相步進電機是一種常見的電機類型,廣泛應用于各種自動化設備和精密控制系統中。它具有結構簡單、控制方便、運行可靠等優點。三相步進電機的工作方式主要有以下幾種: ? ? ??1.全步工作方式
    的頭像 發表于 06-23 16:26 ?792次閱讀
    三相步進電機有哪幾種<b class='flag-5'>工作方式</b>?

    永磁同步電動機的結構與工作方式

    永磁同步電動機(Permanent Magnet Synchronous Motor,簡稱PMSM)作為一種高效、節能的電動機類型,在現代工業、交通、家電等領域得到了廣泛應用。其獨特的結構和工作方式
    的頭像 發表于 06-21 11:15 ?740次閱讀

    PLC的CPU工作方式詳解

    Processing Unit,中央處理器)作為其核心組件,其工作方式直接影響到PLC的性能和穩定性。本文將詳細探討PLC的CPU工作方式,包括其工作原理、主要模式以及實際應用中的注意事項,以期為相關技術人員提供參考和借鑒。
    的頭像 發表于 06-13 18:20 ?1592次閱讀

    三相步進電機有哪幾種工作方式

    三相步進電機是一種常見的電機類型,廣泛應用于各種自動化設備和精密控制系統中。它具有結構簡單、控制方便、運行可靠等優點。三相步進電機的工作方式主要有以下幾種: 全步工作方式 全步工作方式
    的頭像 發表于 06-12 09:20 ?964次閱讀

    斬波器的定頻調寬工作方式

    斬波器的定頻調寬工作方式是一種電力電子控制技術,用于調節輸出電壓或電流。
    的頭像 發表于 05-24 16:12 ?589次閱讀

    DC電源模塊的原理及工作方式

    BOSHIDA ?DC電源模塊的原理及工作方式 DC電源模塊是一種將交流電轉換為直流電的設備,它將交流電輸入端轉換為穩定的直流電輸出,以供電子設備使用。DC電源模塊的工作原理及工作方式如下。 ?DC
    的頭像 發表于 04-24 10:37 ?652次閱讀
    DC電源模塊的原理及<b class='flag-5'>工作方式</b>

    PCB設計工作中常見錯誤有哪些?

    一站式PCBA智造廠家今天為大家講講PCB設計工作中常見錯誤有哪些?PCB設計中最常見到的六個錯誤。PCB設計是電子產品制造中非常關鍵的一環。它的質量直接關系到整個產品的性能和穩定性
    的頭像 發表于 02-21 09:32 ?520次閱讀
    PCB設計<b class='flag-5'>工作中常見</b>的<b class='flag-5'>錯誤</b>有哪些?

    常見的直流負載工作方式

    常見的直流負載工作方式? 直流負載工作方式是指在直流電路中使用的各種負載方式。直流負載是用于測試和測量直流電源輸出能力和能效的設備,可以模擬真實負載條件下的電流和功率需求。本文將詳細
    的頭像 發表于 01-18 15:12 ?698次閱讀

    POE工業交換機的原理和工作方式是什么?

    POE工業交換機是現代工業網絡通信中不可或缺的一部分。該工業級交換機的完整名稱是“PoweroverEthernet(以太網供電)”,其主要特點是能夠通過網絡連接線同時傳輸數據和電力。在這篇文章中,我們將詳細討論一下POE工業交換機的原理和工作方式
    的頭像 發表于 12-21 15:50 ?1278次閱讀