嵌入式系统设计AD转换器.docx
- 文档编号:24210383
- 上传时间:2023-05-25
- 格式:DOCX
- 页数:31
- 大小:760.42KB
嵌入式系统设计AD转换器.docx
《嵌入式系统设计AD转换器.docx》由会员分享,可在线阅读,更多相关《嵌入式系统设计AD转换器.docx(31页珍藏版)》请在冰豆网上搜索。
嵌入式系统设计AD转换器
第一章引言
设计目的
(1)了解PC机模拟Linux环境下,嵌入式系统开发方式和流程。
(2)熟悉Linux平台利用技术和Linux环境操作命令。
(3)通过设计把握Linux嵌入式系统A\D转换器实验,和相关程序代码的编写。
设计要求
在Samsung公司S3C2410处置器的开发板上,嵌入式Linux系统环境下,设计A/D转换器,实现模拟信号向数字信号的转化。
在转化进程中需要的指标如下:
(1)分辨率
分辨率反映A/D转换器对输入微小转变响应的能力,通经常使用数字输出最低位(LSB)所对应的模拟输入的电平值表示。
n位A/D能反映1/2n满量程的模拟输入电平。
由于分辨率直接与转换器的位数有关,因此一样也可简单地用数字量的位数来表示分辨率,即n位二进制数,最低位所具有的权值,确实是它的分辨率。
值得注意的是,分辨率与精度是两个不同的概念,不要把二者相混淆。
即便分辨率很高,也可能由于温度漂移、线性度等缘故,而使其精度不够高。
(2)精度
精度有绝对精度(AbsoluteAccuracy)和相对精度(RelativeAccuracy)两种表示方式。
①绝对误差:
在一个转换器中,对应于一个数字量的实际模拟输入电压和理想的模拟输入电压之差并非是一个常数。
咱们把它们之间的差的最大值,概念为“绝对误差”。
通常以数字量的最小有效位(LSB)的分数值来表示绝对误差,例如:
±1LSB等。
绝对误差包括量化误差和其它所有误差。
②相对误差:
是指整个转换范围内,任一数字量所对应的模拟输入量的实际值与理论值之差,用模拟电压满量程的百分比表示。
例如,满量程为10V,10位A/D芯片,假设其绝对精度为±1/2LSB,那么其最小有效位的量化单位:
,其绝对精度为=,其相对精度为%。
③转换时刻:
转换时刻是指完成一次A/D转换所需的时刻,即由发出启动转换命令信号到转换终止信号开始有效的时刻距离。
转换时刻的倒数称为转换速度。
例如AD570的转换时刻为25us,其转换速度为40KHz。
④电源灵敏度:
电源灵敏度是指A/D转换芯片的供电电源的电压发生转变时,产生的转换误差。
一样用电源电压转变1%时相当的模拟量转变的百分数来表示。
⑤量程:
量程是指所能转换的模拟输入电压范围,分单极性、双极性两种类型。
例如,单极性量程为0~+5V,0~+10V,0~+20V;
双极性量程为-5~+5V,-10~+10V。
⑥输出逻辑电平:
多数A/D转换器的输出逻辑电平与TTL电平兼容。
在考虑数字量输出与微处置的数据总线接口时,应注意是不是要三态逻辑输出,是不是要对数据进行锁存等。
⑦工作温度范围:
由于温度会对照较器、运算放大器、电阻网络等产生阻碍,故只在必然的温度范围内才能
保证额定精度指标。
一样A/D转换器的工作温度范围为(0~700C),军用品的工作温度范围为(-55~+1250C)
设计进程中要求考虑以上因素。
第二章系统整体方案
开发系统平台构建
一、开发平台硬件组成
①UP-NETARM2410-S核心模块资源
*基于ARM9架构的嵌入式芯片S3C2410,主频202MHz
*64MBSDRAM
*64MBFLASH
②UP-NETARM2410-S主板资源
*8寸640*480TFT真彩LCD
*触摸屏
*4个主USB口、1个从USB口
*2个JTAG接口
*一个100M网卡,预留一个100M网卡
*两个串口、一个485接口
*CAN总线接口
*红外通信收发器
*8通道10位AD转换模块
*2通道10位DA转换模块
*PCMCIA接口
*SD/MMC接口
*IDE硬盘接口
*笔记本硬盘接口
*CF卡接口
*IC卡接口
*直流电机、步进电机
*8个用户自概念LED数码管
*17键键盘
*PS2鼠标、键盘接口
*高性能立体声音频模块,支持放音、录音
*麦克风接入
*一个168Pin的扩展插座,硬件可无穷扩展
二、软件系统组成
*提供完整的Linux、WinCE、μC/OS-II操作系统移植
*bootloader:
vivi
*操作系统:
linux
*驱动程序:
提供所有板级设备的驱动程序
系统开发流程
应用程序流程
Linux操作系统及其经常使用命令
在所有的操作系统中,Linux是一个进展最快、应用最为普遍的操作系统。
Linux本身的各类特性使其成为嵌入式开发中的首选。
在进入市场的头两年中,嵌入式Linux设计通过普遍应用取得了庞大的成功。
随着嵌入式Linux的成熟,提供更小的尺寸和更多类型的处置器支持。
很多嵌入式Linux还改造了原先的Linux版本。
如:
RTLinux通过改造内核实现了实时的Linux;RTAI、Kurt和Linux/RK也提供实时能力;还有uCLinux去掉了Linux的MMU(内存治理单元),能够支持没有MMU的处置器等。
Linux经常使用命令:
大体命令:
ls以默许方式显示当前目录文件列表
ls-a显示所有文件包括隐藏文件
ls-l显示文件属性,包括大小,日期,符号连接,是不是可读写及是
否可执行
cd〈目录〉切换到当前目录下的子目录
cd/切换到根目录
cd..切换到到上一级目录
rm〈file〉删除某一个文件
rm-rfdir删除当前目录下叫dir的整个目录(包括下面的文件或子
目录)
cp〈source〉〈target〉将文件source复制为target
cp/root/source.将/root下的文件source复制到当前目录
mv〈source〉〈target〉将文件source更名为target
cat〈file〉显示文件的内容,和DOS的type相同
find/path-name〈file〉在/path目录下查找看是不是有文件file
vi〈file〉编辑文件file
manls读取关于ls命令的帮忙
startx运行Linux图形有环境
shutdown-hnow关闭运算机
reboot从头启动运算机
扩展命令
tar紧缩、解压文件
解压文件
tar文件:
tarxf
gz文件:
tar
bz2文件:
tarxjvf
紧缩文件
tar文件:
tarcf/path
gz文件:
tarczvf/path
bz2文件:
tarcjvf/path
mount-text2/dev/hda1/mnt把/dev/hda1装载到/mnt
mount-tiso9660/dev/cdrom/mnt/cdrom将光驱加载到/mnt/cdrom
mount-tnfs/mnt将nfs效劳的共享目录
sharedir加载到/mnt/nfs
umount/dev/hda1将/dev/hda1设备卸载,设备必需处于空闲状态
ifconfigeth0netmask设置网卡1的地
址,掩码为,不写netmask参数那么默以为
测试与的连接
ping测试与IP:
的连接
第三章嵌入式操作系统A/D转换及工作原理
A/D转换的实现及工作原理
逐次逼近型的A/D转换器。
逐次逼近型(也称逐位比较式)的A/D转换器,应用比积分型更为普遍,其原理框图如下图,要紧由逐次逼近寄放器SAR、D/A转换器、比较器和时序和操纵逻辑等部份组成。
它的实质是逐次把设定的SAR寄放器中的数字量经D/A转换后取得电压Vc与待转换模拟电压V。
进行比较。
比较时,先从SAR的最高位开始,逐次确信列位的数码应是“1”仍是“0”,其工作进程如下:
转换前,先将SAR寄放器列位清零。
转换开始时,操纵逻辑电路先设定SAR寄放器的最高位为“1”,其余位为“0”,此试探值经D/A转换成电压Vc,然后将Vc与模拟输入电压Vx比较。
若是Vx≥Vc,说明SAR最高位的“1”应予保留;若是Vx 然后再对SAR寄放器的次高位置“1”,依上述方式进行D/A转换和比较。 如此重复上述进程,直至确信SAR寄放器的最低位为止。 进程终止后,状态线改变状态,说明已完成一次转换。 最后,逐次逼近寄放器SAR中的内容确实是与输入模拟量V相对应的二进制数字量。 显然A/D转换器的位数N决定于SAR的位数和D/A的位数。 图(b)表示四位A/D转换器的逐次逼近进程。 转换结果可否准确逼近模拟信号,要紧取决于SAR和D/A的位数。 位数越多,越能准确逼近模拟量,但转换所需的时刻也越长。 逐次逼近式的A/D转换器的要紧特点是: 转换速度较快,在1—100/µs之内,分辨率能够达18位,专门适用于工业操纵系统。 转换时刻固定,不随输入信号的转变而转变。 抗干扰能力相对积分型的差。 例如,对模拟输入信号采样进程中,假设在采样时刻有一个干扰脉冲迭加在模拟信号上,那么采样时,包括干扰信号在内,都被采样和转换为数字量,这就会造成较大的误差,因此有必要采取适当的滤波方法。 实现程序的要紧函数 要紧驱动函数如下: 第四章vivi、Linux内核、cramfs文件系统的烧写 vivi的烧写 ①把并口线插到pc机的并口,并把并口与JTAG相连,JTAG与开发板 的14针JTAT口相连,打开2410-S. ②把整个GIVEIO目录(在\\img\flashvivi目录下)拷 贝到C: \WINDOWS下,并把该目录下的文件拷贝到 c: /windows/system32/drivers下。 ③在操纵面板里,选添加硬件>下一步>选-是我已经连接了此硬件 >下一步>选中-添加新的硬件设备>下一步>选中安装我手动从列表选 择的硬件>下一步>选择-显示所有设备>选择-从磁盘安装-阅读,指定 驱动为C: \WINDOWS\GIVEIO\文件,点击确信,安装好驱动 ④在d盘新建一目录bootloader,把sjf2410-s(在\\img \flashvivi目录下)和要烧写的vivi拷贝到该目录下,在程序-附件- msdos下,进入该目录,运行sjf2410-s命令如下: sjf2410-s/f: vivi 在尔后显现的三次要求输入参数,第一次是让选择Flash,选0;第二次 是选择jtag对flash的两种功能,也选0;第三次是让选择起始地址,选 0尔后就等待大约3-5分钟的烧写时刻,当vivi烧写完毕后选择参数2, 退出烧写。 Linux内核的烧写 复位2410-s,进入vivi。 vivi>loadflashkernelx回车 当显现Readyfordownloadingusingxmodem...如图 点击超级终端任务栏上“传送”下拉菜单中的“发送文件”,选择好镜像文件zImage,Enter,协议为Xmodem,点击“发送”,4分钟左右zImage烧写完毕; 烧写cramfs文件系统 vivi>loadflashrootx回车 当显现Readyfordownloadingusingxmodem...如图 点击超级终端任务栏上“传送”下拉菜单中的“发送文件”,选择好镜像文件,协议为Xmodem,点击“发送",7分钟左右烧写完毕。 第五章交叉编译 Makefile文件编写 Makefile文件源代码如下: TOPDIR=../ include$(TOPDIR) EXTRA_LIBS+=-lpthread EXEC=$(INSTALL_DIR)/ad./ad OBJS= all: $(EXEC) $(EXEC): $(OBJS) $(CC)$(LDFLAGS)-o$@$(OBJS)$(EXTRA_LIBS) install: $(EXP_INSTALL)$(EXEC)$(INSTALL_DIR) clean: rm-f*.oad*.gdb 交叉编译的进程 ①进入/arm2410s/exp/basic/04_ad目录,利用vi编辑器或其他编辑器阅读明白得源代码。 ②运行make生成ad可执行文件 第六章程序源代码设计与调试 程序源代码设计 /********************************************************/ /**/ /*SamsungS3C44B0*/ /*tpu>*/ /**/ /********************************************************/ #ifndef__ASM_ARCH_HARDWARE_H #define__ASM_ARCH_HARDWARE_H #defineREGBASE0x01c00000 #defineREGL(addr)(*(volatileunsignedint*)(REGBASE+addr)) #defineREGW(addr)(*(volatileunsignedshort*)(REGBASE+addr)) #defineREGB(addr)(*(volatileunsignedchar*)(REGBASE+addr)) /*****************************/ /*CPUWrapperRegisters*/ /*****************************/ #defineSYSCFGREGL(0x000000) #defineNCACHBE0REGL(0x000004) #defineNCACHBE1REGL(0x000008) #defineSBUSCONREGL(0x040000) /************************************/ /*MemoryControllerRegisters*/ /************************************/ #defineBWSCONREGL(0x080000) #defineBANKCON0REGL(0x080004) #defineBANKCON1REGL(0x080008) #defineBANKCON2REGL(0x08000c) #defineBANKCON3REGL(0x080010) #defineBANKCON4REGL(0x080014) #defineBANKCON5REGL(0x080018) #defineBANKCON6REGL(0x08001c) #defineBANKCON7REGL(0x080020) #defineREFRESHREGL(0x080024) #defineBANKSIZEREGL(0x080028) #defineMRSRB6REGL(0x08002c) #defineMRSRB7REGL(0x080030) /*********************/ /*UARTRegisters*/ /*********************/ #defineULCON0REGL(0x100000) #defineULCON1REGL(0x104000) #defineUCON0REGL(0x100004) #defineUCON1REGL(0x104004) #defineUFCON0REGL(0x100008) #defineUFCON1REGL(0x104008) #defineUMCON0REGL(0x10000c) #defineUMCON1REGL(0x10400c) #defineUTRSTAT0REGL(0x100010) #defineUTRSTAT1REGL(0x104010) #defineUERSTAT0REGL(0x100014) #defineUERSTAT1REGL(0x104014) #defineUFSTAT0REGL(0x100018) #defineUFSTAT1REGL(0x104018) #defineUMSTAT0REGL(0x10001c) #defineUMSTAT1REGL(0x10401c) #defineUTXH0REGB(0x100020) #defineUTXH1REGB(0x104020) #defineURXH0REGB(0x100024) #defineURXH1REGB(0x104024) #defineUBRDIV0REGL(0x100028) #defineUBRDIV1REGL(0x104028) /*******************/ /*SIORegisters*/ /*******************/ #defineSIOCONREGL(0x114000) #defineSIODATREGL(0x114004) #defineSBRDRREGL(0x114008) #defineITVCNTREGL(0x11400c) #defineDCNTZREGL(0x114010) /********************/ /*IISRegisters*/ /********************/ #defineIISCONREGL(0x118000) #defineIISMODREGL(0x118004) #defineIISPSRREGL(0x118008) #defineIISFIFCONREGL(0x11800c) #defineIISFIFREGW(0x118010) /**************************/ /*I/OPortsRegisters*/ /**************************/ #definePCONAREGL(0x120000) #definePDATAREGL(0x120004) #definePCONBREGL(0x120008) #definePDATBREGL(0x12000c) #definePCONCREGL(0x120010) #definePDATCREGL(0x120014) #definePUPCREGL(0x120018) #definePCONDREGL(0x12001c) #definePDATDREGL(0x120020) #definePUPDREGL(0x120024) #definePCONEREGL(0x120028) #definePDATEREGL(0x12002c) #definePUPEREGL(0x120030) #definePCONFREGL(0x120034) #definePDATFREGL(0x120038) #definePUPFREGL(0x12003c) #definePCONGREGL(0x120040) #definePDATGREGL(0x120044) #definePUPGREGL(0x120048) #defineSPUCRREGL(0x12004c) #defineEXTINTREGL(0x120050) #defineEXTINPNDREGL(0x120054) /*********************************/ /*WatchDogTimersRegisters*/ /*********************************/ #defineWTCONREGL(0x130000) #defineWTDATREGL(0x130004) #defineWTCNTREGL(0x130008) /*********************************/ /*A/DConverterRegisters*/ /*********************************/ #defineADCCONREGL(0x140000) #defineADCPSRREGL(0x140004) #defineADCDATREGL(0x140008) /***************************/ /*PWMTimerRegisters*/ /***************************/ #defineTCFG0REGL(0x150000) #defineTCFG1REGL(0x150004) #defineTCONREGL(0x150008) #defineTCNTB0REGL(0x15000c) #defineTCMPB0REGL(0x150010) #defineTCNTO0REGL(0x150014) #defineTCNTB1REGL(0x150018) #defineTCMPB1REGL(0x15001c) #defineTCNTO1REGL(0x150020) #defineTCNTB2REGL(0x150024) #defineTCMPB2REGL(0x150028) #defineTCNTO2REGL(0x15002c) #defineTCNTB3REGL(0x150030) #defineTCMPB3REGL(0x150034) #defineTCNTO3REGL(0x150038) #defineTCNTB4REGL(0x15003c) #defineTCMPB4REGL(0x150040) #defineTCNTO4REGL(0x150044) #defineTCNTB5REGL(0x150048) #defineTCNTO5REGL(0x15004c) /*********************/ /*IICRegisters*/ /*********************/ #defineIICCONREGL(0x160000) #defineIICSTATREGL(0x160004) #defineIICADDREGL(0x160008) #defineIIC
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 系统 设计 AD 转换器
![提示](https://static.bdocx.com/images/bang_tan.gif)