《電子技術應用》
您所在的位置:首頁 > 模擬設計 > 設計應用 > SPI總線的特點、工作方式及常見錯誤解答
SPI總線的特點、工作方式及常見錯誤解答
摘要: SPI(serial peripheral interface,串行外圍設備接口)總線技術是Motorola公司推出的一種同步串行接口。它用于CPU與各種外圍器件進行全雙工、同步串行通訊。
Abstract:
Key words :

  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方式(實線表示):

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分頻的波形為例,分析同步串行時鐘、主時鐘和從時鐘之間的關系。

主從時鐘和SCK的關系

圖4主從時鐘和SCK的關系

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

主從時鐘和SCK的關系

圖5主從時鐘和SCK的關系

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

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


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會不會出現較大毛刺影響系統穩定性呢?

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          香蕉久久精品日日躁夜夜躁| 欧美黑人一区二区三区| 国产亚洲一本大道中文在线| 一区二区视频免费完整版观看| 久久大香伊蕉在人线观看热2| 国内精品美女av在线播放| 欧美精品v国产精品v日韩精品| 欧美日韩一区二区视频在线| 国产日韩欧美三区| 国产农村妇女毛片精品久久麻豆| 国产视频亚洲精品| 欧美视频在线免费看| 麻豆精品精品国产自在97香蕉| 狠狠色噜噜狠狠狠狠色吗综合| 欧美精品 日韩| 欧美日韩aaaaa| 最新日韩精品| 免费观看成人| 香蕉久久一区二区不卡无毒影院| 亚洲自拍三区| 欧美精品一区在线发布| 一区二区三区日韩精品视频| 欧美精选在线| 久久嫩草精品久久久久| 国产亚洲精品资源在线26u| 亚洲韩国精品一区| 欧美日韩伦理在线| 欧美日韩mp4| 午夜日韩在线| 1000部国产精品成人观看| 一区二区三区 在线观看视| 久久中文字幕导航| 午夜精品免费| 亚洲一区二区欧美日韩| 在线成人激情视频| 欧美freesex8一10精品| 亚洲欧美一区二区三区在线| 国产午夜一区二区三区| 黑丝一区二区| 免费观看国产成人| 亚洲综合国产| 亚洲午夜国产成人av电影男同| 黄色国产精品| 欧美一区在线视频| 午夜精品影院在线观看| 欧美精品激情在线| 国产精品视频午夜| 国产精品亚洲美女av网站| 国产精品美女久久福利网站| 久久国产精品高清| 久久久国产91| 国产精品国产三级国产aⅴ浪潮| 午夜在线视频一区二区区别| 蜜臀a∨国产成人精品| 亚洲肉体裸体xxxx137| 久久中文字幕一区二区三区| 99视频精品全部免费在线| 国产视频精品免费播放| 亚洲六月丁香色婷婷综合久久| 亚洲欧美国产日韩天堂区| 久久久免费精品视频| 欧美视频一区二区在线观看| 99精品欧美一区二区三区| 国产精品九色蝌蚪自拍| 亚洲一区二区少妇| 亚洲男人av电影| 久久亚洲私人国产精品va| 久久久久久网| 国产一区二区欧美日韩| 99视频在线观看一区三区| 亚洲免费电影在线| 欧美成人精品在线播放| 欧美日韩亚洲在线| 免费在线视频一区| 欧美视频一区二| 亚洲日韩视频| 欧美~级网站不卡| 日韩视频―中文字幕| 国产午夜精品全部视频在线播放| 欧美理论电影网| 激情一区二区三区| 亚洲视频一区| 欧美成人综合一区| 久久综合伊人77777蜜臀| 久久在线免费视频| 国产精品第13页| 欧美亚洲一区二区三区| 韩国成人精品a∨在线观看| 一本大道久久精品懂色aⅴ| 免费亚洲网站| 国产精品白丝av嫩草影院| 欧美性事在线| 日韩视频在线永久播放| 韩国精品一区二区三区| 久久精品午夜| 欧美人妖另类| 在线观看欧美精品| 一区二区三区在线看| 一区二区三区四区五区视频| 欧美一区二区三区在| 国产丝袜一区二区三区| 91久久精品一区二区别| 亚洲欧美日韩精品久久亚洲区| 久久久久久国产精品一区| 国产精品一区二区在线| 久久免费高清| 国产综合欧美| 在线精品亚洲一区二区| 国产欧美日韩视频一区二区三区| 亚洲一级电影| 亚洲激情电影在线| 亚洲欧美日韩网| 欧美视频导航| 久久精品成人一区二区三区| 日韩一二三区视频| 日韩一区二区精品葵司在线| 欧美一区二区三区四区在线观看| 亚洲男人的天堂在线aⅴ视频| 亚洲人成在线影院| 欧美高清在线观看| 一区二区三区久久久| 国产一区二区三区久久久| 欧美极品aⅴ影院| 国产精品hd| 好看的日韩av电影| 在线播放精品| 亚洲人线精品午夜| 国产一区二区三区不卡在线观看| 99这里只有久久精品视频| 欧美激情日韩| 模特精品裸拍一区| 欧美精品九九99久久| 欧美在线视频一区| 亚洲资源在线观看| 先锋a资源在线看亚洲| 国模精品一区二区三区| 亚洲少妇一区| 国产精品久久久久婷婷| 亚洲国产日韩一区| 欧美精品一区二区三区蜜臀| 韩日成人在线| 欧美性理论片在线观看片免费| 欧美日韩一区二区在线视频| 国产精品国产福利国产秒拍| 欧美午夜视频一区二区| 亚洲男人的天堂在线aⅴ视频| 亚洲精品视频在线| 亚洲福利视频专区| 香港成人在线视频| 在线一区日本视频| 黄页网站一区| 欧美日韩视频在线一区二区观看视频| 揄拍成人国产精品视频| 亚洲国产美女久久久久| 欧美特黄一区| 9色porny自拍视频一区二区| 欧美在线观看一区二区| 日韩视频永久免费观看| 亚洲精品老司机| 美女啪啪无遮挡免费久久网站| 激情欧美日韩一区| 日韩亚洲精品在线| 在线观看欧美成人| 黄色成人在线网站| 欧美一区二区三区视频免费| 亚洲午夜久久久久久尤物| 一本色道久久99精品综合| 国模套图日韩精品一区二区| 欧美一区二区三区的| 亚洲午夜电影网| 国产一区二区三区的电影| 久久琪琪电影院| 亚洲国产精品成人va在线观看| 欧美国产精品一区| 日韩小视频在线观看| 国产精品国产三级国产普通话三级| 国产精品亚洲аv天堂网| 欧美成人福利视频| 欧美极品影院| 亚洲欧美一区在线| 久久激情视频久久| 久久九九精品99国产精品| 欧美丰满高潮xxxx喷水动漫| 99热这里只有精品8| 尤物网精品视频| 亚洲欧洲日韩女同| 免费日韩一区二区| 欧美一区二区三区另类| 欧美成人精品在线观看| 亚洲精品免费看| 欧美成人资源网| 欧美一级二区| 亚洲国产日日夜夜| 亚洲欧美日韩综合国产aⅴ| 欧美一区二区三区在线播放| 亚洲乱码国产乱码精品精天堂| 国产嫩草一区二区三区在线观看| 亚洲欧美成人| 欧美高清视频在线| 久久久精品网| 久久综合九色综合久99| 黄色国产精品一区二区三区| 欧美日韩成人综合在线一区二区| 亚洲自拍高清| 欧美国产亚洲另类动漫| 国产精品一区毛片| 中文精品99久久国产香蕉| 中日韩男男gay无套| 国产伦精品一区二区三区高清| 午夜精品久久久久久久久久久| 欧美一区深夜视频| 国产精品夜夜夜一区二区三区尤| 欧美国产在线电影| 亚洲黄色免费电影| 国产拍揄自揄精品视频麻豆| 亚洲欧洲视频| 欧美黄色一区| 一区二区三区久久久| 伊人成综合网伊人222| 国产精品av久久久久久麻豆网| 久久国产主播精品| 久久久久久久国产| 亚洲欧美成aⅴ人在线观看| 国产日韩亚洲欧美| 国内精品免费在线观看| 国产精品每日更新在线播放网址| 国产精品日日摸夜夜摸av| 国产精品久久久久高潮| 亚洲男人影院| 久久午夜电影| 国产亚洲欧美中文| 欧美电影免费观看大全| 国产精品欧美久久| 免费欧美在线| 久久久91精品国产| 亚洲精品美女久久7777777| 亚洲片在线观看| 久久天天狠狠| 亚洲精品久久久久久一区二区| 亚洲国产一区二区a毛片| 久久久久看片| 国产精品视频精品| 亚洲精品在线观看免费| 亚洲综合色自拍一区| 亚洲一区二区在线免费观看| 欧美大片在线看| 日韩一区二区免费高清| 久久性天堂网| 99精品视频免费全部在线| 能在线观看的日韩av| 亚洲人午夜精品免费| 欧美激情亚洲精品| 久久久久国产精品午夜一区| 久久青青草综合| 在线激情影院一区| 欧美日韩福利| 久久久免费精品视频| 国产精品第一区| 亚洲欧美日韩国产一区二区| 久久av红桃一区二区小说| 国产精品久久午夜夜伦鲁鲁| 国产精品夜夜嗨| 韩国一区二区三区在线观看| 亚洲综合导航| 亚洲高清一区二| 欧美看片网站| 亚洲国产成人一区| 欧美剧在线免费观看网站| av成人激情| 欧美精品国产一区| 一区二区三区色| 欧美日本韩国在线| 亚洲巨乳在线| 亚洲日本欧美在线| 亚洲级视频在线观看免费1级| 一区二区三区日韩在线观看| 国产亚洲免费的视频看| 欧美成人a视频| 国内精品**久久毛片app| 黄色成人在线免费| 欧美大片网址| 伊人久久成人| 欧美视频久久| 国产精品免费网站在线观看| 亚洲综合首页| 国产亚洲一二三区| 国产精品免费视频观看| 欧美成人在线网站| 久久深夜福利免费观看| 欧美黄色一区二区| 欧美在线观看一区二区三区| 亚洲无人区一区| 国产精品九九久久久久久久| 伊人久久成人| 狠色狠色综合久久| 亚洲日韩欧美一区二区在线| 一区精品久久| 欧美在线观看一区二区三区| 欧美激情第3页| 久久综合狠狠| 久久久999| 亚洲国产精品va| 在线看国产日韩| 国产婷婷成人久久av免费高清| 黄色国产精品一区二区三区| 91久久精品美女| 91久久精品一区二区别| 久久夜色精品国产亚洲aⅴ| 国产精品国产精品国产专区不蜜| 国产精品美女在线| 国内精品久久久久久久97牛牛| 久久福利一区| 久久久精品午夜少妇| 欧美日韩视频免费播放| 欧美激情1区| 暖暖成人免费视频| 亚洲欧洲午夜| 亚洲午夜激情网页| 欧美一区二区三区免费在线看| 国产亚洲欧美日韩日本| 一区二区日本视频| 亚洲第一精品夜夜躁人人躁| 韩国三级电影久久久久久| 欧美日韩视频在线观看一区二区三区| 亚洲国产经典视频| 亚洲精品美女在线观看| 亚洲福利久久| 国产情人节一区|