美章網 資料文庫 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接口功能,驗證了設計的正確性,具有一定的實用價值。

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

    主站蜘蛛池模板: 日本在线视频一区二区| 四虎成人精品一区二区免费网站| 视频一区视频二区日韩专区| 好爽毛片一区二区三区四| 国产午夜精品一区理论片飘花| 久久无码人妻精品一区二区三区| 亚洲一区动漫卡通在线播放| 日韩精品区一区二区三VR| 国产精品一区在线观看你懂的| 成人区人妻精品一区二区三区| 无码AV一区二区三区无码| 亚洲av无码不卡一区二区三区| 欧美亚洲精品一区二区| 91在线一区二区| 国产精品美女一区二区视频| 久久久99精品一区二区| 精品亚洲一区二区三区在线播放| av在线亚洲欧洲日产一区二区| 在线观看午夜亚洲一区| 91久久精品国产免费一区| 精品久久久久久中文字幕一区| 久久国产精品一区| 人妻无码视频一区二区三区| 亚洲av区一区二区三| 国产美女av在线一区| 一区三区三区不卡| 一区二区三区视频免费观看| 精品一区二区三区在线观看l | 插我一区二区在线观看| 日韩免费视频一区| 日韩熟女精品一区二区三区| 国产福利电影一区二区三区,亚洲国模精品一区 | 国产传媒一区二区三区呀| 中文字幕乱码亚洲精品一区| 国产短视频精品一区二区三区| 国产经典一区二区三区蜜芽| 亚洲.国产.欧美一区二区三区| 成人毛片一区二区| 中文字幕在线一区二区三区| 亚洲国产精品自在线一区二区| 国产成人综合一区精品|