999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于AM3359 和WinCE7.0平臺的RTC時鐘設計與實現

2017-06-20 08:28:38袁霞蒲實
軟件導刊 2017年4期
關鍵詞:設置

袁霞+蒲實

摘要:以運行Windows CE7.0操作系統的AM3359主板為開發平臺,介紹了AM3359處理器、Windows CE7.0系統架構和硬件接口電路,詳細闡述了在嵌入式平臺WinCE7.0操作系統中DS1388芯片驅動程序設計原理和實現過程。該軟件已應用在某縫制終端系列設備中,為系統提供精準的實時時鐘功能。

關鍵詞:AM3359處理器;WinCE7.0;RTC時鐘;DS1388芯片

中圖分類號:TP319

文獻標識碼:A

文章編號:16727800(2017)004013504

0引言

當AM3359處理器自帶RTC時鐘不能滿足用戶更高要求,或因PMIC輸出電壓不正常導致RTC功能受到影響時,需要在PCB布局中添加單獨的RTC芯片DS1388,直接由電池供電,以保證系統能正確設置、保存、獲取實時時間,掉電不消失。對于外接DS1388芯片,AM3359處理器BSP包中自帶的RTC驅動程序不能實現DS1388芯片的實時時鐘功能,需對RTC時鐘驅動重新編寫,完成芯片寄存器配置、實時時鐘讀寫以及初始化功能。

1平臺介紹

1.1AM3359處理器

AM3359是TI(德州儀器)基于 ARM Cortex-A8內核的32位 RISC微處理器,支持主頻275-MHz、500-MHz、600-MHz和 720-MHz,因其價格便宜,支持操作系統齊全等特性,在工業控制、醫療電子、數控、汽車電子等行業的環境惡劣場合中廣泛應用[1],功能框架如圖1所示。

1.2WinCE7.0操作系統

Windows Embedded Compact 7簡稱WinCE7.0,是一種安全可靠的實時高性能嵌入式操作系統,其將最新的網絡、多媒體和通信技術封裝于小型設備中,具有搶占式多任務執行特性和強大的通訊能力。WinCE7擁有Windows 7特點,支持虛擬內存機制,按需分配內存和內存映射文件,專門為信息設備、移動計算、消費類電子產品和嵌入式應用等非PC領域而設計,為不同的應用和設備提供強大的可定制功能。WinCE7作為微軟最新一代Windows CE操作系統,提供了新的功能和特性,適用于更為廣泛的設備類別和應用場景,為消費者提供更友好的人機界面和用戶體驗[2]。

基于Windows CE的嵌入式系統采用四層體系結構,具有層次性強、可移植性好、組件可剪裁、強調編程接口和支持上層應用等特點。系統從下而上分為硬件層、OEM 硬件適配層、操作系統服務層、應用層[3],系統架構如圖2所示。

OAL部分負責Windows CE與硬件通信,它與CPU、中斷、內存、時鐘和調試口等核心設備相關,用于屏蔽CPU平臺細節,保證操作系統內核的可移植性[3]。RTC時鐘驅動在OAL層中開發實現。

DS1388 I2C實時時鐘(RTC)、監控器、EEPROM是一個多功能器件,提供時鐘/日歷、可編程看門狗定時器、具有復位功能的電源監視器和512字節EEPROM。時鐘部分可提供百分之一秒、秒、分鐘和小時等信息,工作于24小時制式或帶AM/PM指示的12小時制式。日歷部分提供星期、日、月和年信息。對少于31天的月份,可對月末日期自動調整,包括對閏年的校正。看門狗定時器可對沒有響應的微處理器復位。可以以10ms為間隔,在0.01-99.99秒范圍內編程。經過溫度補償的電壓基準和比較器電路對VCC狀態進行監視。如果探測到主電源失效,器件自動切換至備份電源,驅動復位輸出為有效狀態。在失去VCC情況下,備份電源維持時鐘/日歷部分繼續工作。當VCC恢復至正常電平時,復位輸出繼續保持為低一段時間,以等待電源和處理器工作穩定。器件還具有一個按鍵式復位控制器[4],可通過I2C串行接口訪問該器件。RTC計算百分秒、秒、分、時、星期、日期、月和年,閏年修正有效期至2100年。

1.4開發環境

本文硬件平臺采用英蓓特提供的Devkit8600評估板,對某縫制設備終端訂制AMM3359開發板,軟件使用Devkit8600提供的BSP包并針對應用進行適配,基于Windows Embedded Compact7操作系統 和Visual Studio 2008進行芯片驅動程序開發。

2硬件接口電路設計

DS1388芯片與 AM3359處理器之間使用I2C總線進行連接通信,芯片的SCL腳和SDA腳分別與處理器的I2C0_SCL腳和I2C0_SDA腳相連,其它外圍電路不作描述。硬件接口電路設計如圖3所示。

3RTC時鐘驅動程序設計與實現

WinCE7.0中 RTC時鐘驅動是在OEM接口層即OAL層實現的,其源代碼位置在:\\WINCE700\\platform\\common\\src\\soc\\COMMON_TI_V1\\COMMON_TI_AMXX\\OAL\\OALRTC\\oalrtc.c文件中。

3.1工作原理

應用層程序調用操作系統層的應用API,通過OAL層的RTC時鐘驅動操作DS1388時鐘芯片,通過轉碼算法達到控制RTC實時時鐘目的,詳細流程見圖4。

3.2I2C總線驅動

處理器外接RTC的時鐘芯片通過I2C總線進行訪問,本文通過使用I2C總線操作DS1388芯片寄存器,因此需確保I2C總線驅動正常運行。BSP包中I2C驅動已全部實現并通過測試,本文不再詳述I2C驅動程序原理和實現過程。

3.3BCD與BIN轉碼

BIN碼就是二進制編碼,用二進制記錄數據; BCD碼亦稱二進碼十進數或二、十進制代碼,就是用4位二進制數表示1位十進制數的編碼。最常用的BCD編碼使用0-9這10個數值的二進碼表示。〖BT3〗3.3.1BCD碼轉BIN碼算法bin = bcd低四位數值+bcd高四位值*10static UINT8 BCDtoBIN(UINT8 bt){ return (bt & 0xf) + (((bt & 0xf0) >> 4)* 10); }

3.3.2BIN碼轉BCD碼算法bcd 高四位= bin/10;bcd 低四位= bin%10static UINT8 BINtoBCD(UINT8 bt){ return (((bt/10) << 4) | (bt % 10));}

3.4時鐘設計與實現

在WinCE7.0中,RTC驅動主要實現3個重要函數:①設置當前時間:BOOL OEMSetRealTime( SYSTEMTIME *pSystemTime );②獲取當前時間:BOOL OEMGetRealTime(SYSTEMTIME *pSystemTime);③設置報警時間:BOOL OEMSetAlarmTime(SYSTEMTIME *pSystemTime )。本文主要實現當前時間的設置和獲取,以及芯片初始化功能[5]。

3.4.1參數宏定義對照DS1388芯片手冊,芯片寄存器定義如下:// Global variables#define MILLISECONDS_DS1388 0x0// MilliSeconds Register#define SECONDS_DS1388 0x1// Seconds Register#define MINUTES_DS1388 0x2 // Minutes Register……//定義時、周、天、月、年寄存器地址#define FLAG_REG 0xB// 芯片標識寄存器#define CTRL_REG 0xC// 芯片控制寄存器#define BASE_YEAR_DS1388 2000 //系統初始時間#define MAX_YEARS 99static void *g_hI2C = NULL;OMAP_DEVICE i2cdev = 4 ;//I2C0設備號static UINT16 g_devAddr = 0x0068;//Write Mode,0xD1 :Read Modestatic UINT16 g_baseYear = 2000;

3.4.2設置時鐘函數實現

BOOL RTC_SetTime(LPSYSTEMTIME time){ UCHAR cmdBuffer[8]; //依次將年月日、周、天、時分秒等數據從BIN碼轉變為BCD碼 cmdBuffer[SECONDS_DS1388] = (UINT32)BINtoBCD((UINT8)time->wSecond);…… cmdBuffer[WEEK_DS1388] = (UINT32)BINtoBCD((UINT8)time->wDayOfWeek); if( RTCI2CWrite(0,cmdBuffer,8)==FALSE)//通過I2C總線將數據寫入芯片寄存器 { OALMSG(1,(L"RTC_SetTime():Failed to write the date/time to the RTC.\\r\\n")); return FALSE; }}

3.4.3獲取時鐘函數實現

BOOL RTC_GetTime(LPSYSTEMTIME time){ UCHAR receiveBuffer[8]; if (RTCI2CRead(0,receiveBuffer,8) == FALSE) {//通過I2C總線從芯片寄存器中讀取當前時間}//將BCD碼轉變成上層應用識別的BIN碼并分別賦值給時間結構體time的各個元素 time->wSecond = BCDtoBIN((UINT8)(receiveBuffer[SECONDS_DS1388] & 0x7F));…… time->wDayOfWeek = BCDtoBIN((UINT8)(receiveBuffer[WEEK_DS1388] & 0x7F)); time->wMilliseconds = 0;; return TRUE;}

3.4.4RTC時鐘初始化實現

BOOL OAL3XX_RTCInit(UINT32 rtc_base_pa,DWORD rtc_irq){ OALI2CInit(4);//I2C初始化 g_hI2C = I2COpen(i2cdev);//打開I2C RTCI2CWrite(CTRL_REG,&buf,1); // 設置 DS1388 控制寄存器}

4測試

4.1時鐘測試設置

當WinCE啟動后,會在界面右下角看到時間顯示。在界面中設置時間,系統就會調用OEMSetRealTime將設置的時間寫入到RTC模塊并保存。測試情況如下: 開機初始化時間為2000.1.1 12:00,如圖5所示。設置時間為2016.8.17 8:54:25,保存,如圖6所示。 間隔幾分鐘后再次開機時間為2016.8.17 8:56:35,如圖7所示,測試結果表明實時時鐘設置運行成功。

4.2時鐘測試獲取

WinCE啟動后,默認情況下系統會每隔一段時間調用OEMGetRealTime函數獲得系統時間,這種方式稱為hardware mode。同樣用戶也可以通過調用Windows時鐘基本API,即編寫測試程序調用OEMGetRealTime獲取當前時間,每隔1秒顯示一次當前時間,部分代碼如下:

void Ctimer_testDlg::OnTimer(UINT_PTR nIDEvent){ SYSTEMTIME Time ,CString str,LPCTSTR lpctstr; GetLocalTime(&Time);//獲取當前時間 //顯示當前時間 str.Format(_T("%04d.%02d.%02d %02d:%02d:%02d"), Time.wYear,Time.wMonth,Time.wDay, Time.wHour,Time.wMinute,Time.wSecond ); lpctstr = str.GetBuffer(str.GetLength()+1); str.ReleaseBuffer(); SetDlgItemText(IDC_TIME,lpctstr); CDialog::OnTimer(nIDEvent);//實時顯示}

測試結果如圖8所示。

5結語

本文介紹了WinCE系統結構和RTC時鐘工作原理,以外接DS1388 RTC時鐘芯片為例,闡述了在AM3359和WinCE7.0平臺下,DS1388時鐘芯片驅動程序的設計實現過程,并通過設置時間和獲取時間測試驗證了驅動程序。驅動程序運行穩定可靠,滿足設計要求。

參考文獻:[1]劉洪濤,鄒南.ARM處理器開發詳解[M].北京:電子工業出版社,2012.

[2]Texas Instruments.AM335X arm Cortex-A8 mMicroprocessors (MPUs) technical reference manual[Z].Literature Number:SPRUH73H,2011.

[3]尹成,黃永兵,胡耀文,等.Windows CE 7開發實戰詳解[M].北京:人民郵電出版社,2012.

[4]李紅,馮慶勝,曾潔.實時時鐘芯片DS1388的原理和應用[J].電子元器件應用,2006(1):7274.

[5]周建設.Windows CE 設備驅動及BSP開發指南[M].北京:中國電力出版社,2009.

(責任編輯:杜能鋼)

猜你喜歡
設置
中隊崗位該如何設置
少先隊活動(2021年4期)2021-07-23 01:46:22
船舶防火結構及設置的缺陷與整改
水上消防(2020年5期)2020-12-14 07:16:18
中外醫學專業與專科設置對比分析及啟示
特殊場景下列控等級轉換的設置方案
7招教你手動設置參數
動車段(所)股道有效長設置研究
我國中小學將設置人工智能相關課程
玩具世界(2017年9期)2017-11-24 05:17:29
吃紙的妖怪
本刊欄目設置說明
中俄臨床醫學專業課程設置的比較與思考
主站蜘蛛池模板: 国产日韩久久久久无码精品| 欧美国产三级| 色综合久久久久8天国| 夜色爽爽影院18禁妓女影院| 日本色综合网| 国产激情无码一区二区APP| 国产jizzjizz视频| 国产精品视频观看裸模| 极品性荡少妇一区二区色欲| 国产午夜人做人免费视频| 国产高清无码第一十页在线观看| 91无码人妻精品一区| 亚洲免费黄色网| 久久视精品| 91蝌蚪视频在线观看| 色婷婷国产精品视频| 无码丝袜人妻| 午夜国产小视频| 久久一本日韩精品中文字幕屁孩| 免费在线a视频| 亚洲天堂视频在线观看免费| 亚洲国产日韩在线成人蜜芽| 日韩精品毛片| 日本亚洲欧美在线| a级毛片毛片免费观看久潮| 色吊丝av中文字幕| 亚洲天堂成人在线观看| 国产成人8x视频一区二区| 麻豆AV网站免费进入| 亚洲天堂啪啪| 国产亚洲欧美在线人成aaaa | 亚洲日韩精品欧美中文字幕| 午夜国产理论| 看你懂的巨臀中文字幕一区二区| 99这里只有精品免费视频| 国产主播在线一区| 8090成人午夜精品| 久久亚洲国产视频| 99久久精品国产麻豆婷婷| 国产综合精品一区二区| 久久五月视频| 亚洲青涩在线| 国产欧美日韩另类精彩视频| 成年看免费观看视频拍拍| 天堂成人在线| 久夜色精品国产噜噜| 一区二区在线视频免费观看| 色婷婷色丁香| 国产91小视频| 欧美日在线观看| 综1合AV在线播放| 四虎精品黑人视频| 国产成人精品第一区二区| 国内精品小视频在线| 国产在线麻豆波多野结衣| 国产精品不卡永久免费| 国产网站免费看| 国产精品一区二区不卡的视频| 国产精品成人免费综合| 日韩高清欧美| 4虎影视国产在线观看精品| 久久精品国产精品青草app| 91午夜福利在线观看| 亚洲男人的天堂在线| 精品国产成人国产在线| 亚洲成人免费看| 97影院午夜在线观看视频| 国产丝袜无码精品| 国产日本一线在线观看免费| 一本久道久综合久久鬼色| 亚洲色图欧美在线| 天天综合网亚洲网站| 伊人婷婷色香五月综合缴缴情| 成人伊人色一区二区三区| 国产精品视频免费网站| 日本一区高清| 爽爽影院十八禁在线观看| 日本在线亚洲| 22sihu国产精品视频影视资讯| 免费无码在线观看| 欧美日韩中文国产va另类| 亚洲国产AV无码综合原创|