• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于AVR單片機的SPI接口設計與實現

      2016-12-15 20:42:01楊啟帆趙臘才
      電腦知識與技術 2016年27期
      關鍵詞:嵌入式系統數據采集

      楊啟帆+趙臘才

      摘要:利用AVR單片機和SPI接口在硬件、軟件設計上的便利性,以ATmega128MCU與ADT7516、SI8902模數轉換芯片之間的硬件設計和通信過程為基礎,實現了電源監(jiān)控電路中的參數采集和智能控制功能。測試表明SPI接口通信正常,AVR單片機控制穩(wěn)定,滿足對電源輸出電路的實時監(jiān)視和控制要求。同時給出了ATmega128芯片SPI接口的配置過程,以及模數轉換芯片的配置過程、通信時序的實現方法。

      關鍵詞:串行外設接口;AVR單片機;模數轉換器;數據采集;嵌入式系統

      中圖分類號:TP391 文獻標識碼:A 文章編號:1009-3044(2016)27-0238-03

      1 引言

      SPI(Serial Peripheral Interface,串行外設接口)是由Motorola公司設計的一種串行接口,具有電路簡單、通信可靠、控制容易、通信速率快等優(yōu)點,在嵌入式系統中應用廣泛,單片機生產商包括Atmel、TI、MICROCHIP、FREESCALE等公司均提供具有SPI接口的單片機(MCU),允許MCU與各種外圍接口設備以串行方式通信;同時各接口供應商提供了豐富的SPI外圍接口產品,包括:LCD模塊,Flash/EEPROM存儲器,以及數模/模數轉換器等器件。

      下面以Atmel公司的ATmega128 MCU為例,利用其SPI接口對外圍溫控模數轉換器(ADC) ADT7516、隔離模數轉換器(ADC)SI8902進行參數配置和數據采集,實現對電源供電的管理,包括對各路電源電壓、電流的監(jiān)視,及各路電源的通斷控制功能。

      2 硬件電路設計

      2.1 ATmega128串行外設接口(SPI)

      ATmega128是Atmel公司推出的一款低功耗、高性能、多功能8位MCU,資源廣泛,功能強大;結合多種監(jiān)測電路,極大增強了嵌入式系統的可靠性;ATmega128提供了一個串行外設接口(SPI),它包括兩條數據線:主機輸出從機輸入(MOSI),主機輸入從機輸出(MISO)和兩條控制線:串行時鐘線(SCK),片選控制線(SS)。

      在電源供電管理電路中,ATmega128作為SPI接口的主控制設備,兩種ADC芯片完全受ATmega128芯片的控制。

      2.2 電路設計

      電源供電管理電路實現直流電流12V、3.3V電壓和電流等共16路參數檢測,以及隔離28V電源電壓和電流參數監(jiān)測,設計中共采用了4片ADT7516、2片SI8902實現參數的模數轉換。電路中,TPS24720(8片)和TPS2490配合ATmega128輸出的控制信號用于對相應電源通路的通斷控制,FM25H20用于存儲電路的狀態(tài)信息。

      ATmeg128在任意時刻僅能與一個從設備進行通信,對于多個SPI從設備,采用三八譯碼器74LVC138實現多個從設備的片選使能,電源供電管理電路原理如圖1示。

      通過配置ATmega128三個GPIO管腳(PE4,PE5,PE6),作為74LVC138的A0、A1和A2輸入端,三八譯碼器的輸出連接于各個從設備的SS端,ATmega128 SPI接口的SS線連接于74LVC138的EN管腳用于使能該器件,對應關系如表1所示

      3軟件實現

      軟件設計包括ATmega128及從設備的初始化,以及參數采集和數據處理。

      在ATmega128完成了初始化配置后,通過控制SPI接口向ADC發(fā)送控制字,完成相應ADC的初始化配置,從而控制ADC對模擬信號進行轉換,轉換結束后,將轉換結果通過SPI接口回讀到MCU。MCU對不同路電壓、電流值按照預設的范圍進行判斷,并給出電源通路的通斷控制命令。

      3.1 ATmega128 SPI接口配置

      ATmega128中與SPI接口有關的寄存器有控制寄存器(SPCR)、狀態(tài)寄存器(SPSR)和數據寄存器(SPDR),這三個寄存器都為8位寄存器,通過對各寄存相應比特位的配置,可以實現對SPI接口的控制。軟件設計中采用查詢標志位的方式完成SPI通信的編程,使用的軟件為AVR Studio4.18,編譯環(huán)境為WinAVR 20100110,ATmega128初始化如下所示。

      //MOSI、SCK、SS對應管腳初始化為輸出,默認的MISO為輸入

      DDRB |= (1<

      //SS初始化位高電平

      PORTB |=(1<

      //SPI使能,主控方式,Mode 3工作方式,其他配置為默認

      SPCR |= (1<

      ATmega128初始化SPI接口時應該注意以下幾點:

      a. 正確配置ATmega128 SPI接口的工作模式,由ADT7516和SI8902的芯片手冊可知,兩種芯片都可以工作于Mode 3模式,FM25H20同樣適用;

      b. 當使能了SPI接口后,ATmega128并沒有自動強制轉換SPI接口的四個引腳的工作方式,因此應該將MISO配置成輸入管腳,MOSI、SCK和SS配置成為輸出管腳;

      c. 當ATmega128工作于主控模式下,SS管腳并不受SPI硬件電路或寄存器的配置控制,因此使用時應該根據各被控芯片的SPI協議編程控制SS。

      3.2 ADT7516數據通信

      ADT7516是 Analog Devices公司推出的一款多功能轉換器件,包括四通道10位ADC, 10位溫度數字轉換器,以及一個四通道的12位DAC;該芯片兼容SPI、I2C、QSPI、MICROWIRE接口,采用該芯片對電源管理模塊上3.3V和12V電壓、電流進行采集。

      ADT7516工作模式默認下為I2C接口,初始化時需要先將通信接口轉為SPI;其次,該芯片為了區(qū)分讀寫操作,在地址、指令和數據通信之前,必須由主控器件發(fā)送寫命令碼(0X90)或讀命令碼(0X91),同時在SS使能的周期內,只允許存在讀、寫命令碼中的一種。

      設計中ADT7516初始化為Single-channel模式,采用Vdd為參考電壓,因此模數轉換精度為Vdd/1024(3.3/1024≈0.003),滿足0.01的采樣精度要求。對連續(xù)的16次采樣結果平均后作為有效采樣值。ATmega128和ADT7516之間的讀寫時序如圖2所示;通過讀指令,ADT7516向ATmega128傳輸的Data1和Data2進行相應比特的組合得到10位轉換結果。

      其中,SS線的連續(xù)高低變換的目的是將默認的I2C接口轉換為所需的SPI接口;Tc為模數轉換時間,ADT7516需要滿足Tc>=11.4ms的要求;當ATmega128發(fā)送讀指令后,ADT7516需要ATmega128提供的時鐘才能將轉換結果發(fā)送給ATmega128,因此讀指令后面數據0X00的發(fā)送只是為了提供SPI總線時鐘,從設備ADT7516初始化以及讀寫操作如下所示:

      //Write Command+Address+Command

      PORTB&=~(1<

      Master_Send(0x90); //Write Command

      Master_Send(0xXX);

      Master_Send(0xXX);

      PORTB|=(1<

      //Write Command+Address

      PORTB&=~(1<

      Master_Send(0x90);

      Master_Send(0xXX);

      PORTB|=(1<

      //Read Command+Read Value

      PORTB&=~(1<

      Master_Send(0x91);//Read Command

      ainX_l = Master_Receive(0x00);

      PORTB|=(1<

      實驗過程中采用電子負載設備模擬實際系統中電壓、電流,測試結果如表2所示,其中對12V、3.3V電壓的監(jiān)控是通過監(jiān)控電阻分壓值完成的;電流監(jiān)控是對TPS24720輸出的電壓進行測量后轉換為對應的電流值。

      3.3 SI8902數據通信

      SI8902是SILICON LABS公司推出的一款三通道10位隔離監(jiān)控ADC,內置SPI接口,具有2.5KV或者5KV的隔離率,包含POR和UVLO功能。

      SI8902模數轉換的開始以及模式的配置都是通過SPI接口向SI8902的配置寄存器發(fā)送配置數據,在等待一定的轉換時間后,ATmega128讀取轉換后的數據;SI8902有兩種工作模式,分別為Demand Mode和Burst Mode,本文采用Demand Mode模式;采用Vdd為參考電壓,因此模數轉換精度為Vdd/1024(3.3/1024≈0.003),滿足0.01的采樣精度要求。需要明確的是,SI8902在發(fā)送轉換結果之前會將ATmega128發(fā)送的配置數據傳送到SPI總線上,因此ATmega128和SI8902之間的讀寫時序如3圖所示;MISO線上的Data1和Data2在進入ATmega128后進行相應比特的組合得到10位轉換結果。

      其中,Tc為模數轉換時間,ADT7516需要滿足Tc>=8us的要求;MOSI線上發(fā)送的三字節(jié)0XFF數據是為了提供時鐘給MISO線,從而保證ATmega128讀取轉換結果,0XFF的選取需要排除SI8902已存在配置數據。需要特別注意的地方是,由于SI8902的MISO管腳不是Open-drain輸出,因此需要對該管腳進行三態(tài)輸出緩存(如圖1上使用的TI公司的SN74LVC1G125DBV),從而消除該芯片對SPI總線的無效占用,保證主控芯片可以和任何被控芯片進行通信。因此SI8902初始化以及讀寫操作如下所示:

      PORTB&=~(1<

      Master_Send(0xXX);//CNFG_0 Command Byte

      CNFG=Master_Receive(0xFF);

      AINX_h= Master_Receive(0xFF);//ADC_H Byte

      AINX_l = Master_Receive(0xFF);//ADC_L Byte

      PORTB|=(1<

      實驗過程中采用電子負載設備模擬實際系統中電壓、電流,測試結果如表3所示,其中對交流電路中28V電壓的監(jiān)控是通過監(jiān)控電阻分壓值完成的;電流監(jiān)控是對TPS2492輸出的電壓進行測量后轉換為對應的電流值。

      4數據處理

      ATmega128分時使能各個ADT7516和SI8902芯片,并將其中一路電源通路的10Bits電壓、電流轉換結果進行邏輯運算控制通斷狀態(tài)。為了滿足控制的實時性,采樣出的一組轉換結果立馬和設定好的上下門限進行比較,輸出通斷控制信號ON/OFF,此后再使能剩余的模數轉換器。當轉換結果介于上下門限之間,說明該電源通路的電壓、電流滿足系統需求,因此通斷控制信號ON/OFF使能TPS24720或TPS2492完成對該通路的輸出,否則控制信號ON/OFF禁止TPS24720或TPS2492輸出相應電源通路。根據系統的需求,各電壓、電流的上下門限如表4、表5所示;同時TPS24720、TPS2492自身也有過流和過壓保護,兩種方式結合增強了對該通路的監(jiān)控和系統的保護。最后再將各通路的電壓、電流采樣值和各通路的通斷情況通過UART接口發(fā)送到PC機進行顯示,并存儲到NVRAM中供后續(xù)查詢操作。

      5結束語

      本文主要討論了ATmega128與ADT7516、SI8902的SPI通信過程,通過AVR Studio4.18和WinAVR軟件的配合使用,研究了兩種模數轉換芯片驅動程序的設計過程和注意點。該系統轉換結果準確,轉換時間快速,可以滿足系統的要求。通過對各個通路電壓、電流的監(jiān)測可以有效地監(jiān)控電源管理模塊的工作狀態(tài),有效的保護電源管理模塊對系統內部其他模塊的供電需求。

      參考文獻:

      [1] Atmel corporation. ATmega128(L) Complete Datasheet [OL]. http://www.atmel.com.

      [2] Analog Devices,Inc. ADT7516 Datasheet [OL]. http://www.analog.com.

      [3] Silicon Laboratories.SI8902 Datasheet [OL]. http://www.silabs.com .

      [4] 張桂香,姚存治.基于ATmega128單片機的智能供電測控系統設計[J].電力自動化設備,2009,29(8): 136-139.

      [5] 馬潮.AVR單片機嵌入式系統原理與應用實踐[M].北京:北京航空航天大學出版社,2012.424-445.

      [6] 王耿,王金明.SPI接口控制器設計與實現[J].電子質量,2010(1):4-5.

      [7] 王宗剛,潘崢嶸.基于AVR單片機的SPI接口的實現[J].自動化與儀器儀表,2011(2):114-115.

      [8] 王耿,王金明.SPI接口控制器設計與實現[J].電子質量,2010(1):4-5.

      猜你喜歡
      嵌入式系統數據采集
      辦公自動化系統的設計
      嵌入式系統在醫(yī)療器械中的應用分析
      基于物聯網項目驅動的嵌入式系統教學改革的研究與實踐
      嵌入式系統課程“中斷、異常與事件”教學實踐及啟示
      計算機教育(2016年7期)2016-11-10 08:31:34
      面向實踐創(chuàng)新人才培養(yǎng)的嵌入式系統教學研究
      計算機教育(2016年7期)2016-11-10 08:12:11
      CS5463在植栽用電子鎮(zhèn)流器老化監(jiān)控系統中的應用
      大數據時代高校數據管理的思考
      科技視界(2016年18期)2016-11-03 22:51:40
      鐵路客流時空分布研究綜述
      基于廣播模式的數據實時采集與處理系統
      軟件工程(2016年8期)2016-10-25 15:54:18
      通用Web表單數據采集系統的設計與實現
      軟件工程(2016年8期)2016-10-25 15:52:53
      颍上县| 敦化市| 英吉沙县| 霍州市| 保康县| 兖州市| 名山县| 邵阳县| 安阳县| 武城县| 曲松县| 浪卡子县| 开平市| 南昌市| 大庆市| 南川市| 当阳市| 大连市| 浑源县| 航空| 武宣县| 双桥区| 双峰县| 凤阳县| 桐梓县| 麻城市| 香港 | 房产| 东宁县| 嘉峪关市| 裕民县| 那坡县| 永吉县| 汕尾市| 洞头县| 云龙县| 潜山县| 田东县| 茂名市| 娱乐| 城固县|