日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 嵌入式 > 嵌入式教程
[導(dǎo)讀]嵌入式系統(tǒng)中實時時問的獲取

摘要:針對在嵌入式系統(tǒng)中,當(dāng)系統(tǒng)重啟或異常斷電的情況下,實時時間信息丟失的問題,本文提出了兩種獲取實時時間的方法:時鐘芯片方法和GPS方法。時鐘芯片方法中以DSl302為例,介紹了它在嵌入式系統(tǒng)中的軟硬件設(shè)計。GPS方法中使用GPS接收機接收衛(wèi)星信號,然后將符合NMEA—0183協(xié)議的格式化數(shù)據(jù)通過串口送往嵌入式系統(tǒng),再通過軟件提取數(shù)據(jù)中的時間信息。
關(guān)鍵字:嵌入式系統(tǒng);實時時間;時鐘芯片;DSl302;GPS


O 引言
    許多長時間無人值守的監(jiān)控系統(tǒng)中,數(shù)據(jù)到來的時刻是不可預(yù)知的,數(shù)據(jù)及其出現(xiàn)時的時間信息要一并記錄下來,以便后期的處理和查閱。在智能交通系統(tǒng)中,以交叉路口的闖紅燈自動抓拍系統(tǒng)為例,系統(tǒng)抓拍的闖紅燈車輛的圖片中就要包含抓拍的時間信息,以作為日后交警進行違規(guī)處罰的有力證據(jù)。以往的自動抓拍系統(tǒng)都是用工控機搭建的,在其工控主板上有時鐘芯片和板載電池,即使斷電也不會丟失實時時間信息。但是,作為硬件資源豐富的通用型工業(yè)控制計算機,在具體的控制系統(tǒng)中,往往會有許多硬件資源被閑置,使得成本偏高。隨著嵌入式技術(shù)的發(fā)展和逐步成熟,為了節(jié)約成本和提高系統(tǒng)的可靠性,大有用嵌入式取代通用型工控機的趨勢。這就提出了一個問題:在嵌入式系統(tǒng)中,實時時間從何獲得。
    本文將給出兩種在嵌入式系統(tǒng)中獲取實時時間的設(shè)計方法:使用時鐘芯片方法和使用GPS接收機方法。


1 使用時鐘芯片獲取實時時間
    在這種方案中,實時時鐘芯片以美國DALLAS公司推出的DSl302芯片為例,嵌入式平臺選用ATMEL的基于ARM920T內(nèi)核的AT9lRM9200微處理器配以Linux一2.6.13嵌入式操作系統(tǒng)。
1.1 時鐘芯片概述
    DIP封裝的DSl302共有8個引腳,Vccl和Vcc2分別是主電源引腳和備用電源引腳,當(dāng)Vcc2>Vccl+0.2V時,由備用電源向時鐘芯片供電。X1、X2是晶振連接引腳。GND接地。剩下的三個引腳用于與微控制器通信,它們是RST、SCLK、I/O。
    DSl302內(nèi)部有31字節(jié)的靜態(tài)RAM可用于記錄重要數(shù)據(jù)、共有12個寄存器其中有7個用于存儲時間和日期。更為詳細的資料,可以參考DSl302的芯片手冊。下面就DSl302讀寫操作中應(yīng)注意的幾點列舉如下:
    1、所有的數(shù)據(jù)傳送均是以發(fā)送8位的指令字節(jié)開始。指令字節(jié)的最高有效位(位7)必須是邏輯l,如果它為O,則不能把數(shù)據(jù)寫入到DSl302中。
    2、RST輸入引腳的兩種功能:(1)接通控制邏輯,允許地址/命令序列送入移位寄存器:(2)提供了終止單字節(jié)或多字節(jié)數(shù)據(jù)傳送的手段。當(dāng)RST為高電平時,所有的數(shù)據(jù)傳送使能,允許對DSl302進行操作。如果在傳送過程中RST被置為低電平,則會立即終止此次數(shù)據(jù)傳送,并且I/0引腳變?yōu)楦呓M態(tài)。
    3、當(dāng)把RST驅(qū)動至邏輯l時,SCLK必須為邏輯0。
1.2 硬件電路設(shè)計
    DSl302采用雙電源方式,系統(tǒng)正常工作時由板載電源統(tǒng)一供電,當(dāng)系統(tǒng)斷電或復(fù)位時由板載電池供電,以保證時鐘芯片始終處于運行狀態(tài)。
    微控制器AT9lRM9200的PBO、PBl0、PBll三個引腳用于與時鐘芯片進行同步串行通信,因為這三個引腳在AT9lRM9200內(nèi)部都是多功能復(fù)用的,所以在DSl302設(shè)備驅(qū)動程序的初始化代碼中首先要把它們配置成通用I/O口。關(guān)于晶體振蕩器,DS1302的芯片資料指出:32.768KHz的晶振可以直接連接到X1、X2引腳,同時外接晶振電路要有6PF的負載電容與內(nèi)部震蕩器配合運行。所以,在電路設(shè)計時X1、X2兩引腳分別連接一個15pF的電容至地。硬件連接,如圖1所示:

1.3 Linux 下OSl302驅(qū)動程序設(shè)計[!--empirenews.page--]
    Linux系統(tǒng)中有三種類型的設(shè)備:字符設(shè)備、塊設(shè)備和網(wǎng)絡(luò)設(shè)備。字符設(shè)備是指發(fā)送和接收數(shù)據(jù)以字符的形式進行,無需緩沖直接存取,在對字符設(shè)備發(fā)出讀寫請求后,實際的硬件I/0隨即發(fā)生;而塊設(shè)備則是對數(shù)據(jù)緩沖區(qū)進行讀寫并可以隨機訪問,操作是以塊為單位。而網(wǎng)絡(luò)設(shè)備與字符設(shè)備、塊設(shè)備有很大的不同,用于對網(wǎng)絡(luò)設(shè)備的控制和管理。DSl302顯然屬于字符設(shè)備。
    2.6版本的Linux內(nèi)核和2.4版本存在很大的不同,在模塊的開發(fā)和設(shè)計上也是如此。在這里使用的內(nèi)核版本是Linux一2.6.13。首先,驅(qū)動程序作為一個模塊可以動態(tài)加載進內(nèi)核也可以動態(tài)的從內(nèi)核中卸載掉,在加載和卸載的過程中實際伴隨的是驅(qū)動程序向內(nèi)核的注冊與注銷。在驅(qū)動程序的代碼中會有兩個函數(shù)分別在模塊加載和卸載過程中調(diào)用DSl302_init()、DSl302_exit(),在其中再調(diào)用register_chrdev()、unregister_chrdev()用以向內(nèi)核注冊和注銷一個設(shè)備驅(qū)動程序。在2.6內(nèi)核版本中,用如下方法聲明這兩個函數(shù)給內(nèi)核:
    Module_init(DS1302_init):
    Module_exit(DSl302_exit):
    在DSl302_init()函數(shù)中除調(diào)用字符設(shè)備的注冊函數(shù)外,還有一個重要任務(wù),就是配置需要用到的三條I/0口線:PBO、PBl0、PBll。配置過程包括:B端口控制器時鐘使能、通用I/O口使能、輸出使能、上拉電阻使能、三個口線上的同步數(shù)據(jù)輸出使能,另外通過置PIOB_CODR寄存器使三個引腳輸出低電平。代碼如下:


    其中va_sys是一個結(jié)構(gòu)體,包含了AT9lRM9200處理器內(nèi)的全部寄存器,通過一條語句:AT91PS_SYS va_sys=(AT91PS SYS)AT91C_VA_BASE_SYS,把所有寄存器的最低地址賦給va_sys,這樣結(jié)構(gòu)體中的寄存器名稱就和實際的地址對應(yīng)起來了。注意:這里用到的地址都是經(jīng)過映射過的虛擬地址,在實際運行中會通過處理器內(nèi)部的MMU單元轉(zhuǎn)換為實際的物理地址發(fā)往地址總線。上述代碼中的AT91C_PI0_PBO等等是一些常數(shù)的宏定義用于寄存器賦值,比如:#define AT9lC_PIO_PBO(1<<0),它們定義在AT91RM9200.h頭文件中。
    在驅(qū)動程序中,file_operations是一個重要的結(jié)構(gòu)體,通過它把針對設(shè)備的具體操作注冊給內(nèi)核的統(tǒng)一接口。結(jié)構(gòu)體中全是函數(shù)指針,DSl302驅(qū)動程序中用到的函數(shù)有:open、release、ioctl,用于設(shè)備的打開與釋放、設(shè)備的讀寫以及設(shè)備的控制。對DSl302的讀寫都是在dsl302_ioctl()中調(diào)用相應(yīng)的讀寫函數(shù)實現(xiàn)的。
    下面具體分析一下驅(qū)動程序中向DSl302發(fā)送單個字


    代碼中用到的at91_set_gpi0_value()函數(shù)定義在內(nèi)核的Gpio.c文件中,最終是對10控制器的PIO_SODR(置位輸出數(shù)據(jù)寄存器)或PIO_CODR(清零輸出數(shù)據(jù)寄存器)賦值以使相應(yīng)引腳輸出需要的電平。
    經(jīng)過測試,短時間內(nèi)誤差不明顯,但時鐘芯片存在積累誤差并且易受環(huán)境影響,連續(xù)幾天運行下來,誤差有數(shù)秒之多。所以,嵌入式系統(tǒng)需要通過某種方法定期使用標(biāo)準時間向時鐘芯片對時,以消除誤差。下面要介紹的GPS接收機方案就可以做到這點。

[!--empirenews.page--]
2 從GPS接收機獲取實時時間
    GPS是美國開發(fā)研制的最初主要作為軍用的一種全球定位系統(tǒng),有三個部分組成:空間部分、地面監(jiān)控部分和用戶部分。一般來說,在地面上的GPS接收機能接收5~12個衛(wèi)星信號,而為了獲得地面上的定位坐標(biāo),至少需要4顆衛(wèi)星的信號,三個用來確定GPS接收機的緯度、經(jīng)度和海拔高度,第四個則提供同步校正時間。
    GPS接收機只要處于工作狀態(tài)就會源源不斷地把計算出的GPS導(dǎo)航定位信息通過串口傳送到計算機中。GPS接收機送出的數(shù)據(jù)都是格式化的,NMEA一0183協(xié)議是GPS接收機應(yīng)當(dāng)遵循的標(biāo)準協(xié)議,大多數(shù)常見的GPS接收機、GPS數(shù)據(jù)處理軟件、導(dǎo)航軟件都遵守或者至少兼容這個協(xié)議。下面介紹下如何從符合NMEA—0183協(xié)議的接收機接收數(shù)據(jù)中提取時間信息。
    接收機通過串口發(fā)送到計算機的數(shù)據(jù)主要由幀頭、幀尾和幀內(nèi)數(shù)據(jù)組成,根據(jù)數(shù)據(jù)幀的不同,幀頭也不相同,主要有“$GPGGA”、“$GPGSA”、“$GPGSV”以及“$GPRMC”等。這些幀頭標(biāo)識了后續(xù)幀內(nèi)數(shù)據(jù)的組成結(jié)構(gòu),各幀均以回車符和換行符作為幀尾標(biāo)識一幀的結(jié)束。對于通常的情況,我們所關(guān)心的定位數(shù)據(jù)如經(jīng)緯度、速度、時間等均可以從“$GPRMC”幀中獲取得到,該幀的結(jié)構(gòu)及各字段釋義如下:
    $GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>*hh<CR><LF>
    <1>當(dāng)前位置的格林尼治時間,格式為hhmmss
    <2>狀態(tài),A為有效,V為接收警告,即當(dāng)前天線視野上方的衛(wèi)星個數(shù)少于3顆。
    <3>緯度,格式為ddmm.mmmm
    <4>標(biāo)明南北半球,N為北半球、S為南半球
    <5>徑度,格式為dddmm.mmmm
    <6>標(biāo)明東西半球,E為東半球、W為西半球
    <7>地面上的速度,范圍為0.ON999.9
    <8>方位角,范圍為000.O到359.9度
    <9>日期,格式為ddmmyy
    <lO>地磁變化,從000.0到180.O度
    <ll>地磁變化方向,為E或W
    在Linux操作系統(tǒng)中,從$GPRMC數(shù)據(jù)幀中提取時間信息的代碼如下:


    程序首先打開串口,然后對串口參數(shù)進行配置,隨后進入無限循環(huán)主體。這段代碼是作為主進程的一個線程實現(xiàn)串口數(shù)據(jù)的接收,當(dāng)串口接收緩沖區(qū)中無數(shù)據(jù)時,read函數(shù)阻塞。程序中只提取了時間信息,若需導(dǎo)航數(shù)據(jù)可以類似方法提取。


3 結(jié)束語
    本文分別介紹了兩種嵌入式系統(tǒng)中獲取實時時間的方法:時鐘芯片方法和GPS接收機方法。時鐘芯片方法的優(yōu)點是硬件連接簡單、成本低;缺點是存在積累誤差、易受環(huán)境影響、可靠性差。GPS接收機的優(yōu)點:由于GPS衛(wèi)星使用的是可以精確到十億分之一秒的原子鐘,所以不存在時間誤差問題。同時也應(yīng)該看到,目前GPS核心技術(shù)在國外,國內(nèi)GPS市場主要還是做代理或是在購買國外GPS模塊的基礎(chǔ)上做產(chǎn)品開發(fā),這就使得開發(fā)成本偏高。GPS方法中還有一個問題就是在某些情況下接收不到GPS信號,如在高樓林立的環(huán)境下或是在地下室之類的地方。此時就應(yīng)該讓GPS接收機方法與處理器內(nèi)部的實時時鐘(RTC)配合工作,這樣在短時接收不到GPS信號的情況,仍可以從RTC讀取時間。

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

成都2022年10月19日 /美通社/ -- 近期,平安養(yǎng)老險積極籌備個人養(yǎng)老金的產(chǎn)品設(shè)計和系統(tǒng)開發(fā)工作,發(fā)展多樣化的養(yǎng)老金融產(chǎn)品,推動商業(yè)養(yǎng)老保險、個人養(yǎng)老金、專屬商業(yè)養(yǎng)老保險等產(chǎn)品供給。 搭養(yǎng)老政策東風(fēng) ...

關(guān)鍵字: 溫度 BSP 東風(fēng) 大眾

廣東佛山2022年10月19日 /美通社/ -- 空間是人居生活的基礎(chǔ)單元,承載著生存與活動的最基本功能。而對于理想空間的解構(gòu)意義卻在物理性容器之外,體現(xiàn)出人們對于空間和生活深層關(guān)系的思考,同時也塑造著人與空間的新型連接...

關(guān)鍵字: 溫度 BSP 智能化 進程

上海2022年10月19日 /美通社/ -- 10月17日晚間,安集科技披露業(yè)績預(yù)告。今年前三季度,公司預(yù)計實現(xiàn)營業(yè)收入7.54億元至8.33億元,同比增長60.24%至77.03%;歸母凈利潤預(yù)計為1.73億...

關(guān)鍵字: 電子 安集科技 BSP EPS

北京2022年10月19日 /美通社/ -- 10月18日,北京市經(jīng)濟和信息化局發(fā)布2022年度第一批北京市市級企業(yè)技術(shù)中心創(chuàng)建名單的通知,諾誠健華正式獲得"北京市企業(yè)技術(shù)中心"認定。 北京市企業(yè)技...

關(guān)鍵字: BSP ARMA COM 代碼

北京2022年10月18日 /美通社/ -- 10月14日,國際數(shù)據(jù)公司(IDC)發(fā)布《2022Q2中國軟件定義存儲及超融合市場研究報告》,報告顯示:2022年上半年浪潮超融合銷售額同比增長59.4%,近5倍于...

關(guān)鍵字: IDC BSP 數(shù)字化 數(shù)據(jù)中心

上海2022年10月18日 /美通社/ -- 2022年9月5日,是首都銀行集團成立60周年的紀念日。趁著首都銀行集團成立60周年與首都銀行(中國)在華深耕經(jīng)營12年的“大日子”,圍繞作為外資金融機構(gòu)對在華戰(zhàn)略的構(gòu)想和業(yè)...

關(guān)鍵字: 數(shù)字化 BSP 供應(yīng)鏈 控制

東京2022年10月18日  /美通社/ -- NIPPON EXPRESS HOLDINGS株式會社(NIPPON EXPRESS HOLDINGS, INC.)旗下集團公司上海通運國際物流有限公司(Nipp...

關(guān)鍵字: 溫控 精密儀器 半導(dǎo)體制造 BSP

廣州2022年10月18日 /美通社/ -- 10月15日,第 132 屆中國進出口商品交易會("廣交會")于"云端"開幕。本屆廣交會上高新技術(shù)企業(yè)云集,展出的智能產(chǎn)品超過140,...

關(guān)鍵字: 中國智造 BSP 手機 CAN

Lua RTOS 是一個實時操作系統(tǒng),設(shè)計在嵌入式系統(tǒng)上運行,對 FLASH 和 RAM 內(nèi)存的要求最低。目前 Lua RTOS 可用于 ESP32, ESP8266 和 PIC32MZ 平臺,并可以輕松移植到其他32位...

關(guān)鍵字: Lua RTOS 操作系統(tǒng) 嵌入式系統(tǒng)

通用異步收發(fā)傳輸器(Universal Asynchronous Receiver/Transmitter),通常稱作UATR,是一種串行、異步、全雙工的收發(fā)器。全雙工的UART支持同時雙向通信,是嵌入式系統(tǒng)必不可少的d...

關(guān)鍵字: 異步收發(fā) 傳輸器 嵌入式系統(tǒng)

嵌入式教程

6897 篇文章

關(guān)注

發(fā)布文章

編輯精選

技術(shù)子站

關(guān)閉