




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、摘摘 要要 随着社会经济和科学技术的发展,嵌入式技术的应用越来越多走进人们的生活, 由于 linux 具有对各种设备的广泛支持性,因此,能方便地应用于机顶盒、ia 设 备、pda、掌上电脑、wap 手机、车载盒以及工业控制等智能信息产品中。与 pc 相比,手持设备、ia 设备以及信息家电的市场容量要高得多,而 linux 嵌入式系 统的强大的生命力和利用价值,使越来越多的企业和高校表现出对它极大的研发热 情。图像采集及无线通信技术是两大相当关键的应用门类,在各种场合的应用都相 当广泛,因此,我们通过开发一个智能小车,采用 s3c2440 核心板,l298n 作为 电机驱动,用摄像头实现图像采集
2、,wifi 无线网卡实现数据传输,使其能够沿着轨 道寻迹,同时实施图像采集,把图像传输到后台服务器,达到以应用嵌入式 linux 操作系统平台来建立一个实现远程寻物模型,便于查找物品,尤其适合在大型仓储 中应用,同时也能够对整个仓库进行监控,实现安全管理。 关键词:关键词:嵌入式系统 无线通信 arm 图像采集 目录 摘摘 要要.i 第一章第一章 绪论绪论.1 1.1 设计背景.1 1.2 嵌入式 linux发展现状及趋势.1 1.3 方案论证.2 1.4 采用的基本设计思路和要实现的基本功能.3 第二章第二章 嵌入式嵌入式 linux 应用应用.4 2.1 嵌入式 linux开发环境建立.4
3、 2.2u-boot的移植.4 2.2.1u-boot 简介 .4 2.2.2u-boot 目录结构 .5 2.2.3 主要功能.5 2.2.4 移植 u-boot .5 2.3linux内核移植.8 2.3.1 配置 linux 内核.8 2.3.2 网卡驱动添加.9 第三章第三章 系统硬件设计系统硬件设计.12 3.1 控制主板.12 3.2 电源电路的设计与分析.14 3.3 驱动电路的设计与分析.15 3.3.1 电机驱动电路的设计与分析.15 3.3.2 光电隔离电路的设计与分析.15 3.3.3 光耦光电管驱动电路设计与分析.16 3.3.4 码盘测速接口电路设计与分析.16 3.
4、4 寻迹电路设计与分析.17 3.4.1 红外发射与接收管的基本工作原理.17 3.4.2 红外寻迹电路板的整体分布与抗干扰设计.17 3.4.3 红外寻迹板的基本工作原理.18 第四章第四章 系统软件设计系统软件设计.20 4.1 主程序的设计.20 4.2 寻迹算法.20 4.3 红外传感器驱动的设计.23 4.4pwm 驱动的设计.23 4.5 无线通信的设计.23 4.5.1 上位机程序.24 4.5.2 下位机程序.24 第五章第五章 系统测试系统测试.26 5.1 测试环境.26 5.1.1 跑道图介绍.26 5.1.2 寻迹过程说明.26 5.2 通信测试.27 5.2.1 图像
5、采集测试.27 5.2.2 系统软件测试.28 5.3 测试问题及解决办法.30 第六章第六章 总结与展望总结与展望.31 6.1 总结.31 6.2 展望.32 致致 谢谢.33 参考文献参考文献.34 第第一一章章绪绪论论 1.1设计背景设计背景 2010 年 4 月,为促进校企合作,引导企业参与赛项设计、提供技术支持和后 援保障,推动工学结合人才培养模式的改革与创新,引导高职教育在嵌入式技术高 速发展背景下的相应专业领域的教学改革与专业调整,检验高职学生在嵌入式技术 应用方面的职业能力以及质量、效率、成本和安全意识。全国职业院校技能大赛组 委会决定将“嵌入式产品开发”作为竞赛项目之一。
6、1.2嵌入式嵌入式 linux 发展现状及趋势发展现状及趋势 关于嵌入式系统(embedded systems)的定义:以应用为中心、以计算机技术为 基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要 求的专用计算机系统。举例来说,大到油田的集散控制系统和工厂流水线,小到家 用 vcd 机或手机,甚至组成普通 pc 终端设备的键盘、鼠标、软驱、硬盘、显示 卡、显示器、modem、网卡、声卡等均是由嵌入式处理器控制的,嵌入式系统市场 的深度和广度,由此可见一斑。尽管如此,它的市场价值也许仍然超过了您的想象: 今天,嵌入式系统带来的工业年产值已超过了 1 万亿美元。 自由开源
7、软件在嵌入式应用上受到青睐,linux 日益成为主流的嵌入式操作系 统之一。随着 motorola 手机 a760、ibm 智能型手表 watch pad、sharppda、zaurus 等一款款高性能“智能数码产品”的出现,以及 motorola、samsung、montavista、philips、nokia、ibm、sun 等众多国际巨头的 加入,嵌入式 linux 的队伍越来越庞大了。目前不少大学、研究机构和知名公司加 入了嵌入式 linux 的开发工作,成熟的嵌入式 linux 产品不断涌现。 2004 年全球嵌入式 linux 市场规模已达 9150 万美元,2005 年有 1.3
8、36 亿美元, 2006 年有 1.633 亿美元,2007 年已达 2.011 亿美元,每年平均增长 30%。 一个完整的系统,当然要包括硬件和软件两个部分,这就好像必须要有丈夫和 妻子,才能组成一个完整的家庭。尽管嵌入式系统有着无比广阔的市场需求和发展 前景,但嵌入式系统的发展,多年来却经历了一个比相对后期产生的个人计算机 (pc)更为曲折和痛苦的历程。随着微处理器的产生,价格低廉、结构小巧的 cpu 和外设连接提供了稳定可靠的硬件架构,那么限制嵌入式系统发展的瓶颈,就突出 表现在了软件方面。尽管从八十年代末开始,陆续出现了一些嵌入式操作系统,比 较著名的有 vxwork、psos、nec
9、uleus 和 windowss ce,但仍然有大量的嵌入式系 统摒弃操作系统于不顾,而仅仅包括一些控制流程。当然,我们可以说在嵌入式系 统相对简单的情况下,这些控制流程足以应付。但是,当嵌入式系统的功能复杂后, 也就是说需要提供更完善的服务的时候,简单控制逻辑就不够用了。毋庸置疑,对 于任何一个产品来说,服务的内容和质量,都是价值的源泉和生存的基础。我们不 妨做一个夸张而又通俗的比喻,也许雇一个保姆,能够解决生活的一部分后顾之忧, 但一个真正意义上的家庭,必须需要一位妻子。那么是什么造成嵌入式系统领域大 量的黄金、钻石王老五至今孑然一身呢?特殊的人才有特殊的需求,显然我们需要 的是一个身材苗
10、条、容貌姣好、身体健康、聪慧善良、上得厅堂下得厨房,甚至不 向我们的工资袋多看一眼的贤内助,也就是说,嵌入式系统需要的是一套高度简练、 友善界面、质量可靠、应用广泛、易开发、多任务,并且价格低廉的操作系统。 人们可以发现,以上所说的要求简直就是在形容 linux。更为令人心动的是, 除上述优点之外,linux 与生俱来的优秀网络血统,更为今后的发展铺平了一条宽 广平坦的大路。这里的网络,并不仅仅指 internet,关于 linux 在 internet 中的优势, 将需要专门著文论述,这里仅仅提醒大家注意的是另一个也许可以说较 internet 更 为广阔的市场:家庭网络。尽管全世界每分每秒
11、都有成千上万的优秀软件工程师致 力于将个人电脑(pc)的操作系统变得更加简单易用,但令人遗憾的是,对某些特定 的年龄和社会阶层的人群来说,要想开启精彩的网络世界大门,依然有一道难以逾 越的门槛。事实就是社会上关于个人电脑的普及班和书籍依然铺天盖地,而我们却 从未听说过关于操作电视或者空调的培训。linux 系统和嵌入式设备的结合,无 疑将会对智能住宅及数字家电事业,注入无限澎湃的动力。这并不是什么超前的设 想,许多具有高前瞻性的企业,已经从研发阶段过渡到生产阶段,推出了多姿多彩 的嵌入式 linux 操作系统的 pda、相机、或者更为概念化的咨讯家电。如推出全 球最小的嵌入式操作系统内核夸克(
12、quark),而闻名于世的网虎国际(xlinux), 已与 intel 成功合作,将夸克应用于 intel 去年推出的 strongarm 芯片上。人们可以 在这一平台上享受上网和听 mp3 的乐趣。而据我所知, linus 本人在归家的途 中已经在利用手机指令家中的咖啡壶为自己准备咖啡了。 1.3方案论证方案论证 基于嵌入式 linux 智能小车基本组成是: 1)主控模块主要采用三星公司的 s3c2440 作为主控芯片,它是一种低功耗, 32 位 arm9 处理器,具有强大的嵌入式操作系统运行能力,并具有丰富的外设接 口,核心板下面是扩展 mcu 外围部件的一块电路板,包括 sd 卡接口、u
13、sb 接口、 多媒体(扬声器和话筒等)接口、网卡接口、摄像头接口、串行通信接口、lcd 液晶显示接口、按键和 led 指示接口、i2c 和 spi 接口、gpio 接口、实时时钟电 源和系统总线扩展口等。 2)光电隔离接口驱动模块负责对整个机器人的供电系统进行控制,采用两组 电源,一组用于驱动电机运转,另一组用于 mcu 系统及接口电路供电,当两组之 间的器件需要信号传输的,可以有效的通过光电隔离进行,从而可靠的防止信号串 扰,避免因电机运转产生的强电磁波通过线路产生干扰。 3)该模块还实现将 arm 发出的驱动信号通过光电隔离传送到电机驱动芯片 上,从而控制四只直流电机的运转和停止。具体的,
14、可控制直流电机转动方向、速 度(脉冲宽度控制,简称 pwm) 4)机器人摄像头接口模块,该模块实现对 arm 和摄像头之间的信号进行传 输。一方面,arm 通过该板下达对摄像头的采集命令;另一方面 arm 板通过元 线网卡把采集到的图像传到上位机上,以便实时观察仓库中的物品。 1.4 采用的基本设计思路和要实现的基本功能 1)利用光电循迹技术,编程获取轨道信息,控制嵌入式智能小车能在轨道上 前进、后退、左转和右转。 2)当光电循迹板检测到特定的停止位置信息后,通过 gpio 接口,将停止信 息传送给 arm,arm 立即下达命令停止直流电机运转,使嵌入式智能小车在规定 的标记点上停止。 3)小
15、车将停止点的信息用摄像头把实时图像用无线网卡传送到后台服务器, 服务器根据图像特征再给小车发送下一步运行指令。 (应应该该是是奇奇数数页页开开始始 ) 第第二二章章嵌嵌入入式式 linux 应应用用 2.1 嵌入式嵌入式 linux 开发环境建立开发环境建立 通过运用 crosstool-0.43.tar.gz 脚本工具包来制作自己的交叉编译器。并且此编 译器能够编译 u-boot-1.3.4,linux-2.6.14 内核。本实验旨在让读者学会一种编译制 作交叉编译器的方法。在实际开发中,大多根据编译目标,选择一些编译好的、经 过测试的交叉编译器。 crosstool 是由美国人 dan k
16、egel(毕业于加(利福尼亚)州工学院)开发的一套可 以自动编译不同匹配版本 gcc 和 glibc,并作测试的脚本程序。下载地址: http:/ 在 http:/ cpu 和 gcc+glibc 版本,哪些已经编译成功,哪些部分成功,哪些彻底失败。 制作之前确保你的系统中已经安装了下面的工具包:bison,flex,build- essential。如果系统没有这些软件包,必须进行安装。在 ubuntu 发行版中,使用 apt-get 命令即可非常方便的进行安装。 安装方法: 一、ubuntu 系统中可以使用超级用户(root) ,调用 apt-get 命令 #apt-get d insta
17、ll flex 二、可以使用 dpkg 命令安装已经下载的软件包 如:我们将下载包放到 /home/linux/downloads/下,可以使用如下命令安装 flex。 2.2u-boot 的移植的移植 2.2.1u-boot 简介简介 u-boot 不仅仅支持嵌入式 linux 系统的引导,当前,它还支持 netbsd, vxworks, qnx, rtems, artos, lynxos 嵌入式操作系统。其目前要支 持的目标操作系统是 openbsd, netbsd, freebsd,4.4bsd, linux, svr4, esix, solaris, irix, sco, dell,
18、ncr, vxworks, lynxos, psos, qnx, rtems, artos。这是 u-boot 中 universal 的一层含义,另外 一层含义则是 u-boot 除了支持 powerpc 系列的处理器外,还能支持 mips、 x86、arm、nios、xscale 等诸多常用系列的处理器。这两个特点正是 u-boot 项 目的开发目标,即支持尽可能多的嵌入式处理器和嵌入式操作系统。就目前来看, u-boot 对 powerpc 系列处理器支持最为丰富,对 linux 的支持最完善。其它系列 的处理器和操作系统基本是在 2002 年 11 月 ppcboot 改名为 u-bo
19、ot 后逐步扩充 的。从 ppcboot 向 u-boot 的顺利过渡,很大程度上归功于 u-boot 的维护人德国 denx 软件工程中心 wolfgang denk以下简称 w.d本人精湛专业水平和持着不懈 的努力。当前,u-boot 项目正在他的领军之下,众多有志于开放源码 boot loader 移植工作的嵌入式开发人员正如火如荼地将各个不同系列嵌入式处理器 的移植工作不断展开和深入,以支持更多的嵌入式操作系统的装载与引导。 2.2.2u-boot 目录结构目录结构 * board 目标板相关文件,主要包含 sdram、flash 驱动; * common 独立于处理器体系结构的通用代
20、码,如内存大小探测与故障检测; * cpu 与处理器相关的文件。如 mpc8xx 子目录下含串口、网口、lcd 驱动及 中断初始化等文件; * driver 通用设备驱动,如 cfi flash 驱动(目前对 intel flash 支持较好) * doc u-boot 的说明文档; * examples 可在 u-boot 下运行的示例程序;如 hello_world.c,timer.c; * include u-boot 头文件;尤其 configs 子目录下与目标板相关的配置头文件是 移植过程中经常要修改的文件; * lib_xxx 处理器体系相关的文件,如 lib_ppc, lib_a
21、rm 目录分别包含与 powerpc、arm 体系结构相关的文件; * net 与网络功能相关的文件目录,如 bootp,nfs,tftp; * post 上电自检文件目录。尚有待于进一步完善; * rtc rtc 驱动程序; * tools 用于创建 u-boot s-record 和 bin 镜像文件的工具。 2.2.3 主要功能主要功能 * 系统引导 支持 nfs 挂载、ramdisk(压缩或非压缩)形式的根文件系统 * 支持 nfs 挂载、从 flash 中引导压缩或非压缩系统内核; * 基本辅助功能 强大的操作系统接口功能;可灵活设置、传递多个关键参数 给操作系统,适合系统在不同开发
22、阶段的调试要求与产品发布,尤以 linux 支持最 为强劲; * 支持目标板环境参数多种存储方式,如 flash、nvram、eeprom; * crc32 校验,可校验 flash 中内核、ramdisk 镜像文件是否完好; * 设备驱动 串口、sdram、flash、以太网、lcd、nvram、eeprom、 键盘、usb、pcmcia、pci、rtc 等驱动支持; * 上电自检功能 sdram、flash 大小自动检测;sdram 故障检测;cpu 型号; * 特殊功能 xip 内核引导。 2.2.4 移植移植 u-boot 建立自己的平台类型 (1)解压文件 #tar jxvf u-b
23、oot-1.3.4.tar.bz2 (2)进入 u-boot 源码目录 #cd u-boot-1.3.4 (3)创建自己的开发板: #cd board #cp smdk2410 qq2440 a #cd qq2440 #mv smdk2410.c qq2440.c #vi makefile (将 smdk2410 修改为 qq2440) #cd ././include/configs #cp smdk2410.h qq2440.h 退回 u-boot 根目录:#cd ././ (4)建立编译选项 #vi makefile smdk2410_config: unconfig $(mkconfig
24、) $(:_config=) arm arm920t smdk2410 null s3c24x0 qq2440_config: unconfig $(mkconfig) $(:_config=) arm arm920t qq2440 null s3c24x0 arm: cpu 的架构(arch) arm920t: cpu 的类型(cpu),其对应于 cpu/arm920t 子目录。 qq2440: 开发板的型号(board),对应于 board/qq2440 目录。 null: 开发者/或经销商(vender),本例为空 s3c24x0: 片上系统(soc) (5)编译 将:ifeq ($(a
25、rch),arm)cross_compile = arm-linux-endif 修改为:ifeq ($(arch),arm)cross_compile = arm-softfloat-linux-gnu- (arm gcc 为 3.4.5)endif #make qq2440_config; #make all 本步骤将编译 u-boot.bin 文件,但此时还无法运行在 qq2440v3 开发板上。修 改部分: 1) 修改中断禁止部分 (cpu/arm920t/start.s) # if defined(config_s3c2410) ldr r1, =0 x7ff /*根据 2410 芯
26、片手册,intsubmsk 有 11 位可用 */ ldr r0, =intsubmsk str r1, r0 # endif 2) 修改 sdram 的配置(board/samsung/smdk2410/lowlevel_init.s) #define refcnt 1113 /* period=15.6us, hclk=60mhz, (2048+1- 15.6*60) */ 改为:(参考 k4s561632 手册“8192 refresh cycles / 64ms”可知刷新的周期为: 7.8125us) #define refcnt 1268 /* period=7.8125us,hcl
27、k=100mhz, */ 3) 时钟的配置 (board/smdk2410/ smdk2410.c) 在 board/ smdk2410/ smdk2410.c 的 board_init 函数,首先修改为异步总线模式: 具体修改在 clk_power-locktime = 0 xffffff 之前加上: _asm_(“mcr,0,r1,c1,c0,0n” “orr r1, #0 xc0000000n”, “mcr p15,0,r1,c1,c0,0n”); 4) 支持 nor flash(sst39vf1601) (include/configs/ smdk2410.h) 现在还无法通过 ubo
28、ot 的命令来操作 nor flash,在配置文件 include/configs/ smdk2410.h 里默认的型号是 am29lv400,而我们的是 sst39vf1601。修改如下: 添加: #define config_sst_39vf1601 1 #define cfg_max_flash_banks 1 #define phys_flash_size 0 x200000 /* 2mb */ #define cfg_max_flash_sect (512) /* max number of sectors on one chip */ #define cfg_env_addr (c
29、fg_flash_base + 0 x30000) /* addr of environment */ 接下来我们修改 board/ smdk2410/flash.c: 将:#define main_sect_size 0 x10000 /* 64 kb */ 修改为:#define main_sect_size 0 x1000 /* 4 kb */(按 sector 操作) 将:#define mem_flash_addr1 (*(volatile u16 *)(cfg_flash_base + (0 x00000555 1) #define mem_flash_addr2 (*(volat
30、ile u16 *)(cfg_flash_base + (0 x000002aa 1) 修改为: #define mem_flash_addr1 (*(volatile u16 *)(cfg_flash_base + (0 x000005555 1) #define mem_flash_addr2 (*(volatile u16 *)(cfg_flash_base + (0 x000002aaa 1) 5) 内核参数的传递支持 只需要在 include/configs/ smdk2410.h 里增加两个宏,分别是: #define config_setup_memory_tags 1 /向内核
31、传递内存分布信息 #define config_cmdline_tag 1 /向内核传递命令行参数 6) 将 tool/mkimage 工具拷贝到主机 linux 系统的/bin 目录下面。为以后做内核 镜像使用。 7) 支持 dm9000ep 网卡驱动,只需在 include/configs/smdk2410.h 添加即可: #define config_driver_dm9000 1 #define config_dm9000_base 0 x20000300 #define dm9000_io config_dm9000_base #define dm9000_data (config_
32、dm9000_base+4) #define config_dm9000_use_16bit 交叉编译 u-boot #make distclean /彻底删除 #make smdk2410_config #make arch=arm cross_compile=arm-linux- (1.设置主机交叉编译器环境 变量 2.u-boot.bin 在根目录) 生成的 u-boot.bin 即为我们移植后的结果。下载到开发板上运行! 2.3linux 内核移植内核移植 2.3.1 配置配置 linux 内核内核 (1)修改内核目录树根下的的 makefile,指明交叉编译器: $vim makef
33、ile 找到 arch 和 cross_compile,修改 arch = arm cross_compile = arm-softfloat-linux-gnu- 保存退出,然后设置你的 path 环境变量,使其可以找到你的交叉编译工具链: $echo $path:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games 如果路径为/home/linux/cossstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux- gun/bin,不用再进行设置,如果不是则进行下
34、面步骤进行设置: $exportpath=$path:/home/linux/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat- linux-gnu/bin:(动态加载环境变量,终端关闭后,自己所加载的环境变量立即消失)。 或者修改./bashrc 文件:(静态加载环境变量,不随终端的关闭而消失) $ vim /.bashrc 在文件最后添加 path=$path:/home/linux/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux- gnu/bin: export path (2)添加程序文件
35、将 2410gpio_test_drv.c 文件拷贝到内核代码目录 drivers/char 中 修改 makefile 和 kconfig 文件进入内核的 drivers/char 目录 $vim makefile 找到在 obj-$(config_hangcheck_timer) += hangcheck-timer.o ,在其下 一行添加: obj-$(config_2410gpio_test_drv) += 2410gpio_test_drv.o 保存退出 vim (3)修改 kconfig 文件 $vim kconfig 在以下代码段下面 menu character devices
36、 加入以下信息: config 2410gpio_test_drv tristate s3c2410 test drv device support depends on arch_s3c2410 -help- support led test device driver on fs2410 develop board (4)编译内核产生 zimage.img 文件, 并将 zimge.img 拷贝到/tftpboot 目录中, 复位开发板,重新启动。编译命令: #make zimage #cd arch/arm/boot # mkimage -n linux- -a arm -
37、o linux -t kernel -c none -a 0 x30008000 -e 0 x30008040 -d zimage zimage.img #cp zimage.img /tftpboot (5)交叉编译 2410gpio_test_app.c /home/linux/crosstool/gcc-3.4.5-glibc-2.3.6/arm-softfloat-linux-gnu/bin/arm- softfloat-linux-gnu-gcc 2410gpio_test_app.c o gpio_test (6)复制 gpio_test 到 /source/rootfs/sbin
38、/gpio_test (7)创建 gpio_test 设备节点,在开发板上运行如下命令: #mknod -m 666 /dev/gpio_test c 252 0 (8)运行 gpio_test 测试,在开发板上运行如下命令: #/sbin/gpio_test (9)重新配置编译内核,将 gpio_test 编译成模块,动态加载 2.3.2 网卡驱动添加网卡驱动添加 (1)添加网卡驱动到内核 将 cs8900a.h 和 cs8900a.c 文件拷贝到内核代码目录 drivers/net 中: rootfarsight:/source/kernel/linux-# cp /mnt
39、/hgfs/disk/cs8900a.* drivers/net (2)修改 makefile 和 kconfig 文件 rootfarsight:/source/kernel/linux-# vim drivers/net/makefile 在文件中添加: obj-$(config_cs8900a) +=cs8900a.o (3)保存退出,修改 kconfig 文件 rootfarsight:/source/kernel/linux-# vim drivers/net/kconfig 在以下代码段下面 config dm9000 tristate dm9000
40、 support depends on arm bootm 30008000 fs2410# setenv bootargs root=nfs nfsroot=3:/source/rootfs ip=192.168 .1.134 console=ttysac0,115200 init=/linuxrc fs2410#saveenv (8)启动开发平台,在超级终端观察现象 fs2410# boot 如果顺利,可以在串口终端显示 linux 命令行终端了! 第第三三章章系系统统硬硬件件设设计计 寻物小车共有四部分电路组成,分别是:控制主板、电源电路、驱动电路、寻 迹电路。 寻
41、物小车整车电路接口框架图如图 3-1 所示: 图 3-1 整车电路板框架图 3.1控制主板控制主板 控制主板由核心板和功能接口板组成。 核心板包含有 32 位的 arm 微处理器及其 rom、ram 等存储器,完成程序 运行、数据暂存等,是控制和指挥小车各个功能部件协调有序工作的指挥中心。 该板照片如图 3-2 所示。 图 3-2 mcu 核心板 s3c2410 处理器是 samsung 公司基于 arm 公司的 arm920t 处理器核,采用 0.18um 制造工艺的 32 位微控制器。该处理器拥有:独立的 16kb 指令 cache 和 16kb 数据 cache,mmu,支持 tft 的
42、 lcd 控制器,nand 闪存控制器,3 路 uart,4 路 dma,4 路带 pwm 的 timer ,i/o 口,rtc,8 路 10 位 adc,touch screen 接口,iic-bus 接口,iis-bus 接口,2 个 usb 主机,1 个 usb 设备,sd 主机和 mmc 接口,2 路 spi。s3c2410 处理器最高可运行在 203mhz。 循 循 迹 板 coms 摄像头 s3c2440 核心板 8 路 循迹 接口 电 路 pwm 光电 隔离 驱动 接 口 驱动电路 测速电路 wifi 无线网 卡 扩展功能接口 板 左右 轮电机 s3c2410x 芯片集成了大量的
43、功能单元,列举如下: (1) 内核采用 1.8 v 供电,存储单元采用 3.3 v 独立供电,外部 io 采用 3.3 v 独立供电,16 kb 数据 cache,16 kb 指令 cache,mmu。 (2) 内置外部存储器控制器(sdram 控制和芯片选择逻辑)。 (3) lcd 控制器(最高 4k 色 stn 和 256k 彩色 tft),一个 lcd 专用 dma。 (4) 4 路带外部请求线的 dma。 (5) 3 个通用异步串行端口,2 通道 spi。 (6) 一个多主 iic 总线,一个 iis 总线控制器。 (7) sd 主接口版本 1.0 和多媒体卡协议版本 2.11 兼容。
44、 (8) 2 个 usb host 接口,一个 usb device(ver1.1)接口。 (9) 4 个 pwm 定时器和一个内部定时器。 (10) 看门狗定时器。 (11) 117 个通用 i/o。 (12) 24 个外部中断。 (13) 电源控制模式:标准、慢速、休眠、掉电。 (14) 8 通道 10 位 adc 和触摸屏接口。 (15) 带日历功能的实时时钟。 (16) 芯片内置 pll。 (17) 16/32 位 risc 体系结构,使用 arm920t cpu 核的强大指令集。 (18) arm 带 mmu 的先进体系结构,支持 windows ce、epoc32、linux。 (
45、19) 指令缓存(cache)、数据缓存、写缓冲和物理地址 tag ram,减小了对 主存储器带宽和性能的影响。 (20) arm920t cpu 核支持 arm 调试体系结构。 (21) 内部先进的位控制器总线(amba2.0、ahb/apb)。 系统管理方面的特点如下: (1) 小端/大端支持。 (2) 地址空间:每个 bank 为 128 mb(全部为 1 gb)。 (3) 每个 bank 可编程为 8/16/32 位数据总线。 (4) bank 0bank 6 为固定起始地址。 (5) bank 7 可编程 bank 的起始地址和大小。 (6) 共有 8 个存储器 bank。 (7)
46、6 个存储器 bank 用于 rom、sram 及其他。 (8) 2 个存储器 bank 用于 rom、sram 及同步 dram。 (9) 每个存储器 bank 可编程存取周期。 (10) 支持等待信号,用以扩展总线周 功能接口板是扩展 s3c2440 外围部件的一块电路板,包括 sd 卡接口、usb 接口、多媒体(扬声器和话筒等)接口、网卡接口、摄像头接口、串行通信接口、 lcd 液晶显示接口、按键和 led 指示接口、i2c 和 spi 接口、gpio 接口、实时时 钟、电源和系统总线扩展口等。 3.2电源电路的设计与分析电源电路的设计与分析 电源电路如图 3-3 所示。 图 3-3 电
47、源电路 电源电路分为两部分,一是系统用电源,包括接口电路和 arm 核心板用电源; 二是驱动电源,主要提供给电机驱动和电机接口电路用。这两路电源采用不同的 “地” ,通过光电耦合器(后续介绍)实现在电气上的隔离但却实现信号上的联通。 其主要作用是为了防止电机通断瞬间产生的高频高压电磁波对 arm 系统的影响, 各自可单独供电。两路电源采用相同的电路结构。 这两路电源均采用 lm2576 开关电源模块做主电源,lm2576-5 是内置 52khz 振荡频率的高频开关电源模块,外围电路简单,输出纹波电压低,工作可靠;另外, 其内部还包含过流保护、过热保护等保护装置,输入电压低至 6v 即可稳定输出
48、 5v/3a 的驱动输出,特别适合做含 mcu 控制器的电源。 jp1 和 jp2 均是锂电池插入接口,为标配的 12v/20c2200mah 的航模锂电池, s1 和 s2 是自锁开关,按一下电源接通,再按一下电源关闭;d1 和 d3 是锂电池防 反接二极管,当锂电池反接是二极管处于截至状态,可以有效防止因电源反接引起 的损毁;c1 和 c4 是输入滤波电容;c2、c3 和 c5、c6 是输出滤波电容;l1、l2 是滤波电感;d2、d4 是续流二极管;led1 和 led2 是电源工作指示灯;jp10 为 接入 arm 系统板的 5v 电源接口。 arm 系统板供电为 3.3v,其板上已设计
49、包含有低压差线性稳压源 as2815ar- 3.3 ic 芯片稳压,提供给实验板所需要的 3.3v 电源。在核心板上 cpu 内核电压 1.25v 采用低噪声、低压差线性稳压源 max8860eua 稳压芯片。这两种芯片核心 板上已包含,这里不做详细介绍。 3.3驱动电路的设计与分析驱动电路的设计与分析 底层驱动电路由电机驱动驱动电路、光电隔离电路、光耦光电管驱动电路、码 盘测速电路等部分组成。 3.3.1 电机驱动电路的设计与分析电机驱动电路的设计与分析 电机驱动电路如图 3-4 所示。 图 3-4 左轮和右轮电机驱动电路 arm 之 gpio 的某六个接口信号通过光电耦合器(后续介绍)接左
50、、右电机 功放电路,每路需要三个接口控制信号,以左边为例,分别为 lift pwm、lift dir、lift en,这三个信号连接到双路功放电桥 ln298 的输入端,从输出端接出 两个电机控制信号,jp3 和 jp4,可驱动电机做向前、向后、速度控制等运动。其 中 d5、d6 用作电机内部线圈(电感)的续流二极管电桥。其中的右路控制方法与 左路一致,这里不再赘述。 3.3.2 光电隔离电路的设计与分析光电隔离电路的设计与分析 光电隔离电路如图 3-5 所示。 图 3-5 光电隔离电路 光电隔离电路实现 arm 的输出信号到电机的驱动信号之间的电气隔离,但控 制信号仍然通过,可有效的防止干扰
51、源破坏 arm 系统的正常工作。 由于 pwm 信号频率较高,这里采用高速光电隔离器 6n137,其余如 dir(方 向) 、en(允许)端所需的信号只要低频光电隔离器 tlp521 即可。 3.3.3 光耦光电管驱动电路设计与分析光耦光电管驱动电路设计与分析 光耦光电管驱动电路如图 3-6 所示。 由于光电隔离器 tl521 和 6n137 的光电管需要较大的电流才能导电发光,因 此需要加上 uln2003。 uln2003 是高耐压、大电流达林顿陈列,由七个硅 npn 达林顿管组成。该 电路的特点如下: 图 3-6 光耦光电管驱动电路 uln2003 的每一对达林顿都串联一个 2.7k 的
52、基极电阻,在 5v 的工作电压 下它能与 ttl 和 cmos 电路直接相连,可以直接处理原先需要标准逻辑缓冲器 来处理的数据。 uln2003 工作电压高,工作电流大,灌电流可达 500ma,并且能够在关态时 承受 50v 的电压,输出还可以在高负载电流并行运行。 3.3.4 码盘测速接口电路设计与分析码盘测速接口电路设计与分析 码盘测速接口电路如图 3-7 所示。 图 3-7 码盘测速接口电路 每个直流电机上均配有测速码盘,均内置两只光电对管和一个遮光板,见图 3- 7 中的虚线框内所示。其中左侧的两个发光管是串联的,则流过的是相同的电流, 右侧的两个光电接收管的发射极已连接,集电极各自独
53、立,所以每只码盘只需要引 出四个引线即可。因此,底版中只需要安装三个电阻,200r 的是限流电阻,另两 个 10k 的是外部上拉电阻。当电机运转时,遮光板也跟着运转,并不停的挡住和 放开红外光线,使得右侧的两个三极管不断的轮流导通和截至。则 l-speed 和 l- b 及 r-speed 和 r-b 不断的产生高低电平变换,被连接至 arm 接口板,从而读 出电机运转的速度信息。 电机减速此轮按 80:1 的变比,因此,电机每运转一圈,码盘光电管被导通和 截至 80 次。按此,可以计量车体的行进距离,也可计算其速度信息。 由于每只码盘有两只对管,他们被挡光的次序信息可以用来被测量电机的运转
54、方向,也可以用这两路光电接收信息通过软件处理实现抗干扰。 3.4寻迹电路设计与分析寻迹电路设计与分析 3.4.1 红外发射与接收管的基本工作原理红外发射与接收管的基本工作原理 小车寻迹板主要作用是根据红外接收射管接收到物体反射回的红外线来判定小 车所处的状态,例如红外管遇到反光较强的物体时(表面为白色或近似白色时)光 被折回,引起光电三极管导通,输出低电平,如果遇到反射光不强的物体时,光大 部分被接收,光电三极管截止,输出高电平(如图 3-8) ,s3c2440 通过高低电平来 对反光差别较大的两种颜色识别,从而给驱动板发命令控制小车,达到寻迹的目的。 图 3-8 红外接收与发射电路 3.4.
55、2 红外寻迹电路板的整体分布与抗干扰设计红外寻迹电路板的整体分布与抗干扰设计 本寻迹板采用 8 个红发射对管等间距排列,传感器的间距为 12mm(如图 3-9) , 由于传感器发射的是一个锥形光,传感器与地面的高度影响到红外线的照射范围, 也影响红外线的接受灵敏度,所以红外线与地面高度的选择对与小车寻迹的正 图 3-9 红外寻迹板传感器 分布图 2mm 130m m 传感器 1传感器 2 传感器 4传感器 5传感器 6 传感器 7传感器 3传感器 8 out 100r +5v 控制开关 三极管 +5v 9012 1k + - 确性至关重要,通过实践小车高度选定在 2cm 左右,并通过调节各自红
56、外管 的灵敏度,能将干扰大幅减小,但是实践证明虽然干扰有所降低,但是误判断的现 象还是时有发生,当小车通过比较平坦的路段时,各传感器的工作正常,且误判现 象几乎没有,但是当小车路过不平坦地段时,小车多有误判、跑飞现象,通过分析 测量发现是由于红外接收管在接收物体反射回的光的时候,由于地面不平而产生漫 反射,相邻的红外管也会误接收到红外光,小车可能会根据错误信息而产生误判 (如图 3-10) 。 接收发射 有褶皱 误接收 产生干扰 平坦 发射 有效距离 正常接收 图 3-10 红外接收管干扰示意图 由于上图寻迹板采用 8 个红外发射管同时收发,然后根据电平来判断小车状态, 控制小车行走,由于地面
57、不可能达到理想的平坦状态,干扰因素也不可预知,通过 大量实践和分析采用循环动态扫描方式,在一个红外管发射与等待接收同时,其他 红外管都通过一个开关三极管关闭,这样就杜绝了红外管因接收干扰而产生的误判 的现象(如图 3-11) 。 接收发射 有褶皱 产生干扰 关闭不接收 关闭不接收 图 3-11 红外接收管干扰示意图 3.4.3 红外寻迹板的基本工作原理红外寻迹板的基本工作原理 本电路采用各自单独 40khz 调制和解调方式进行收发、并循环动态扫描的设 计方案,由于扫描周期很短,并不影响小车的响应时间,可以忽略不计。通过大量 实验证明小车能对各种路段及时做出正确的判断,彻底解决了一个发射管发射,
58、多 个接收管接收的干扰现象。电路如图 3-12(单路)所示:8 个红外发射与接收管的 发射管阴极都接一个开关三极管与 74hc138 相连,当八路红外管中有一路三极管 通过 74hc138 选通时,这一路红外管工作,其他的红外发射与接收管都不工作, 接收管电路根据反射回不同强度的红外光输而开关量与比较器比较,通过比较器置 0 或置 1 送给八路选择器,由八路选择器单独选通送给单片机进行数据处理输出。 图 3-12 红外寻迹板(单路)电路原理 第第四四章章系系统统软软件件设设计计 小车软件设计主要分为两部分:驱动程序(寻迹板的驱动、pwm 的驱动)和 小车寻物程序。 4.14.1 主程序的设计主
59、程序的设计 在接到上位机发出的启动命令后,智能小车启动主寻物程序。首先是对所使用 的资源进行初始化,接着判断路况并执行相应的命令和完成预设的任务,等待上位 机的停止命令。 开始 八位巡检gpio初始化 并口初始化 开中断定时器 检测路况 判定前进方向和速度 做任务 结束 图 4-1 寻物主程序流程图 4.24.2 寻迹算法寻迹算法 寻迹程序采用的是枚举法,枚举法就是在进行归纳推理时,如果逐个考察了某 类事件的所有可能情况,因而得出一般结论,那么这结论是可靠的,这种归纳方法 叫做枚举法。 本次设计共用八对红外对管,路况共有 256 种(2 的 8 次方种) ,若是一一列 出并且每一种都配以相应的
60、处理,这将是一个很繁杂的工程,故不可取。而是将小 车可能遇到的路况,进行推算归纳,将要作出速度和方向调整的路况数据保留下来, 没有影响的路况做保持上一状态处理。如图 4-2 枚举法推测路况图,八个点代表八 个红外对管,黑色的点代表探测的红外对管测的是黑色区域也就是寻迹轨道,白色 的点为跑道的空白区域。 7 6 5 4 3 2 1 07 6 5 4 3 2 1 0 0 x18 0 x38 0 x10 0 x30 0 x70 0 x20 0 x60 0 xe0 0 x40 0 xc0 0 x80 0 x9f 0 xef 0 xe3 0 xc7 0 xff 0 xf0 0 x0f 0 x3c 0 x
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年新员工入职安全培训考试试题及参考答案AB卷
- 25年公司、项目部、各个班组三级安全培训考试试题附答案(研优卷)
- 25年公司安全管理人员安全培训考试试题【原创题】
- 知到智慧树网课:地球科学概论(东华理工大学)章节测试满分答案
- 2025租赁合同模板合同样本
- 2025混凝土浇筑工程施工合同模板
- 2025汽车销售贷款合同范本
- 2025年数控精密电火花成形机床项目合作计划书
- 2025年的简约合同范本
- 2025年共享充电宝合作协议书
- 医院浅层地热能评估报告
- GB/T 14975-2012结构用不锈钢无缝钢管
- DB21-T3683-2022医疗卫生机构医疗废物卫生管理规范
- GB 17957-2021凿岩机械与气动工具安全要求
- 部编版六年级语文下册期末专项复习:修辞手法
- 中药学-七版教材
- 红军五次反围剿课件
- ISO9001注册审核员专业划分小类
- 五年级道德与法治上册课件 -保家卫国 独立自主 部编版 (共48张PPT)
- 安徽省历年中考数学试卷,2014-2021年安徽中考数学近八年真题汇总(含答案解析)
- 利益冲突申报表
评论
0/150
提交评论