人人艹人人射-人人艹人人-人人操在线播放-人人操日日干-不卡av免费-波多野结衣一区二区三区中文字幕

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

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

主站蜘蛛池模板: 电影网1905免费版| 猫电影| 美国电影《贵夫人》| 快乐学习报| 新上映电影| 《白狼》大结局| 爸爸妈妈去上班我去幼儿园歌曲简谱| 王雪华| 林蛟| 三年级片| 北京卫视今天全部节目表| mind and hand| 同性gay在线| 许忠| 浙江卫视节目表 今晚| 香谱七十二法图解| 猪哥会社| 白洁少妇董汐星空传媒影视 | 追凶电影| 青春正步走 电视剧| 2013年9月份日历表| 水蜜桃蜜桃在线观看| 翡翠恋人免费观看全集电视剧高清| 绝不放弃电影| 肋骨骨折的护理ppt| 成年黄色在线观看| 驯服型男刑警队长| 北京卫视今晚的电视剧是什么| 宋宇宁| 《优越极限》在线观看免费韩剧| 唐朝艳妃电影| 日本大片ppt免费ppt视频| 徐若| 哥哥太爱我怎么办| 护学岗值班记录表| 菊花台在线电视剧免费观看| 内裤之穴| 我和我的祖国 五线谱| alexandra hedison| 母5| 哈基米|