S5PC100AD示例

S5PC100AD示例

一、 S5PC100 A/D转换器概述

1.简述

10位或12位CMOS再循环式模拟数字转换器,它具有10通道输入,并可将模拟量转换至10位或12位二进制数。5MHz A/D转换时钟时,最大1Msps的转换速度。A/D转换具备片上采样保持功能,同时也支持待机工作模式。

2.特性
        ●  ADC接口包括如下特性。
        ●  10bit/12bit输出位可选。
        ●  微分误差±1.0LSB。
        ●  积分误差±2.0LSB。
        ●  最大转换速率:1 Msps。
        ●  功耗少,电压输入3.3v。
        ●  模拟量输入范围:0~3.3v。
        ●  支持片上样本保持功能。
        ●  通用转换模式。

3.模块图

S5PC100 A/D转换器的控制器接口框图如图1所示。


图1 S5PC100 ADC控制器接口框图

二、 S5PC100 A/D控制器寄存器

1.寄存器组

S5PC100中的A/D控制器集成了电阻触摸屏控制功能。此处为了简化学习,只考虑的A/D转换使用到的两个寄存器,即A/D控制寄存器(ADCCON)、A/D转换数据寄存器(ADCDAT)。

A/D控制寄存器ADCCON(address = 0xF3000000)如表1所示。

表2 ADCCON描述

ADCCON描 述初 始 值
RES[16]0=10bit 输出 1=12bit输出0
ECFLG[15]A/D转换结束标志
    0:A/D转换正在进行
    1:A/D转换结束
0
PRSCEN[14]A/D转换预分频允许
    0:不允许预分频
    1:允许预分频
0
PRSCVL[13:6]预分频值PRSCVL0xFF
Reserved[5:3]保留0
STDBM[2]待机模式选择位
    0:正常模式
    1:待机模式
1
READ_START[1]A/D转换读-启动选择位
    0:禁止Start-by-read
    1:允许Start-by-read
0
ENABLE_START[0]A/D转换器启动
    0:A/D转换器不工作
    1:A/D转换器开始工作
0

A/D转换数据寄存器ADCDAT0(地址:0xF300000C)如表3所示。

表3 ADCDAT0描述

ADCDAT0Bit描 述初 始 值
UPDOWN[15]等待中断模式,Stylus电平选择
    0:低电平
    1:高电平
AUTO_PST[14]自动按照先后顺序转换X,Y坐标
    0:正常A/D转换顺序
    1:按照先后顺序转换
XY_PST[13:12]自定义X,Y位置
    00:无操作模式
    01:测量X位置
    10:测量Y位置
    11:等待中断模式
XPDATA[11:0]X坐标转换数据值(包括正常的ADC转换数值)

2.A/D转换的转换时间计算

例如,PCLK为66M Hz,PRESCALER = 65;所有10位转换时间为:
        66 MHz / (65 + 1) = 1MHz
        转换时间为1/(1M/5 cycles) = 5μs。
        完成一次A/D转换需要5个时钟周期。A/D转换器的最大工作时钟为5MHz,所以最大的采样率可以达到1Mbit/s。

三、A/D转换器示例

1) 电路连接

电路连接如图2所示,利用一个电位计输出电压到S5PC100 的AIN0管脚。输入的电压范围是0~3.3V。


图2 分压电路

2) 程序的编写

编写软件程序,实现电压值的获取、显示。 程序主要是对S5PC100中的A/D模块进行操作,所以软件程序也主要是对A/D模块中的寄存器进行操作,其中包括对ADC控制寄存器(ADCCON)、ADC数据寄存器(ADCDAT)的读/写操作。同时为了观察转换结果,可以通过串口调试助手里面观察ADC采集的电压值。

1.相关寄存器定义

#define rADCCON (*(volatile unsigned *)0x58000000) //ADC 控制寄存器
        ypedef struct {
                                unsigned int ADCCON;
                                unsigned int ADCTSC;
                                unsigned int ADCDLY;
                                unsigned int ADCDAT0;
                                unsigned int ADCDAT1;
                                unsigned int ADCUPDN;
                                unsigned int ADCCLRINT;
                                unsigned int ADCMUX;
                                unsigned int ADCPNDCLR;
        }adc;
        #define ADC (* (volatile adc * )0xF3000000 )

2.A/D测试程序

#include "s5pc100.h"
        #include "uart.h"
        unsigned char table[10]={'0','1','2','3','4','5','6','7','8','9'};
        int main()
        {
            unsigned int temp = 0;
            unsigned int a;
            unsigned char bit4,bit3,bit2,bit1;
            unsigned int count;
            uart0_init();
            ADC.ADCMUX = 0;
            ADC.ADCCON = ( 1<<16 | 1<<14 | 0xff<<6 | 0<<2 | 1<<1 ) ;
            temp = ADC.ADCDAT0 & 0XFFF; //使用读启动的方式启动ADC
            while(1)
            {
                    while(!(ADC.ADCCON & 0X8000));
                    temp = ADC.ADCDAT0 & 0XFFF;
                    temp = 3.3 * 1000 * temp/ 0xfff;
                    bit4 = temp/1000;
                    putc(table[bit4]);
                    bit3 = (temp%1000)/100;
                    putc(table[bit3]);
                    bit2 = ((temp%1000)%100)/10;
                    putc(table[bit2]);
                    bit1 = ((temp%1000)%100)%10; 
                    putc(table[bit1]);
                    puts("mV");
                    putc('\n');
                    for(count = 1000000; count != 0; count--);
            }
            return 0;
        }

3) 调试与运行结果

1.串口接收设置

在PC上运行串口调试助手通信程序(波特率为115200、8、1位停止位、无校验位、无硬件流控制);或者使用其他串口通信程序。

2.测试程序

(1)编译程序后可得到ELF文件,通过仿真器下载代码到开发板。

3.观察实验结果

uart0 device ok
        1770mv
        1765mv
        1771mv
        1772mv

转动开发板上的电位器,ADC采集的电压值为在0V到3300mv之间变化。

AD设计线路板时,配合它超好用。 2.1.13说明: 本软件是多种EDA软件的鼠标增强工具,绿色单文件,支持Win9x/NT/2000/XP/WIN7,其中WIN7需要以管理员模式运行,另外,Win9x需要编译成非UNICODE版本,有需要的用户可发邮件给我索取,支持protel99se,DXP(AD),PADS,OrCAD的capture、Cam350、Saber、PC Schematic、Allegro、CircuitCAM,并且对每个软件的功能都可设置,用户可根据使用习惯打开或者关闭功能。 软件启动时和启动后每隔24小时检查更新,如果系统能上网,有更新时会有增量更新信息。 针对protel99se, DXP,Altium Designer: 1. 向上滚动滚轮 --> 放大,相当于PageUp(不能改掉软件原来的快捷键,否则就不灵了) 2. 向下滚动滚轮 --> 缩小,相当于PageDown(不能改掉软件原来的快捷键,否则就不灵了) 3. 按下滚轮 --> 切换有效图层并刷新,相当于小键盘'*'的功能 4. 按左键拖目标 --> 再按右键可旋转,相当于空格键的功能,在布局时非常好用,请留意 5. 按右键拖动屏幕 6. 原理图里单击中键呼出放置菜单,相当于按“P”键1次,连按两次相当于直接放置元件 7. 按中键向左移动撤消操作,相当于ALT+Backspace 8. 按中键向右移动重做操作,相当于CTRL+Backspace 9. 按中键向上移动,画线时删除上一次操作,相当于按Backspace 10.按中键向下移动,可删除当前焦点或选中内容,相当于按DELETE和CTRL+DELETE 针对PADS(支持各种版本logic, pcb): 1. 向上滚动滚轮 --> 放大,相当于PageUp 2. 向下滚动滚轮 --> 缩小,相当于PageDown 3. 按住鼠标右键移动,可移动工作区 4. 鼠标中键点击 --> 切换图层,相当于F4,原中键点击功能废弃 5. 按左键拖目标 --> 再按右键可旋转,相当于TAB键的功能,在布局时非常好用,请留意 针对OrCAD: 1. 向上滚动滚轮 --> 放大,相当于字母"I"键 2. 向下滚动滚轮 --> 缩小相当于字母"O"键 3. 按住鼠标右键移动,可移动工作区 4. 按中键呼出放置窗口的功能,相当于按“P”键1次 5. 按中键向左移动撤消操作,相当于按CTRL+Z 6. 按中键向右移动重做操作,相当于按CTRL+Y 7. 按中键向上移动,进入画线操作,相当于按W键 8. 按中键向下移动,删除选中内容,相当于按DELETE键 针对Cam350: 1. 向上滚动滚轮 --> 放大,相当于"PageUp"键 2. 向下滚动滚轮 --> 缩小,相当于"PageDown"键 3. 按住鼠标右键移动,可移动工作区 4. 修改原中键功能,按中键放开,连续按两次显示视图全部,单次相当于按“HOME”键再中键点击的效果 5、按中键向左移动撤消操作,相当于按CTRL+Z 6、按中键向右移动重做操作,相当于按CTRL+U 7、按中键向上移动,呼出Aperture Table,相当于按A键 8、按中键向下移动,删除选中内容,相当于按Edit菜单里的DELETE项 针对Saber: 1. 向上滚动滚轮 --> 放大,相当于"PageUp"键 2. 向下滚动滚轮 --> 缩小,相当于"PageDown"键 针对PC Schematic(V11有测试): 1. 向上滚动滚轮 --> 放大,相当于"PageUp"键, 原有快捷键要改 2. 向下滚动滚轮 --> 缩小,相当于"PageDown"键,原有快捷键要改 针对Allegro(15.7有测试,已经有中键缩放的新版本请禁止该功能): 1. 向上滚动滚轮 --> 放大,相当于"F10"键 2. 向下滚动滚轮 --> 缩小,相当于"F11"键 3. 中键拖动反转(适合习惯AutoCAD等中键拖动的用户) 针对CircuitCAM: 1. 向上滚动滚轮 --> 放大,相当于"PageUp"键 2. 向下滚动滚轮 --> 缩小,相当于"PageDown"键 3. 按住鼠标右键移动,可移
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值