




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、RTC時(shí)鐘控制技術(shù)一、 確定任務(wù)1、 掌握基本的字符設(shè)備的驅(qū)動(dòng)程序設(shè)計(jì)。2、 掌握基本的文件操作。3、 掌握RTC的工作原理和使用方法。4、 掌握在操作系統(tǒng)下RTC驅(qū)動(dòng)程序的原理。二、 學(xué)習(xí)內(nèi)容 1、 閱讀S5PV210數(shù)據(jù)手冊(cè),熟悉RTC的原理。2、 編寫操作RTC的應(yīng)用程序。3、 編寫makefile文件。4、下載并調(diào)試操作RTC的應(yīng)用程序。三、基礎(chǔ)知識(shí)1、 硬件原理:a) 原理圖:b) 系統(tǒng)框架圖:由圖可知:RTC控制器就是在外部時(shí)鐘的作用下,通過將外部時(shí)鐘頻率分頻為1HZ,送到各個(gè)秒、分、時(shí)、天、月、年計(jì)數(shù)器來計(jì)數(shù)。c) 寄存器簡(jiǎn)介RTCCON控制寄存器是一個(gè)32位低10位有效的控制寄
2、存器,其中RTCEN位控制CPU和RTC之間的交互。RTCRST用于使能時(shí)鐘分頻器。TICNT寄存器是時(shí)鐘滴答計(jì)數(shù)器,當(dāng)TICNT寄存器計(jì)數(shù)減到0時(shí)將產(chǎn)生一個(gè)滴答時(shí)鐘中斷。RTCALM寄存器主要用于控制時(shí)鐘報(bào)警功能,若使能了報(bào)警功能,則到達(dá)設(shè)定時(shí)間時(shí)將產(chǎn)生ALARM_INT和ALARM_WK兩個(gè)信號(hào)。BCDSEC、BCDMIN、BCDHOUR、BCDDAY、BCDWEEK、BCDMON、BCEYEAR寄存器分別用于設(shè)置秒、分、時(shí)、日、星期、月、年的值。(注意這些寄存器是數(shù)據(jù)存儲(chǔ)格式為BCD碼)四、基本原理1、 RTC介紹:實(shí)時(shí)時(shí)鐘RTC器件是一種能提供日歷/時(shí)鐘、數(shù)據(jù)存儲(chǔ)等功能的集成電路,常用
3、作各種計(jì)算機(jī)系統(tǒng)的時(shí)鐘信號(hào)源和參數(shù)設(shè)置存儲(chǔ)電路。RTC具有計(jì)時(shí)準(zhǔn)確、耗電低和體積小等特點(diǎn),特別適用于在各種嵌入式系統(tǒng)中記錄事件發(fā)生的時(shí)間和相關(guān)信息,尤其是在通信工程,電力自動(dòng)化、工業(yè)控制等自動(dòng)化程度較高領(lǐng)域的無人值守環(huán)境。RTC器件與微控制器之間的接口大都采用連線簡(jiǎn)單的串行接口,諸如I2C、SPI、MICROWIRE和CAN等串行總線接口。這些串口由23根線連接,分為同步和異步接口。S3C6410片上已經(jīng)集成了RTC控制器,所以,不需要外接RTC芯片。S3C6410RTC的特點(diǎn):BCD數(shù)據(jù):秒、分、小時(shí)、星期、日期、月份和年份;鬧鐘(報(bào)警)功能:產(chǎn)生定時(shí)中斷或激活系統(tǒng);自動(dòng)計(jì)算閏年;無2000
4、年問題;獨(dú)立的電源輸入。2、 驅(qū)動(dòng)原理:將RTC抽象為一個(gè)字符設(shè)備,通過系統(tǒng)提供的標(biāo)準(zhǔn)接口,來獲取或者設(shè)置RTC時(shí)間。五、代碼設(shè)計(jì) 1、 驅(qū)動(dòng)簡(jiǎn)析(詳細(xì)代碼請(qǐng)查看./arch/arm/mach-s5pv210/smdkc110-rtc.c):static int _devinit smdkc110_rtc_probe(struct platform_device *pdev)smdkc110_rtc_alarmno = platform_get_irq(pdev, 0); /rtc時(shí)鐘定時(shí)中斷res = platform_get_resource(pdev, IORESOURCE_MEM, 0
5、); /獲取rtc平臺(tái)資源smdkc110_rtc_base = ioremap(res-start, res-end - res-start + 1)/映射rtc寄存器地址readw(smdkc110_rtc_base + S3C2410_RTCCON); /讀取RTCCONdevice_init_wakeup(&pdev-dev, 1); /使能喚醒smdkc110_rtc_gettime(&pdev-dev, &tm); /獲取時(shí)間if (tm.tm_mon 12 | tm.tm_mday 31 | tm.tm_year 3840) /判斷時(shí)間值是否超出范圍 /* Set the def
6、ault time. 2012:1:1:12:0:0 */tm.tm_year = 112;tm.tm_mon = 0;tm.tm_mday = 1;tm.tm_hour = 12;tm.tm_min = 0;tm.tm_sec = 0;smdkc110_rtc_settime(&pdev-dev, &tm); /設(shè)置時(shí)間rtc = rtc_device_register(s3c, &pdev-dev, &smdkc110_rtcops, THIS_MODULE); /rtc設(shè)備注冊(cè)platform_set_drvdata(pdev, rtc); /設(shè)置設(shè)備數(shù)據(jù)static int smdkc
7、110_rtc_settime(struct device *dev, struct rtc_time *tm)/* we get around y2k by simply not supporting it */if (year = 1000) dev_err(dev, rtc only supports 0999 yearsn);return -EINVAL;smdkc110_rtc_enable(dev, 1); /使能RTCEN位 ,改變r(jià)tc值writeb(bin2bcd(tm-tm_sec), base + S3C2410_RTCSEC); writeb(bin2bcd(tm-tm
8、_min), base + S3C2410_RTCMIN);writeb(bin2bcd(tm-tm_hour), base + S3C2410_RTCHOUR);writeb(bin2bcd(tm-tm_mday), base + S3C2410_RTCDATE);writeb(bin2bcd(tm-tm_mon + 1), base + S3C2410_RTCMON);/*獲取年份0999*/year100 = year/100;year = year%100;year = bin2bcd(year) | (bin2bcd(year100) tm_sec = readb(base + S3
9、C2410_RTCSEC);rtc_tm-tm_min = readb(base + S3C2410_RTCMIN);rtc_tm-tm_hour = readb(base + S3C2410_RTCHOUR);rtc_tm-tm_mday = readb(base + S3C2410_RTCDATE);rtc_tm-tm_mon = readb(base + S3C2410_RTCMON);rtc_tm-tm_year = readl(base + S3C2410_RTCYEAR);/* the only way to work out wether the system was mid-u
10、pdate * when we read it is to check the second counter, and if it * is zero, then we re-try the entire read */if (rtc_tm-tm_sec = 0 & !have_retried) /防止千年蟲問題have_retried = 1;goto retry_get_time;smdkc110_rtc_enable(dev, 0);rtc_tm-tm_sec = bcd2bin(rtc_tm-tm_sec);rtc_tm-tm_min = bcd2bin(rtc_tm-tm_min);
11、rtc_tm-tm_hour = bcd2bin(rtc_tm-tm_hour);rtc_tm-tm_mday = bcd2bin(rtc_tm-tm_mday);rtc_tm-tm_mon = bcd2bin(rtc_tm-tm_mon);rtc_tm-tm_year = bcd2bin(rtc_tm-tm_year & 0xff) + bcd2bin(rtc_tm-tm_year 8) * 100;rtc_tm-tm_mon -= 1;return 0;2、 測(cè)試代碼編寫(詳細(xì)代碼請(qǐng)查看附件):#include #include #include #include #include #in
12、clude #include #include #include #include struct rtc_time tm;void Usage(char *args)printf(Usage:%s n,args);return ;void help(void)printf(#n);printf(time format:n);printf( tYYYY.MM.DD-hh:mm:ssntYYYY-MM-DD hh:mm:ssn);printf(#n);return ;void str_to_time(char *time)if(time=NULL)printf(errorn);exit(EXIT_
13、FAILURE);size_t ret ;ret = strcspn(time,0123456789);sscanf(time+ret,%4d%*c%2d%*c%2d%*c%2d%*c%2d%*c%2d,&tm.tm_year,&tm.tm_mon,&tm.tm_mday,&tm.tm_hour,&tm.tm_min,&tm.tm_sec);tm.tm_year -=1900;tm.tm_mon -=1;int main(int argc,char *argv)if(argc !=2)Usage(argv0);exit(EXIT_FAILURE);char *t=NULL;size_t len
14、 =0;int tm_fd;int ret;tm_fd = open(/dev/rtc0,O_RDWR);if(tm_fd 0)perror(open device);exit(EXIT_FAILURE);if(!strncmp(argv1,settime,7) | !strncmp(argv1,set,3)help();getline(&t,&len,stdin);str_to_time(t);ret = ioctl(tm_fd , RTC_SET_TIME,&tm);if(ret 0)perror(set time );exit(EXIT_FAILURE);ioctl(tm_fd,RTC_
15、RD_TIME,&tm);printf(Current RTC date/time is %d-%d-%d, %02d:%02d:%02dn, tm.tm_mday, tm.tm_mon+1, tm.tm_year + 1900, tm.tm_hour, tm.tm_min, tm.tm_sec);else if(!strncmp(argv1,gettime ,7) |!strncmp(argv1,get,3)ioctl(tm_fd,RTC_RD_TIME,&tm);printf(Current RTC date/time is %d-%d-%d, %02d:%02d:%02dn, tm.tm_mday, tm.tm_mon+1, tm.tm_year + 1900, tm.tm_hour, tm.tm_min, tm.tm_sec);elseUsage(argv0);exit(EXIT_FAILURE);if(t)free(t);clos
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 生態(tài)恢復(fù)試題及答案詳解
- 海南繼續(xù)教育試題及答案
- 腫瘤診療精準(zhǔn)醫(yī)療2025年臨床實(shí)踐效果與基因檢測(cè)技術(shù)報(bào)告
- 紅巖的考試題及答案
- 2025年腫瘤精準(zhǔn)醫(yī)療臨床實(shí)踐中的精準(zhǔn)醫(yī)療技術(shù)倫理審查報(bào)告
- 護(hù)士競(jìng)聘考試題及答案
- 如何通過政策引導(dǎo)提升創(chuàng)業(yè)的社會(huì)價(jià)值試題及答案
- 小白職業(yè)測(cè)試題及答案
- 安全教育試題試卷及答案
- 吉林省撫松五中、長(zhǎng)白縣實(shí)驗(yàn)中學(xué)2025年高三下學(xué)期生物試題練習(xí)卷(1)含解析
- 新時(shí)代大學(xué)生勞動(dòng)教育智慧樹知到期末考試答案章節(jié)答案2024年江西中醫(yī)藥大學(xué)
- 2022金融科技SDL安全設(shè)計(jì)Checklist-v1.0
- 免疫缺陷病例討論
- 排球比賽規(guī)則與裁判法
- 中考生物二輪復(fù)習(xí)實(shí)驗(yàn)突破課件:花生果實(shí)大小的變異探究實(shí)驗(yàn)(含答案)
- 決策樹在飼料技術(shù)推廣中的應(yīng)用研究
- 空管自動(dòng)化系統(tǒng)的基本組成與功能課件
- 安寧療護(hù)之舒適護(hù)理
- 2023年杭州市規(guī)劃局拱墅規(guī)劃分局編外人員招考考前自測(cè)高頻難、易考點(diǎn)模擬試題(共500題)含答案詳解
- 大模型的因果推理與可解釋性
- 《圓柱與圓錐》單元整體教學(xué)設(shè)計(jì)展示
評(píng)論
0/150
提交評(píng)論