国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

ADμC812的串行外設接口(SPI)及其應用

發布時間:2010-11-17 12:36    發布者:designer
關鍵詞: ADμC812 , spi , 串行 , 接口 , 外設
ADμC812是一種新型的集成12位數據采集系統。它的串行外設接口SPI(serial peripheral interface)可進行主機和多片從外圍器件的信息傳遞,即主機對從機的控制及從機向主機提供各種信息等,從而實現系統之間的各種控制和操作。

ADμC812是一種全集成的12位數據采集系統。它在單個芯片內包含了高性能的自校準多通道ADC、2個12位DAC以及可編程的8位MCU(與8051兼容)。為便于MCU與各種外圍設備進行通信,ADμC812提供了3種串行I/O端口:UART接口、I2C兼容的串行接口和串行外設接口(SPI)。其中,SPI接口是工業標準的同步串行接口,是一種全雙工、三線通信的系統。它允許MCU與各種外圍設備以串行方式(8位數據同時、同步地被發送和接收)進行通信。在SPI接口中,數據的傳輸需要1個時鐘信號和兩條數據線。  

SPI可工作在主模式或從模式下。在主模式,每一位數據的發送/接收需要1次時鐘作用;而在從模式下,每一位數據都是在接收到時鐘信號之后才發送/接收。1個典型的SPI系統包括1個主MCU和1個或幾個從外圍器件。SPI接口可設置成在發送/接收1個字節的結束時產生1次中斷。  
主時鐘可以通過編程而成為不同的狀態,既可編程為4種不同主波特率的任一種,又可對時鐘的極性和相位進行編程。

SPI也可用于那些需要比微控制器上的并行I/O端口更多輸入或輸出端的場合中。SPI提供了一種擴展I/O功能的最簡單的辦法,只需使用最少的微控制器引腳。





一、工作原理  

1.SPI的信號說明  

SPI系統使用4條線可與多種標準外圍器件直接接口:



串行時鐘線(SCLOCK)、主機輸入/從機輸出數據線MISO、主機輸出/從機輸入數據線MOSI和低電平有效的從機選擇線SS。  

SCLOCK是主機的時鐘線,為MISO數據的發送和接收提供同步時鐘信號。每一位數據的傳輸都需要1次時鐘作用,因而發送或接收1個字節的數據需要8個時鐘的作用。主機的時鐘是通過主機的硬件設置的,并和各個從機的SCLOCK相連。時鐘的波特率、極性、相位是由SPICON(SPI控制寄存器)來設置的。  

MISO是主機的輸入/從機的輸出數據線。主機的MISO應與從機的MISO相連進行高位在前的數據交換。  

MOSI是SPI接口的SPI主機輸出/從機輸入數據引腳。這一引腳應當連接主微控制器的數據輸出和從微控制器的數據輸入端MOSI,進行高位在前數據的交換。  

SS只在從方式中用于低電平選中從。SS對應的是P1.5,在初始化時P1口被設置為模擬輸入,因而通過清除P1.5可將其設置為數據輸入,才可完成主、從機的通信。

2.SPI的寄存器  

SPI有2個相關寄存器:SPICON和SPIDAT,其中SPICON包含各種標志位、使能位、方式位及時鐘位。各位都是可尋址的,如表1及表2所列。

表1 SPICON寄存器  

ISPI
WCOL
SPE
SPIM
CPOL
CPHA
SPR1
SPR0

FFH 0
FEH 0
FDH 0
FCH 0
FBH 0
FAH 0
F9H 0
F8H 0

R/W
R/W
R/W
R/W
R/W
R/W
R/W
R/W
表2 SPICON各位功能  




功能

ISPI
中斷標志位。

當發送和接收1字節數據完畢時自動置全。該位也可以通過軟件控制。當于中斷時,應當打開中斷EA,將IE2.0置位。當執行中斷服務程序時,硬件自動清除該位


WCOL

寫沖突錯誤標志位。

當SPI正進行數據交換時,若向SPIDAT中寫數據將產生寫沖突錯誤,寫入的數據將無效,原有交換繼續執行。必須由軟件清除

SPE

SPI使能位。

SPE=0,I2C串口使能,SPI串口禁止;
SPE=1,I2C串口禁止,SPI串口使能

SPIM

主模式選擇位。

SPIM=0,SPI工作于從模式;
SPIM=1,SPI工作于主模式

CPOL
時鐘極性選擇位。
CPOL=0,主機時鐘有高到低的跳變讀取數據,數據字節之間傳輸時,時鐘處于高電平空閑狀態;
CPOL=1,主機時鐘有低到高的跳變讀取數據,各數據字節之間傳輸時時鐘處于低電平空閑狀態(見圖1)

CPHA

時鐘相位選擇位。

CPHA=0,傳輸數據的高位MSB在SS的降沿出現,在時鐘第1個前沿讀入;之后下一數據位在時鐘后沿出現,在下一個前沿讀入;直到8位數據讀完。

CPHA=1,數據在時鐘前沿出現,在同一時鐘周期的后沿讀入(見圖1)。
讀位還可控制從機的同步方式

SPR1
SPR0
SPI波行選擇位。
SPR1  SPR0  波特率
0  0  fosc/4
0  1  fosc/8
1  0  fosc/32
1  1  fosc/64

注:從方式下這兩位都清零

另一個SPI寄存器是SPIDAT。對這一寄存器的寫操作會產生從高位開始的一位位的數據發送。如果寫操作發生在其他數據正在傳遞的過程中,那么WCOL將置位。如果寫操作進行時沒有其他數據在傳遞,SPIDAT中的數據將自動鎖存到移位寄存器中,移位寄存器從高位開始發送數據,發送結束后輸入的字節將鎖存到SPIDAT中,可進行軟件讀出。  

3.主模式  

發送和接收可以同時工作在主模式下。主模式的顯著特征是不論是發送還是接收始終有SCLOCK信號,SS信號不是必需的。因為SPI串口只能有一片主機,因而不存在主機的選擇問題。  

發送操作是由向SPIDAT中寫數據而觸發的。在主模式下,時鐘信號的1次作用對應一位數據的發送(MISO)和另一位數據的接收(MOSI)。如圖2所示,在主機中數據從移位寄存器中自左向右發出送到從機(MOSI),同時從機中的數據自右向左發到主機(MISO),經過8位時鐘周期完成1個字節的發送。輸入字節保留在移位寄存器中,此時ISPI自動置位(如果有中斷設置,則產生中斷),移位寄存器的數據將被鎖存到SPIDAT中,此后對SPIDAT的讀操作將把數據讀出。  

將主機的SS和從機SS的相連的方式沒有意義,因為P1.5只可作輸入,所以主機的SS不能為從機的SS提供選通信號。為了解決這一問題,可利用主機其他輸入/輸出口線與從機的SS相連,實現選通控制,可以有多根口線控制多個從機。如果要讀取主機SS的狀態,需要將主機的SS與主機上另一根輸入/輸出口線相連,通過對該口線讀操作獲取主機SS的狀態。  

4.從模式  

發送和接收可以同時工作在從模式下。



從模式的顯著特征是:不論是發送還是接收始終必須在SCLOCK信號作用下進行,并且SS信號必須有效。SS在初始化之后,要設置為數字輸入(CLR P1.5),當SS信號無效時,數據的發送無法進行并且輸入的數據視為無效。這是因為輸入的時鐘信號是與SCLOCK的邏輯與操作,而SCLOCK信號是SS的反轉。這樣當SS為高時,就沒有時鐘信號輸入。  

當CPHA=1時,SS始終置地;當CPHA=0時,在從機接收到第1個時鐘之前SS必然置低,在接收完畢之后必然置高。數據的發送和接收的過程見圖2,與主模式下基本相似,只是移位寄存器的數據移出和輸入方向與之相反。從模式下的SS信號也須通過連接其他口線來讀取狀態。

5.從模式下的時鐘同步  

通過設置CPHA位可以獲得從模式下的兩種同步方式。由于SCLOCK信號線可能存在干擾脈沖,如果這些干擾脈沖大到一定程序,從機時就會誤認為收到了時鐘信號,將導致接收數據錯誤。這樣依靠同步結構的SPI將失去同步的意義。  

CPAH=1時,如果有其他脈沖的干擾,ADμC812將無法與主機獲得同步。選擇這種方式,當SS為低時,時鐘計數器才開始工作。每經過8個時鐘同周期,ISPI將置位(如果中斷設置正確將產生中斷),并且移位寄存器的數據鎖存到SPIDAT中。SS保持低電平不會使時鐘計數器復位。  

CPHA=0時,如果有其他脈沖的干擾,ADμC812也可與主機獲得同步。在這種方式下,從機通過SS信號獲得的,而不是通過時鐘信號獲得的。當SS信號變低時,時鐘計數器復位,數據位在此后的每一個時鐘發送和接收;當SS變高時,ISPI位置位(如果中斷設置正確,將產生中斷),并且移位寄存器的數據鎖存到SPIDAT中。ISPI置位與數據的鎖存始終與時鐘計數值無關,因此當SS的觸發在多于或少于8個時鐘時,在SS返回高電平瞬間,ADμC812將產生中斷,并且收到或發送的數據將不可靠。在這種方式下,SS不可始終置低,如果始終置低,那么從機將始終發送00。  

當了與主機獲得同步,從機SS的下降沿必然由主機控制。當SS變低時,從機產生外部中斷,中斷服務中SPE位由軟件清除,然后重新置位。SPE位的置位將使時鐘計數器復位到零。須注意的一點是這一中斷必須有比其他中斷更高的優先級,才可使從機在主機第1個時鐘到來之間獲得同步。主機程序必須為從機中斷執行中斷服務提供足夠的時間,以對SPE進行操作。典型的操作是在清除SS和向SPIDAT中寫數據之間用12~15個NOP指令。





二、實際應用  

圖3所示為1個主機和1個從機典型的電路連接圖。注意主、從機要有公共的地。  

根據圖3的連接情況及前面分析的主、從機工作工程,繪制流程圖如圖4所示。  

主機程序:  

SET EA ;打開中斷允許  
SET IE2.0 ;打開SPI中斷  
MOV SPICON,#30H ;送SPI控制字  
MASTER:CLR P3.5 ;置SS為低  
NOP ;等待從機中斷執行完畢  
NOP  
NOP  
NOP  
MOV SPIDAT,#DATA;向SPIDAT中寫數據  
LCALL DELAY ;根據選擇的分頻比算出數據傳輸的時間,確定DELAY子程序的延時時間(也可用中斷方式)  
SETB P3.5 ;將SS置高  
LJMP MASTER ;送下一個數  
從機程序:  
ORG 0013H ;外部中斷INT0入口  
CLR SPE ;SPE位清除  
SETB SPE ;與主機時鐘獲得同步  
SETB P3.2 ;撤銷中斷  
RETI  
……  
SETB EA ;打開中斷允許  
SETB IE2.0 ;打開SPI中斷  
SETB EX0 ;打開外部中斷  
MOV SPICON,#20H ;送SPI控制字  
CLR P1.5 ;設置為數字輸入  
JB P3.1$ ;判斷P3.1是否為低  
CLR P3.2 ;產生INT0中斷  
CLALL DELAY ;等待數據傳送完畢  
MOV A,SPIDAT ;讀取數據





通過以上程序可以實現從主機向從機中發送數據的操作。在某些情況下,從微控制器所完成的功能較少,如果采用ADμC812會產生資源和經濟的浪費,為此可以采用MCS-51系列的微控制器作為從機。這樣不僅實現了必要的功能又節約了資源。由于MCS-51沒有SPI串口,所以采用MCS-51作為從機需要模擬SPI的工作模式來完成數據的傳送。下面給出模擬SPI接收數據的電路連接圖(見圖5)和相關程序。  

ADμC812作為主機的程序與前面相同。8051模擬SPI串口接收數據程序如下:  

ORG 0013H  
INT0:MOV R0,#8 ;移位計數值  
INT0":JB P3.4,INT0 ;輸入時鐘位高電平時等待  
MOV C,P3.3 ;輸入時鐘下降沿接收數據  
RLC A ;將數據存入A中  
DJNZ R0,INT0" ;8位是否傳送完  
SETB P3. ;8位數據接收完畢,關中斷  
MOV @R1,#DATA ;將接收數據存到內部RAM  
INC R1 ;指向下一個內部RAM單元  
CJNE R1,#00H,REC  
MOV R1,#80H  
RETI  
……  
SETB EA  
SETB EX0  
MOV R1,#80H ;內部存儲器80H~FFH單元存儲接收的數據  
……  

總結  

通過對SPI串口原理的介紹,SPI串行接口可以在短距離內進行主機與從機的數據傳送,并且具有多種可調的傳輸方式、連接電路簡單、使用方便等優點。為實現主機和從機及從外圍設備的通信提供了一種簡單、易行的方案。
本文地址:http://www.qingdxww.cn/thread-40043-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • Dev Tool Bits——使用MPLAB® Discover瀏覽資源
  • Dev Tool Bits——使用條件軟件斷點宏來節省時間和空間
  • Dev Tool Bits——使用DVRT協議查看項目中的數據
  • Dev Tool Bits——使用MPLAB® Data Visualizer進行功率監視
  • 貿澤電子(Mouser)專區

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 色席丝| 韩国欧洲一级毛片 | 亚洲一区二区三区日本久久九 | wwwsihu| 亚洲国产欧美日韩一区二区三区 | 国产成人宗合 | eeuss天堂影院| 亚欧视频在线 | 国产小视频免费在线观看 | 日本高清视频免费看 | 亚洲不卡一区二区三区 | 亚洲精品永久www忘忧草 | 亚洲欧美精品在线 | 欧美日韩色视频 | 夜夜春网站 | 一区二区三区欧美在线 | 日本三级一区二区 | 久久综合丁香 | 国产欧美日本亚洲精品五区 | 亚洲最大福利网站 | 另类视频在线观看 | 欧美精品福利 | 成人在线a | 亚洲欧美日韩中文高清一 | 91系列在线 | 天天摸天天操天天射 | 免费国产在线观看不卡 | 亚洲性一级理论片在线观看 | 性免费网站 | www亚洲成人 | 韩国一级特黄清高免费大片 | 欧美日韩成人在线 | 久久青青 | 农村寡妇偷毛片一级 | 亚洲线精品久久一区二区三区 | 97在线成人免费视频观看 | 一级国产视频 | 黄色网址视频在线播放 | 国产国语一级a毛片高清视频 | 国产福利精品在线 | 亚洲日本一区二区三区在线不卡 |