毕设-基于arm的数据采集系统的设计内容摘要:

作系统镜像存放在外部的 Nand Flash中,并从 Nand Flash启动,当处理器在这种模式下开电复位时,内置的 Nand Flash将访问接口控制器并引导代码自动加载到内部 SRAM并且运行。 之后 SRAM中的引导程序将操作系统镜像加载到SDRAM中运行。 启动后释放 4KB的 SRAM,以便用于其他用途。 mini2440 开发板的接口资源 硬件资源特性 [3]  CPU处理器: 三星 S3C2440A,主频 400MHz,最高 可达 533Mhz;  SDRAM内存:在板 64M SDRAM, 32bit数据总线 , SDRAM时钟频率高达 100MHz; 基于 ARM 的数据采集系统的设计 –4–  Flash存储 ; 在板 256M/1GB Nand Flash,掉电非易失 (用户可定制 )64M/128M/256M/512M/1G在板 2M Nor Flash,掉电非易失,已经安装 BIOS;  LCD显示板上集成 4线电阻式触摸屏接口,可以直接连接四线电阻触摸屏 , 标准配置为统宝 真彩 LCD,分别率 240x320,带触摸屏; 接口资源及时钟特点  1个 100M以太网 RJ45接口 (采用 DM9000网络芯片 );  3个串行口 ;  1 个 主 USB接口 ;  1 个 从 USB B型接口 ;  1 个 SD卡存储接口 ;  1个 立体声音频输出接口,一路 语音输入 接口;  1个 10针 JTAG接口 ;  4个 User Led;  6组 USER buttons;  1个 PWM控制蜂鸣器 ;  1个 可变 电阻 器 ,用于 对 AD模数转换 进行 测试 ;  1个 I2C总线 AT24C08芯片,用于 对 I2C总线 进行 测试 ;  1个 20引脚 摄像头接口 ;  电源接口 (5V),带电源开关和指示灯 ;  1个 34引脚 ;  1个 40引脚 ;  12M无源晶振 ;  内部实时时钟(带后备锂电池 ); 基于 mini2440 的开发环境的搭建 搭建嵌入式交叉开发环境 嵌入式系统的开发一般采用“宿主机 目标机”交叉开发方式 [4]。 首先,利用宿主上丰富的资源以及良好的开发环境来进行开发和仿真目标机上的软件, 再 通过 HJTAG口,UTAR 口或者是以太网接口将生成的代码下载到目标 机上 进行运行。 本设计宿主机主要是使用装有 RedHat5 企业版 Linux 操作系统的 PC 机,而目标机就是 mini2440 开发板。 组成架构如图 所示。 基于 ARM 的数据采集系统的设计 –5– 宿 主 机P C 机目 标 机M i n i 2 4 4 0 开 发 板串 口 、 以 太 网 接 口 、 U S B 接 口 图 嵌入式开发交叉环境构架 在调试阶段会用到 NFS(虚拟文件系统) 方式挂载根文件系统,所以要设置好 NFS服务器,具体设置如下: (1) 设置共享目录: 运行命令 vi /etc/exports 编辑 NFS 服务的配置文件 (注意: 第一次 用 vi 打开时该文件 是没有内容的 ),添加 如下 内容: /opt/FriendlyARM/mini2440/root_qtopia *(rw,sync,no_root_squash) 其中: /opt/FriendlyARM/mini2440/root_qtopia 表示 NFS 共享目录 , 它可以 表示 同开发宿主机共享目录 root_qtopia 作为开发板的根文件系统通过 NFS 挂 载 ; *表示所有的客户 端 都可以挂 载 此目录; rw 表示挂接此目录的客户 端 对该目录有读写的权力; no_root_squash 表示允许挂接此目录的客户 端 享有 和主机 root 一样的权力 ; 通过命令启动和 停止 NFS 服务 : (2) 运行命令: /etc/ mount t nfs localhost: /opt/FriendlyARM/mini2440/rootfs_qtopia /mnt/ /opt/FriendlyARM/mini2440/rootfs_qtopia。 使用这个命令可以停止 nfs 服务: /etc/ 嵌入式开发的软件环境 本小节将解压安装开发学习过程所用到的全部源代码以及其他一些小工具,这包括:  Linux内核源代码; 基于 ARM 的数据采集系统的设计 –6–  嵌入式图形界面 源代码 (分为 x86和 arm平台两个版本 );  ;  Linux编程示例源代码;  用以启动 Linux的 bootloader之 vboot;  其他开源的 bootloader(适用于 Linux)  其他开源软件源代码 ;  目标文件系统映象制作工具 mkyaffsimage;  图形界面的 Linux logo制作工具 logomaker; 基于 ARM 的数据采集系统的设计 –7– 3 DS18B20 驱动 系统硬件整体设计 由于 DS18B20 是单总线数字器件, 同时 mini2440 提供了丰富的 I/O 接口资源 ; 另外, DS18B20 器件的供电范围是 ~, mini2440 开发板的 I/O 接口电压 是 ,所以也不存在电平不兼容的问题。 综合以上 可知 使用 mini2440 开发板结合 DS18B20 做温度采集系统 理论上行得通。 本设计硬件系统方面比较简单,系主要由两大部分组成:一是系统控制部分,二是温度采集部分。 其中系统控制部分又包括以下几个部分:处理器、复位模块、显示模块、外部接口模块等四大部分组成。 而温度采集本分主要由 DS18B20 电路组成。 具体组成如图 所示。 C P U 及 存储 器显 示 模 块复 位 模 块测 温 模 块其 他 接 口I / O 接 口 图 DS18B20 驱动的编写 硬件驱动大体可以分为一下几类:网络接口驱动,字符设备驱动,块设备驱动 [5]。 字符设备是指按字节来访问的设备,字符驱动就负责驱动字符设备,这样的驱动通常实现 read、 write、 open、和 close 的调用。 块设备是指按多数目字节进行访问的设备,该设备与字符设备的区别在于与内核的接口不同。 进行网络数据访问的接口设备就叫做网络接口设备 ,它一般通过套接字来实现。 Linux 用户一般是通过 操 作 设备文件来访问和操作各种设备的, 本设计 可以通过图 有一个深刻的认识。 所以用户想要使用 DS18B20 进行温度采集时,只需要对设备文基于 ARM 的数据采集系统的设计 –8– 件 ds18b20 进行打开、控制、读、写、关闭等一系列操作就可以控制 DS18B20 进行温度采集,这也是顶层应用文件如何使用底层驱动的一个实例。 在设备描述中设备号是起着非常重要的中用作用,设备号又分为主次设备号。 设备号使得设备文件和驱动程序之间建立起对应关系,其中,主设备号是用来区分不同种类设备,而此设备号是用来区分同类不同设备。 应 用 程 序字 符 设 备 文 件文 件 系 统块 设 备 文 件套 接 字字 符 设 备 驱 动 块 设 备 驱 动协 议 栈网 络 设 备 驱 动字 符 设 备 块 设 备 网 络 设 备 图 Linux用户对各类设备的访问流程 在字符设备中存在一种特殊的字符设备 混杂设备,这类设备的主设备号都是 10,次设备 号 通过函数调用可已进行动态分配。 本设计 DS18B20 的驱动就被划归为字符设备中的混杂设备。 Linux 中使用 misc_registes, misc_deregister 来注册和注销设备 truct miscdevice 来描述一个混杂设备: struct miscdevice { int minor。 const char *name。 const struct file_operations *fops。 struct list_head list。 struct device *parent。 struct device *this_device。 }。 misc 设备注册: int misc_register(struct miscdevice * misc)。 //注册设备获取次设备号 基于 ARM 的数据采集系统的设计 –9– misc 设备注销: int misc_deregister(struct miscdevice * misc)。 说明:上面的结构体是注册 混合设备所需要的参数。 主要有: minor:次设备号,所有的 misc 设备共用一个主设备号,所以注册 misc 设备时只要次设备号就可以了。 利用次设备号来区分设备的。 name:misc 设备名。 *fops:misc 设备文件操作结构体 , 其它三个参数很少 使用。 数据采集电路 DS18B20 简介 [6] 本设计使用于由美国达拉斯公司设计生产的单总线结构的温度传感器 DS18B20。 起初达拉斯公司也生产过一种温度传感器 DS1820, DS18B20 继承 DS1820 一些特性并经过改进提升成为新一代数字单总线 智能温度传感器。 而相对于传统的热敏电阻,它可以直接读取测量温度值,并可以根据实际需要编程实现 9 到 12 位的数字值读数方式,并在很短的时间内完成 9 和 12 位数字值的转换,同时,信息的传输仅仅需要一条总线,实现了理论上的单总线传输,这样就大大节约了主系统的接口资源。 实现温度的 9 和 12位数字值的转换需要消耗一定的功率,而这些功率都是由单总线来提供的,也可连接DS18B20 的总线供电,因此不需要额外的电源供应,这种设计大大减少 I/O 资源。 因而使用 DS18B20 可以使系统结构变得简单,稳定,可靠性高。 而其简单的结构,单总 线结构和经济实用的特点,很容易实现多点温度采集。 DS18B20 的传感器测量温度范围55℃ 〜 +125℃,在 10〜 +85℃范围内。 测量场的温度值直接通过数字单总线传输,用符号扩展的 16 位数字量方式串行输出,在此基础上就大大提高了系统的抗干扰能力。 因此,数字单总线器件 DS18B20 可应用的场合十分广泛。 DS18B20 可广泛应用于工业,民用,军事和教学等 领域内的温度测量以及温度测量和控制仪表设备的生产。 图 DS18B20实物图 基于 ARM 的数据采集系统的设计 –10– DS18B20 性能指标  单 总 线接口方式: DS18B20 与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20 的双向通讯;  可用数据线供电,电压范围: +~ +,所以该长安其与开发板 I/O口电平不兼容问题 ;  测温范围: 55 ~+125℃ ,基本 适应于 各种环境温度 的 测量 ;  温度读取方式: 通过编程 控制 可 以 实现 9~12 位的数字读数方式 选择 ;  用户可 通过编程 自设定非易失性的报警上下限值 ,实现温度预警 ;  DS18B20可以 实现多点测温 ,很容易实现温度测量网络 ;  负压特性 : 电源极性接反时 ,由于在在电源和地之间加了一个二极管,所以 温度计不会因发热而烧 毁。 测温接口电路及工作时序 (1) 测温模块的硬件电路如下图 123J7DS18B20VCCGND4K7R3Res2VCCT0 图 DS18B20电路图 (2) DS18B20 的时序 DS18B20 的时序主要包括两个方面:一是 DS18B20 的复位时序,在系统发出复位时序后, DS18B20 会发出才能在信号,具体如图 所示;二是 DS18B20 读写时序,具体如图 所示。 基于 ARM 的数据采集系统的设计 –11– 图 DS18B20的复位时序和存在信号 图 DS18B20的读写时序 DS18B20 驱动编写 读 DS18B20 这部分程序主要是实现开发板从 DS18B20 读一个字节的数据。 在函数内部主要是实现对读 DS18B20 读时序的描述,并通过 copy_to_user(buff, amp。 ddat, size)把数据拷贝到用户数据空间。 基于 ARM 的数据采集系统的设计 –12– static ssize_t ds18b20_read(struct file *filp, char __user *buff, size_t count, loff_t *offp) { volatile int i, size=count。 char ddat。 if (size 2) size = 1。 for (i=0。 i8。 i++) { ddat = 1。 s3c2410_gpio_cfgpin(DSDATA, DATAOUTP)。 //配置数据总线( GPF0)为输出模式 s3c。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。