




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、ADC轉(zhuǎn)換技術(shù)一、 確定任務(wù)1、 掌握基本的字符設(shè)備的驅(qū)動程序設(shè)計。2、 掌握基本的文件操作。3、 掌握在操作系統(tǒng)下的AD轉(zhuǎn)換驅(qū)動程序的原理。二、 學(xué)習(xí)內(nèi)容 1、 閱讀S5PV210的數(shù)據(jù)手冊,熟悉AD轉(zhuǎn)換部分的原理。2、 編寫AD轉(zhuǎn)換的應(yīng)用程序。3、 編寫makefile文件。4、下載并調(diào)試AD轉(zhuǎn)換的應(yīng)用程序。三、基礎(chǔ)知識1、 硬件原理:a) 原理圖:由原理圖可知,本實驗使用AD通道。b) 系統(tǒng)框架圖:c) 寄存器簡介:寄存器ADCMUX設(shè)置AD轉(zhuǎn)換的analog的來源。本實驗中SEL_MUX3:0設(shè)置為0000 即選擇AIN0作為輸入。設(shè)置AD轉(zhuǎn)換器的工作模式,如位數(shù)、通道、使能等。AD轉(zhuǎn)
2、換值的存儲寄存器,當(dāng)AD轉(zhuǎn)換工作在普通模式下,XPDATA存儲的是轉(zhuǎn)換后的值。四、代碼設(shè)計 1、 AD轉(zhuǎn)換器的原理:請讀者自行查閱資料。2、 驅(qū)動原理:該驅(qū)動實現(xiàn)為一個字符設(shè)備,通過ioctl函數(shù)來設(shè)置祥光寄存器的值,通過read函數(shù)來獲取轉(zhuǎn)換之后的值。3、 驅(qū)動簡析:該驅(qū)動主要實現(xiàn)了ioctl、read函數(shù),包含頭文件與AD轉(zhuǎn)換有關(guān)部分的是mach/adc.h和/arch/arm/plat-s5pv210/include/plat/adc.h。主要驅(qū)動代碼如下(詳細(xì)代碼請讀者查看附件):static struct platform_driver s3c_adc_driver = .probe
3、 = s3c_adc_probe, .remove = s3c_adc_remove, .suspend = s3c_adc_suspend, .resume = s3c_adc_resume, .driver= .owner= THIS_MODULE,.name= "s3c-adc",;這個結(jié)構(gòu)體用于定義一個平臺資源。static const struct file_operations s3c_adc_fops = .owner= THIS_MODULE,.read= s3c_adc_read,.open= s3c_adc_open,.ioctl= s3c_adc_io
4、ctl,;static struct miscdevice s3c_adc_miscdev = .minor= ADC_MINOR,.name= "adc",.fops= &s3c_adc_fops,;這兩個結(jié)構(gòu)體用于定義AD轉(zhuǎn)換的操作方法和adc設(shè)備結(jié)構(gòu)的添加。a) 模塊探測函數(shù)static int _devinit s3c_adc_probe(struct platform_device *pdev)res = platform_get_resource(pdev, IORESOURCE_MEM, 0); /獲取平臺資源adc_mem = request_mem
5、_region(res->start, size, pdev->name); /申請內(nèi)存base_addr = ioremap(res->start, size); /映射寄存器控制基地址adc_clock = clk_get(&pdev->dev, "adc");clk_enable(adc_clock); /使能時鐘plat_data = s3c_adc_get_platdata(&pdev->dev);writel(plat_data->delay & 0xffff, base_addr + S3C_ADCD
6、LY); /設(shè)置轉(zhuǎn)換延時時間writel(readl(base_addr + S3C_ADCCON) | S3C_ADCCON_RESSEL_12BIT, base_addr + S3C_ADCCON);/設(shè)置AD轉(zhuǎn)換通道 轉(zhuǎn)換精度等writel(readl(base_addr + S3C_ADCCON) | S3C_ADCCON_STDBM) & S3C_ADCCON_PRSCEN, /設(shè)置預(yù)分頻值base_addr + S3C_ADCCON);ret = misc_register(&s3c_adc_miscdev); /注冊misc設(shè)備b) 設(shè)備讀取和控制函數(shù)static
7、 ssize_t s3c_adc_read(struct file *file, char _user *buffer, size_t size, loff_t *pos)s3c_adc_save_SFR_on_ADC(); /保存寄存器值adc_value = s3c_adc_convert(); /AD轉(zhuǎn)換s3c_adc_restore_SFR_on_ADC(); /恢復(fù)寄存器值if (copy_to_user(buffer, &adc_value, sizeof(unsigned int) /將轉(zhuǎn)換好的AD數(shù)值傳遞給用戶空間static int s3c_adc_ioctl(str
8、uct inode *inode, struct file *file,unsigned int cmd, unsigned long arg)case ADC_INPUT_PIN: adc_port = (unsigned int) arg; /設(shè)置輸入端口c) 模塊入口函數(shù)和出口函數(shù):int _init s3c_adc_init(void)return platform_driver_register(&s3c_adc_driver); /平臺設(shè)備注冊void _exit s3c_adc_exit(void)platform_driver_unregister(&s3c_a
9、dc_driver); /平臺設(shè)備注銷4、 驅(qū)動模塊makefile請仿照前幾章驅(qū)動模塊形式編寫。5、 測試程序int main(void)fprintf(stderr, "press Ctrl-C to stopn");int fd = open("/dev/adc", O_RDONLY); /打開設(shè)備if (fd < 0) perror("open ADC device:");return 1;ioctl(fd,'S',0); /選擇AD轉(zhuǎn)換的通道,由上面硬件原理圖分析得本實驗使用AIN0for(;) nsi
10、gned int i;read(fd, &i, sizeof(unsigned int); /讀取AD轉(zhuǎn)換后的值printf("adc = %dn",i);usleep(500* 1000);close(fd);測試程序請參考前面給出的通用makefile文件,并將TARGET修改為本實驗的目標(biāo)文件adc_test五、編譯代碼和運行1、 在PC機(jī)上建立目錄/gec/adc/test將上述adc_test.c與makefile文件拷貝到該目錄下,在在終端上鍵入make命令,即可生成目標(biāo)文件。將adc_test文件下載到/tmp目錄。詳細(xì)見附件目錄中的代碼。2、 在終端輸入:rootgec /tmp# chmod +x adc_test rootgec /tmp# ./adc_test 回車之后
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 注重語言表達(dá)技巧2025年商務(wù)英語試題及答案
- 家具市場的監(jiān)管政策分析考題試題及答案
- 氫燃料電池汽車關(guān)鍵技術(shù)2025年關(guān)鍵零部件國產(chǎn)化技術(shù)創(chuàng)新與產(chǎn)業(yè)協(xié)同發(fā)展模式報告
- 日語語音測試題及答案
- 2025網(wǎng)絡(luò)直播規(guī)范化發(fā)展:商業(yè)模式創(chuàng)新與產(chǎn)業(yè)鏈協(xié)同發(fā)展
- 站在2025年土木工程師考試的高地看試題及答案
- 有機(jī)護(hù)膚品行業(yè)消費者滿意度與忠誠度研究報告
- 四川省資陽市樂至縣良安中學(xué)2024-2025學(xué)年高三第一次調(diào)研考試(一模)英語試題含解析
- 濟(jì)南護(hù)理職業(yè)學(xué)院《網(wǎng)頁技術(shù)開發(fā)與設(shè)計》2023-2024學(xué)年第二學(xué)期期末試卷
- 安全工程師對施工安全的培訓(xùn)方法試題及答案
- 2025年一級建造師之一建礦業(yè)工程實務(wù)題庫附答案(典型題)
- 國家職業(yè)技能標(biāo)準(zhǔn)-(糧油)倉儲管理員
- 履帶式起重機(jī)進(jìn)場驗收表
- 汽車維修前臺接待流程參考指導(dǎo)
- 大數(shù)據(jù)驅(qū)動的智慧社區(qū)建設(shè)研究
- 《人工智能生成合成內(nèi)容標(biāo)識辦法》知識講座
- 2024廣西公務(wù)員【申論A卷、C卷+2023申論A卷】共3套真題及答案
- 2024北京西城區(qū)初一(下)期末英語試題和答案
- 2024年廣東廣州黃埔區(qū)穗東街道政府聘員招聘筆試真題
- 【MOOC】電子技術(shù)應(yīng)用實驗2(數(shù)字電路綜合實驗)電子科技大學(xué)章節(jié)作業(yè)中國大學(xué)慕課答案
- DB45T 2306-2021 百香果無病毒健康種苗栽培技術(shù)規(guī)程
評論
0/150
提交評論