




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quá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ū)動代碼如下(詳細代碼請讀者查看附件):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機上建立目錄/gec/adc/test將上述adc_test.c與makefile文件拷貝到該目錄下,在在終端上鍵入make命令,即可生成目標(biāo)文件。將adc_test文件下載到/tmp目錄。詳細見附件目錄中的代碼。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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于運動生理學(xué)的健美操訓(xùn)練創(chuàng)新
- 智能電網(wǎng)時代抽水蓄能的角色與價值
- 2025瑕疵購房租賃合同
- 小麥抗白粉病抗性基因的分子標(biāo)記輔助選擇
- 2025企業(yè)主可以使用的商業(yè)合同
- 初階語文探索
- 外語專業(yè)思政教育的國際化發(fā)展趨勢
- 探究環(huán)??萍?/a>
- 手工藝術(shù)探索
- 生物●天津卷丨2024年天津市普通高中學(xué)業(yè)水平選擇性考試生物試卷及答案
- 山東臨沂歷年中考作文題與審題指導(dǎo)(2005-2023)
- 浙江省溫州市2023-2024學(xué)年高一下學(xué)期期末考試語文試卷(含答案)
- 2025-2030中國助聽器、植入物和診斷設(shè)備行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略研究報告
- 建筑工地安全月教育課件
- 米哈游的創(chuàng)新創(chuàng)業(yè)之路
- 速度輪滑講解課件
- 代加工物料管理制度
- 2025屆湖北省武漢華中師大一附中高三最后一模化學(xué)試題含解析
- 2025屆湖北省武漢華中師大一附中5月高考適應(yīng)性考試英語試題試卷含解析
- 水土保持方案編制經(jīng)費預(yù)算書
- 《上市公司社會責(zé)任報告披露要求》
評論
0/150
提交評論