1、嵌入式系统设计AD转换器第一章引言 设计目的(1)了解PC机模拟Linux环境下,嵌入式系统开发方式和流程。(2)熟悉Linux平台利用技术和Linux环境操作命令。(3)通过设计把握Linux嵌入式系统AD转换器实验,和相关程序代码的编写。 设计要求在Samsung公司S3C2410处置器的开发板上,嵌入式Linux系统环境下,设计A/D转换器,实现模拟信号向数字信号的转化。在转化进程中需要的指标如下:(1)分辨率分辨率反映 A/D 转换器对输入微小转变响应的能力,通经常使用数字输出最低位(LSB)所对应的模拟输入的电平值表示。n 位 A/D 能反映 1/2n满量程的模拟输入电平。由于分辨率
2、直接与转换器的位数有关,因此一样也可简单地用数字量的位数来表示分辨率,即 n 位二进制数,最低位所具有的权值,确实是它的分辨率。 值得注意的是,分辨率与精度是两个不同的概念,不要把二者相混淆。即便分辨率很高,也可能由于温度漂移、线性度等缘故,而使其精度不够高。(2)精度 精度有绝对精度(Absolute Accuracy)和相对精度(Relative Accuracy)两种表示方式。 绝对误差: 在一个转换器中,对应于一个数字量的实际模拟输入电压和理想的模拟输入电压之差并非是一个常数。咱们把它们之间的差的最大值,概念为“绝对误差”。通常以数字量的最小有效位(LSB)的分数值来表示绝对误差,例如
3、:1LSB 等。绝对误差包括量化误差和其它所有误差。 相对误差: 是指整个转换范围内,任一数字量所对应的模拟输入量的实际值与理论值之差,用模拟电压满量程的百分比表示。 例如,满量程为 10V,10 位 A/D 芯片,假设其绝对精度为1/2LSB,那么其最小有效位的量化单位:,其绝对精度为,其相对精度为 %。 转换时刻: 转换时刻是指完成一次 A/D 转换所需的时刻,即由发出启动转换命令信号到转换终止信号开始有效的时刻距离。转换时刻的倒数称为转换速度。例如 AD570 的转换时刻为 25us,其转换速度为 40KHz。 电源灵敏度: 电源灵敏度是指 A/D 转换芯片的供电电源的电压发生转变时,产
4、生的转换误差。一样用电源电压转变 1时相当的模拟量转变的百分数来表示。 量程: 量程是指所能转换的模拟输入电压范围,分单极性、双极性两种类型。 例如,单极性 量程为 0+5V,0+10V,0+20V; 双极性 量程为-5+5V,-10+10V。 输出逻辑电平: 多数 A/D 转换器的输出逻辑电平与 TTL 电平兼容。在考虑数字量输出与微处置的数据总线接口时,应注意是不是要三态逻辑输出,是不是要对数据进行锁存等。 工作温度范围:由于温度会对照较器、运算放大器、电阻网络等产生阻碍,故只在必然的温度范围内才能保证额定精度指标。一样 A/D 转换器的工作温度范围为(0700C),军用品的工作温度范围为
5、(-55+1250C)设计进程中要求考虑以上因素。 第二章 系统整体方案 开发系统平台构建一、开发平台硬件组成UP-NETARM2410-S核心模块资源*基于ARM9架构的嵌入式芯片S3C2410,主频202MHz* 64MB SDRAM* 64MB FLASHUP-NETARM2410-S 主板资源* 8 寸 640*480TFT 真彩 LCD * 触摸屏 * 4 个主 USB 口、1 个从 USB 口 * 2 个 JTAG 接口 * 一个 100M 网卡,预留一个 100M 网卡 * 两个串口、一个 485 接口 * CAN 总线接口 * 红外通信收发器 * 8 通道 10 位 AD 转换
6、模块 * 2 通道 10 位 DA 转换模块 * PCMCIA 接口 * SD/MMC 接口 * IDE 硬盘接口 * 笔记本硬盘接口 * CF 卡接口 * IC 卡接口 * 直流电机、步进电机 * 8 个用户自概念 LED 数码管 * 17 键键盘 * PS2 鼠标、键盘接口 * 高性能立体声音频模块,支持放音、录音 * 麦克风接入 * 一个 168Pin 的扩展插座,硬件可无穷扩展 二、软件系统组成* 提供完整的Linux、WinCE、C/OS-II操作系统移植* bootloader:vivi * 操作系统:linux * 驱动程序:提供所有板级设备的驱动程序 系统开发流程 应用程序流程
7、 Linux操作系统及其经常使用命令在所有的操作系统中,Linux是一个进展最快、应用最为普遍的操作系统。Linux本身的各类特性使其成为嵌入式开发中的首选。在进入市场的头两年中,嵌入式Linux设计通过普遍应用取得了庞大的成功。随着嵌入式Linux的成熟,提供更小的尺寸和更多类型的处置器支持。很多嵌入式Linux还改造了原先的Linux版本。如:RTLinux通过改造内核实现了实时的Linux;RTAI、Kurt和Linux/RK也提供实时能力;还有uCLinux去掉了Linux的MMU(内存治理单元),能够支持没有MMU的处置器等。Linux经常使用命令:大体命令: ls 以默许方式显示当
8、前目录文件列表 ls -a 显示所有文件包括隐藏文件 ls -l 显示文件属性,包括大小,日期,符号连接,是不是可读写及是否可执行 cd目录 切换到当前目录下的子目录 cd / 切换到根目录 cd . 切换到到上一级目录 rmfile 删除某一个文件 rm -rf dir 删除当前目录下叫dir的整个目录(包括下面的文件或子目录) cpsource target 将文件source复制为target cp /root/source . 将/root下的文件source复制到当前目录 mvsource target 将文件source更名为target catfile 显示文件的内容,和DOS的
9、type相同 find/path -name file 在/path目录下查找看是不是有文件file vifile 编辑文件file manls 读取关于ls命令的帮忙 startx 运行Linux图形有环境 shutdown -h now 关闭运算机 reboot 从头启动运算机 扩展命令 tar 紧缩、解压文件解压文件 tar文件:tar xf gz文件: tar bz2文件:tar xjvf 紧缩文件 tar文件:tar cf /path gz文件: tar czvf /path bz2文件:tar cjvf /path mount-t ext2 /dev/hda1 /mnt 把/dev
10、/hda1装载到/mnt mount -t iso9660 /dev/cdrom /mnt/cdrom 将光驱加载到/mnt/cdrom mount -t nfs /mnt 将nfs效劳的共享目录sharedir加载到/mnt/nfs umount /dev/hda1 将/dev/hda1设备卸载,设备必需处于空闲状态 ifconfig eth0 netmask 设置网卡1的地址,掩码为,不写netmask参数那么默以为 测试与的连接 ping 测试与IP:的连接 第三章嵌入式操作系统A/D转换及工作原理 A/D转换的实现及工作原理逐次逼近型的A/D转换器。逐次逼近型(也称逐位比较式)的 A/
11、D 转换器,应用比积分型更为普遍,其原理框图如下图,要紧由逐次逼近寄放器 SAR、D/A 转换器、比较器和时序和操纵逻辑等部份组成。它的实质是逐次把设定的 SAR 寄放器中的数字量经 D/A 转换后取得电压 Vc 与待转换模拟电压 V。进行比较。比较时,先从 SAR 的最高位开始,逐次确信列位的数码应是“1”仍是“0”,其工作进程如下: 转换前,先将 SAR 寄放器列位清零。转换开始时,操纵逻辑电路先设定 SAR 寄放器的最高位为“1”,其余位为“0”,此试探值经 D/A 转换成电压 Vc,然后将 Vc 与模拟输入电压 Vx 比较。若是 VxVc,说明 SAR 最高位的“1”应予保留;若是 V
12、x下一步选是我已经连接了此硬件下一步选中添加新的硬件设备下一步选中安装我手动从列表选择的硬件下一步选择显示所有设备选择从磁盘安装-阅读,指定驱动为C:WINDOWSGIVEIO文件,点击确信,安装好驱动 在d盘新建一目录bootloader,把sjf2410-s(在img flashvivi目录下)和要烧写的vivi拷贝到该目录下,在程序附件msdos下,进入该目录,运行sjf2410-s命令如下:sjf2410-s /f:vivi 在尔后显现的三次要求输入参数,第一次是让选择Flash,选0;第二次是选择jtag对flash的两种功能,也选0;第三次是让选择起始地址,选0尔后就等待大约35分
13、钟的烧写时刻,当vivi烧写完毕后选择参数2,退出烧写。 Linux内核的烧写 复位2410-s,进入vivi。 viviload flash kernel x 回车 当显现Ready for downloading using xmodem.如图 点击超级终端任务栏上“传送”下拉菜单中的“发送文件”,选择好镜像文件zImage,Enter,协议为Xmodem,点击“发送”,4分钟左右zImage烧写完毕; 烧写cramfs文件系统viviload flash root x 回车 当显现Ready for downloading using xmodem.如图 点击超级终端任务栏上“传送”下拉
14、菜单中的“发送文件”,选择好镜像文件,协议为Xmodem,点击“发送 ,7分钟左右 烧写完毕。 第五章交叉编译 Makefile文件编写Makefile文件源代码如下:TOPDIR = ./include $(TOPDIR)EXTRA_LIBS += -lpthreadEXEC= $(INSTALL_DIR)/ad ./adOBJS= all: $(EXEC)$(EXEC): $(OBJS) $(CC) $(LDFLAGS) -o $ $(OBJS) $(EXTRA_LIBS)install: $(EXP_INSTALL) $(EXEC) $(INSTALL_DIR)clean: rm -f
15、*.o ad *.gdb 交叉编译的进程进入/arm2410s/exp/basic/04_ad 目录,利用 vi 编辑器或其他编辑器阅读明白得源代码。运行make生成ad可执行文件第六章程序源代码设计与调试 程序源代码设计/*/* */* Samsung S3C44B0 */* tpu */* */*/#ifndef _ASM_ARCH_HARDWARE_H#define _ASM_ARCH_HARDWARE_H#define REGBASE 0x01c00000#define REGL(addr) (*(volatile unsigned int *)(REGBASE+addr)#defin
16、e REGW(addr) (*(volatile unsigned short *)(REGBASE+addr)#define REGB(addr) (*(volatile unsigned char *)(REGBASE+addr)/*/* CPU Wrapper Registers */*/#define SYSCFG REGL(0x000000)#define NCACHBE0 REGL(0x000004)#define NCACHBE1 REGL(0x000008)#define SBUSCON REGL(0x040000)/*/* Memory Controller Register
17、s */*/#define BWSCON REGL(0x080000)#define BANKCON0 REGL(0x080004)#define BANKCON1 REGL(0x080008)#define BANKCON2 REGL(0x08000c)#define BANKCON3 REGL(0x080010)#define BANKCON4 REGL(0x080014)#define BANKCON5 REGL(0x080018)#define BANKCON6 REGL(0x08001c)#define BANKCON7 REGL(0x080020)#define REFRESH R
18、EGL(0x080024)#define BANKSIZE REGL(0x080028)#define MRSRB6 REGL(0x08002c)#define MRSRB7 REGL(0x080030)/*/* UART Registers */*/#define ULCON0 REGL(0x100000)#define ULCON1 REGL(0x104000)#define UCON0 REGL(0x100004)#define UCON1 REGL(0x104004)#define UFCON0 REGL(0x100008)#define UFCON1 REGL(0x104008)#d
19、efine UMCON0 REGL(0x10000c)#define UMCON1 REGL(0x10400c)#define UTRSTAT0 REGL(0x100010)#define UTRSTAT1 REGL(0x104010)#define UERSTAT0 REGL(0x100014)#define UERSTAT1 REGL(0x104014)#define UFSTAT0 REGL(0x100018)#define UFSTAT1 REGL(0x104018)#define UMSTAT0 REGL(0x10001c)#define UMSTAT1 REGL(0x10401c)
20、#define UTXH0 REGB(0x100020)#define UTXH1 REGB(0x104020)#define URXH0 REGB(0x100024)#define URXH1 REGB(0x104024)#define UBRDIV0 REGL(0x100028)#define UBRDIV1 REGL(0x104028)/*/* SIO Registers */*/#define SIOCON REGL(0x114000)#define SIODAT REGL(0x114004)#define SBRDR REGL(0x114008)#define ITVCNT REGL
21、(0x11400c)#define DCNTZ REGL(0x114010)/*/* IIS Registers */*/#define IISCON REGL(0x118000)#define IISMOD REGL(0x118004)#define IISPSR REGL(0x118008)#define IISFIFCON REGL(0x11800c)#define IISFIF REGW(0x118010)/*/* I/O Ports Registers */*/#define PCONA REGL(0x120000)#define PDATA REGL(0x120004)#defin
22、e PCONB REGL(0x120008)#define PDATB REGL(0x12000c)#define PCONC REGL(0x120010)#define PDATC REGL(0x120014)#define PUPC REGL(0x120018)#define PCOND REGL(0x12001c)#define PDATD REGL(0x120020)#define PUPD REGL(0x120024)#define PCONE REGL(0x120028)#define PDATE REGL(0x12002c)#define PUPE REGL(0x120030)#
23、define PCONF REGL(0x120034)#define PDATF REGL(0x120038)#define PUPF REGL(0x12003c)#define PCONG REGL(0x120040)#define PDATG REGL(0x120044)#define PUPG REGL(0x120048)#define SPUCR REGL(0x12004c)#define EXTINT REGL(0x120050)#define EXTINPND REGL(0x120054)/*/* WatchDog Timers Registers */*/#define WTCO
24、N REGL(0x130000)#define WTDAT REGL(0x130004)#define WTCNT REGL(0x130008)/*/* A/D Converter Registers */*/#define ADCCON REGL(0x140000)#define ADCPSR REGL(0x140004)#define ADCDAT REGL(0x140008)/*/* PWM Timer Registers */*/#define TCFG0 REGL(0x150000)#define TCFG1 REGL(0x150004)#define TCON REGL(0x150
25、008)#define TCNTB0 REGL(0x15000c)#define TCMPB0 REGL(0x150010)#define TCNTO0 REGL(0x150014)#define TCNTB1 REGL(0x150018)#define TCMPB1 REGL(0x15001c)#define TCNTO1 REGL(0x150020)#define TCNTB2 REGL(0x150024)#define TCMPB2 REGL(0x150028)#define TCNTO2 REGL(0x15002c)#define TCNTB3 REGL(0x150030)#defin
26、e TCMPB3 REGL(0x150034)#define TCNTO3 REGL(0x150038)#define TCNTB4 REGL(0x15003c)#define TCMPB4 REGL(0x150040)#define TCNTO4 REGL(0x150044)#define TCNTB5 REGL(0x150048)#define TCNTO5 REGL(0x15004c)/*/* IIC Registers */*/#define IICCON REGL(0x160000)#define IICSTAT REGL(0x160004)#define IICADD REGL(0x160008)#define IIC
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2