www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 嵌入式 > 嵌入式硬件
[導讀]摘要:詳細分析在μC/OS-II實時內核下驅動程序讀取A/D的三種方法;闡述 C8051F015單片機的A/D轉換器的配置、轉換特點及其驅動程序讀取A/D采用的方法;針對C8051F015單片機

摘要:詳細分析在μC/OS-II實時內核驅動程序讀取A/D的三種方法;闡述 C8051F015單片機的A/D轉換器的配置、轉換特點及其驅動程序讀取A/D采用的方法;針對C8051F015單片機分析A/D驅動程序設計的方法和思想。這些方法和思想為在μC/OS-II下訪問其它類型的A/D提供了很好的借鑒。 關鍵詞:μC/OS-II A/D 驅動程序 C8051F015 A/D轉換是單片機數(shù)據(jù)采集系統(tǒng)的重要組成部分,實時內核下A/D驅動程序的實現(xiàn)過程主取決于A/D轉換器的轉換時間。本文首先比較和分析μC/OS-II下A/D采樣數(shù)據(jù)的三種方法;其次介紹C8051F015單片機A/D模數(shù)轉換器配置及特點;最后,在μC/OS-II內核移植到8位單片機C8051F015的基礎上,介紹編寫 A/D驅動程序的一般思想和方法。 1 μC/OS-II實時內核下的A/D讀方法 實時內核下,驅動程序采用什么方法讀取A/D采樣數(shù)據(jù)是首先考慮的問題。許多因素將影響讀取A/D,如A/D的轉換時間、模擬值的轉換頻率、輸入通道數(shù)等,但最主要的取決于A/D的轉換時間。典型的A/D轉換典型的A/D轉換電路由模擬多路復用器(MUX)、放大器和模數(shù)轉換器(ADC)三部分組成。下面描述讀取A/D的三種方法。

圖1所示的是第1種讀取方法。假設A/D轉換器的轉換時間較慢(5ms以上)。應用程序調用圖1所示的驅動程序,并傳遞要讀取的通道。驅動程序通過MUX選擇要讀取的模擬通道(①)開始讀。有,延時幾μs以便使信號通過MUX傳遞,并之穩(wěn)定下來。接著,ADC被觸發(fā)開始轉換(②)。然后驅動程序延時一段時間以完成轉換(③_。延時時間必須比ADC轉換時間長。最后驅動程序讀取ADC轉換結果(④)。并將轉換結果返回到應用程序(⑤)。 圖2所示的是第2種讀取方法。當模擬轉換完成后,ADC產生的個中斷信號。若ADC轉換完成,ISR給信號量發(fā)一個信號(⑤),通知驅動程序,ADC已經完成轉換。如果ADC在規(guī)定的時限內沒有完成轉換。信號量超過(③),則驅動程序不再等待下去。驅動程序和中斷服務子程序(ISR)的偽代碼如下: ADRd(ChannelNumber) { 選擇要讀取的模擬輸入通道; 等待AMUX輸出穩(wěn)定; 啟動ADC轉換; 等待來自ADC轉換結束中斷產生的信號量; if(超時){ *eer=信號錯誤; return; }else{ 讀取ADC轉換結果并將其返回到應用程序; } }

ADCoversion Complete ISR { 保存全部CPU寄存器; /*將CPU的PSW、ACC、B、DPL、DPH及Rn入棧*/ 通知內核進入ISR(調用OSIntEnter()或OSIntNesting直接加1); 發(fā)送ADC轉換完成信號; /*利用μC/OS-II內核的OSSemPost()*/ 通知內核退出ISR(調用OSIntExit()); 恢復所有CPU寄存器;/*將CPU的PSW、ACC、B、DPL、DPH及Rn出棧*/ 執(zhí)行中斷返回指令(即RETI); } 在這種方法里,要求ISR執(zhí)行時間與調用等待信號的時間之和為A/D轉換時間。 如果A/D轉換時間小于處理中斷時間與等待信號所需的時間之和,則可以用第三種方法。如圖3所示,前兩步(①②同以上兩種方法)結束后,驅動程序接著在一個軟件循環(huán)中等待(③)ADC直到完成轉換。在循環(huán)等待時,驅動程序檢測ADC的狀態(tài)(BUSY)信號。如果等待時間超過設定的定時值(軟件定時),則結束等待循環(huán)(循環(huán)等超時)。如果在循環(huán)等待中,檢測到ADC發(fā)出轉換結束的信號(BUSY)時,驅動程序讀取ADC轉換結果(④)并將結果返回到應用程序(⑤)。驅動程序偽代碼如下: ADRd(ChannelNumber){ 選擇要讀取的模擬輸入通道; 等待AMUX輸出穩(wěn)定; 啟動ADC轉換; 啟動超時定時器; while(ADC Busy %26;amp; Counter 0);/*循環(huán)檢測*/ if(Counter==0){ *err=信號錯誤; return; }else{ 讀取ADC轉換結果并將其返回到應用程序; } } A、D轉換速度快,這種驅動程序的實現(xiàn)是最好的。

2 C8051F015單片機的A/D轉換器 2.1 C8051C015單片機 C8051C015的美國Cygnal公司新推出的高速SOC型C8051Fxxx系列單片機。它的內核CIP-51與MCS-51的指令集完全兼容,CIP-51的系統(tǒng)時鐘頻率在0~25MHz。C8051Fxxx系列單片機采用流水線結構,與標準的8051相比,指令執(zhí)行速度有很大的提高。 CIP-51內核的指令執(zhí)行時間是以系統(tǒng)時鐘為單位,70%的指令執(zhí)行時間為1個或2個系統(tǒng)時鐘周期。C8051F015具有32KB的內存、2304B 的RAM(片內256B、片外2048B)。CIP-51內核具有標準8052的所有外設部件,片上還集成有9通道10位A/D轉換接口電路、SMBus /I2C、SPI串行接口。 2.2 C8051F015的A/D轉換電路 C8051F015的A/D轉換電路包括1個9通道可配置模擬多路開關AMUX(8路用于外部模擬輸入、1路用于芯片環(huán)境溫度的測量)、1個可編程增益放大器PGA和1個100ksps 10位分辨率的逐次逼近型ADC。A/D中還集成了跟蹤保持電路和可編程窗口檢測器。 ADC有4種啟動方式:軟件命令、定時器2溢出、定時器3溢出及外部信號輸入。寄存器ADC0CN是配置啟動和跟蹤方式的控制寄存器。每次轉換結束時,ADC0CH的ADBUSY(忙標志)的下降沿觸發(fā)中斷,也可用軟件查詢這個狀態(tài)位。 2.3 ADC轉換速度 C8051Fxxx系列單片機中ADC的速率都是可編程設置的。表1給出了所需最小分頻系數(shù)與SYSCLK(系統(tǒng)時鐘)的關系(ADC0CF為ADC配置寄存器)。 表1 ADC時鐘分頻系數(shù)與SYSCLK頻率的關系 SYSCLK頻率/MHz ADC時鐘分頻系數(shù) ADC0CF的ADCSC2~1 時鐘頻率<2.5 1 000 2.5~5 2 001 5~10 4 010 10~20 8(復位值) 011 時鐘頻率>20 16 1xx 在C8051F015單片機中,ADC的轉換時鐘周期至少在400ns,轉換時鐘應不大于2MHz。一般在啟動ADC之前都要處于跟蹤方式,而ADC一次轉換完成要用16個系統(tǒng)時鐘。另外,在轉換之前還要加上3個系統(tǒng)時鐘的跟蹤/保持捕獲時間,所以完成一次轉換需19個ADC轉換時鐘(9.5μs)。 圖1中的方法簡單,轉換時間在ms級以上,一般用于變化慢的模擬輸入信號,不適用于C8051F015。圖2中的方法,為了減少μC/OS-II內核調用 ISR所用時間,ISR一般都用于匯編語言編寫。從程序1中ISR偽代碼可以看出,盡管ISR用匯編語言編寫。代碼效率高,但μC/OS-II調用ISR 的時間與調用等待信號時間之和大于A/D的轉換時間,所以CPU用于ISR和循環(huán)檢測的開銷大。 圖3所示的方法顯然適合于C8051F015單片機,其優(yōu)點是:可以獲得快速的轉換時間;不需要增加一個復雜的ISR;轉換時信號改變時間更短;CPU的開銷小;循環(huán)檢測程序可被中斷,為中斷信號服務。 圖4 A/D驅動程序模塊流程圖 3 A/D驅動程序的編寫 外設驅動程序是實時內核和硬件之間的接口,是連接底層硬件和內核的紐帶。編寫驅動程序模塊應滿足以下主要功能:①對設備初始化;②把數(shù)據(jù)從內核傳送到硬件從硬件讀取數(shù)據(jù);③讀取應用程序傳送給設備的數(shù)據(jù)和回送應用程序請求的數(shù)據(jù);④監(jiān)測和處理設備出現(xiàn)的異常。 A/D轉換電路作為一個模擬輸入模塊,μC/OS-II內核應把它作為一個獨立的任務(以下稱為ADTask())來調用。A/D驅動程序模塊流程如圖4 所示。ADInit()初始化所有的模擬輸入通道、硬件ADC以及應用程序調用A/D模塊的參量,并且ADInit()創(chuàng)建任務ADTask()。ADTb1[]是一個模擬輸入通道信息、ADC硬件狀態(tài)等參數(shù)配置以及轉換結果存儲表。ADUpdate()負責讀取所有模擬輸入通道,訪問ADRd()并傳遞給它一個通道數(shù)。ADRd()負責通過多路復用器選擇合適的模擬輸入,啟動并等待ADC轉換,以及返回ADC轉換結果到ADUpdate()。 在μC/OS-II這時內核下各原型函數(shù)、數(shù)據(jù)結構和常量的定義如下: INT16S ADRd(INT8U ch); /*定義如何讀取A/D,A/D必須通過AIRd()來驅動*/ void ADUpdate(void); /*一定時間內更新輸入通道*/ void ADInit(void); /*A/D模塊初始化代碼,包括初始化所有內部變量(通過ADInit()初始化ADTb[]),初始化硬件A/D(通過ADInitI())及創(chuàng)建任務ADTask()*/ void ADTask (void data); /*由ADInit()創(chuàng)建,負責更新輸入通道(調用ADUpdate ())*/ void ADInitI (void); /*初始化硬件A/D*/ AD_TaskPrio:設置任務ADTask()的優(yōu)先級。 AD_TaskStkSize:設置分配給任務ADTask()的堆棧大小。 AD_MaxNummber:AMUX的輸入通道數(shù)。 AD_TaskDly:設定更新通道的間隔時間。 AD ADTbl[AD_MaxNummber]:AD類型的數(shù)組(AD是定義的數(shù)據(jù)結構)。 4 結論 對于A/D轉換器接口電路驅動程序的編寫歸納出以下幾點: ①在決定采用具體的驅動方案之前,分析接口電路的特點,尤其是了解A/D的轉換速度; ②對于轉換速度快的A/D轉換器,可能出現(xiàn)CPU的處理速度與A/D轉換速度不匹配,一般的A/D中不帶有FIFO緩沖區(qū),須有內存中開辟緩沖區(qū); ③在應用程序讀取設備之前,一定要初始化硬件(調用初始化函數(shù)),合理定義硬件的信息和狀態(tài)變量; ④不同的輸入通道采集到不同類型數(shù)據(jù),環(huán)境、轉換精度都會影響到轉換結果,要對各個模擬輸入通道進行校準和補償(通常在應用程序中編寫通道補償函數(shù))。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: 驅動電源

在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設備,其驅動電源的性能直接關系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅動電源設計中至關重要的兩個環(huán)節(jié),集成化方案的設計成為提升電機驅動性能的關鍵。

關鍵字: 工業(yè)電機 驅動電源

LED 驅動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設備的使用壽命。然而,在實際應用中,LED 驅動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設計、生...

關鍵字: 驅動電源 照明系統(tǒng) 散熱

根據(jù)LED驅動電源的公式,電感內電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關鍵字: LED 設計 驅動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產業(yè)的重要發(fā)展方向。電動汽車的核心技術之一是電機驅動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅動系統(tǒng)中的關鍵元件,其性能直接影響到電動汽車的動力性能和...

關鍵字: 電動汽車 新能源 驅動電源

在現(xiàn)代城市建設中,街道及停車場照明作為基礎設施的重要組成部分,其質量和效率直接關系到城市的公共安全、居民生活質量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關鍵字: 發(fā)光二極管 驅動電源 LED

LED通用照明設計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關鍵字: LED 驅動電源 功率因數(shù)校正

在LED照明技術日益普及的今天,LED驅動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關鍵字: LED照明技術 電磁干擾 驅動電源

開關電源具有效率高的特性,而且開關電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅動電源

關鍵字: LED 驅動電源 開關電源

LED驅動電源是把電源供應轉換為特定的電壓電流以驅動LED發(fā)光的電壓轉換器,通常情況下:LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: LED 隧道燈 驅動電源
關閉