Linux设备驱动ADC部分:


1.1ADC硬件 模拟信号:声音,电压,电流,温度,湿度,压力,速度:

数字信号:0.1这些数字量组成的信号 

数字系统不能直接处理模拟信号,需要将模拟信号转换成对应的数字信号;

不管是数字信号还是描述的同一个事物,只是这个信号在不同形式下的表现实现!

 

1.2信号之间的转换:AD:模拟信号转数字信号的过程;DA:数字信号转成模拟信号的过程

ADC:将模拟信号转成数字信号的硬件单元 DAC: 将数字信号转成模拟信号的硬件单元

 

案例:手机的录音和放音 录音:就是将声音模拟信号转成数字信号的过程--ADC硬件单元-音频文件,二进制文件 放音:数字信号转成声音模拟信号的过程-DAC硬件单元

 

1.3 S5PV210自带的adc的硬件特性,芯片手册1978

模拟输入通道有10路:ain0-ain9。同一时刻只能转化一路模拟信号;这10个io不能复用,只能做input,工作频率:最大5mhz,时钟源为pclk=66mhz,注意降频工作。adc转换器一旦开启信号的转换,转换过程需要一定的时间,一旦转换结束,adc硬件给cpu产生一个中断信号,通知cpu来进行处理。衡量adc工作参数指标:分辨率,自带adc的分辨率为12为或者10位;如果分辨率采用10位,就是代表将模拟信号转成数字信号以后,有效的数字量为10位。如果分辨率采用12位,就是代表将模拟信号转成数字信号以后,有效的数字量为12 

模拟输入电压的范围0-3.3v: 注意:最大的模拟输入电压为3.3v,

如果分辨率为10位:那么每一个bit对应的模拟电压为3.3/(1<<10)=0.0032=3.32mv

如果分辨率为12,那么每一个bit对应的模拟电压为3.3/(1<<12)=0.81mv

问:如果现在已知一个10bit的转换以后的数字量为0011000000,请问这个数字量对应的模拟量为? 模拟量的值=001100000 * 3.32mv; 

1.3.1ADC操作设计寄存器:

寄存器组的基地址:0xe1700000 adc控制寄存器:

bit16-》配置分辨率,0:12 1:12位

bit15-》判断是否转换结束,0转换进行中:1:转换结束 判断是否转换结束:中断判断bit15或者轮询方式进行判断

bit14:是否使能分频 0 :no 1:yes

bit6-bit13:设置分频系统,如果adc的工作频率为3.3MHZ,这个寄存器设置为66/3.3-1=19使能方法:读使能,直接使能

bit0:启动adc转换,1:表示启动adc,一旦启动adc此位进行清0  0:表示结束 

1.3.2 ADC数据寄存器:保存adc转换的结果

bit0-bit11:共12bit x位置转换的数据值或者正常的adc转换的值

范围0-0xfff 注意:普通的adc转换的有效值

分辨率为10位:data=数据寄存器的值&0x3ff

分辨率为12位:data=数据寄存器的值&0xfff 

1.3.3 adc中断清除寄存器:清adc的中断,中断处理函数中

0xe170 1018 【0】:写0或者1清楚中断 

1.3.4adc模拟通道选择寄存器:选择模拟输入通道 bit3-bit0:

1.4adc操作步骤: 1.设置正常的工作频率 3.3MHZ 2.设置分辨率,12位 3.设置模拟输入通道,AIN1

4.启动硬件adc,硬件adc开始对模拟电压信号进行转换 5.adc转换结束产生中断信号

6.中断处理函数中清中断,唤醒休眠的进程 7.进程读取转换以后的数字量,进行输出

 

1.5软件实现案例()

1.用户需求 在qt图形界面上,每隔5s动态刷新显示电压值,配置adc的分辨率和模拟输入通道

2.驱动的设计1.对用户提供的接口:read:读转换以后的电压值;启动adc;判断是否转换结束,如果没有,进入休眠;读取转换以后的数字量上报到用户空间ioctl:配置分辨率和模拟输入通道

 2.采用混杂设备驱动实现方法3.寄存器地址要进行ioremap+ platform4.注册中断处理函数:irq_adc中断号5.由于adc的处理速度慢于cpu(应用程序的读取速度),所以在adc没有转换结束时,进行进入休眠状态(等待队列机制)6.adc正式工作之前,adc的默认工作参数。

3.linux内核对虚拟地址的访问读写,提供相关的函数: 读readb:读一字节readw:读2字节

readl:读4字节函数参数都是内核虚拟地址.

写:writeb:写1字节writew:写2字节writel:写4字节 writel(1(值),地址);

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值