當(dāng)前位置:首頁 > 單片機 > 單片機
[導(dǎo)讀]單片機(MCU)系統(tǒng)為了與SPI標(biāo)準(zhǔn)外圍接口器件進行通信,必須使用SPI( Serial Peripheral Interface,串行外設(shè)接口)總線。SPI總線系統(tǒng)是Motorola提出的一種同步串行外設(shè)接口,有信號線少、協(xié)議簡單、傳輸速度快的特點,

單片機(MCU)系統(tǒng)為了與SPI標(biāo)準(zhǔn)外圍接口器件進行通信,必須使用SPI( Serial Peripheral Interface,串行外設(shè)接口)總線。SPI總線系統(tǒng)是Motorola提出的一種同步串行外設(shè)接口,有信號線少、協(xié)議簡單、傳輸速度快的特點,因此有不少外圍器件都采用SPI總線,如Flash RAM、A/ D轉(zhuǎn)換器、LED顯示器、MCU以及計算機網(wǎng)絡(luò)等。MCU中的SPI接口通過配置可與各個廠家生產(chǎn)的多種標(biāo)準(zhǔn)外圍器件直接連接。

對于那些沒有SPI接口功能的MCU來說,SPI接口的功能靠軟件控制MCU的I/O口的方法來模擬。不過,用軟件來模擬SPI接口的功能,工作速度非常慢,并且需要主從器件的軟件之間配合得非常好。如果在單片機芯片內(nèi)部用硬件電路來完成SPI接口功能,在硬件增加不多的情況下,能夠極大地提高傳輸速度(最高頻率可達主器件的頻率的1/4),減輕軟件的負擔(dān),使用極為方便。

SPI接口工作的時候,沒有應(yīng)答信號,并且數(shù)據(jù)在發(fā)送的時候無需校驗位,所以,要求主從器件的軟件必須完全符合SPI的時序要求,否則數(shù)據(jù)傳輸很容易出現(xiàn)錯誤。本文通過MCU中SPI接口模塊的設(shè)計,分析數(shù)據(jù)傳輸?shù)母鞣N出錯情況,并針對各種情況,增強SPI接口的錯誤處理能力。

1 SPR設(shè)定錯誤

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

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

圖1主從時鐘和SCK的關(guān)系

如圖1所示,當(dāng)T從

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

圖2主從時鐘和SCK的關(guān)系

根據(jù)以上的分析,SPR和主從時鐘比的關(guān)系如表1所列。

表1SPR的設(shè)置和主從時鐘周期比值之間的關(guān)系

在發(fā)送數(shù)據(jù)之前按照表1對SPR進行設(shè)置,SPR設(shè)定錯誤可以完全避免。

2 模式錯誤(MODF)

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

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

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

圖3模式錯誤的檢測

3 溢出錯誤(OVR)

溢出錯誤表示連續(xù)傳輸多個數(shù)據(jù)時,后一個數(shù)據(jù)覆蓋了前一個數(shù)據(jù)而產(chǎn)生的錯誤。

狀態(tài)標(biāo)志SPIF表示的是數(shù)據(jù)傳輸正在進行中,它對數(shù)據(jù)的傳輸有較大的影響。主器件的SPIF有效由數(shù)據(jù)寄存器的空標(biāo)志SPTE=0產(chǎn)生,而從器件的SPIF有效則只能由收到的第一個SCK的跳變產(chǎn)生,且又由于從器件的SPIF和主器件發(fā)出的SCK是異步的,因此從器件的傳輸標(biāo)志SPIF從相對于主器件的傳輸標(biāo)志SPIF主有一定的滯后。如圖4所示,在主器件連續(xù)發(fā)送兩個數(shù)據(jù)的時候?qū)⒂锌赡軐?dǎo)致從器件的傳輸標(biāo)志和主器件下一個數(shù)據(jù)的傳輸標(biāo)志相重疊(圖4中虛線和陰影部分),第一個收到的數(shù)據(jù)必然被覆蓋,第二個數(shù)據(jù)的收/發(fā)也必然出錯,產(chǎn)生溢出錯誤。

圖4溢出錯誤

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

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

4 偏移錯誤(OFST)

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

圖5偏移錯誤

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

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

比如在圖5中,COUNT的最大值COUNT(max)=2或者1,都可認為是正常的。但當(dāng)出現(xiàn)COUNT(max)=8時,可以判定出現(xiàn)了偏移錯誤。在實際設(shè)計中,先記錄下第一個COUNT(max)的值,如果后面又出現(xiàn)與記錄值相差1以上的COUNT(max)出現(xiàn),可知有偏移錯誤OFST

發(fā)生。SPI接口在“不均勻”的地方令SPIF=1,然后準(zhǔn)備等待下一個數(shù)據(jù)的第一個SCK。其中COUNT的位數(shù)固定為8位,為了避免溢出時重新從00H開始計數(shù),當(dāng)計數(shù)達到ffH時停止計數(shù)。

5 其他錯誤

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

結(jié)語

本文對SPI接口之間數(shù)據(jù)傳輸中各種出錯情況進行分析,并對SPI接口處理錯誤的能力進行增強。對一些傳輸錯誤,SPI接口可以檢測出來,通過對各種錯誤狀態(tài)寄存器進行置位,并做相應(yīng)的處理解決。但是有些錯誤由硬件本身造成,是檢測不到的。因此,在應(yīng)用中,如果對數(shù)據(jù)的正確性要求較高,除了要在軟件上滿足SPI接口的時序要求外,還需要在軟件上作適當(dāng)?shù)奶幚怼?/p>

擴展閱讀:單片機常見故障及處理方法

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉