摘要:集成電路設計越來越向系統(tǒng)級的方向發(fā)展,并且越來越強調模塊化的設計。SPI總線是Motorola公司提出的一個同步串行外設接口,容許CPU與各種外圍接口器件以串行方式進行通信、交換信息。在此簡述了SPI總線的特點,介紹了它的四條信號線及SPI串行總線接口的典型應用。重點描述SPI串行總線接口在DA芯片中的應用,并給出用C語言描述實現該接口通信的部分程序。該程序已經在AT89C2051中進行驗證。
關鍵詞:SPI;串口控制;AD7390;單片機
0 引 言
串行外設接口(Serial Peripheral Interface,SPI)是一種高速同步串行輸入/輸出端口,近年來廣泛應用于移位寄存器、D/A轉換器、A/D轉換器、串行E2PROM、LED顯示驅動器等外部設備的擴展。SPI接口可以共享,便于組成帶多個SPI接口器件的系統(tǒng)。其傳送速率可編程,連接線少,具有良好的擴展性。
1 SPI接口介紹
SPI是摩托羅拉公司推出的一種同步串行通信接口,用于微處理器、微控制器和外圍擴展芯片之間的串行連接,現已發(fā)展成為一種工業(yè)標準。目前,各半導體公司推出了大量的帶有SPI接口的具有各種各樣功能的芯片,如RAM,E2PROM,FLASH ROM,A/D轉換器、D/A轉換器、LED&LCD顯示驅動器、I/0接口芯片、實時時鐘、UART收發(fā)器等,為用戶的外圍擴展提供了極其靈活而價廉的選擇。由于SPI總線接口只占用微處理器四個I/O口線,故采用SPI總線接口可以簡化電路設計。節(jié)省很多常規(guī)電路中的接口器件和I/O口線,提高設計的可靠性。目前,已有部分廠家的單片機具有SPI接口,如Philips的P89LPC900,Atmel的Atmega128等,但是,大部分單片機不支持SPI接口。在實際應用中,出于產品體積、成本和可擴展性等方面的考慮,設計人員往往希望使用不具備SPI接口的單片機來控制具備SPI接口的外圍器件?,F以AT89C2051單片機模擬SPI總線操作串行AD7390為例,如圖1所示,介紹利用單片機的I/O口通過軟件模擬SPI總線的實現方法。
SPI使用的四條線是串行時鐘線(SCK)、主機輸入從機輸出線(MISO)、主機輸出從機輸入線(MOSI)、低電平有效的使能信號線(CS)。這樣,僅需3~4根數據線和控制線即可擴展具有SPI接口的各種I/O器件。
SPI 總線具有以下特點:
(1)因連線較少,可簡化電路設計。并行總線擴展方法通常需要8根數據線、8~16根地址線、2~3根控制線。而SPI總線設計,僅需4根數據線和控制線即可完成并行擴展所實現的功能。
(2)器件統(tǒng)一編址,并與系統(tǒng)地址無關,操作SPI獨立性好。
(3)器件操作遵循統(tǒng)一的規(guī)范.使系統(tǒng)軟硬件具有良好的通用性。
2 AD7390的基本結構和工作原理
AD7390是ADl公司生產的12位分辨率電壓輸出數/模轉換器。該DAC為用戶提供低成本、高精度的可控電壓解決方案,使用單電源+3V系統(tǒng)供電。器件保證電源電壓為2.7~5.5V時消耗不到100mA的電流,所以該器件適用于一些對功效要求高的設備,比如電池供電系統(tǒng)。輸出電壓取決于外部參考輸入電壓。DACOUT輸出介于REFIN與地之間的任意值,其內部框圖如圖2所示。
內部雙緩沖串行數據接口提供高速轉換,微控制器通過三線SPI控制器件、串行數據(SDI)、時鐘(CLK)和使能(LD)引腳。此外,使用CLR輸入可以對輸出清零。操作時序如圖3所示。
3 AD7390的串口控制
電腦通過RS 232向MCU發(fā)送控制信號,再由MCU控制AD7390,完成整個設置過程。通過串口控制AD7390的軟件流程如圖4所示。一旦有數據寫入單片機,則單片機將重新設置AD7390。
單片機程序分為三大模塊,分別是SPI控制模塊、串口接收模塊和操作信息反饋模塊。
SPI控制模塊產生CLK,LD,并在CLK的上升沿到來之前,保證SDI數據的穩(wěn)定,以便AD7390準確地采集到數據。CLK時鐘的頻率根據器件的典型延遲決定,不同器件有不同的延遲,所以它決定了不同器件的時鐘應該不一樣。
串口接收模塊完成從電腦接收數據并保存數據。由一片MAX 232完成RS 232電平與TTL電平之間的轉換。因為傳輸的是連續(xù)性數據,因此在接收程序的編寫時,要注意中斷申請的屏蔽,才能準確地接收到全部數據。
在利用串口調試助手調試時,留意發(fā)送數據的格式,是否以16進制發(fā)送,會影響接收到的數據。比如,發(fā)送字母“E”,如果以16進制發(fā)送。發(fā)送的實際數據是“15”,而接收到的數據是“15”的ASCII碼“49”、“53”;如果不以16進制發(fā)送,則發(fā)送的是字母“E”的ASCII碼“69’。由此可以看出它們之間的差別。因此在接收方要得到想要的數據,則需要進行轉換。該轉換可參看后面的程序。
操作信息反饋模塊完成操作結果的可視化輸出,通過內部計算,輸出設置的電壓值,這為調試過程提供了很大的便利。
AD7390為12位數/模轉換器。該器件接收16位數據,數據格式如圖5所示,取低12位作為有效數據,自動舍棄高4位。因為單片機傳輸數據以字節(jié)(8 b)為單位,所以采用16位傳輸模式。
4 結 語
通過串口的應用,SPI器件的控制變得很方便。由于串口占用資源少,所以SPI接口在集成芯片中越來越廣泛的應用,將使該控制模式成為以后系統(tǒng)中的典型設計。