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
吃紙的妖怪
本刊欄目設置說明
中俄臨床醫學專業課程設置的比較與思考
主站蜘蛛池模板: 91在线免费公开视频| 国产网站黄| 国产素人在线| 亚洲天堂精品视频| 欧美日韩激情| 国产嫖妓91东北老熟女久久一| 99视频只有精品| 美女免费黄网站| 国产亚洲精品97AA片在线播放| 国产欧美日韩18| 久久久精品久久久久三级| 国产精品福利尤物youwu| 2020亚洲精品无码| 亚洲欧美一区二区三区图片| 亚洲欧美日韩天堂| 亚洲成人动漫在线观看| 午夜综合网| 9966国产精品视频| 久久香蕉国产线看观看亚洲片| 免费99精品国产自在现线| 国产91视频观看| 五月婷婷欧美| 欧美精品亚洲精品日韩专| 欧美成人二区| 精品福利一区二区免费视频| 国产成人综合日韩精品无码不卡| 狼友av永久网站免费观看| 亚洲天堂视频网站| 99视频在线观看免费| 特级精品毛片免费观看| av手机版在线播放| 国产成人成人一区二区| 欧美人人干| 国产人成网线在线播放va| 国产福利不卡视频| 免费毛片全部不收费的| 国产尹人香蕉综合在线电影| 久久人妻xunleige无码| 国产精品三级专区| 国产在线观看一区二区三区| 久久久久免费看成人影片| 欧美一级视频免费| 一区二区三区在线不卡免费| 久久96热在精品国产高清| 婷婷开心中文字幕| 成人毛片免费在线观看| 久久精品无码国产一区二区三区| 高h视频在线| 亚洲中文久久精品无玛| 91娇喘视频| 国产人人干| 亚洲男人天堂网址| 久久久久久久蜜桃| 免费国产小视频在线观看| m男亚洲一区中文字幕| www.亚洲一区| 91亚洲视频下载| 亚洲性色永久网址| 亚洲成人免费在线| 国产一区二区三区精品欧美日韩| 日韩无码视频播放| 欧美www在线观看| 国产国模一区二区三区四区| 欧美日韩国产在线观看一区二区三区 | 久久狠狠色噜噜狠狠狠狠97视色 | 55夜色66夜色国产精品视频| 国产精品妖精视频| 日韩高清一区 | 色天堂无毒不卡| 中文字幕中文字字幕码一二区| 久久网欧美| 国产青青操| 日韩小视频在线观看| 精品一区二区三区自慰喷水| 尤物国产在线| 毛片视频网| 在线a网站| 亚国产欧美在线人成| 亚洲男人的天堂在线观看| 日韩国产 在线| 久久久国产精品无码专区| 国产成+人+综合+亚洲欧美|