• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > 基于MAX194在ARM單片機系統中的設計

    基于MAX194在ARM單片機系統中的設計

    作者: 時間:2010-12-10 來源:網絡 收藏


    2 LPC2104芯片簡介
    LPC2104 包含一個支持仿真的7TDMI-S CPU、與片內存儲器控制器進行接口的7局部總線、與中斷控制器接口的AMBA高性能總線(AHB)以及用于連接片內外設的VLSI外設總線VPB與7 高級外設總線相兼容的超集。主要特點有:128 K 片內Flash 程序存儲器帶ISP 和IAP 功能;Flash 編程時間1 ms;可編程512字節;扇區擦除和整片擦除只需400 ms;16 K 靜態RAM;向量中斷控制器;仿真跟蹤模塊支持實時跟蹤;標準ARM 測試/調試接口兼容現有工具;雙UART的其中一個帶有完全的調制解調器接口;高速I2C 串行接口400 kB/s;SPI 串行接口;兩個定時器分別具有4 路捕獲/比較通道;多達6 路輸出的PWM 單元;實時時鐘;看門狗定時器;通用I/O 口;CPU 操作頻率可達60 MHz。
    3 與LPC2104接口
    3.1 硬件接口
    和LPC2104都帶有標準的SPI接口,可以非常方便地實現它們的硬件和軟件接口。其硬件接口如圖2所示。SPI 是一個全雙工的串行接口,它被成用于處理在一個給定總線上多個互連的主機和從機。在一定數據傳輸過程中,接口上只能有一個主機和一個從機通信。在一次數據傳輸中,主機總是向從機發送一個字節數據,而從機也總是向主機發送一個字節數據。
    在該中,LPC2104設置為主機,設置為從機主機操作。
    3.1 軟件實現
    軟件的流程圖如圖4所示。主要分為三大部分。


    1、SPI配置部分:首先,配置LPC2104的SPI引腳模塊;隨后,設置SPI_SPCCR和SPI_SPCR,并將LPC2104的SPI模塊設置為主模式,MSB(最高位)先傳輸,禁止SPI中斷,SPI接口速率為1 MHz,CPOL=0、CPHA=0在SCLK下降沿觸發。
    2、MAX194轉換部分:通過向MAX194的CONV引腳發低脈沖啟動A/D轉換,轉換開始后MAX194的EOC引腳變為高電平,可通過檢測EOC引腳是否變為低電平來判斷A/D轉換的完成。
    3、MAX194數據讀取部分:首先置低MAX194的CS片選引腳,將無效數據0XFF送至SPI_SPDR以啟動SPI總線,通過判SPIF位的置位來判斷SPI總線傳輸是否完成,讀取SPI_SPDR后,獲得A/D轉換結果的第一個字節(BIT13-BIT6)并調整數據;將無效數據0XFF再送至SPI_SPDR,然后再啟動SPI總線,仍通過判SPIF位的置位來判斷SPI總線傳輸的完成情況,讀取SPI_SPDR后,獲得A/D轉換結果的第二個字節(BIT13-BIT6)并調整數據,最后將MAX194 的14位A/D轉換數據存儲在16位無符號變量rcv_data中。
    #include “LPC2104.H”// 調用LPC2104寄存器頭文件
    #define MAX194_CS 0x00000100 // P0.8口為MAX194的片選和信號
    #define MAX194_EOC 0x00000100 // P0.9口為MAX194的轉換結束信號
    #define MAX194_UP 0x00000400 //P0.10口為MAX194的三態選擇信號
    #define MAX194_CONV 0x00000800 //P0.10口為MAX194的轉換啟動信號
    int main(void)
    { uint16 rcv_data; //存儲A/D 轉換后的14位數據的變量
    PINSEL0 = 0x00005500; //設置SPI管腳連接
    PINSEL1 = 0x00000000;
    IODIR = MAX194_CS|MAX194_UP|MAX194_CONV;// 設置P0.8,P0.10,P0.11為輸出
    ……
    MSpiIni( ); // 初始化SPI接口
    MSendData(0xFF,rcv_data); // 進行A/D轉換病讀取數據
    ……
    }



    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 永清县| 邵阳县| 塘沽区| 锦州市| 大荔县| 顺平县| 长岛县| 咸丰县| 永德县| 福安市| 怀宁县| 朝阳区| 偏关县| 特克斯县| 大足县| 珠海市| 宽甸| 六盘水市| 沁源县| 拉孜县| 宜丰县| 招远市| 叶城县| 嘉荫县| 安徽省| 台前县| 比如县| 香格里拉县| 印江| 廉江市| 青浦区| 博客| 磐安县| 嘉定区| 华阴市| 东平县| 永昌县| 秦安县| 交口县| 黄浦区| 吉安市|