




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学号学号 2013052108 论文题目 论文题目 基于基于 S3C2410S3C2410 处理器的处理器的 A DA D 转换转换 驱动程序设计驱动程序设计 课课 程 程 ARMARM 嵌入式嵌入式 LinuxLinux 系统开发与设计系统开发与设计 学学 院 院 信息工程学院信息工程学院 专专 业 业 计算机科学与技术计算机科学与技术 班班 级 级 20132013 级专升本班级专升本班 作者姓名 作者姓名 张清芸张清芸 1 目录目录 摘要 摘要 2 1 1 绪论绪论 2 1 1 设计目的 2 1 2 设计要求 2 2 2 系统总体方案系统总体方案 3 2 1 开发系统平台构建 3 2 2 系统开发流程 5 2 3 应用程序流程 5 2 4 Linux 操作系统及其常用命令 6 3 3 嵌入式操作系统嵌入式操作系统 A DA D 转换及工作原理转换及工作原理 7 3 1 A D 转换的实现及工作原理 7 3 2 实现程序的主要函数 8 4 4 vivi Linux 内核 内核 cramfs 文件系统的烧写文件系统的烧写 10 4 1 vivi 的烧写 10 4 3 烧写 cramfs 文件系统 11 5 5 交叉编译交叉编译 12 5 1 Makefile 文件编写 12 5 2 交叉编译的过程 12 6 6 程序源代码设计与调试程序源代码设计与调试 12 6 1 程序源代码设计 12 6 2 运行调试 13 7 7 总结总结 13 附录一 附录一 14 参考文献参考文献 27 2 基于基于 S3C2410S3C2410 处理器的处理器的 A DA D 转换驱动程序设计转换驱动程序设计 张清芸张清芸 信息工程学院信息工程学院 1313 级专升本班级专升本班 2013052108 2013052108 摘要 摘要 本文基于 S3C2410 处理器的开发板上 嵌入式 Linux 系统环境下 设计 A D 转 换器 实现模拟信号向数字信号的转化 对 vivi Linux 内核 cramfs 文件系统的烧写 交叉编译的一系列过程 分辨率反映 A D 转换器对输入微小变化响应的能力 通常用 数字输出最低位 LSB 所对应的模拟输入的电平值表示 具有很高的应用价值 关键字 关键字 S3C2410 处理器 cramfs 交叉编译 1 1 绪论绪论 1 11 1 设计目的设计目的 1 了解 PC 机模拟 Linux 环境下 嵌入式系统开发方法和流程 2 熟悉 Linux 平台使用技巧以及 Linux 环境操作命令 3 通过设计掌握 Linux 嵌入式系统 A D 转换器实验 以及相关程序代码的编写 1 21 2 设计要求设计要求 在 Samsung 公司 S3C2410 处理器的开发板上 嵌入式 Linux 系统环境下 设计 A D 转换器 实现模拟信号向数字信号的转化 在转化过程中需要的指标如下 1 分辨率 分辨率反映 A D 转换器对输入微小变化响应的能力 通常用数字输出最低位 LSB 所 对应的模拟输入的电平值表示 n 位 A D 能反应 1 2n满量程的模拟输入电平 由于 分辨率直接与转换器的位数有关 所以一般也可简单地用数字量的位数来表示分辨率 即 n 位二进制数 最低位所具有的权值 就是它的分辨率 值得注意的是 分辨率与精度是两个不同的概念 不要把两者相混淆 即使分辨 率很高 也可能由于温度漂移 线性度等原因 而使其精度不够高 2 精度 精度有绝对精度 Absolute Accuracy 和相对精度 Relative Accuracy 两种表示 方法 绝对误差 在一个转换器中 对应于一个数字量的实际模拟输入电压和理想的模拟输入电压 3 之差并非是一个常数 我们把它们之间的差的最大值 定义为 绝对误差 通常以数 字量的最小有效位 LSB 的分数值来表示绝对误差 例如 1LSB 等 绝对误差包括 量化误差和其它所有误差 相对误差 是指整个转换范围内 任一数字量所对应的模拟输入量的实际值与理论值之差 用模拟电压满量程的百分比表示 例如 满量程为 10V 10 位 A D 芯片 若其绝对精度为 1 2LSB 则其最小有效位 的量化单位 9 77mV 其绝对精度为 4 88mV 其相对精度为 0 048 转换时间 转换时间是指完成一次 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 设计过程中要求考虑以上因素 2 2 系统总体方案系统总体方案 2 12 1开发系统平台构建开发系统平台构建 4 2 1 12 1 1 开发平台硬件组成开发平台硬件组成 UP NETARM2410 S 核心模块资源 基于 ARM9 架构的嵌入式芯片 S3C2410 主频 202MHz 64MB SDRAM 64MB FLASH 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 的扩展插座 硬件可无限扩展 2 1 22 1 2 软件系统组成软件系统组成 5 提供完整的 Linux WinCE C OS II 操作系统移植 bootloader vivi 操作系统 linux 2 4 x 驱动程序 提供所有板级设备的驱动程序 2 22 2系统开发流程系统开发流程 图图 2 22 2 系统开发流程图系统开发流程图 2 32 3应用程序流程应用程序流程 6 图图 2 32 3 应用程序流程图应用程序流程图 2 42 4 LinuxLinux 操作系统及其常用命令操作系统及其常用命令 在所有的操作系统中 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 rf dir 删除当前目录下叫 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 图形有环境 7 shutdown h now 关闭计算机 reboot 重新启动计算机 扩展命令 tar 压缩 解压文件 解压文件 tar 文件 tar xf xxx tar gz 文件 tar xzvfxxx tar gz bz2 文件 tar xjvf xxx tar bz2 压缩文件 tar 文件 tar cf xxx tar path gz 文件 tar czvf xxx tar gz path bz2 文件 tar cjvf xxx tar bz2 path mount t ext2 dev hda1 mnt 把 dev hda1 装载到 mnt mount t iso9660 dev cdrom mnt cdrom 将光驱加载到 mnt cdrom mount t nfs 192 168 1 1 sharedir mnt 将 nfs 服务的共享目录 sharedir 加载到 mnt nfs umount dev hda1 将 dev hda1 设备卸载 设备必须处于空闲状态 ifconfig eth0 192 168 1 1 netmask 255 255 255 0 设置网卡 1 的地 址 192 168 1 1 掩码为 255 255 255 0 不写 netmask 参数则默认为 255 255 255 0 测试与 的连接 ping 202 96 128 68 测试与 IP 202 96 128 68 的连接 3 3 嵌入式操作系统嵌入式操作系统 A DA D 转换及工作原理转换及工作原理 3 13 1 A DA D 转换的实现及工作原理转换的实现及工作原理 逐次逼近型的 A D 转换器 逐次逼近型 也称逐位比较式 的 A D 转换器 应用比 积分型更为广泛 其原理框图如图所示 主要由逐次逼近寄存器 SAR D A 转换器 比较器以及时序和控制逻辑等部分组成 它的实质是逐次把设定的 SAR 寄存器中的数 字量经 D A 转换后得到电压 Vc 与待转换模拟电压 V 进行比较 比较时 先从 SAR 的最高位开始 逐次确定各位的数码应是 1 还是 0 其工作过程如下 8 转换前 先将 SAR 寄存器各位清零 转换开始时 控制逻辑电路先设定 SAR 寄 存器的最高位为 1 其余位为 0 此试探值经 D A 转换成电压 Vc 然后将 Vc 与模拟输入电压 Vx 比较 如果 Vx Vc 说明 SAR 最高位的 1 应予保留 如果 Vx下一步 选 是我已经连接了此硬件 下一步 选中 添加新的硬件设备 下一步 选中安装我手动从列表选 择的硬件 下一步 选择 显示所有设备 选择 从磁盘安装 浏览 指定 驱动为 C WINDOWS GIVEIO giveio inf 文件 点击确定 安装好驱动 在 d 盘新建一目录 bootloader 把 sjf2410 s 在 Linux V6 0 img flashvivi 目录下 和要烧写的 vivi 拷贝到该目录下 在程序 附件 msdos 下 进入该目录 运行 sjf2410 s 命令如下 sjf2410 s f vivi 在此后出现的三次要求输入参数 第一次是让选择 Flash 选 0 第二次 是选择 jtag 对 flash 的两种功能 也选 0 第三次是让选择起始地址 选 0 此后就等待大约 3 5 分钟的烧写时间 当 vivi 烧写完毕后选择参数 2 退出烧写 4 24 2 Linux 内核的烧写内核的烧写 11 复位 2410 s 进入 vivi vivi load flash kernel x 回车 当出现 Ready for downloading using xmodem 如图 图图 4 24 2 LinuxLinux 内核烧写内核烧写 点击超级终端任务栏上 传送 下拉菜单中的 发送文件 选择好镜像文件 zImage Enter 协议为 Xmodem 点击 发送 4 分钟左右 zImage 烧写完毕 4 34 3 烧写烧写 cramfs 文件系统文件系统 vivi load flash root x 回车 当出现 Ready for downloading using xmodem 如图 12 图图 4 34 3cramfscramfs 文件烧写文件烧写 点击超级终端任务栏上 传送 下拉菜单中的 发送文件 选择好镜像文件 root cramfs 协议为 Xmodem 点击 发送 7 分钟左右 root cramfs 烧写完毕 5 5 交叉编译交叉编译 5 15 1 Makefile 文件编写文件编写 Makefile 文件源代码如下 TOPDIR include TOPDIR Rules mak EXTRA LIBS lpthread EXEC INSTALL DIR ad ad OBJS main o all EXEC EXEC OBJS CC LDFLAGS o OBJS EXTRA LIBS EXP INSTALL EXEC INSTALL DIR clean rm f o a out ad gdb 13 5 25 2 交叉编译的过程交叉编译的过程 进入 arm2410s exp basic 04 ad 目录 使用 vi 编辑器或其他编辑器阅读理解源代 码 运行 make 生成 ad 可执行文件 6 6 程序源代码设计与调试程序源代码设计与调试 6 16 1 程序源代码设计程序源代码设计 程序代码详见附录一 6 26 2 运行调试运行调试 换到 minicom 终端窗口 使用 NFS mount 开发主机的 arm2410s 到 mnt 目录 7 7 总结总结 通过本论文的写述过程 我熟悉了整个嵌入式系统构建的基本流程 并通过本论 文设计学会了在虚拟机环境下建立 Linux 操作系统与编程环境 通过代码的编写 初 步了解了嵌入式驱动函数的基本书写规律以及如何实现与用户层的接口 同时 我们 还学习到了硬件如何实现用代码的转化 可谓收益匪浅 学习嵌入式的道路很漫长 我们不能通过一篇论文就能有很好的了解与掌握 只能通过不断的 努力与学习 积累更多的经验 才能收获更多 14 附录一 附录一 程序代码 Samsung S3C44B0 tpu ifndef ASM ARCH HARDWARE H define ASM ARCH HARDWARE H define REGBASE0 x01c00000 define REGL addr volatile unsigned int REGBASE addr define REGW addr volatile unsigned short REGBASE addr define REGB addr volatile unsigned char REGBASE addr CPU Wrapper Registers 15 define SYSCFGREGL 0 x000000 define NCACHBE0REGL 0 x000004 define NCACHBE1REGL 0 x000008 define SBUSCONREGL 0 x040000 Memory Controller Registers define BWSCONREGL 0 x080000 define BANKCON0REGL 0 x080004 define BANKCON1REGL 0 x080008 define BANKCON2REGL 0 x08000c define BANKCON3REGL 0 x080010 define BANKCON4REGL 0 x080014 define BANKCON5REGL 0 x080018 define BANKCON6REGL 0 x08001c define BANKCON7REGL 0 x080020 define REFRESHREGL 0 x080024 define BANKSIZEREGL 0 x080028 define MRSRB6REGL 0 x08002c define MRSRB7REGL 0 x080030 UART Registers define ULCON0REGL 0 x100000 define ULCON1REGL 0 x104000 define UCON0REGL 0 x100004 define UCON1REGL 0 x104004 define UFCON0REGL 0 x100008 define UFCON1REGL 0 x104008 define UMCON0REGL 0 x10000c 16 define UMCON1REGL 0 x10400c define UTRSTAT0REGL 0 x100010 define UTRSTAT1REGL 0 x104010 define UERSTAT0REGL 0 x100014 define UERSTAT1REGL 0 x104014 define UFSTAT0REGL 0 x100018 define UFSTAT1REGL 0 x104018 define UMSTAT0REGL 0 x10001c define UMSTAT1REGL 0 x10401c define UTXH0REGB 0 x100020 define UTXH1REGB 0 x104020 define URXH0REGB 0 x100024 define URXH1REGB 0 x104024 define UBRDIV0REGL 0 x100028 define UBRDIV1REGL 0 x104028 SIO Registers define SIOCONREGL 0 x114000 define SIODATREGL 0 x114004 define SBRDRREGL 0 x114008 define ITVCNTREGL 0 x11400c define DCNTZREGL 0 x114010 IIS Registers define IISCONREGL 0 x118000 define IISMODREGL 0 x118004 define IISPSRREGL 0 x118008 define IISFIFCONREGL 0 x11800c 17 define IISFIFREGW 0 x118010 I O Ports Registers define PCONAREGL 0 x120000 define PDATAREGL 0 x120004 define PCONBREGL 0 x120008 define PDATBREGL 0 x12000c define PCONCREGL 0 x120010 define PDATCREGL 0 x120014 define PUPCREGL 0 x120018 define PCONDREGL 0 x12001c define PDATDREGL 0 x120020 define PUPDREGL 0 x120024 define PCONEREGL 0 x120028 define PDATEREGL 0 x12002c define PUPEREGL 0 x120030 define PCONFREGL 0 x120034 define PDATFREGL 0 x120038 define PUPFREGL 0 x12003c define PCONGREGL 0 x120040 define PDATGREGL 0 x120044 define PUPGREGL 0 x120048 define SPUCRREGL 0 x12004c define EXTINTREGL 0 x120050 define EXTINPNDREGL 0 x120054 WatchDog Timers Registers define WTCONREGL 0 x130000 18 define WTDATREGL 0 x130004 define WTCNTREGL 0 x130008 A D Converter Registers define ADCCONREGL 0 x140000 define ADCPSRREGL 0 x140004 define ADCDATREGL 0 x140008 PWM Timer Registers define TCFG0REGL 0 x150000 define TCFG1REGL 0 x150004 define TCONREGL 0 x150008 define TCNTB0REGL 0 x15000c define TCMPB0REGL 0 x150010 define TCNTO0REGL 0 x150014 define TCNTB1REGL 0 x150018 define TCMPB1REGL 0 x15001c define TCNTO1REGL 0 x150020 define TCNTB2REGL 0 x150024 define TCMPB2REGL 0 x150028 define TCNTO2REGL 0 x15002c define TCNTB3REGL 0 x150030 define TCMPB3REGL 0 x150034 define TCNTO3REGL 0 x150038 define TCNTB4REGL 0 x15003c define TCMPB4REGL 0 x150040 define TCNTO4REGL 0 x150044 define TCNTB5REGL 0 x150048 19 define TCNTO5REGL 0 x15004c IIC Registers define IICCONREGL 0 x160000 define IICSTATREGL 0 x160004 define IICADDREGL 0 x160008 define IICDSREGL 0 x16000c RTC Registers define RTCCONREGB 0 x170040 define RTCALMREGB 0 x170050 define ALMSECREGB 0 x170054 define ALMMINREGB 0 x170058 define ALMHOURREGB 0 x17005c define ALMDAYREGB 0 x170060 define ALMMONREGB 0 x170064 define ALMYEARREGB 0 x170068 define RTCRSTREGB 0 x17006c define BCDSECREGB 0 x170070 define BCDMINREGB 0 x170074 define BCDHOURREGB 0 x170078 define BCDDAYREGB 0 x17007c define BCDDATEREGB 0 x170080 define BCDMONREGB 0 x170084 define BCDYEARREGB 0 x170088 define TICINTREGB 0 x17008c Clock static int init ADdevice void 23 if adc fd open ADC DEV O RDWR 0 printf Error opening s adc device n ADC DEV return 1 static int GetADresult int channel int PRESCALE 0XFF int data ADC WRITE channel PRESCALE write adc fd read adc fd return data static int stop 0 static void comMonitor void data getchar stop 1 return NULL int main void int i float d pthread t th com void retval set s3c44b0 AD register and start AD if init ADdevice 0 return 1 24 Create the threads pthread create printf nPress Enter key exit n while stop 0 for i 0 i 2 i 采样 0 2 路 A D 值 d float GetADresult i 3 3 1024 0 printf a d 8 4f t i d usleep 1 printf r Wait until producer and consumer finish pthread join th com printf n return 0 s3c2410 adc h ifndef S3C2410 ADC H define S3C2410 ADC H define ADC WRITE ch prescale ch 16 0 x7 define ADC WRITE GETPRE data data 0 xff endif S3C2410 ADC H s3c2410 h chip h define ADC CTL BASE0 x58000000 define bADC CTL Nb REG ADC CTL BASE Nb Offset define oADCCON0 x00 R W ADC control register define oADCTSC0 x04 R W ADC touch screen ctl reg define oADCDLY0 x08 R W ADC start or interval delay reg 25 define oADCDAT00 x0c R ADC conversion data reg define oADCDAT10 x10 R ADC conversion data reg define ADCCONbADC CTL oADCCON define ADCTSCbADC CTL oADCTSC define ADCDLYbADC CTL oADCDLY define ADCDAT0bADC CTL oADCDAT0 define ADCDAT1bADC CTL oADCDAT1 define fADCCON PRSCVLFld 8 6 define fADCCON INPUTFld 3 3 define fTSC XY PSTFld 2 0 define fADC DELAYFld 6 0 define fDAT UPDOWNFld 1 15 define fDAT AUTO PSTFld 1 14 define fDAT XY PSTFld 2 12 define fDAT XPDATAFld 10 0 define fDAT YPDATAFld 10 0 define ADC IN0 0 define ADC IN1 1 define ADC IN2 2 define ADC IN3 3 define ADC IN4 4 define ADC IN5 5 define ADC IN6 6 define ADC IN7 7 define ADC BUSY1 define ADC READY0 define NOP MODE0 define X AXIS MODE1 define Y AXIS MODE2 define WAIT INT MODE3 26 define ADCCON ECFLG 1 15 define PRESCALE ENDIS 1 14 define PRESCALE DIS PRESCALE ENDIS 0 define PR
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年深海矿产资源勘探技术深海矿产资源勘探技术装备研发与培训与考核报告
- 2025年航空货运市场格局分析与发展战略研究报告
- 篮球场合同合作合同范本
- 粪肥运输合同协议书模板
- 电池置换合同协议书模板
- 门窗厂投资入股合同范本
- 生产经营权转让合同范本
- 精装房装修出租合同范本
- 高标农田服务协议书模板
- 江苏叉烧酱采购合同范本
- 2025-2030中国多西他赛行业市场深度调研及发展趋势与投资前景预测研究报告
- 林地赠予合同协议
- 以患者为中心的数字化肿瘤科管理平台建设
- 员工招聘录用流程图(完整版)
- 散装食品销售管理制度
- 论船舶代理人无单放货的法律责任与风险防控
- CNAS-CC190-2021 能源管理体系认证机构要求
- 电气类实验室安全培训
- 2025年上半年中国南水北调集团新能源投资限公司抽水蓄能项目岗位公开招聘易考易错模拟试题(共500题)试卷后附参考答案
- 船舶修理行业专业实践操作规范
- 消毒隔离知识培训内容
评论
0/150
提交评论