美章網 資料文庫 SPI接口設計與實現范文

SPI接口設計與實現范文

本站小編為你精心準備了SPI接口設計與實現參考范文,愿這些范文能點燃您思維的火花,激發您的寫作靈感。歡迎深入閱讀并收藏。

SPI接口設計與實現

spi(SerialPeripheralInterface)總線是一種同步串行外設接口,它可以使MCU與各種外圍設備以串行方式進行通信以交換信息。SPI總線應用廣泛,已經成為很多器件的標準配置,可以直接和各個廠家生產的多種標準外圍器件直接接口。其它常用的串行接口還有I2C、UART這兩種接口,這三種接口互有優缺點。與I2C接口相比,SPI接口速度更快、協議更簡單、并且是全雙工的,但連線也相對多一些。與UART接口相比,SPI更靈活,因為其使用主設備的時鐘進行同步,所以兩個比特之間的時間間隔可以是任意的。在點對點的通信中,SPI接口不需要進行尋址操作,且為全雙工通信,顯得簡單高效。

1SPI總線工作原理

SPI總線一般以主/從模式工作,通常有一個主設備和一個或多個從設備,數據傳輸由主機控制,典型SPI結構框圖如圖1所示。SPI總線包含四條信號線,分別是sclk、miso、mosi和cs,其中,sclk為數據傳輸時鐘,由主機產生;miso是從機輸出,主機輸入數據線;mosi是主機輸出,從機輸入數據線;cs是從設備片選信號,由主機控制,當連接多個從設備時,通過該信號選擇不同的從設備。SPI總線是按字節發送數據的,主機和從機內部都包含一個8位串行移位寄存器,在時鐘信號控制下,寄存器內的數據由高到低輸出至各自的數據線,8個時鐘后,兩個寄存器內的數據就被交換了。如果只進行寫操作,主機只需忽略接收到的字節;反之,若主機要讀取從機的一個字節,就必須發送一個空字節來引發從機的傳輸。當主機發送一個連續的數據流時,可以進行多字節傳輸,在這種傳輸方式下,從機的片選端必須在整個傳輸過程中保持低電平。

根據串行同步時鐘極性和相位不同,SPI有四種工作方式。時鐘極性(CPOL)為0時,同步時鐘的空閑狀態為低電平,為1時,同步時鐘的空閑狀態為高電平。時鐘相位(CPHA)為0時,在同步時鐘的第一個跳變沿采樣數據,為1時,在同步時鐘的第二個跳變沿采樣數據。因為主設備時鐘極性和相位都是以從設備為基準的,所以主設備時鐘極性的配置和從設備時鐘極性的配置是相反的。

SPI工作原理:以寄存器CPOL=1、CPHA=0為例,當要傳輸數據時,主機控制cs信號有效,sclk管腳輸出時鐘信號,在時鐘上升沿,主機將需要發送的數據鎖存在mosi線上,同時從miso線上讀取從機發送的數據;在時鐘下降沿,從機將需要發送的數據鎖存在miso線上,同時從mosi線上讀取主機發送的數據,完成一次數據交換后,SPI總線重新回到空閑狀態,等待下一次通信的發起。

2SPI總線硬件設計和軟件實現

某項目的控制器硬件采用ARM+CPLD的技術方案,其中ARM為主控器,主要實現流程控制等,CPLD為從控制器。ARM與CPLD之間主要通過SPI接口進行通信,CPLD根據ARM發送的命令產生各模塊的控制邏輯,完成一百多路IO控制,并且實現從一路UART接口到20路半雙工RS485接口的收發切換。ARM與CPLD之間的硬件接口如圖2所示。特別的,在ARM和CPLD之間設計了一個中斷信號,用來提示SPI主機ARM,SPI從機CPLD有數據需要讀取,請求發起SPI通信。當CPLD作為SPI接口從機使用時,需要在CPLD中實現sclk下降沿檢測、SPI控制模塊。

2.1sclk下降沿檢測因為ARM在sclk的上升沿讀取CPLD輸出的數據,所以CPLD必須在sclk的下降沿發數,上升沿時數據穩定。同時為了在一個sclk時鐘周期只接收或發送一個比特的數據,需要使該信號僅保持一個clk周期,該信號的產生方式如圖3所示。在clk信號驅動下,當該下降沿檢測信號有效時(定為高電平有效),CPLD采集miso線上的數據,并將需要發送的數據輸出至mosi。

2.2SPI控制模塊如圖4為從機軟件設計流程圖。CPLD在系統上電后進入idle狀態,idle表示空閑狀態,當CPLD有數據需要傳輸時,通過int向ARM發送中斷信號;當檢測到cs信號有效時,進入spi數據傳輸狀態;同步sclk信號,在下降沿,首先發送數據信息字節,通過數據信息字節通知ARM這次總共需要發送幾個字節的數據,然后依次發送后續數據,直到數據傳輸完成。在上升沿,接收ARM發送的數據,并按字節存入RAM。

3SPI接口軟件的設計仿真

對該項目SPI控制程序進行了仿真,其仿真波形如圖5所示。這個SPI接口每次只有8bit,8bit代表地址還是數據由用戶自己的協議來定,每啟動一次接口模塊,無論是主設備還是從設備都會寫出一個數據和接收一個數據。接收數據流程是:當cs下降沿到來時啟動SPI接收控制模塊,每個sclk下降沿讀取1bit數據,ovalid有效時(高)讀取odata數據(8bit)。發送流程是:先確定從設備要寫出的數據,再給主設備中斷信號,主設備響應中斷,啟動一個讀取流程,就可以讀取從設備的一個8bit數據。

4結語

本文基于Altera公司的CPLD平臺,用VerilogHdl語言以有限狀態機的形式設計了一種符合SPI總線規范的從機模塊,并進行了仿真,得到的仿真波形符合設計要求。該模塊已經下載到芯片中實現了SPI接口功能,驗證了設計的正確性,具有一定的實用價值。

作者:黃勇 單位:西安現代控制技術研究所

主站蜘蛛池模板: av在线亚洲男人的天堂| 五月天亚洲色图| 亚洲www网站| 精品国产一二三区在线影院| 国产在线乱码在线视频| **真实毛片免费观看| 天天摸天天爽天天碰天天弄| 中文字幕中韩乱码亚洲大片 | 欧美喷潮久久久XXXXx| 人人爽人人爽人人片av免费 | 粗大挺进尤物人妻中文字幕| 国产a免费观看| 高清色本在线www| 国产福利一区二区三区在线视频 | 最新69国产成人精品视频69| 亚洲成AV人片在线播放无码| 爱情岛论坛亚洲永久入口口 | 成人精品一区二区三区校园激情| 久久夜色精品国产噜噜麻豆 | 色多多成视频人在线观看| 国模沟沟冒白浆视频福利| h电车侵犯动漫在线播放| 性欧美18-19sex性高清播放 | 国产亚洲综合视频| 免费a在线观看| 国产精品妇女一二三区| 91女神疯狂娇喘3p之夜| 天天摸天天摸天天躁| yy6080理论影院旧里番| 成人在线不卡视频| 中文字幕视频在线播放| 日本乱理伦片在线观看网址| 久久精品亚洲日本波多野结衣| 欧洲vodafonewifi14| 亚洲国产精品久久人人爱| 欧美黑人激情性久久| 亚洲精品国产福利在线观看| 男人的j进入女人的p的动态图| 凹凸在线无码免费视频| 精品视频一区二区三区| 四虎影视大全免费入口|