嵌入式结课论文.docx_第1页
嵌入式结课论文.docx_第2页
嵌入式结课论文.docx_第3页
嵌入式结课论文.docx_第4页
嵌入式结课论文.docx_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

内蒙古科技大学嵌入式系统课程设计报告内蒙古科技大学嵌入式系统课程设计论文题 目:基于i.MX283的WinCE 6.0 GPIO控制学生姓名:学 号:专 业:测控技术与仪器班 级:2011-1l 指导教师:孙彩鹰2014年12月30日14目录第1章 概述31.1 EasyARM-i.MX28X平台简介31.1.1 核心板电路框图31.1.2 EasyARM-i.MX28x核心板搭建系统41.2 WinCE 6.0简介4第2章 设计过程62.1 设计思路62.2 硬件设计62.2.1 LED控制电路62.2.2 蜂鸣器驱动电路62.3 设计步骤7第3章 总结9参考文献10源程序11第1章 概述1.1 EasyARM-i.MX28X平台简介EasyARM-iMX283、EasyARM-i.MX287(以下统称EasyARM-i.MX28x)是广州致远电子股份有限公司精心设计的一款集教学、竞赛、工控与产品设计功能评估于一身的开发套件,套件以Freescale公司的基于ARM9内核的i.MX28x多媒体应用处理器为核心,该处理器主频454MHz,支持DDR2和NAND Flash,并提供多达5路UART、1路I2C、1路SPI、4路12bit ADC、1路10/100M以太网接口、1路SDIO、1路I2S接口、1路USB OTG接口、1路USB Host接口、支持TFT液晶屏和电阻式触摸屏、满足数据采集或更高水平用户互动的消费电子和工业控制应用。EasyARM-i.MX28x开发套件为入门级评估平台,广州致远电子股份有限公司提供实用的WinCE/Linux的BSP包、测试DEMO和配套文档,极大地提高了WinCE/Linux系统移植、驱动和应用程序的开发效率,使您能顺利地在实践中熟悉i.MX28x系列处理器及其WinCE/Linux开发平台,大大降低了WinCE/Linux开发入门门槛和学习的难度,可帮助您在短期内实现产品设计阶段的功能验证和开发。1.1.1 核心板电路框图如图1-1所示是EasyARM-i.MX28x核心板的结构框图,该核心板已经集成CPU、电源、存储器、复位、加密等电路,用户只需将所需要的外设连接到对应端口即可,操作非常简单。图1-1 核心板结构框图1.1.2 EasyARM-i.MX28x核心板搭建系统使用EasyARM-i.MX28x核心板进行开发,系统电路变得非常简单,底板只需要提供两路电源:5V和3.3V。5V电源给核心板、USB和LCD使用,3.3V电源给底板3.3V外设系统使用。为了方便模拟电池供电,EasyARM-i.MX28x评估底板还提供了一路4.2V电源接到核心板的电池供电引脚。使用EasyARM-i.MX28x核心板构建系统的最小系统框图如图1-2所示,其中USB_BT、BOOT_SELECT、WDO_EN、ENC、CLR为核心板引出的系统配置信号。图1-2 使用EasyARM-i.MX28x核心板构建最小系统框图1.2 WinCE 6.0简介Window s CE 是Microsoft 公司专门针对嵌入式产品领域开发的嵌入式操作系统。该系统是一种紧凑、高效、可伸缩的32 位操作系统, 主要面向各种嵌入式系统和产品。它的模块化设计使嵌入式系统和应用程序开发者能够方便地加以定制, 以适应一系列产品( 例如消费类电子设备、专用工业控制器和嵌入式通信设备等) 的需要。GPIO 是端口的扩展器, 当微控制器或者芯片没有足够的I/ O 端口, 或者当系统需要用远端串行通信端口时, GPIO能够提供额外的控制和监视功能。用户可以通过GPIO与硬件工作, 例如点亮LED、控制蜂鸣器、控制LCD 显示和键盘的输入等。所以GPIO 的应用极为广泛, 但是这些都需要驱动的支持。2006年11月,微软公司其最新的嵌入式平台Windows Embedded CE 6.0正式上市。作为业内领先的软件工具,Windows Embedded CE 6.0将为多种设备构建实时操作系统,例如:互联网协议(IP)机顶盒、全球定位系统(GPS)、无线投影仪,以及各种工业自动化、消费电子以及医疗设备等。在Windows Embedded诞生十周年之际,微软将首次在“共享源计划(Microsoft Shared Source programme)”中100%毫无保留地开放Windows Embedded CE 6.0内核,(GUI图形用户界面不开放)比Windows Embedded CE的先前版本的开放比例整体高出56%。“共享源计划”为设备制造商提供了全面的源代码访问,以进行修改和重新发布(根据许可协议条款),而且不需要与微软或其他方共享他们最终的设计成果。尽管Windows操作系统是一个通用型计算机平台,为实现统一的体验而设计,设备制造商可以使用Windows Embedded CE 6.0这个工具包为不同的非桌面设备构建定制化的操作系统映像。通过获得Windows Embedded CE源代码的某些部分,比如:文件系统、设备驱动程序和其他核心组件,嵌入式开发者可以选择他们所需的源代码,然后编译并构建自己的代码和独特的操作系统,迅速将他们的设备推向市场。微软还将Visual Studio 2005专业版作为Windows Embedded CE 6.0的一部分一并推出。这对微软来说又是一次史无前例的突破。Visual Studio 2005专业版将包括一个被称为Platform Builder的功能强大的插件,它是一个专门为嵌入式平台提供的“集成开发环境”。这个集成开发环境使得整个开发链融为一体,并提供了一个从设备到应用都易于使用的工具,极大地加速了设备开发的上市。Windows Embedded CE 6.0重新设计的内核具有32,000个处理器的并发处理能力,每个处理有2GB虚拟内存寻址空间,同时还能保持系统的实时响应。这使得开发人员可以将大量强大的应用程序融入到更智能化、更复杂的设备中。无论在路上、在工作还是在家里,都可以使用这种设备。在路上:Windows Embedded CE 6.0加入了新的单元核心数据和语音组件,这使得设备能够通过蜂窝通讯网络建立数据连接和语音通话,从而实现机器对机器的通讯应用场景,并构建相应的设备,如停车表、自动售货机和GPS设备等。在工作上:Windows Embedded CE 6.0包含的组件更便于开发者创建通过Windows Vista内置功能无线连接到远程桌面共享体验的投影仪。在家中:Windows Embedded CE 6.0充分利用了多媒体技术,以开发网络媒体设备、数字视频录像机和IP机顶盒等。第2章 设计过程2.1 设计思路本次实验利用VS2005编写一个应用程序,该程序使用i.MX28X微控制器的GPIO,控制EasyARM-i.MX28X开发平台上蜂鸣器的蜂鸣和LED(借用RUN-LED)的亮灭。MCIMX28系列SOC数字信号接口管脚有如下特点:l 全部外围管脚分为7个BANK,其中可以被复用成为GPIO的是BANK0-4 l 每个GPIO都可以配置其对外驱动能力和中断类型 l 其中部分接口有可选的上拉电阻 EasyARM-i.MX28X开发平台提供了基于WinCE 6.0系统的i.MX28X微控制器GPIO驱动程序,驱动可对该微控制器的GPIO端口进行以下操作:l 打开蜂鸣器和关闭蜂鸣器 l 打开/关闭LED(运行指示LED和错误指示LED) 2.2 硬件设计如图2-1及图2-2所示,EasyARM-i.MX28X实验平台上系统指示灯及蜂鸣器的参考电路。系统指示灯(LED_RUN和LED_ERR)在EasyARM-i.MX28X开发平台上的位置如图2-1所示;蜂鸣器(BEEP)的位置如图2-2所示。2.2.1 LED控制电路图2-1 LED控制电路图2.2.2 蜂鸣器驱动电路底板中使用的是有源蜂鸣器,因此控制信号为高电平(1.2V3.3V)时蜂鸣器鸣叫。为低电平时(01.2V)不工作。电容C67用于提高电路抗干扰性能。D7起保护三极管的作用,当三极管突然截止时,无源蜂鸣器两端产生的瞬时感应电动势可以通过D7迅速释放掉,避免叠加到三极管集电极上从而击穿三极管。若使用有源蜂鸣器则D7不需要焊接。如果不需要使用蜂鸣器,可将跳线JP1断开。如图图2-2所示。图2-2 蜂鸣器驱动电路2.3 设计步骤(1) 在PC机的Windows中打开VS2005。在VS2005菜单栏中选择“文件”“新建”“项目”,在弹出的对话框的项目类型框中选择“Visual C+”“智能设备”,然后在模板框中选择“MFC智能设备应用程序”。在“名称”中填写本工程的名称:GPIOTest。SDK选择为“EasyARM283_SDK”,选择工程类型选择为Dialog Based。然后为该对话框添加六个按键,它们的ID号及标题如表2-3所示。表2-3按键ID号及作用标题ID号作用打开GPIO驱动 IDC_OPEN 打开驱动 关闭GPIO驱动 IDC_CLOSE 关闭驱动 蜂鸣器蜂鸣 DC_BEEPON 驱动蜂响器响 蜂鸣器关闭 IDC_BEEPOFF 禁止蜂响器蜂鸣 流水灯 IDC_BUTTON_LED1 控制2个LED做“流水灯” 跑马灯 IDC_BUTTON_LED2 控制2个LED为“跑马灯” 完成以上工作以后,界面如图2-4所示。图4-5工程建立完成后的界面(2) 分别单击图4-5中各个按键,按下面的步骤为每个按键添加相应的代码。添加“打开驱动”按键单击事件代码。(3) “打开驱动”按键单击事件函数中首先打开LED0驱动。(4) 添加其它按键单击事件代码。(5) 在VS2005中,选中资源视图中的对话框,然后在VS2005的属性框中,选择“消息”栏,将会出现项目中的所有消息列表。在消息列表中选中WM_DESTROY。这样就为本对话框增加了一个对话框关闭前的处理函数,后面实验参考代码将说明该函数的作用。(6) 编辑OnDestroy()函数,如程序清单4.4所示,该函数的主要工作是关闭GPIO驱动。这是因为GPIO驱动为独占式访问驱动,只允许一个进程访问,为了防止用户使用完本驱动后,忘记单击“关闭GPIO驱动”按键关闭驱动而导致其它进程无法访问GPIO驱动,所以要在关闭对话框时,同时关闭GPIO驱动。(7) 按照3.1小节介绍的步骤,上电EasyARM-i.MX28X,等待10几秒后进入WinCE 6.0系统桌面,等待PC机Windows系统的ActiveSync自动连接成功。(8) 在VS2005的工具栏中,更改编译目标为:Debug。(9) 选择菜单“调试”“启动调试”,VS2005开始编译GPIOTest工程,编译成功后,VS2005自动下载GPIOTest.exe到EasyARM-i.MX28X开发平台并自动运行。(10) 先单击“打开GPIO驱动”按键,然后单击“蜂鸣器鸣叫”按键,这时,蜂鸣器蜂鸣。如果要禁止蜂鸣器蜂鸣,则单击“蜂鸣器关闭”按键。点击“流水灯”或“跑马灯”,LED等将显示成相应的效果。第3章 总结通过本次设计,让我对嵌入式系统更加的了解,同时也发现了自己的不足,自己对以前学过的知识理解得不够深刻,掌握得不够牢固,自己对很多东西的认识不够到位,缺乏对所学知识进行综合的能力,对嵌入式系统设计及分析的条理不是很清晰。所以我们应该把自己学的知识完善,要学会活学活用,把理论知识与实践相结合,才能真正的运用于我们的现实生活中,提高自己的实际动手能力和独立思考的能力。参考文献1 周建设.Window s CE 设备驱动及BSP 开发指南 M . 北京:中国电力出版社, 2009.2 张冬泉, 谭南林.Window s CE 开发实例精粹M . 北京: 电子工业出版社, 2008.3 胡秀凤, 丁承君, 张明路, 等. Window s CE 下GPIO 驱动程序的设计与应用 J . 微计算机信息, 2009, 25 ( 6-2) ; 140-141.4 张冬泉,等. WindowsCE应用开发技术M. 电子工业出版社,20055 FREESCALE公司. user.manual. MCIMX28RM, 2010源程序#include winioctl.h#define IOCTL_GPIO_BEEP_ONCTL_CODE(FILE_DEVICE_BUS_EXTENDER, 3000, METHOD_BUFFERED, FILE_ANY_ACCESS)#define IOCTL_GPIO_BEEP_OFF CTL_CODE(FILE_DEVICE_BUS_EXTENDER, 3001, METHOD_BUFFERED, FILE_ANY_ACCESS)#define IOCTL_GPIO_RUN_ON CTL_CODE(FILE_DEVICE_BUS_EXTENDER, 3002, METHOD_BUFFERED, FILE_ANY_ACCESS)#define IOCTL_GPIO_RUN_OFFCTL_CODE(FILE_DEVICE_BUS_EXTENDER, 3003, METHOD_BUFFERED, FILE_ANY_ACCESS)#define IOCTL_GPIO_ERR_ONCTL_CODE(FILE_DEVICE_BUS_EXTENDER, 3004, METHOD_BUFFERED, FILE_ANY_ACCESS)#define IOCTL_GPIO_ERR_OFFCTL_CODE(FILE_DEVICE_BUS_EXTENDER, 3005, METHOD_BUFFERED, FILE_ANY_ACCESS)void CGPIOTestDlg:OnBnClickedOpenDriver()m_hGpio = CreateFile(TEXT(LED0:), 0, 0, NULL, OPEN_EXISTING, FILE_FLAG_RANDOM_ACCESS, NULL);if (m_hGpio = INVALID_HANDLE_VALUE)MessageBox(TEXT(CreateFile GIO0 Failed!);return;GetDlgItem(IDC_OPEN_DRIVER)-EnableWindow(FALSE);GetDlgItem(IDC_CLOSE_DRIVER)-EnableWindow(TRUE);GetDlgItem(IDC_BEEP_ON)-EnableWindow(TRUE);GetDlgItem(IDC_BEEP_OFF)-EnableWindow(FALSE);GetDlgItem(IDC_LEN_START)-EnableWindow(TRUE);GetDlgItem(IDC_LEN_STOP)-EnableWindow(FALSE);void CGPIOTestDlg:OnBnClickedCloseDriver()if (m_hGpio != INVALID_HANDLE_VALUE)CloseHandle(m_hGpio);GetDlgItem(IDC_OPEN_DRIVER)-EnableWindow(TRUE);GetDlgItem(IDC_CLOSE_DRIVER)-EnableWindow(FALSE);GetDlgItem(IDC_BEEP_ON)-EnableWindow(FALSE);GetDlgItem(IDC_BEEP_OFF)-EnableWindow(FALSE);GetDlgItem(IDC_LEN_START)-EnableWindow(FALSE);GetDlgItem(IDC_LEN_STOP)-EnableWindow(FALSE);void CGPIOTestDlg:OnBnClickedBeepOn()DeviceIoControl(m_hGpio, IOCTL_GPIO_BEEP_ON, NULL, 0, NULL, 0, NULL, NULL);GetDlgItem(IDC_BEEP_ON)-EnableWindow(FALSE);GetDlgItem(IDC_BEEP_OFF)-EnableWindow(TRUE);void CGPIOTestDlg:OnBnClickedBeepOff()DeviceIoControl(m_hGpio, IOCTL_GPIO_BEEP_OFF, NULL, 0, NULL, 0, NULL, NULL);GetDlgItem(IDC_BEEP_ON)-EnableWindow(TRUE);GetDlgItem(IDC_BEEP_OFF)-EnableWindow(FALSE);void CGPIOTestDlg:OnBnClickedLenStart()m_bLedRun = TRUE;Sleep(300);GetDlgItem(IDC_LEN_START)-EnableWindow(FALSE);GetDlgItem(IDC_LEN_STOP)-Enabl

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论