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

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

主站蜘蛛池模板: 女神校花乳环调教| 欧洲a老妇女黄大片| 哒哒哒免费视频观看在线www| 0588影视手机免费看片| 天堂网www在线观看| 中日欧洲精品视频在线| 日韩精品国产自在久久现线拍| 亚洲成在人线在线播放无码| 秋霞鲁丝片一区二区三区| 国产一在线精品一区在线观看| 国模欢欢炮交150视频| 国产综合久久久久鬼色| sao浪美人的激爱之路| 成年美女黄网站色大片图片| 久久精品中文字幕| 欧美va亚洲va香蕉在线| 亚洲欧美综合另类| 男人天堂网www| 午夜高清啪啪免费观看完整| 西西大胆午夜人体视频| 国产欧美第一页| 2021国产麻豆剧果冻传媒影视| 天堂√在线中文官网在线| 一级毛片免费不卡直观看| 日批视频在线看| 久久男人av资源网站无码软件| 欧美人成人亚洲专区中文字幕| 亚洲精品亚洲人成在线播放| 男朋友说我要冲你是什么意思| 又黄又爽又色的黄裸乳视频 | 日韩免费在线观看视频| 亚洲va在线∨a天堂va欧美va| 欧美视频第一页| 亚洲精品无码乱码成人| 男女爽爽无遮拦午夜视频| 午夜无码人妻av大片色欲| 老牛精品亚洲成av人片| 国产三级小视频| 超级无敌科技帝国| 国产午夜福利在线观看视频| 黄色福利小视频|