范文一:基于Cortex-M3和μCOS-Ⅱ的嵌入式系统_毕业设计论文
基于Cortex-M3和μCOS-?的嵌入式系统_毕业设计论
文
本科生毕业论文
院 系 物理与电气信息工程学院
专 业 电子信息工程
研 究 方 向 嵌入式系统硬件研究
7>2013年 5 月 18 日
摘要
随着电子技术的飞速发展嵌入式系统已经广泛渗透到人们生活当中其实嵌入式系统实际上是嵌入式计算机系统的简称它是相对于计算机系统而言的本文以嵌入式系统发展作为引入介绍嵌入式stm32的种类及功能嵌入式系统各个领域的应用嵌入式系统不仅仅是个简单的系统操作需要外围设备的搭建和软件的构建相互结合的产品需要实时的操作系统μCOS-?的移植到芯片上介绍了stm32硬件结构和描述了如何搭建外围电路所能实现的基本功能例如以太网串口ADC转换EEPROM等等
关键字嵌入式stm32μCOS-?以太网硬件结构
Abstract
with the rapid development of electronic technology embedded systems
have been widely infiltrated into peoples lives in fact embedded system
is actually "embedded computer system" referred to it is with respect to
the computer system In this paper as the introduction to embedded system development introduces the types and features of embedded STM32 embedded systems applications in various fields the embedded system is not only a simple operating system to build the peripheral equipment and software to build a combination product need the operating system μ COS- ?
transplant real-time to chip Introduced the hardware structure of STM32 and describes how to build the external circuit the basic function can be realized such as Ethernet serial port ADC conversion EEPROM etc
Key words embedded system STM32 μ COS- ? Ethernet hardware
structure
目录
第一章前言 1
11 什么事嵌入式系统 1 12 嵌入式系统的发展与应用 1 13 嵌入式系统的组成 2 第二章 嵌入式系统的分类 3 21 按处理器位宽分类 3 22 按有无操作系统分类 3 23 按实时性分类 3
24 按应用类分类 3
第三章 STM32F103单片机概述 4 31 stm32简介 4
32 stm32f103vet功能介绍 4 33 IO端口 5
34 IO模式和速率的匹配 5 第四章 嵌入式硬件电路设计 6 41 Cortex-M3供电模块设计 6 42 流水灯及独立按键复位电路设计 6 43 ADC转换电路 7
44 串口通信 8
45 I2C-EEPROM电路设计 9 46 CAN总线设计 10
47 以太网电路设计 11
第五章 操作系统μCOS-?概要 12 51 μCOS-?特性与功能介绍 12 52 STM32单片机上的移植 13
521 内核头文件OS_CPUH 13 522 临界代码段 13
523 栈的增长方向 14
524 其他函数声明 14
525 与CPU相关的C函数和钩子函数 OS_CPU_CC 14
526 与处理器相关的汇编代码OS_CPU_AASM 15
第六章 简要说明软件结合硬件实现串口通信 15
61 Jlink驱动安装与MDK环境搭载 15 62 异步串口通信软件设计 16 63 配置串口通信 16
63 实验现象 17
第七章 简易智能加热控制系统 18 71 智能加热系统控制原理 18 72 DB18B20测温模块 19
73 系统硬件结构 19
74 系统程序流程框图及模拟 21 第八章 总结 23
[参考文献] 25
附录 26
第一章前言
11 什么事嵌入式系统
嵌入式系统Embedded System也称嵌入式计算机系统听到这个名字我们很快联想到了计算机也就是说嵌入式系统是计算机的一种演化过来的因此在学习和理解嵌入式系统概念上必须先了解计算机的基本概念
我们先简单了解一下计算机一个完整的计算机系统它包括硬件和软件两部分如图1-1所示软件是编程指令与存储数据的集合而硬件则是执行指令和处理数据的平台都是我们日常可以见到的计算机的硬件系统主要由CPU存储器外部设备的计算机总线组成软件则包括系统软件和应用软件两部分操作系统属于系统软件的组成部分[1]
图11 系统构成
12 嵌入式系统的发展与应用
早起计算机由电子管组成 由美国宾夕法尼亚大学研究的当时的计算机体积比较庞大质量笨重并且不易携带灵活性不高主要用于大量的计算任务随着社会和科技的不断发展不久晶体管计算机的出现尤其是集成电路在计算机中得到应用新型计算机体积越来越小功能越来越完善性能越来越强除了数值计算外还具有图像处理快速存储实信息处理自动控制等功能将这些功能集成到一个专门应用设备中可显著提高设备的性能此时嵌入式系统应运而生
起初嵌入式系统的发展因为计算机是个昂贵的电子设备所以应用的领域仅限于军事工业控制等重要地方随着微处理器技术的迅速发展计算机集成度越来越高在性能提高的同时计算机也变得越来越小越来越价廉嵌入式系统也进入快速发展时期
在科技技术时代现代社会向着数字化和信息技术化及智能化发展嵌入式系统将发挥举足轻重的地位在今后的日常生活中嵌入式系统不仅存在于电视洗衣机冰箱手机它有可能是在我们的日常生活用品如衣服鞋子背包等也可以配备一个计算机系统
13 嵌入式系统的组成
大部分嵌入式系统都是针对特定场合和功能定制的因此彼此之间在功能性能体系结构外观等方面肯定存在很大的不同从计算机原理角度看嵌入式系统包括硬件和软件两部分组成 硬件是嵌入式系统基本的物质基础它建立在软件系统之上并且提供了系统软件运行的物理平台和通信接口 软件是计算机系统中与硬件同等重要的一部分它包括程序相关代码及其它操作说明和指令 [1]
图 12系统组成
第二章 嵌入式系统的分类
21 按处理器位宽分类
按处理器位宽可将嵌入式系统分为4位8位16位和32位系统一般情况下位宽越大性能和功能越多整个系统越完善
22 按有无操作系统分类
现代通信计算机操作系统是必不可少的软件系统在嵌入式系统中则有两种情况分有操作系统和无操作系统
在有操作系统的情况下嵌入式系统的任务管理内存管理设备管理文件管理等都有操作系统完成并且操作系统为应用软件提供丰富的编程接口
在一些功能单一的嵌入式系统中如基于8051和F020单片机系统硬件平台简单系统不需要支持复杂的显示通行协议文件管理多任务管理等功能这种情况下没有必要运行操作系统
23 按实时性分类
根据实时性要求可将嵌入式系统分为硬实时系统和软实时系统两类
在硬实时系统中系统可以保证在最坏情况下得到服务时间即对事件响应时间的截止期限必须得到满足在这样的系统中如果一个事件在规定时间期限内没能处理完或者延迟处理则会导致致命的系统错误
在软实时系统中任务能够得到满足的时间处理得到系统的时间也能够在截止期限前得到处理但系统能不能保证时刻都能满足这样的条件当截止期限条件偶尔没得到满足时并不会给整个系统带来致命的系统错误
24 按应用类分类
消费类电子产品过程控制类产品通信信息类产品智能仪器仪表产品航空
航天设备与武器系统公共管理与安全产品生物医学微电子产品等等[1]
第三章 STM32F103单片机概述
31 stm32简介
STM32系列产品是ST公司推出的一系列的性价比较高的单片机专为要求高性能低成本低功耗的嵌入式应用专门设计的ARMCortex-M3内核按性能分成两个不同的系列STM32F103增强型系列和STM32F101基本型系列增强型和基本型主要区分在时钟频率上增强型系列时钟频率达到72MHz是同类产品中性能最高的产品基本型时钟频率为36MHz两个系列都内置32K到128K的闪存不同的是SRAM的最大容量和外设接口的组合时钟频率72MHz时从闪存执行代码
32 stm32f103vet功能介绍
我们先从STM32内部说起CPU采用的是72MHZ 125DMipsMHz在周期存储器中是0等待时间具有单周期乘法和除法功能存储器从32K字节至128K字节的闪存程序存储器从6K字节至20K字节的SRAM首先多的就是IO接口我们用的是100个引脚的具有80个IO口还是多功能双向5V兼容的他们还可以映射到16个外部中断并且2个12位的模数转换器具有双采样和保持功能内部还自带了一个温度传感器因为STM32属于ARM的低端产品但是比其他的单片机高级所以功能比较多定时器就多大7个多有16位的定时器3个当定时器多大4个的时候就具有捕获输出比较PWM或脉冲计数的通道不仅定时器多通信接口也多有三种通信接口USART接口SPI同步串行接口还有CAN接口和USB 20全速接口最重要的是有DMA控制器支持内部和外部的数据存储这样调用数据时可以不直接经过CPU[2]如图31所示
33 IO端口
STM32芯片允许IO引脚被配置为多种模式需要软件进行配置比如通用输入或输出被称为通用GPIO General-purposeIO 而GPIO引脚被分为GPIOAGPIOBGPIOG不同的组每组端口分为015共16个不同的引脚每个GPIO端口有两个32位配置寄存器两个32位数据寄存器一个32位置位复位寄存器还有一个16位复位寄存器和一个32位锁定寄存器
图31结构图
34 IO模式和速率的匹配
STM32的GPIO有多种模式模拟输入浮空输入复用开漏输出复用推挽输出上拉下拉输入开漏输出推挽输出八种模式有三种速率配置分别是2MHZ10MHZ50MHZ输出速率[2]这个速率是对IO端口的驱动电路的响应速度而不是输出信号该输出信号的速度与程序有关通过选择不同速率输出驱动模块的选择也不同以达到最佳的噪声控制和降低功耗的目的这八个模式要根据具体的操作来选取要配置的模式当想要点亮LED灯的时候选择的是输出模式当要进行串口通信时TX和RX引脚要配置成复用推挽输出模式和浮空输入模式这样要根据具体的功能来配置IO端口
第四章 嵌入式硬件电路设计
41 Cortex-M3供电模块设计
Cortex-M3是一个低功耗模式的32位单片机不像以往我们熟悉的8051和F020单片机都是有5V供电的他们只需要用一个USB线接到电脑USB接口上就可以正常的工作然而Cortex-M3是一个20至36V供电的高速处理器我们选择的33V供电这样既不太高也不太低同样我们也需要一个USB线虽然是输出5V的电压我们只需要给它降压到33V就可以了需要一个33V稳压芯片就可以供电为了使输出电压更好的稳定输出分别在稳压芯片前后两端加上了去耦电容过滤掉噪声和毛刺[3]如图41
图41供电模块
42 流水灯及独立按键复位电路设计
我们起初学的单片机如8051和80c51F020最开始做得实验就是有关LED灯的实验格式各样的流水灯以及单独按键控制流水灯的形式控制LED等得点亮和熄灭就是控制单片机引脚的输出状态但是想要点亮LED灯有两种办法一种是拉电流模式另一种是灌电流模式我们采用的是罐电流方式的也就是通过33V的电源经过限流电阻使其电流流入发光二极管点亮LED然而拉电流就是相反的[3]如图42所示
既然有了流水灯就缺不了控制流水灯的花样按键就是通过断开和连接引脚输出的高到底电瓶和对单片机内部产生中断服务请求由于嵌入式Corter-M3内部含有多个中断源也就是IO引脚的复用功能每当Corter-M3程序走到死循环和待机状态时我们需要对其上电从新启动使其所有的程序都回到初始化转头在能够正常的工作我们只需要加上一个复位的按键就可以解决问题避免了断电和上
电的步骤复位功能是由于电容的充放电的原来完成的这样我们只需要在按键的地方加上一个电容就可以了如图43所示
图42 LED灯 图43 电路按键及复位电路
既然有了流水灯就缺不了控制流水灯的花样按键就是通过断开和连接引脚输出的高到底电瓶和对单片机内部产生中断服务请求由于嵌入式Corter-M3内部含有多个中断源也就是IO引脚的复用功能每当Corter-M3程序走到死循环和待机状态时我们需要对其上电从新启动使其所有的程序都回到初始化转头在能够正常的工作我们只需要加上一个复位的按键就可以解决问题避免了断电和上电的步骤复位功能是由于电容的充放电的原来完成的这样我们只需要在按键的地方加上一个电容就可以了如图43所示
43 ADC转换电路
我们日常生活中有很多的模拟量如电压压力光强温度等等都是无法直接读出来的为了更方便的对这些模拟量准确的数值我们就需要把这些模拟量转换成数字量使其更好的读数和观察本文是以STM32F103VET6核心芯片扩展的外围电路Corter-M3内嵌了3个12位的ADC每个ADC共用多达18外部通道可测量16个外部和2个内部信号源并且可以实现单词或多次扫描转换这样就比其他的单片机方便多了就不用在外接有关ADC转换的芯片了只需要搭载一个模拟输入量既可以了该芯片内部结构是采用逐次逼近型模拟数字转换器
该电路设计的是参考接地的即Vref- 0V而参考电压正极的范围为24V Vref 36所以我设计的电路不能直接测量负电压如图44所示
图44 ADC采样电路
44 串口通信
我们已经把流水灯和ADC的硬件电路设计完成了在程序执行过程中我们可以通过点亮一个LED灯来显示代码执行的状态然而ADC转换就不能够直接的表现出来这样我们想要通过某些办法显示在电脑上就可以直观的检测到数字量的变化那么这时串口通信就起到直观重要的作用了该电路主要芯片是3232CSE搭载这个电路其实很简单按照数据手册就可以了外部需要四个01uF的电容并且内部具有ESD保护STM32的PA10引脚的复用功能为USART1的Rx接到J1的第二个引脚而PA9引脚的复用功能为USART1的Tx接到J1的第三个引脚上这样接法和PC机的串口接法一样就是使用两头都是母头的交叉线如图45所示
串口线主要分为两种直通线和交叉线
交叉线两个串口5和5相连2和3相连3和2相连
直通线两个串口5和5相连2和2相连3和3相连[4]如图46所示
图45 串口电路
图46 交叉线和直通线
45 I2C-EEPROM电路设计
I2C总线是Philips公司推出的一种串行总线是具备多主机系统所需要的包括总线裁决和高低速器件同步功能的高性能串行总线
I2C总线只有两根双向信号线一根是SDA数据线一根是SCL时钟线所有连接到I2C总线上器件的数据线都接到SDA上各器件的始终线都接到SCL上
图47 I2C总线基本结构
I2C总线是一个多主机的总线它可以有一个或多个主机主机控制着总线上的运行状态主机的主要功能是发起始信号发时钟信号和发结束信号的器件I2C总线的两根双向信号SDA和SCL他们均要通过一个上拉电阻约10K左右接到正电
源上当总线处在空闲状态的时候这两根线都处于高电平连接到总线上的器件输出级必须是漏极开路或者集电极开路等到某一个器件输出低电平的时候都将会使其中线上的信号变为点电平这样可以检测到有信号的变化因为我们设置的SDA和SCL线处于线与的关系另外一个原因是器件间的数据传输能够达到同步作用[4]图47所示
串行EEPROM是目前单片机应用系统使用较普遍的存储器其优点是体积小功耗低占用IO口线少性价格比高
带有I2C总线接口的EEPROM芯片常用的是我们选用的是AT24C系列的主要型号和容量有AT24C01128字节AT24C02256字节AT24C04512字节AT24C081K字节AT24C162K字节我们选用的是AT24C02芯片改芯片有固定地址部分是1010A0A1A2引脚接到高低电平后得到确定的3位编码形成的7位编码即为该器件的地址码图48所示
图48 EEPROM电路
46 CAN总线设计
CAN是Controller Area Network的缩写可以代表控制器区域网络系统国际标准化的串行通信协议的总线进行数据传输为了适应量的需要和减少线束通过多个局域网数据高速通信量大CAN总线是一种多主方式的串行通讯总线还具备抗电磁干扰的能力并能测量产生的任何错误
CAN总线主要特点是低成本传输距离远长达10Km传输速率数据最高时速可达1Mbits可根据报文的ID地址决定接收或屏蔽该报文发送的信息遭到破坏后可自动重发当产生的错误比较严重时可以退出总线的功能
CAN总线能够使用多种物理介质传输例如同轴电缆双绞线光纤等信号使用
查分电压传送信号两条信号线被称为CAN_H和CAN_L静态时均是25V左右CAN_H状态表示为逻辑1也叫隐性CAN_状态表示逻辑0也称显性此时通常电压为CAN_H 35VCAN_L 15V 如图49
我们采用CAN的告诉收发器TJA1050TJA1050可以为总线提供差动的发送功能也可以为总线提供差动的接受功能两端个需要加上一个120欧姆的电阻主要用于远距离传输时的阻抗匹配和增强EMC电磁兼容性能和消除电路中信号的反射等干扰
图49 CAN总线设计图
47 以太网电路设计
以太网Ethernet局域网是计算机网络技术IEEE 8023标准由IEEE以太网标准的发展它指定的物理层连接信号和媒体接入层协议以太网是最常见的局域网技术它在很大程度上取代了其他局域网标准以太网的标准拓扑总线拓扑结构快速以太网100Base-T1000BASE-T标准来减少冲突最大程度的增加网络的速度和效率最大程度使用交换机连接到网络和组织使以太网拓扑结构已经成为一个星型
我们利用ENC28J60主要有7个功能模块组成1SPI接口2控制寄存器 3双端口RAM缓冲器4判优器5总线接口对通过SPI接收的数据和命令进行解析6MAC Medium Access Control 模块符合IEEE8023标准的MAC逻辑7PHY 物理层 模块对模拟数据进行编码和译码该器件还支持其他模块例如振荡器片内稳压器电平变换器和系统控制逻辑[5]图0所示
图0以太网电路
同样需要一个网络变压器我们采用的是HR911105A脉冲变压器它应具有2KV
以上的电压隔离性能防静电干扰两个变压器均需要额外的两个50欧姆的电阻和一个001uFd的电容与特定端相连ENC28J60的内部模拟电路需要在RBIASA引脚与地之间外接一个24K的电阻每个VDD和VSS引脚对都应该连接一个01uF的陶瓷旁路电容这些电容应尽可能靠近引脚需要相对高的电流才能驱动双绞线接口因此所有电缆应尽可能短并且可以减少电阻损耗图11所示
图11网络接口第五章 操作系统μCOS-?概要
51 μCOS-?特性与功能介绍
μCOS-?嵌入式操作系统是由TeanJLabrosse开发的从μCOSμCOS-?经过十几年的发展已经在世界范围内得到了广泛的应用其功能在不断完善受到嵌入式系统领域开发者的青睐μCOS-?具有以下的主要特性
1源代码公开
2具有很好的可移植性
3可固化
4根据需要可裁剪
5占先式和多任务也
6可确定性系统服务中断管理稳定性与可靠性等[7]
52 STM32单片机上的移植
μCOS-?移植主要需要修改三个文件在一个微处理器平台上移植μCOS-?只需要修改OS_CPUHOS_CPU_AASM和OS_CPU_CC这三个文件
521 内核头文件OS_CPUH
我们在改变OS_CUPH文件是首先要定义数据类型处理器相关代码声明函数原型
全局变量OS_CPU_GLOBALS和OS_CPU_EXT允许我们是否使用全局变量
数据类型大多数Cortex-M3编译器中short是16位int是32位尽管包含了浮点数但μCOS-?中并没用到M3是32位所以堆栈的数据类型OS_STK设置32位而M3的状态寄存器xPSR是32位
typedef unsigned char BOOLEAN
typedef unsigned char INT8U
typedef signed char INT8S
typedef unsigned short INT16U
typedef signed short INT16S
typedef unsigned int INT32U
typedef signed int INT32S
typedef float FP32
typedef double FP64
typedef unsigned int OS_STK
typedef unsigned int OS_CPU_SR
522 临界代码段
临界段就是不可被中断的代码段也就是说为了某一段代码的顺利执行需要临时关闭一些中断等待这段代码执行完之后在开启中断服务例如常见的入栈出栈等操作就不可被中断μCOS-?是一个实时内核需要关闭中断进入开启中断退出林阶段μCOS-?通过定义了两个宏来关中断和开中断OS_ENTER_CRITICAL
OS_EXTI_CRITICAL
define OS_CRITICAL_METHOD 3
define OS ENTER_CRITICAL cpu_sr OS_CPU_SR_Save
define OS_EXIT_CRITICAL OS_CPU_SR_Restore cpu_sr
事实上总共有3中开关中断的方法根据不同的处理器选用不同的方法大部分情况下选用第三种方法
523 栈的增长方向
按我们常理来看一般的栈增长方向是由低到高而STM32的栈生长方向是个例外它由高地址向低地址增长的因此OS_STK_GROWTH定义为1
define OS_STK_GROWTH 1
524 其他函数声明
在OS_CPUH中我们还声明了其它的使用函数但是这几个函数都是在OS_CPU_AASM中实现的
void OSCtxSw void 用户切换
void OSIntCtxSw void 中断任务切换
void OSStartHighRdy void 在操作系统第一次启动调用切换
void OS_CPU_PendSVHandler void 用户中断处理
525 与CPU相关的C函数和钩子函数 OS_CPU_CC
移植μCOS-?时我们要写10个简单的C函数9个钩子函数和1个任务堆栈结构初始化函数
钩子函数是指那些插入到某些函数中扩展这些函数功能的函数钩子函数为第三方软件人员开发并提供扩充软件功能的入口点为了系统功能μCOS-?提供大量的钩子函数用户不需要修改μCOS-?内核代码程序只需要向钩子函数添加
代码就可以扩充μCOS-?的功能
OSInitHookBegin void
OSInitHookEnd void
OSTaskCreateHook OS_TCB ptcb
OSTaskDelHook OS_TCB ptcb
OSTaskIdleHook void
OSTaskStatHook void
OSTaskSwHook void
OSTCBInitHook OS_TCB ptcb
OSTimeTickHook void
526 与处理器相关的汇编代码OS_CPU_AASM
在OS_CPU_AASM中实现与处理器相关的函数他们分别是OS_CPU_SR_Save
OS_CPU_SR_Restore OSStartHighRdy OSCtxSw OSIntCtxSW 总共五个
关中断函数OS_CPU_SR_Save 和恢复中断函数OS_CPU_SR_Restore 它的功能是关全局中断前保存全局中断标志进入临界段退出临界断后恢复中断标记
启动最高优先级任务运行OSStartHighRdy 它主要完成的的任务是为任务切换设置PenSV的优先级当第一次任务切换设置栈指针为0设置OSRunning TRUE以表明系统在运行触发一次PendSV打开中断等待第一次任务的切换
任务级任务切换函数OSCtxSw 当任务因为被阻塞主动向CPU请求调度时被执行的由于此时任务切换都是在非异常模式下进行的主要功能是将当前的任务的CPU现场保存到任务堆栈中随后取得高优先级任务的堆栈指针从该堆栈
中恢复此任务的CPU现场使之继续执行[8]
第六章 简要说明软件结合硬件实现串口通信
61 Jlink驱动安装与MDK环境搭载
在用Jlink下载和调试程序之前我们需要在电脑上安装Jlink驱动我们可我们还要安装JLINKV8的驱动完成Jlink驱动安装我们将JLINK连接到电脑的USB口即可在我的电脑管理设备管理器通用串行总线控制器中看到一个J-Link driver
我们写代码之前需要把MDK软件安装好这个软件其实我们都很熟悉的我们学过51单片机用的软件是KEIL后来这个公司被ARM公司收购之后就改名位MDK同样这个软件安装很简单按照提示就OK了但是我们需要把这个软件破解一下因为我们在下载程序的时候就会有40k的代码限制
62 异步串口通信软件设计
建立工程和我们以往的都是一样的我在这里就不多的赘述了但是要强调的是我们需要配置工程文件和以往的不一样在编写程序之前我们要花一些时间研究一下Cortex-M3所给的库函数有些初始化的函数就不用我们来写了加入到工程中就可以这些库函数里的定义给我编写程序带来了很多的方便要把M3芯片上的驱动和外设驱动一起放进去还要把系统文件也放进去一些中断函数也要加入配置中我把所有的外设和驱动以及系统文件都放进去了也可把我们当前需要的库文件添加进去如图61所示
图61 文件配置
63 配置串口通信
我们在这个例程中用到了GPIORCCUSART这三个例程的库文件stm32f10x_gpiocstm32f10x_rcccstm32f10x_usartc我们要把这几个库文件添
加进工程里并在stm32f10x_confc中把头文件的注释去掉然后根据我们自己的要求就可以写GPIO和USART的初始化代码了[9]如图63所示
GPIO_InitTypeDef mygpio
USART_InitTypeDef myusart
RCC_APB2PeriphClockCmd RCC_APB2Periph_GPIOAENABLE
RCC_APB2PeriphClockCmd RCC_APB2Periph_USART1ENABLE 使能IO时钟和USART1外设时钟
mygpioGPIO_Pin GPIO_Pin_9 TX串口发送引脚
mygpioGPIO_Mode GPIO_Mode_AF_PP 配用复用
mygpioGPIO_Speed GPIO_Speed_50MHz
GPIO_Init GPIOAmygpio
mygpioGPIO_Pin GPIO_Pin_10
mygpioGPIO_Mode GPIO_Mode_IN_FLOATING
GPIO_Init GPIOAmygpio
myusartUSART_BaudRate 115200
myusartUSART_HardwareFlowControl USART_HardwareFlowControl_None
myusartUSART_Mode USART_Mode_RxUSART_Mode_Tx
myusartUSART_Parity USART_Parity_No
myusartUSART_StopBits USART_StopBits_1
myusartUSART_WordLength USART_WordLength_8b
USART_Init USART1myusart
USART_Cmd USART1ENABLE 使能USART1串口外设
63 实验现象
我们把JLINK下载线连接到电脑上并且把串口线同样连接 到电脑上打开串口调试助手配置串口超级终端为115200-8-N-1将编译好的程序下载到板子上即可看到现象[10]如图62
图62 串口实验现象
第七章 简易智能加热控制系统
71 智能加热系统控制原理
加热系统原理是根据温度传感器检测到外部温度并且通过上传供能经过处理器处理和判断计算过后下达加热指令还是制冷指令如图71所示
图71系统图
功能描述采用两个温度传感器18b20检测温度分别检测外部温度和机器自身工作温度我们可以根据实际情况来设定外部温度到达设定值时停止工作但低于设定值的时候自动启动加热状态机器自身的工作额定温度我们也可以设定当自身的温度达到设定的温度之后我们可以自动的停止机器工作或者启动降温设备为了方便人们观察和记录温度通过LCD显示屏显示实时温度值并且还有工作状态指示灯操作说明S5是外部加热按钮S6加温度S7减温度S8切换LCD温度显示当系统上电后LCD上显示两行第一行显示当前温度第二行显示温度为0
外部温度设定首先按S5启动加热系统按S6键或S7键可设定外部加热温度达到设定值时停止加热并且蜂鸣器报警
内部设定按S8键切换显示使其显示内部温度设定按S6键或S7键可设定内部温度标准值按S5键启动加热此时加热计时开始当温度达到设定值时加热计时停止继电器动作加热指示灯闪烁同时蜂鸣器报警显示屛上显示当前温度和ERROR
72 DB18B20测温模块
DS18B20 数字式温度传感器是美国Dallas 公司最新推出的产品它能直接读出被测温这一部分主要完成对温度信号的采集和转换工作由DS18B20数字温度传感器及其与STM32单片机的接口部分组成数字温度传感器DS18B20把采集到
的温度通过数据引脚传到单片机上单片机接受温度并存储此部分只用到DS18B20和单片机硬件很简单这个温度芯片厂家已经加入检测点已把被测信号数字化了因此在单总线上传送的是数字信号这使得系统的抗干扰性好可靠性高传输距离远[1]DS18B20传感器有如下特点?独特的单线接口仅需要一个端口引脚进行通信?无须外部器件?零待机功耗?用户可定义报警设置?内部具有ESD保护功能
73 系统硬件结构
硬件结构组成主要由五部分组成的微处理器部分传感器部分显示部分按键部分输出控制部分
微处理器部分主要是处理和计算温度传感器18B20通过单总线传输的数据计算好温度值后在LCD上显示当前的温度值我们采用的是STM32的GPIO_D接口主要连接LCD和继电器及温度传感器如图73所示
图73 GPIO_D接口
传感器部分我们设计了两传感器分别采集外部温度和内部温度图74所示
图74 传感器
显示部分选用LCD1602显示第一个页面第一行显示当前温度第二行显示预设温度值第二页第一行同样显示当前温度按启动键之后第二行开始计时当达到预设的温度值后有计时状态转换为显示ERROR图75所示
图75 显示图
按键部分S5是加热启动S6加温度S7加温度S8切换显示图76所示
图76 按键图
继电器部分主要是控制系统是否加热图77所示
图77 继电器图
74 系统程序流程框图及模拟
如图78所示
图78 程序流程图
系统模拟现象如图79011所示 图79 当前值和设定值
图0当前温度值和加热时间 图11系统温度过高停止报错
第八章 总结
本文主要论述了嵌入式Cortex-M3硬件设计结构围绕STM32内部功能进行外部硬件结构设计关于设计方面主要包括以下几个方面
第一首先要了解什么是嵌入式嵌入式的基本定义要分清嵌入式系统和我们通用的计算机之间的相同点和不同点嵌入式系统的自身的特点例如嵌入式系统具有针对性硬件一般对扩展能力要求不高软件一般有固话的要求采用交叉开发的模式等等还要清晰的嵌入式的发展和应用简单的来说我们日常用的手机就是嵌入式系统开发的对于硬件结构设计我们应该了解嵌入式系统的组成以及嵌入式的分类
第二对嵌入式的基本知识了解了我们就以STM32位核心芯片解读了解其基本的内存容量和所具备的功能并且要结合自己的硬件要求分配I\O的复用功能了解了STM32的功能仅仅不够的我们还要对其外设的硬件合理化选择电路功能实现全面的了解外围器件的选择要斟酌的考虑例如EEPROM串口AD和DA内部外部功能芯片的时序图细心分析各个功能电路之间是否存在电气干扰选择的器件和芯片的功耗可靠性和精度是否有特殊的要求当焊接电路板时考虑他们的分布情况走线的合理性
第三对其所设计的电路进行原理图绘制和PCB的制作在发到厂家进行加工加工回来焊接电路然后结合软件对该电路板调试调试之前在电脑上安装其相应的驱动学习STM32固件的库函数和编程技巧准备工作都做好了下载程序对其相应各个子功能电路调试
[参考文献]
[1]徐端全嵌入式系统原理与设计[M]北京 北京航空航天大学出版社2009
[2]南京万利翻译《STM32参考手册》2008
[3]黄智伟全国大学生电子设计竞赛常用电路模块制作[M]北京北京航空航天大学出版社2011
[4]李全利迟荣强编著单片机原题与接口技术[M]北京高等教育出版社2004
[5]宋岩译《Cortex-M3权威指南》2008
[6]百度百科实时操作系统com投稿赚钱
[7]任哲编著嵌入式实时操作系统μCOS-?原理及应用[M]北京北京航空航天大学出版社2009
[8]毕春跃 基于μCOS-?和Cortex-M3的嵌入式系统研究[J]浙江万里学院计算机与信息学院2007
[9]刘美茹主编C程序设计教程[M]哈尔滨哈尔滨工业大学出版社2005
[10]李凤霞C语言程序设计教程[M]北京北京理工大学出版社2009
[11]高海宾等编著Altium Designer 10从入门到精通[M]北京机械工业出版社2011
[12]im 公司 1-Wire 单总线的基本原理[ EB OL ]
[13]马云峰陈子夫李培全 数字温度传感器DS18B20 的原理与应用[ EB OL ]
附录
大庆师范学院本科毕业论文设计
IV
大庆师范学院本科毕业论文设计
5
12
15
17
25
USB口
串行flash EEPROM USBgongdian
外部
温度
加速度度
AD采集
外设
输入输出
供电系统
存
储
STM32
串口
CAN口
网络
按键
范文二:基于ARM嵌入式系统的Socket通信设计毕业设计
毕业论文 题 目 基于 ARM 嵌入式系统的 Socket 通信设计
摘 要
嵌 入 式 系 统 是 计 算 机 技 术 、 半 导 体 技 术 和 电 子 技 术 的 综 合 体 , 已 经 广 泛 应 用 于 科 学 研 究 、 工 程 设 计 、 国 防 军 事 、 自 动 化 控 制 等 各 个 领 域 。 随 着 网 络 通 讯 技 术 的 迅 猛 发 展 , 生 产 和 生 活 中 广 泛 要 求 嵌 入 式 系 统 终 端 能 够 完 成 网 络 通 讯 功 能 。 论 文 就 是 以 ARM7 TDMI为 嵌 入 式 开 发 平 台 , 开 发 具 有 网 络 通 信 功 能 的 嵌 入 式 终 端 。
SOCKET 是 一 个 通 信 链 的 句 柄 , 通 过 套 接 字 向 网 络 发 出 请 求 或 者 应 答 网 络 请 求 ,用 于 TCPIP 协 议 的 应 用 程 序 之 间 的 相 互 通 信 。 论 文 选 择 了 ARM 体 系 结 构 的 嵌 入 式 LPC2200处 理 器 , 根 据 系 统 的 需 求 , 在 综 合 各 种 设 计 方 案 的 基 础 上 , 选 择 移 植 带 有 TCPIP 协 议 的 ucLinux 嵌 入 式 操 作 系 统 。裁 剪 和 定 制 系 统 后 , 构 建 相 关 的 文 件 系 统 。 在 此 基 础 上 , 编 写 应 用 程 序 , 调 用 系 统 的 Socket 通 信 函 数 , 实 现 服 务 器 端 和 客 户 端 的 通 信 。 描 述 IP 地 址 和 端 口 , 用 于 在 两 个
论 文 成 功 的 实 现 了 嵌 入 式 设 备 的 网 络 接 入 功 能 , 各 个 带 有 网 络 通 讯 功 能 的 嵌 入 式 终 端 可 以 相 互 通 讯 ,扩 大 了 和 提 高 了 嵌 入 式 设 备 的 应 用 范 围 ,对 嵌 入 式 系 统 的 发 展 有 较 大 的 意 义 。
关 键 词 :嵌 入 式 系 统 ; ARM7TDMI ; socket ; TCPIP
Abstract
The embedded system is a complex system with the computer technology, semiconductor technology and electronic technology .It widely used in scientific research, engineering, national defense, automation and other fields. With the rapid development of network communication technology,our production and life requires the terminal to complete the network communication function in a wide range of embedded systems. The Paper select the ARM7 TDMI for embedded development platform, develop the embedded network communication terminal.
Socket is a communication chain applications,. The paper select LPC2200 embedded ARM as processor architecture, with the system need, design the integration based on transplantation with TCP IP protocol ucLinux embedded operating system. The paper build related file system. after cutting and custom systems. On this basis, finished an application, and call the system function of Socket Communications, achieve server and client communication.
The paper achieved the network access functions of the embedded device, the embedded with a network communication terminal can communicate with each other, and expand and improve the application range of embedded devices, and 下 有 :gcc, arm-elf-gcc,binudls, genromfs,flthdr和 elflflt 等 各 种 应 用 工 具 。
3.1模 块 化 的 设 计 与 分 析
3.4.1开 发 板 上 完 成 的 设 计
从 项 目 的 整 体 出 发 , 开 发 板 上 应 完 成 的 工 作 包 括 , 移 植 uClinux 到 SmartARM2200开 发 板 , 移 植 过 程 中 应 配 置 uClinux , 其 中 包 含 大 部 分 系 统 配 置 , 如 :Non-standard serial port suppor (非 标 准 串 口 支 持 ) 、 ftp (文 件 传 输 协 议 ) 、 ()侦 听 连 接 请 求 , 当 远 程 的 客 户 机 使 用 connect()连 接 listen()正 在 监 听 的 端 口 时 , 使 用 accept()处 理 它 。 在
accept()处 理 了 连 接 请 求 后 , 将 会 生 成 一 个 新 的 描 述 这 个 连 接 端 口 的 套 接 字 , 利 用 这 个 套 接 字 就 可 以 发 送 和 接 收 数 据 了 。 如 果 listen()一 直 没 有 侦 听 到 连 接 请 求 , 那 么 服 务 器 就 会 在 accept()处 阻 塞 , 一 直 到 有 连 接 请 求 到 来 。
对 于 客 户 机 任 务 来 说 ,它 也 需 要 先 用 socket()建 立 一 个 通 信 端 口 , 但 是 它 不 必 用 bind()把 他 的 本 地 地 址 绑 定 到 这 个 端 口 上 ,而 是 直 接 使 用 connect()向 指 定 的 服 务 器 发 送 连 接 请 求 , 如 果 请 求 被 接 受 , 就 可 以 进 行 通 信 了 。
1系 统 详 细 设 计
4.1. uClinux 的 移 植
4.1.1u Clinux 嵌 入 式 系 统 的 下 载
嵌 入 式 系 统 交 叉 编 译 完 成 后 , 需 要 将 编 译 好 的 嵌 入 式 内 核 下 载 到 嵌 入 式 开 发 板 上 ,然 后 嵌 入 式 开 发 板 才 可 以 运 行 嵌 入 式 内 核 。嵌 入 式 开 发 板 按 照 以 下 两 种 方 式 进 行 加 载 :
(1) 直 接 将 编 译 好 的 内 核 下 载 到 嵌 入 式 存 贮 器 中 。 由 于 嵌 入 式 开 发 板 的 资 源 有 限 ,存 贮 器 的 容 量 不 够 大 ,这 种 方 式 对 系 统 的 存 贮 器 要 求 较 高 ,但 是 能 够 带 来 更 高 的 运 行 速 度 ,因 为 系 统 只 直 接 从 嵌 入 式 开 发 板 上 启 动 的 ,系 统 直 接 解 压 缩 内 核 文 件 ,运 行 内 核 。设 计 中 采 用 这 种 方 式 [23]。
(2) 通 过 地 址 印 象 的 方 式 :由 于 嵌 入 式 系 统 的 存 贮 器 有 限 , 为 了 节 约 资 源 , 在 嵌 入 式 存 贮 器 上 建 立 地 址 印 象 , 内 核 在 执 行 的 时 候 , 首 先 运 行 到 建 立 印 象 的 地 址 ,然 后 通 过 跳 转 指 令 ,直 接 运 行 存 储 在 嵌 入 式 开 发 板 外 围 的 存 贮 器 上 ,这 样 可 以 节 约 芯 片 上 的 资 源 ,但 是 带 来 的 问 题 是 ,由 于 跳 转 ,运 行 的 速 度 会 降 低 ,对 于 运 行 速 度 要 求 不 高 的 开 发 , 可 以 采 取 这 种 方 式 。
4.1.2根 文 件 系 统 的 建 立
内 核 移 植 完 成 后 ,需 要 建 立 嵌 入 式 的 根 文 件 系 统 ,根 文 件 是 嵌 入 式 系 统 重 要 组 成 部 分 。 uClinux 主 要 应 用 于 没 有 MMU 单 元 的 嵌 入 式 芯
片 ,主 要 的 目 的 是 节 约 内 存 和 FL ASH 。根 据 使 用 场 合 的 不 同 ,根 文 件 系 统 也 有 多 种 选 择 。在 目 前 的 嵌 入 式 开 发 过 程 中 , ROMfs 是 使 用 最 多 的 文 件 系 统 。
ROMfs 文 件 系 统 比 较 简 单 , 文 功 能 紧 凑 , 并 且 是 只 读 的 。 在 ROMfs 中 , 文 件 数 据 是 按 照 顺 寻 存 放 的 。 uClinux 系 统 可 以 直 接 运 行 , 这 样 做 的 最 大 的 优 势 是 节 约 RAM 空 间 , 提 高 运 行 速 度 。 因 此 , 根 据 系 统 的 设 计 需 求 , 选 用 ROMfs 根 文 件 系 统 。 当 然 , 为 了 支 持 它 , 在 内 核 的 配 置 中 需 要 内 核 支 持 romfs 文 件 系 统 , 并 且 在 内 核 配 置 完 毕 后 建 立 虚 拟 ram 盘 , 提 供 用 户 接 口 。
4.1.3应 用 程 序 库
uClinux 运 行 效 率 高 ,是 一 个 小 型 化 的 嵌 入 式 Linux 系 统 ,这 就 要 求 相 应 的 应 用 程 序 库 具 有 较 高 的 运 行 效 率 。 glibc 是 gnu 发 布 的 libc 库 , 主 要 是 基 于 C 语 言 的 , 这 个 库 较 大 而 且 比 较 全 面 , 不 适 应 uClinux 。 因 此 需 要 进 行 相 应 的 简 化 , 这 就 是 uClibc 应 用 程 序 库 。 在 uClinux 中 , 采 取 静 态 连 接 ,目 的 是 为 了 节 约 内 存 和 片 上 资 源 ,满 足 嵌 入 式 系 统 的 设 计 需 要 。
4.2. 内 核 编 译
嵌 入 式 系 统 应 用 非 常 专 业 化 , 功 能 模 块 相 对 比 较 单 一 。 随 着 uClinux 内 核 版 本 的 升 级 , 内 核 功 能 越 来 越 强 大 , 体 系 结 构 也 越 来 越 复 杂 。由 于 存 储 空 间 的 限 制 ,为 了 提 高 运 行 性 能 ,必 须 根 据 需 要 对 内 核 进 行 精 简 , 定 制 一 个 符 合 嵌 入 式 系 统 的 操 作 平 台 。
uClinux 可 以 通 过 裁 剪 ,把 不 需 要 的 功 能 模 块 剪 掉 ,留 下 应 用 需 要 的 模 块 ,减 少 系 统 运 行 的 复 杂 想 ,让 系 统 更 加 健 壮 和 安 全 。同 时 ,嵌 入 式 芯 片 的 资 源 有 限 ,内 存 一 般 都 比 较 小 ,裁 剪 后 ,内 核 往 往 会 更 加 简 练 , 所 占 用 的 存 贮 空 间 也 会 很 小 。
由 于 uClinux 的 内 核 采 取 了 模 块 化 的 设 计 方 式 , 设 计 时 可 以 根 据 自 己 的 需 要 ,在 内 核 编 译 的 过 程 中 ,灵 活 选 择 所 需 要 的 模 块 ,节 约 资 源 ,减 少 代 码 量 ,提 高 内 核 的 运 行 速 度 和 效 率 ,这 也 是 嵌 入 式 系 统 的 一 个 明 显 的 优 势 。
4.2.1u Clinux 的 安 装
在 .Linux.org 上 下 载 版 本 为 2.4的 uClinux 源 码 包 应 的 解 压 缩 :就 会 看 到 , 在 系 统 的 目 录 盘 下 , 会 出 现 uClinux 的 源 代 码 目 录 ,
也 就 是 uClinux-dist 这 个 文 件 夹 。
由 于 本 系 统 所 用 SmartARM2200开 发 板 , 这 个 开 发 板 为 ARM7的 LPC2200芯 片 , 是 philips 公 司 设 计 制 造 的 。 为 了 适 应 这 个 芯 片 的 特 性 , 登 陆 philips 官 方 网 站 , 并 且 查 找 和 下 载 以 下 这 个 文 件 :
下 载 后 , 复 制 到 系 统 的 目 录 下 , 输 入 以 下 指 令 , 并 执 行 :
执 行 完 成 后 , 在 编 译 uClinux 内 核 是 , 选 择 系 统 的 内 核 配 置 的 时 候 , 可 以 找 到 LPC2200的 选 项 。
4.2.2配 置 uClinux
安 装 完 成 后 , 可 以 通 过 make config, make xconfig来 配 置 uClinux , 也 可 以 通 过 make menuconfig来 配 置 。
各 命 令 使 用 范 围 不 一 样 , 但 效 果 是 相 同 的 , 各 命 令 说 明 如 表 4.1所 示 。
表 4.1 uClinux的 配 置 方 式
文 本 菜 单 这 种 配 置 方 式 , 可 以 在 终 端 控 制 台 上 来 使 用 , 也 可 以 通 过 图 形 终 端 进 行 使 用 。为 了 使 得 配 置 具 有 更 强 的 直 观 性 ,系 统 设 计 采 用 了 文 本 菜 单 这 种 配 置 方 式 。
配 置 uClinux 和 文 件 系 统 具 体 的 操 作 方 法 如 下 [24]:
(1)通 过 已 经 建 立 的 终 端 或 者 控 制 台 ,找 到 uClinux 源 代 码 所 在 的 目 录 , 系 统 为 :usrsrcuClinux-dist ,
执 行 命 令 :cd usrsrcuClinux-dist
(2) 如 果 不 是 进 行 第 一 次 编 译 , 需 要 先 清 除 以 前 编 译 产 生 的 辅 助 文 件 和 目 标 文 件 ,以 保 证 编 译 的 正 确 性 。如 果 是 第 一 次 编 译 则 可 省 略 。
执 行 命 令 :make distclean
(3) 通 过 文 本 菜 单 方 式 配 置 uClinux
执 行 命 令 :make menuconfig
执 行 了 make menuconfig 语 句 后 , 将 会 出 现 如 图 4.1 配 置 内 核 界 面 。
图 4. 1配 置 内 核 界 面
界 面 中 有 提 示 使 用 “ ↑ ” “ ↓ ” 选 择 配 置 模 块 , 使 用 空 格 键 选 择 或 者 取 消 , 使 用 “ → ” “ ← ” , 选 择 命 令 , 最 后 使 用 回 车 键 Enter 执 行 命 令 。
第 一 项 可 进 行 厂 商 产 品 设 置 ,选 择 第 二 项 则 进 行 内 核 版 本 和 函 数 库 设 置 , 各 选 项 的 含 义 以 及 设 置 如 表 4.2所 示 。
表 4. 2u C l i n u x 中 各 个 选 项 的 描 述
在 设 计 的 时 候 , 根 据 系 统 需 求 , 以 及 所 选 用 的 芯 片 厂 商 等 信 息 , 进 行 系 统 的 配 置 , 主 要 是 根 据 以 上 信 息 描 述 , 进 行 设 置 。 进 入 Linux 内 核 配 内 核 资 源 的 界 面 , 如 图 4.2所 示 。
图 4. 2内 核 资 源 界 面
配 置 完 毕 后 选 择 Exit , 然 后 在 提 示 下 是 否 保 存 的 时 候 选 择 保 存 , 配 置 完 毕 后 , 选 择 Exit , 在 对 话 提 示 选 择 保 存 。
(4) 建 立 源 代 码 文 件 依 赖 关 系 (第 一 次 必 须 执 行 )
执 行 命 令 :make dep
(5) 编 译 内 核
执 行 命 令 :make
第 (4) 和 第 (5) 进 行 内 核 的 编 译 , 执 行 的 时 间 会 比 较 长 。 执 行 结 束 后 , 会 得 到 我 们 需 要 的 两 个 目 录 :ROMfs 文 件 和 images 内 核 文 件 。在 ROMfs 文 件 中 存 放 嵌 入 式 系 统 运 行 所 需 要 的 应 用 程 序 。 Images 内 核 文 件 主 要 存 放 那 个 内 核 目 录 。
经 过 以 上 程 序 , uClinux 的 内 核 编 译 全 部 完 成 。
4.2.3构 建 文 件 系 统
构 建 文 件 系 统 就 是 在 物 理 设 备 上 构 建 文 件 组 织 和 目 录 ,便 于 系 统 进 行 文 件 的 组 织 和 管 理 , 它 是 uClinux 系 统 处 理 数 据 的 基 础 条 件 。 uClinux 系 统 的 所 有 有 效 数 据 , 包 括 用 程 序 、 库 、 系 统 文 件 和 用 户 文 件 都 按 照 目 录 存 放 在 文 件 系 统 中 。 uClinux 系 统 的 文 件 系 统 , 在 组 织 上 按 照 树 状 结 构 的 方 式 进 行 组 织 ,也 就 是 顶 部 是 根 目 录 ,从 根 向 下 进
行 分 支 , 通 常 把 文 件 系 统 的 最 顶 端 成 为 根 目 录 。 uClinux 系 统 通 常 只 有 一 个 文 件 树 ,这 个 文 件 树 以 树 根“ ”作 为 起 点 ,其 它 的 文 件 和 外 部 设 备 按 照 树 的 形 式 , 挂 结 在 这 个 文 件 树 上 [25]。 uClinux 根 目 录 下 可 以 见 到 以 下 结 构 :
bin
var boot root
lib proc usr
设 计 中 选 择 的 ROMFS 文 件 系 统 , 主 要 是 考 虑 到 系 统 的 存 贮 结 构 。 因 为 这 种 文 件 系 统 的 内 核 比 较 小 , 通 常 情 况 下 只 有 4000字 节 左 右 , 可 以 有 效 的 节 约 系 统 的 资 源 。 内 核 在 连 接 的 时 候 , 只 需 要 连 接 到 ROMFS 文 件 系 统 , 后 面 用 模 块 装 载 工 具 把 其 它 相 关 的 模 块 和 文 件 系 统 装 载 进 来 , 而 不 是 所 有 的 文 件 和 模 块 全 部 挂 接 。
ROMFS 文 件 系 统 的 底 层 结 构 也 是 非 常 的 简 单 ,也 可 以 用 来 进 行 块 设 备 的 操 作 。 ROMFS 文 件 系 统 的 构 成 , 它 的 文 件 系 统 头 由 16字 节 组 成 ,文 件 系 统 名 由 4字 节 组 成 ,文 件 系 统 的 大 由 4字 节 组 成 ,其 次 还 有 4字 节 的 校 验 和 4字 节 的 卷 标 名 。然 后 就 是 文 件 的 头 和 数 据 了 ,文 件 头 也 是 由 16字 节 组 成 , 开 始 的 是 文 件 模 式 信 息 , 通 常 占 用 4比 特 的 , 后 面 的 28比 特 , 是 这 样 分 配 的 :4字 节 为 下 后 一 个 文 件 的 地 址 偏 移 量 , 4字 节 为 文 件 的 链 接 信 息 、 4字 节 为 文 件 大 小 、 4字 节 为 文 件 的 校 验 和 。 从 后 面 的 第 16字 节 开 始 , 显 示 的 是 文 件 名 和 相 关 其 数 据 [26]。
ROMFS 是 一 种 只 读 的 文 件 系 统 ,由 于 它 是 只 读 的 ,就 决 定 了 这 个 文 件 系 统 是 非 常 小 的 。 如 果 设 计 中 需 要 一 种 可 写 的 文 件 系 统 , 那 么 , 就 需 要 寻 找 一 种 可 以 在 RAM 上 使 用 的 可 写 文 件 系 统 。 在 设 计 中 , 根 据 需 要 选 择 了 RAMFS 文 件 系 统 , 这 种 文 件 系 统 可 以 用 于 RAMDISK 文 件 系 统 的 写 操 作 , 它 与 CRAMFS 的 结 合 可 以 适 合 大 多 数 嵌 入 式 系 统 的 需 求 。 制 作 ramdisk 具 体 步 骤 如 下 [27]:
一 般 在 内 核 编 译 时 , 支 持 ramdisk 的 内 核 选 项 :CONFIG BLK DEV RAM,CONFIG RD RELEASE BLOCKS, CONFIG BLK DEV IlVITRD:同 时 在 PC 机 上 按 照 如 下 的 方 法 来 制 作 :
(1) 制 作 映 象 文 件
建 立 虚 拟 成 块 的 文 件 init.img
执 行 命 令 :#dd if=devzero of=init.img bs=1024 count=500
格 式 化 生 成 的 块 设 备 :init.img 文 件
执 行 命 令 :#mke2fs – m0 – F init.img
(2) 配 置 根 文 件 系 统 , 将 ini.img 和 fomfs.img 加 载 到 主 机 文 件 系 统
执 行 命 令 :#mount init.img ram -o loop
执 行 命 令 :#mount romfs.img rom-o loop
建 立 在 ramfs 中 需 要 的 目 录 , 也 就 是 在 ram 目 录 下 建 立 子 目 录 。 执 行 命 令 :#mkdir rambin
执 行 命 令 :#mkdir ramdev
执 行 命 令 :#mkdir rametc
执 行 命 令 :#mkdir ramvar
拷 贝 必 须 的 文 件 到 ramfs 中
执 行 命 令 :#cp – a rometc* rametc
执 行 命 令 :#cp – a rombinsh rambin
执 行 命 令 :#cp – a rombininit rambinint
创 建 设 备 节 点 :
执 行 命 令 :# mknod ramdevttS0 c 4 64
执 行 命 令 :# mknod ramdevconsole c 51
执 行 指 令 的 说 明 :第 一 条 指 令 创 建 设 备 ttyS0, 即 第 0个 串 口 设 备 , 主 设 备 的 号 为 4, 从 设 备 的 号 为 64, 第 二 条 指 令 是 建 立 字 符 设 备 console, 即 控 制 台 , 主 设 备 号 为 5从 设 备 号 为 1。
最 后 卸 载 init.img 和 romfs.img. 确 保 init.img 的 修 改 已 经 保 存 。 执 行 命 令 :# umount ram
执 行 命 令 :# umount rom
到 此 RAM DISK制 作 完 毕 。
内 核 编 译 和 文 件 系 统 构 建 完 成 以 后 通 过 网 络 FTP 的 方 式 把 Linux.bin 和 ramdis 下 载 到 开 发 板 上 , 这 样 完 成 了 uClinux 的 移 植 。 4.3. PC 机 上 的 程 序 设 计
4.3.1嵌 入 式 TCP IP分 析
在 目 前 的 网 络 协 议 中 , TCPIP 是 应 用 最 广 泛 的 网 络 协 议 。 TCPIP 的 核 心 是 分 层 的 思 想 ,它 可 以 将 不 同 的 芯 片 、系 统 之 间 通 过 一 种 标 准 的 协 议 相 互 连 接 起 来 ,做 到 互 联 互 通 。需 要 传 输 的 数 据 以 数 据 包 的 形
式 进 行 传 输 , 这 也 是 TCPIP 传 输 的 一 个 基 本 单 位 。
通 常 情 况 下 ,在 嵌 入 式 系 统 的 应 用 中 ,数 据 的 采 集 和 传 输 是 是 核 心 的 任 务 和 功 能 。对 于 嵌 入 式 系 统 来 说 ,需 要 根 据 系 统 的 特 点 以 及 需 要 完 成 的 功 能 ,灵 活 选 择 相 应 的 协 议 ,因 为 嵌 入 式 系 统 的 资 源 毕 竟 有 限 , 处 理 器 的 速 度 和 PC 机 相 比 , 还 是 有 很 大 的 差 距 。 同 时 , 存 贮 的 空 间 也 是 相 对 有 限 , 需 要 的 协 议 可 以 选 择 , 不 需 要 的 协 议 可 以 裁 减 掉 , 这 也 是 嵌 入 式 系 统 最 大 的 特 点 。
选 择 了 相 应 的 协 议 后 ,还 要 根 据 系 统 的 功 能 和 需 求 ,进 行 相 应 的 分 析 ,特 定 问 题 特 定 处 理 ,这 也 是 嵌 入 式 系 统 的 一 个 特 点 。根 据 需 要 传 输 的 数 据 的 大 小 ,以 及 传 输 的 速 度 等 问 题 ,可 以 采 取 特 别 的 收 发 方 式 。 嵌 入 式 系 统 的 TCPIP 协 议 栈 主 要 包 含 ARP 协 议 IP 协 议 , ICMP 协 议 , TCP 协 议 以 及 UDP 协 议 等 。
ARP 主 要 的 功 能 是 进 行 地 址 的 解 析 , 获 取 数 据 传 输 的 物 理 地 址 。 因 为 嵌 入 式 系 统 中 数 据 是 按 照 地 址 进 行 存 贮 的 , 当 一 个 嵌 入 式 系 统 上 的 IP 地 址 的 ARP 被 上 传 到 网 络 上 , 就 会 收 到 一 个 应 答 , 这 个 应 答 确 认 物 理 地 址 ,找 到 物 理 地 址 后 ,就 会 找 到 相 应 需 要 传 输 的 数 据 ,并 进 行 传 输 。也 就 是 说 , ARP 协 议 解 决 服 务 器 端 和 客 户 端 在 通 信 的 时 候 IP 地 址 物 理 地 址 转 换 。
IP 协 议 主 要 用 于 网 络 之 间 的 相 互 连 接 ,规 定 了 进 行 网 络 连 接 时 各 个 系 统 之 间 必 须 相 互 遵 守 的 规 则 。 在 IP 进 行 数 据 传 输 时 , 对 传 输 的 IP 数 据 包 进 行 定 义 ,进 行 数 据 包 的 封 装 时 ,还 包 括 需 要 传 输 数 据 的 目 的 地 址 ,数 据 协 议 的 版 本 号 等 。最 后 还 要 对 传 输 的 数 据 进 行 校 验 ,以 确 保 数 据 传 输 的 正 确 性 。 在 IP 协 议 中 , 给 每 个 每 台 设 备 一 个 地 址 , 这 个 地 址 是 唯 一 的 , 在 传 输 过 程 中 , 相 互 传 输 数 据 的 设 备 根 据 IP 地 址 就 可 以 找 到 对 方 , 同 时 把 IP 包 解 析 出 来 , 得 到 需 要 的 数 据 。
ICMP 是 一 个 报 文 协 议 , 因 为 在 TCPIP 传 输 过 程 中 需 要 传 输 一 些 控 制 信 息 ,也 就 是 网 络 是 否 堵 塞 或 者 畅 通 ,以 及 路 由 的 相 关 信 息 等 。它 可 以 提 供 一 个 简 单 易 懂 的 网 络 出 错 的 信 息 , 通 常 使 用 的 PING 命 令 就 是 基 于 ICMP 协 议 的 。
TCP 协 议 是 传 输 层 在 连 接 过 程 中 应 用 的 协 议 , 它 是 整 个 TCPIP 的 核 心 。 TCP 协 议 一 般 要 通 过 “ 三 次 握 手 ” 的 方 式 建 立 连 接 。 TCP 协 议 起 到 承 上 启 下 的 作 用 ,与 底 层 和 高 层 的 协 议 进 行 通 讯 ,以 确 保 整 个 系 统 能 够 有 效 的 连 接 并 能 够 和 其 它 系 统 可 以 进 行 数 据 传 输 。
4.3.2嵌 入 式 TCPIP 设 计
TCPIP 协 议 比 较 复 杂 , 因 为 嵌 入 式 设 备 的 资 源 和 效 率 都 是 够 用 就 好 ,因 此 在 嵌 入 式 系 统 上 面 来 设 计 一 个 TCPIP 协 议 要 受 到 相 应 的 限 制 [28]。 论 文 在 设 计 的 TCPIP 框 架 的 时 候 , 考 虑 到 相 关 的 技 术 要 求 和 需 求 , 设 计 了 一 个 最 有 效 的 框 架 , 它 能 完 成 特 定 的 功 能 , 协 议 框 架 如 下 图 4.3所 示 。
图 4.3 嵌 入 式 TCPIP 框 架
对 于 TCP 连 接 , 嵌 入 式 系 统 需 要 把 传 递 的 数 据 、 参 数 等 存 入 指 定 的 位 置 中 ,完 成 一 次 简 单 的 数 据 服 务 。 TCP 服 务 器 端 , 通 过 三 次 握 手 建 立 连 接 , 此 时 , 嵌 入 式 系 统 为 被 动 方 , 功 能 是 监 听 服 务 器 的 状 态 , 处 于 被 动 打 开 后 的 listen 状 态 ,等 待 对 方 发 起 连 接 。收 到 SYN 数 据 片 后 ,发 出 SYN+ACK数 据 片 并 确 认 收 到 对 方 的 SYN ,然 后 ,更 改 状 态 为 SYN_ RECEIVED 。 最 后 接 收 到 发 送 端 返 回 的 一 个 包 含 ACK 的 空 数 据 片 , 至 此 ,完 成 了 三 次 握 手 ,进 入 ESTABLISHED 状 态 ,发 送 端 和 服 务 器 端 就 可 以 进 行 TCP 数 据 通 讯 。
嵌 入 式 系 统 在 第 一 次 建 立 连 接 时 ,初 始 化 序 列 号 。随 后 ,系 统 不 会 记 忆 TCP 连 接 的 序 列 号 ,根 据 发 送 端 发 包 中 的 值 来 确 定 序 列 号 ,重 复 报 文 不 能 识 别 ,对 重 复 的 报 文 照 常 回 应 。设 计 中 ,嵌 入 式 服 务 器 响 应 客 户 端 的 请 求 时 , 不 考 虑 失 序 问 题 , 接 收 一 个 发 送 一 个 确 认 回 答 。
接 收 到 TCP 请 求 后 ,将 存 储 于 发 送 缓 冲 存 储 器 中 的 数 据 立 即 发 送 ,只 需 一 个 数 据 报 就 能 完 成 。
嵌 入 式 系 统 采 用 滑 动 窗 口 为 1的 传 输 方 式 ,即 发 送 一 次 数 据 包 就 等 待 返 回 应 答 , 因 此 当 接 收 不 到 确 认 包 , 就 认 为 自 己 发 送 的 包 丢 失 , 直 接 发 送 上 次 发 送 的 数 据 。
当 TCP 的 连 接 中 , 当 客 户 机 异 常 导 致 连 接 崩 溃 时 , 嵌 入 式 系 统 发 数 据 时 会 接 受 一 个 复 位 信 号 , 回 到 原 始 状 态 。
在 TCPIP 网 络 应 用 中 , 通 信 的 两 个 进 程 间 相 互 作 用 的 主 要 模 式 是 客 户 服 务 器 模 式 ,即 客 户 向 服 务 器 发 出 服 务 请 求 ,服 务 器 接 收 到 请 求 后 ,提 供 相 应 的 服 务 。客 户 服 务 器 模 式 在 操 作 过 程 中 采 取 的 是 主 动 请 求 方 式 。 首 先 服 务 器 方 要 先 启 动 , 并 根 据 请 求 提 供 相 应 服 务 :
(1) 打 开 通 信 通 道 并 告 知 本 地 主 机 , 某 一 公 认 地 址 上 接 收 客 户 请 求 ;
(2) 等 待 客 户 请 求 到 达 该 端 口 ;
(3) 接 收 到 重 复 服 务 请 求 , 处 理 该 请 求 并 发 送 应 答 信 号 。 接 收 到 并 发 服 务 请 求 ,就 要 激 活 新 进 程 来 处 理 这 个 客 户 请 求 。新 进 程 处 理 此 客 户 请 求 ,但 并 不 需 要 对 其 它 的 请 求 作 出 应 答 。服 务 完 成 后 ,关 闭 此 新 进 程 与 客 户 的 通 信 链 路 , 并 终 止 ;
(4) 返 回 第 二 步 , 等 待 另 一 客 户 请 求 ;
(5) 关 闭 服 务 器 。
4.4. 编 程 模 型
4.4.1T CP 客 户 端 设 计
TCP 客 户 端 向 服 务 器 提 出 连 接 请 求 , ServerSocket 收 到 TCP 连 接 请 求 后 ,为 这 个 请 求 创 建 一 个 新 的 实 例 Socket ,此 时 ,服 务 器 端 要 同 时 处 理 ServerSocket 和 Socket 这 两 个 实 例 , 客 户 端 只 使 用 Socket 实 例 就 可 以 了 。 TCP 客 户 端 的 设 计 按 照 如 流 程 图 4.4所 示 :
图 4.4 客 户 端 程 序 简 单 示 意 图
首 先 客 户 端 建 立 自 己 的 自 己 的 socket , 如 果 建 立 失 败 , 则 重 新 建 立 ;当 建 立 成 功 后 ,验 证 通 过 后 ,开 始 和 服 务 器 端 进 行 连 接 ,连 接 成 功 后 ,服 务 器 端 给 客 户 端 一 个 连 接 成 功 的 信 息 ,然 后 开 始 进 行 数 据 的 传 输 通 讯 。 此 时 , 可 以 显 示 所 接 受 的 数 据 的 相 关 信 息 , 包 括 字 节 数 、 数 据 属 性 等 信 息 , 从 而 完 成 一 次 连 接 。
下 面 为 TCP 客 户 端 设 计 的 详 细 说 明 :
Int main(int argc,char *argv[])
其 中 第 一 个 参 数 表 示 执 行 后 参 数 个 数 , 第 二 个 用 来 存 储 输 入 的 参 数 if(argc!=3)
printf(
IP 输 入 错 误 的 时 的 提 示 信 息
sendsocket=socket(TCP_net,BUFFER_data,0);
TCP 发 送 端 建 立 一 个 socket 函 数
if(sendsocket==-1)
printf(
printf(
return(0);
socket 建 立 信 息 提 示 , 建 立 不 成 功 , 结 束 当 前 程 序 , 回 至 初 始 位 置 , 等 候 重 新 建 立
connectcheck=connect(mysocket,(struct
sockaddr*)&addr_remote,sizeof(struct sockaddr));
调 用 connect 函 数 来 连 远 方 的 服 务 器 端
if(connectcheck==-1)
printf(
验 证 建 立 的 connect 是 否 成 功 ,如 过 不 成 功 结 束 当 前 程 序 ,回 到 初 始 的 位 置
printf(
打 印 输 出 对 方 服 务 器 的 IP 地 址 , 端 口 号
while(1)
bzero(gotbuffer,long);
number=recv(mysocket,gotbuffer,long,0) ;
调 用 阻 塞 函 数 , 一 直 等 待 接 收 数 据
if(number==-1)
printf(
return(0);
如 果 为 错 乱 数 据 ,接 受 为 空 则 报 告 错 误 给 用 户 ,及 时 的 处 理 出 现 的 错 误
gotbuffer[number]='\0';
接 收 数 据 中 只 接 收 了 前 面 的 , 应 加 上 结 束 符 号
close(mysocket);
结 束 建 立 的 socket 函 数 , 通 信 结 束 。
4.4.2T CP 服 务 器 端 主 要 代 码 分 析
TCP 服 务 器 主 要 完 成 的 工 作 描 述 如 下 [29]:
(1) 建 立 新 的 socket ;
(2) 绑 定 本 机 端 口 和 IP 地 址 ;
(3) 进 入 监 听 状 态 ;
(4) 接 收 来 自 客 户 端 的 请 求 ;
(5) 做 出 及 时 的 响 应 并 且 可 以 进 行 发 送 数 据 ;
(6) 显 示 发 送 状 态 ;
(7) 结 束 。
详 细 的 程 序 流 程 请 参 见 程 序 流 程 图 4.5所 示 。
图 4.5 服 务 器 端 程 序 简 单 示 意 图
mysocket=socket(AF_INET,SOCK_STREAM,0);
建 立 新 的 套 接 字
if(mysocket==-1)
printf(
return(0);
验 证 建 立 的 socket 是 否 成 功 , 如 过 不 成 功 结 束 当 前 程 序 , 回 到 初 始 的 位 置 , 并 且 提 示 出 错 地 方
mybindcheck=bind(mysocket,(struct,sockaddr*)&addr_local,sizeof(stru ct sockaddr));
if(mybindcheck==-1)
printf(
{ printf(
绑 定 本 地 IP 、 端 口 号
printf 中 输 出 格 式 (%d)和 本 来 输 出 格 式 的 不 同 , 会 造 成 段 错 误 listencheck=listen(mysocket, this port,program end
return(0);
调 用 监 听 函 数 正 常 调 用 后 输 出
sin_size=sizeof(struct sockaddr_in);
newsocket=accept(mysocket,(struct
sockaddr*)&addr_remote,&sin_size);
调 用 接 收 函 数 , 当 有 连 接 的 时 候 建 立 新 的 socket
if(the nextsocket==-1)
printf(
return(0);
建 立 下 一 个 socket 不 成 功 后 的 提 示 信 息
printf(
printf(
TCP 发 送 端 socket 函 数 成 功 建 立 后 , 输 出 相 应 的 IP 和 端 口 数 据 pid ;
pid=fork();
fork()函 数 子 进 程 的 建 立 , 父 进 程 会 继 续 工 作 , 看 看 有 没 有 其 它 的 连 接 申 请 ,这 个 时 候 父 进 程 是 不 能 结 束 的 ,原 因 是 前 面 建 立 的 子 进 程 调 用 了 父 进 程 函 数 以 及 相 关 参 数 , 这 个 时 侯 父 进 程 的 停 止 会 让 子 进 程 调 用 的 函 数 出 错 或 者 不 能 使 用 。同 时 ,父 进 程 也 不 能 不 分 配 状 态 ,否 则 的 话 ,这 个 父 进 程 就 可 能 出 现 调 用 错 误 ,这 个 时 侯 只 要 给 它 一 个 循 环 函 数 for(;;)就 可 以 了 。
if(pid>0)
printf(OK,the first procces is build, the second proccess will bulid,the ID= %d ,you can finish nextsock ,the first socket will be listen \n
printf(OK,this is the second procces,the server will be act for the new connect,and you can do it \n
printf(OK,you can input the data \n
fork 函 数 返 回 两 个 参 数 变 量 , 一 个 变 量 是 父 进 程 调 用 返 回 的 子 进 程 号 , 另 外 一 个 变 量 是 是 进 程 返 回 的 0。
在 fork 函 数 运 行 正 常 的 时 候 , 系 统 会 显 示 以 下 相 关 信 息 :
for( ; ; )
senddata(senddata,length);
scanf(
datacheck=send(nestocket,senddata,strlen(senddata),0);
服 务 器 端 持 续 的 发 送 数 据
if(datasend==-1)
printf(this is error,can not send data\n
closenextsocket) ;
else
printf(OK,the data send data again\n
4.5. 程 序 下 载 到 嵌 入 式 硬 件 平 台
把 应 用 程 序 载 入 到 开 发 板 的 方 法 很 多 , 这 里 作 者 主 要 使 用 的 用 Linux NFS(Network F ileSystem) 服 务 器 来 完 成 应 用 程 序 的 载 入 [30]。 具 体 配 置 如 下 所 示 :
(1) 网 络 设 置
从 RedHat Linux 开 始 菜 单 中 , 选 择 “ 系 统 设 置 ” →“ 网 络 ” , 打 开 网 络 配 置 界 面 , 在 弹 出 的 界 面 进 行 具 体 的 网 络 设 置 , 如 IP 地 址 、 子 网 掩 码 和 网 关 等 信 息 , 如 图 4.6所 示 。
图 4.6 Linux 下 的 网 络 配 置
不 同 局 域 网 的 设 置 不 一 样 , 详 细 的 网 络 设 置 参 考 RedHat Linux操 作 系 统 。
(2) 关 闭 防 火 墙
RedHat 版 本 的 Linux 系 统 ,在 安 装 的 时 候 ,系 统 默 认 启 动 了 防 火 墙 , 也 就 是 系 统 拒 绝 外 部 IP 的 访 问 , 如 果 要 要 使 用 NFS 服 务 , 那 么 我 们 基 于 应 该 关 闭 防 火 墙 。 在 RedHat 版 本 的 Linux 系 统 中 , 点 击 开 始 菜 单 , 然 后 选 择 “ 系 统 设 置 ” 的 下 一 级 菜 单 →“ 安 全 级 别 ” , 这 个 时 候 打 开 其 中 的 安 全 级 别 设 置 , 然 后 设 施 安 全 级 别 为 “ 无 防 火 墙 ” 。 同 时 ,还 需 要 应 关 闭 放 火 墙 的 后 台 服 务 :在 RedHat 版 本 的 Linux 开 始 菜 单 中 ,选 择“ 系 统 设 置 ” 的 下 一 级 菜 单 →“ 服 务 器 设 置 ” 知 道 →“ 服 务 ” , 将 iptables 前 面 的 “ √ ” 去 掉 , 启 动 NFS 服 务 。
如 果 用 户 在 安 装 RedHat Linux 9.0的 时 候 选 择 了 安 装 所 有 , 则 从 开 始 菜 单 中 , 选 择 “ 系 统 设 置 ” “ 服 务 器 设 置 ” , 在 其 中 将 会 有 “ NFS 服 务 ”的 子 菜 单 。菜 单 弹 出 后 继 续 配 置 他 的 网 络 共 享 ,点
OK-- the server received the IP = 202.115.160.1, port = 5000 ,the system is connecting;
服 务 器 接 受 到 了 来 自 IP 为 202.115.160.11的 连 接 服 务 器 为 这 个 连 接 重 新 创 建 了 新 的 套 接 字 ,问 这 个 进 程 专 门 建 立 了 连 接 ,也 就 是 连 接 是 独 立 的 父 进 程 的 套 接 字 完 成 了 他 的 任 务 回 到 了 监 听 的 状 态 , 孩 子 进 程 开 始 为 这 个 专 用 连 接 通 信 , 服 务 器 可 以 发 送 任 意 的 数 据 到 客 户 端 了 。
5.2.1 数 据 收 发 功 能
系 统 连 接 成 功 后 ,服 务 器 和 客 户 端 就 会 进 行 相 互 的 数 据 通 讯 ,并 验 证 这 个 通 讯 的 数 据 有 没 有 丢 码 或 者 误 传 , 不 是 是 否 正 确 , 如 图 5.3数 据 发 送 验 证 服 务 器 端
:
图 5. 3数 据 发 送 验 证 服 务 器 端
如 图 5.4 为 数 据 发 送 验 证 客 户 端
范文三:基于ARM的嵌入式智能家居远程监控系统毕业设计
基于 ARM 的嵌入式 智能家居远程监控系 统毕业设计 目 录
摘要 . ................................................................................... 错误!未定义书签。 Abstract ............................................................................. 错误!未定义书签。 第 1章 绪论 . ....................................................................................................... 1 1.1课题背景 .................................................................................................. 1 1.2国外的发展动态 ....................................................................................... 1 1.3国内的发展动态 ...................................................................................... 2 1.4本文各章主要安排 .................................................................................. 2 第 2章 各个硬件模块的说明 . ........................................................................... 3 2.1主控模块 .................................................................................................. 3 2.1.1STM32的系统架构 . ........................................................................... 3 2.1.2STM32F103VET6的内部资源 . ......................................................... 4 2.2短信收发模块 GPRS ................................................................................ 7 2.3温湿度测量模块 ....................................................................................... 8 2.3.1DHT11的引脚说明 ............................................................................ 8 2.3.2DHT11的工作原理 ............................................................................ 9 2.4温湿度液晶显示模块 LCD1602 ............................................................ 11 2.4.1LCD1602的管脚说明 ...................................................................... 12 2.4.2LCD1602的特性 .............................................................................. 12 2.4.3LCD1602的基本指令 ...................................................................... 12 2.5收放窗帘模块步进电机 28BJY-48 ....................................................... 14 2.5.1步进电机的工作原理 ...................................................................... 14
I
燕山大学本科生毕业设计(论文)
2.5.2步进电机的引脚接线 ....................................................................... 14 2.6本章小结 ................................................................................................. 15 第 3章 硬件系统的设计 . .................................................................................. 16 3.1直流稳压电源的设计 ............................................................................. 16 3.2STM32最小系统的设计 . ........................................................................ 17 3.2.1电源的供电方案 . ............................................................................... 17 3.2.2晶振电路 ........................................................................................... 17 3.2.3复位电路 ........................................................................................... 18 3.2.4串口驱动电路 ................................................................................... 18 3.3步进电机、继电器驱动电路设计 ......................................................... 19 3.4本章小结 ................................................................................................. 20 第 4章 软件程序的设计 . .................................................................................. 21 4.1主函数及 TIM2中断服务函数设计 . ..................................................... 21 4.1.1主函数及 TIM2中断服务函数程序代码 . ....................................... 21 4.1.2主函数及 TIM2中断服务函数程序流程图 . ................................... 23 4.2GPRS 来信中断处理函数设计 ............................................................... 24 4.2.1GPRS 来信中断处理函数程序代码 . ................................................ 24 4.2.2GPRS 来信中断处理流程图 . ............................................................ 26 4.3GPRS 的 AT 指令 .................................................................................... 27 4.3.1本设计中用到的 AT 指令 ................................................................ 27 4.3.2PDU 编码 . .......................................................................................... 27 4.3.3AT 指令的使用程序设计 .................................................................. 29 4.4本章小结 . ................................................................................................. 31结论 . .................................................................................................................... 32 参考文献 . ............................................................................................................ 33 致谢 . .................................................................................... 错误!未定义书签。 附录一 整个硬件系统电路图 . .......................................................................... 35 附录二 开题报告说明 . ...................................................................................... 36 附录三 文献综述 . .............................................................................................. 38 附录四 中期报告 . .............................................................................................. 39 附录五 外文文献及其翻译 . .............................................................................. 40 附录六 完整的程序代码 . .................................................................................. 41
II
III
第 1章 绪论
第 1章 绪论
1.1课题背景
随着科技的提高, 经济的发展, 人们的物质生活水平的提高, 对家居环 境的要求也越来越高, 作为家居智能化的核心部分——智能家居控制系统也 越发显得重要。 智能家居控制器可以为系统提供智能控制方案, 使住户的控 制更便捷,更高效,更能为家庭的日常活动节约不必要的能耗 [1]。而且在现 在这个注重绿色环保的世界里,智能的为住户控制好空气的湿度、温度等, 检查分析空气成分, 让住户安心入住。 家居智能化控制的开发和建设是未来 国家、经济发展的必然趋势。
在科学技术日新月异的今天, 智能家居产品也在不断发展寻求突破, 用 智能的方式缓和、解决社会矛盾,这是本课题的目的及意义所在。
1.2国外的发展动态
1984年,世界上第一座智能建筑在美国的康涅迪格州建成,这座意义 不一般的智能建筑是对一座旧式大楼在一定程度上的改造而完成的。 它只是 采用计算机系统对大楼的照明、 空调、 电梯等设备进行监控, 并提供情报资 料、语音通信、电子邮件等方面的信息服务。 2000年,新加坡大约有 5000户家庭采用了这种家庭智能家居化系统, 而与此同时, 美国采用这种智能家 居化系统的用户已高达 4万户。 目前, 在国外的家庭智能化系统技术己经越 来越成熟,预计今后,越来越多的新房将会安装具有一定的“智能家居化” 功能的系统。 于此同时, 由于科学技术的发展日益标准化, 这些新型智能家 居系统将会比世界首富比尔 . 盖茨耗资六千万美元的高端智能家居别墅便 宜得多。
在家居智能化系统研发方面,美国及一些西方国家一直处于领先地位。 近年来, 以摩托罗拉公司及美国微软公司等为首的一些国外知名企业, 先后 加入到智能家居系统的研发中。 比如 :摩托罗拉公司开发出来的 “居所之门” 、 微软公司开发出来的“梦幻之家” 、 IBM 公司开发出来的“家庭主任”等都 以日趋成稳的技术霸占家居市场。此外,亚洲国家日本、韩国、新加坡等国
1
燕山大学本科生毕业设计(论文)
的领头大企业也纷纷致力于家居智能化的研发,对家居市场更是跃跃欲试。 1.3 国内的发展动态
1990年后, 我国的智能家居化住宅小区日益兴起。 我国的智能家居化住 宅建筑最早起于广州、深圳和上海等沿海发达城市,并慢慢地向内陆发展。 在 1997年香港回归时,上海的中皇广场在建设部 “97跨世纪住宅小区案竞 赛活动 ” 中被建设部科技委员会评为全国首家 “ 智能住宅示范工程 ” ,从此揭 开了我国智能家居住宅小区发展的序幕。 1999年,建设部住宅产业化办公 室、建设部勘察设计司联合组织实施了全国住宅小区智能化技术示范工程, 这也标志着我国的智能家居进入了一个新阶段。 随着信息化技术日益普, 国 家经贸委领头成立了家庭信息网络技术委员会, 同时信息网络技术体系研究 及产品开发已经被列为了国家技术创新的重点专项计划。根据建设部的要 求,截止今年,大中城市中 50%的住宅要实现智能化 [2]。
我国的智能家居建设相对于国外起步比较晚, 尚未形成一定的国家标 准。 国内各大硬、 软件企业机构正在积极的研发更为符合市场的智能家居化 产品, 以解决我国当前智能化设备使用复杂、 产品价格昂贵及实用性差等缺 点, 而技术创新能力也逐渐向国际先进水平靠拢, 这样智能家居的未来值得 我们期待 [3-4]。
1.4 本文各章主要安排
本文第二章主要介绍了智能家居控制系统中用到的各个硬件模块, 有主 控模块 STM32F103VET6、 GPRS 短信收发模块 GTM900-B 、温湿度测量传 感器 DHT11、液晶显示屏 LCD1602、步进电机 28BYJ-48。
第三章主要介绍了硬件系统的设计, 重点描述各个功能模块电路图的设 计及其功能。
第四章主要介绍了控制系统软件程序的设计,主要有主函数及 TIM2中 断处理函数的程序设计, GPRS 来信中断处理函数的设计以及 GPRS 的 AT 指令的 PDU 编码过程。其中给出了主要程序代码及其程序流程图。
2
第 2章 各个硬件模块的说明
第 2章 各个硬件模块的说明
2.1主控模块
本设计整个系统的主控芯片选择的具有 ARM 内核 Cortex-M3的 STM32F103VET6。该芯片属于增强型的 32位高性能微控制器,具有 100引脚和高达 512K 字节的闪存存储器。
2.1.1 STM32的系统架构
STM32VET6的系统架构包含 4个驱动单元:Cortex-M3内核 Dcode 总 线、系统总线、通用 DMA1和通用 DMA2; 4个被动单元:内部闪存存储 器 Flash 、内部数据存储器 SRAM 、 FSMC 和 AHB 到 APB 的桥。这些单元 都是通过一个多级的 AHB 总线构架相互连接的,如图 2-1所示。
ICode : 该总线将闪存指令接口与 ARM 的 Cortex-M3内核的指令总线相 连接。指令预取在此总线上完成。
DCode: 该总线将闪存存储器的数据接口和 Cortex-M3内核的数据总线 相连接 (常量加载和调试访问 ) 。
系统总线 : 此总线连接 Cortex-M3内核的系统总线到总线矩阵, 总线矩 阵协调着 DMA 与内核之间的访问。
DMA 总线 : 此总线将 DMA 的 AHB 主控接口与总线矩阵相联, 总线矩 阵协调着 CPU 的 DCode 和 DMA 到 内部闪存存储器 Flash 、内部数据存储 器 SRAM 和外设的访问。
总线矩阵 : 该矩阵协调 DMA 主控总线与内核系统总线间的访问与仲 裁, 仲裁采用轮换算法。 总线矩阵包含 4个驱动部件和 4个被动部件。 AHB 外设通过总线矩阵与系统总线相连,允许 DMA 访问。
AHB/APB桥 (APB): 两个 AHB/APB桥在 AHB 和 2个 APB 总线间提供 同步连接。 APB1操作速度限于 36MHz , APB2操作于全速 (最高 72MHz) 。 有关连接到每个桥的不同外设的地址映射。在每一次复位以后,所有除 SRAM 和 FLITF 以外的外设都被关闭,在使用一个外设之前,必须设置寄 存器 RCC_AHBENR来打开该外设的时钟
3
燕山大学本科生毕业设计(论文)
图 2-1 STM32系统架构
2.1.2 STM32F103VET6的内部资源
STM32F103VET6的引脚图如图 2-2所示。
(1) 内核:ARM 的 32位 Cortex-M3微处理器;最高达 72MHZ 频率, Cortex-M3内部的数据路径是 32位的,寄存器是 32位的,存储器接口也是 32位的。 Cortex-M3采用了哈佛结构, 拥有独立的 Dcode 总线和 Icode 总线, 可以让数据访问和取指并行不悖,这样数据访问就不再占用 Icode 总线,从 而提升了工作性能。 为实现这个特性, Cortex-M3内部含有好几条总线接口, 每条都为自己的应用场合而优化过,并且它们可以并行工作。
4
第 2章 各个硬件模块的说明
图 2-2 STM32F103VET6引脚图
(2) 存储器:512KB 的闪存程序存储器; 64K 字节的静态数据存储器 5
燕山大学本科生毕业设计(论文)
SRAM ,它可以以字节、半字 (16位 ) 或全字 (32位 ) 访问。
(3) 时钟和电源管理:
(a) 三种不同的时钟源可被用来驱动系统时钟 (SYSCLK):1) HSI振荡 器时钟; 2) HSE振荡器时钟; 3) PLL时钟。
(b) STM32的工作电压 (VDD)为 2.0~3.6V , 通过内置的电压调节器提 供所需的 1.8V 电源;
(c) 独立的 A/D转换器供电和参考电压;
(d) 一个完整的上电复位 (POR)和掉电复位 (PDR)电路;
(e) 可有 3种不同工作模式的电压调节器;
(f) 可编程电压监测器 (PVD)。
(4) 通用和复用功能 I/O(GPIO和 AFIO) :5组多功能双向 5V 兼容的通 用 I/O端口;可使用复用功能重新映射到其他一些引脚上。
(5) DMA控制器:支持定时器、 ADC 、 SPI 、 IIC 和 USART 等外设。
(6) 嵌套向量中断控制器:
(a) 有 68个可屏蔽中断通道 (不包含 16个 Cortex? -M3的中断线 ) ;
(b) 16个可编程的优先等级 (使用了 4位中断优先级 ) ;
(c) 低延迟的异常和中断处理;
(d) 电源管理控制;
(e) 系统控制寄存器的实现。
(7) 模拟 /数字转换 (ADC):12位的 ADC 是一种逐次逼近型模拟数字转 换器,它有多达 18个通道,可测量 16个外部和 2个内部信号源。
(8) 定时器:2个高级控制定时器 (TIM1、 TIM8) ;
(a) 4个通用定时器 (TIM2、 TIM3、 TIM4、 TIM5) ;
(b) 2个基本定时器 (TIM6、 TIM7) ;
(c) 一个 实时 时钟 、两 个看 门 狗定 时 器和一个系统 滴答定 时器 (Systick)。
(9) 通用异步收发器 (USART):全双工的,异步通信 RZ 标准格式;发送 和接收共用的可编程波特率,最高达 4.5Mbits/s;智能卡模拟功能。
6
范文四:嵌入式系统以太网接口电路设计毕业设计
中北大学2012届毕业设计说明书
嵌入式系统与以太网接口设计
摘要
现实生活中,许多的嵌入式系统设备已被广泛地应用,由于当前硬件设计的问
题,未嵌入网络连接模块,使得这些嵌入式系统在使用上受到限制,而添置新设备
又需要很高的成本。本文设计的网络接入模块解决了嵌入式设备与以太网络的连接
问题,在不改变嵌入式设备本身结构的情况下,用户终端可以通过这个模块将现有
的各种串口设备快速方便地接入网络,从而实现仪器的远程控制、远程数据终端的
数据通信等功能。本设计方案利用STM32芯片提供的系统资源和处理能力,
加上ISA接口的10 Mb/s网卡芯片RTL8019AS,通过编写一套精简的协议栈,并实
现可靠的数据通信,从而达到低成本、可靠连接网络的目的。
关键词:太网,单片机,RTL8019AS
The Interface Design of Embedded and Ethernet
Abstract
In the real life, many embedded system devices have been widely used,but they have not embedded the network module owing to the current design problem. It makes these embedded systems limited
in use and high expense will have to be paid if new devices should be added.The network access module designed in this t
hesis solved the problem of the connection between the
embedded devices and the Ethernet. Under the circumstance that the structure of the embedded systems will not be changed, the user terminal can access the network fast and conveniently through the various serial devices existing in this module,thus realizing the
remote control of the devices,the data communication of remote data terminal and other functions.This design scheme takes advantage of the system resources and the process ability provided by an STM and 10 Mb/s LAN chip RTL8019AS with ISA interface. Through code a concise set of protocol stack, reliable data communication realized and it also achieved the goal of low cost and reliable network connection.
Keywords:Ethernet network,Embedded,RTL8019AS
第 1 页 共32 页
中北大学2012届毕业设计说明书
1 引言
1.1研究背景及意义
随着微电子技术和计算机技术的发展,嵌入式技术得到广阔的发展空间,特别是进入20世纪90年代以来,嵌入式技术的发展和普及更为引人注目,已经成为现
,代工业控制、通信类和消费类产品发展的方向,在通信领域,众多网络设备如VOIPWirelessLAN,ADSL等都包含有大量嵌入式技术的成份,广播电视在向数字化的趋势发展,DVB,DAB技术也逐渐在全面推广起来,个人消费类产品,如PDA、数码相机、MP3播放器等产品都离不开嵌入式技术的支持,嵌入式技术在ATM、可视电话、汽车的ABS等产品中也都有大量的应用,此外,军事领域之中也处处可见嵌入式技术的身影,如单兵信息终端,便携式保密机,战场指挥系统等,可以说,嵌入式系[1]统已经渗透到人们日常生活以至国家安全防御体系之中。
嵌入式技术发展的核心是嵌入式微控制芯片技术的发展,当今微控制芯片功能变得越来越强,种类更为繁多,如MIPS,PowerPC,X86,ARM,PIC等,但这些嵌入式处理器受到价格以及兼容性等因素要求的限制,应用状况有所不同,MIPS和PowerPC处理器市场定位较高,对于成本敏感的应用并不合适,而x86系列处理器要与8068、286、386等保持兼容性,使用相同的指令集,从而限制了CPU系统性能的提高,当今嵌入式领域中使用最为广泛的是基于ARM体系结构的嵌入式处理器,其占据了80,以上的32位嵌入式处理器市场份额,从发展之初至今,ARM公司已经推出ARM7,ARM9,ARM9E,ARM10,SecurCore以及Intel的StrongARM和Xscale等一系列的产品。这些不同版本的处理器内核,虽一脉相承,但应用背景不同,例如,ARM7系列处理器针对功耗和陈本要求比较苛刻的应用而设计的;而ARM9系列处理器主要应用于下一代的无线设备;SecurCore则是专为安全设备而定[2]制的。
技术的发展要与实际应用相结合,才能体现出技术进步的价值,嵌入式系统的发展正如日中天,基于ARM核嵌入式微处理器的以太网的嵌入式控制实现也正在国内外如火如荼的展开,以太网在实时操作、可靠传输、标准统一等方面的卓越性能及其便于安装、维护简单、不受通信距离限制等优点,已经被国内外很多监控、控制领域的研究人员广泛关注,并在实际应用中。
1.2 国内外研究现状
以太网是一种采用载波侦听多路访N,冲突检测(CSMA,CD)和介质存取控制(MAC)协议在共享介质上传输数据的技术。由于其具有使用简便、价格低、速率高等优点,因而从20世纪80年代出现以来,便很快成为局域网的主流,3基于ARM处理器的串行通信与以太网协议的研究与应用在城域网和广域网上也得到很广泛的应用。据统计,目前全球85,的网络采用了以太网技术。早期的以太网被称为共享以太网是指多节点共享同一个传输媒体,节点问采用广播方式通信(,所以容易发生冲突。共享以太网CSMA,CD技术来避免冲突,即发送方检测到冲突就暂停[3]发送,随机延迟一段时间后再重新发送直到成功。
因而共享以太网对时间响应具有不确定性。近年来出现的交换以太网(SwitchedEthernet)克服了这一缺点。交换以太网将网络以星型拓扑结构划分为许多物理上互相隔离而逻辑上互相联系的节点,在发送端和接收端之间建立一个独占的全双工通道,因而能有效避免冲突,同时使得以太网的服务质量得到很大提高。在传输速度方面,以太网从出现至今的20多年的发展时间里,运行速度提高了两
第 2 页 共32 页
中北大学2012届毕业设计说明书
个数量级,从80年代的10Mbps到90年代的100Mbps、1000Mbps,再到现今的10Gbps。以太网的速度优势、低廉的端口价格和优越的性能,对于那些准备实行信息化改造以提高效率的生产领域来说,具有很大的吸引力。目前,在国内外的工业领域,由以太网与工业现场相结合的工业以太网技术正处于研究和初步应用之中,成为工业控制网络建设的一种可行的解决方案。在人们的日常生活和工作中,基于以太网技术和TCP,IP协议构建的互联网已经延伸到每个角落,人们可以利用互联网快捷方便地共享信息、查询资料、建立电子商务等等。可以相信,随着互联网的进一步普及和发展,以太网技术将会得到更为广泛的应用。
1.3 本文的工作
本文主要研究了基于ARM芯片的以太网接口电路设计。在深入剖析以太网传输规范协议的基础上,选择单独一个没有以太网模块功能的ARM芯片作为主控芯片外接一个以太网控制芯片构成以太网接口电路,所选芯片型号为ST公司的最新Cortex-M3核的STM32系列芯片嵌入式芯片作为主控芯片,完成以太网接口电路功能的设计。本文主要阐述了设计需要的原理知识以及详细设计的过程,主要完成的工作如下:
一(根据设计要求选用STM32F103VET6嵌入式芯片,应用protel99SE软件作出所需要使用的外围设备的电路原理图与PCB图,完成系统硬件平台的构建。
二(结合相关以太网知识选取以太网控制芯片RTL8019AS,并结合20F001N和RJ-45接口构成外围电路。
第 3 页 共32 页
中北大学2012届毕业设计说明书
2 系统总体设计
根据本设计的要求,首先需要明白设计需要完成的内容。本文按照先确定大框架开始,然后逐步细化到每个芯片之间的连接,首先确定设计的方案,之后是微控制芯片的选取,其中包含选取该芯片的原因、该芯片的优点与芯片简单介绍,[4]硬件电路平台的搭建,然后连接电路构成最终可用电路图。
2.1 设计方案的确定
设计一个以太网接口电路,通常有两种设计方案:第一种为选择一种能具有以太网模块功能的芯片独立实现,从而简化了硬件设计,但是如果只为了实现单一的以太网,这样无疑提高了经济成本,另一种是与通常以太网电路设计相似,选择一款ARM微控制芯片如LPC2210和相应的以太网主控芯片如RTL8019AS,将两芯片进行相应的硬件连接,同时基于硬件进行相应的软件编程来实现。这种设计的优点为,将一个复杂的设计分成不同功能的模块解决,芯片分工明确且避免了相关底层驱动冲突等问题,但缺点是工作量加大。纵观国内市场占有率高的芯片,从经济成本与[5]设计工作量两方面考虑,发现第二种方案切实可行,本文选取第二种设计方案。
2.2 芯片的选择
根据设计要求,本论文主要下面几种主要芯片:
(1)主控芯片
(2)以太网控制芯片
(3)以太网变压器芯片
(4)存储器芯片
2.2.1 主控芯片的选择
本文需要选取一个方便易用且有较之其他同类功能的芯片有较大优点的微控制芯片,所以选择了ST公司的STM32F103VET6芯片,该芯片能远优于其它同类芯片得益于其先进架构的Cortex-M3内核的CPU核心,独立的16kb指令缓存和16kb的数据高速缓存 ,ST公司针对各种不同市场应用与性能需求提供了一整套完整的优化解决方案,其中的STM32系列主要针对价格敏感的微控制应用领域而专门设计,强调[6]了操作的确定性,以及性能、功耗与价格的平衡。
STM32系列还具有门数少、中断延迟小、调试容易的特点,其应用范围跨越低端微控制器与复杂的SoC系统,且通过一个基于堆栈的异常模式的实现,显著的缩
第 4 页 共32 页
中北大学2012届毕业设计说明书
[7]小了内核的物理尺寸。
STM32F103VET6主要特点 TM 1.内核:ARM 32位的CortexM3 CPU
—72MHz,1.25Mips/MHz
—单周期乘法和硬件除法
2.存储器
—从32K字节至128K字节的闪存程序存储器
—从6K字节至20K字节的SRAM
3.时钟,复位和电源管理
—2.0至3.6V供电和I/O管脚
—上电/断电复位,可编程电压检测器
—内嵌4至16MHz高速晶体振荡器
—内嵌经出厂调校的8MHz的RC振荡器
—内嵌40KHz的RC振荡器
—PLL供应CPU时钟
4.低功耗
—睡眠,停机和待机模式
—V为RTC和后备存储器供电 BAT
睡眠模式,只有CPU停止,所有外设处于工作状态并可以发生中断/事件是唤醒CPU
停机模式,在保持SRAM和寄存器内容不丢失的情况下,停机模式可以达到最低的电能消耗。在停机模式下,停止所有内部1.8V部分的供电,PLL,HSI和HSE[8]的RC振荡器被关闭,调压器可以被置于普通模式或低功率模式。
待机模式,在待机模式下可以达到最低的电能消耗。内部的电压调压器被关闭,因此所有内部1.8V部分的供电被切断;PLL,HSI和HSE的RC振荡器被关闭;进入待机模式后,SRAM和寄存器的内容将消失,但后备存储器的内容仍然保留,待[9]机电路仍工作。
5.多达80个快速I/O
—所有可以映像到16个外部中断
每个通用输入输出接口(GPIO)都可以由软件配置成输出,输入(带或不带)或其它的外设功能口。多数GPIO管脚与数字或模拟的外设共用。所有的GPIO管脚都有大电流通过能力。再需要的情况下,I/O管脚的外设功能可以通过一个特[10]定的操作锁定,以避免意外的写入I/O寄存器。
该芯片还具有多项其它同类产品无法企及的优点
(1)使用最新的、先进架构的Cortex-M3内核
该芯片采用ARMv7的全新Cortex-M3内核,具有多项新增的增强架构,集成了多种系统外设,满足不同应用对成本与性能的要求,具有内存小、高集成、低功耗的特点。Cortex-M3内核是建立在一个高性能哈佛结构的三级流水基础上的,可满足事件驱动的应用需求。通过广泛采用时钟选通等技术,改进了每个时钟周期的性能,包括单周期的32*32乘法和硬件除法,获得了优异的性能比,与之前的[11]ARM7TDMI相比,运行速度最多可快35%且代码最多可节省45%。
(2)杰出的功耗机制
针对应用中运行模式下高效率的动态耗电机制、待机状态时极低的电能消耗、
第 5 页 共32 页
中北大学2012届毕业设计说明书
电池供电时的低电压工作能力这三种主要的能耗需求进行优化,具有高性能低功耗的优点。
(3)易于开发
ST公司提供了完整、高效的开发工具和库函数,帮助开发者缩短开发时间,能使产品迅速的进入市场。其提供的驱动涵盖了SPI、ADC、GPIO、CAN、定时器和UART等所有标准外设,对应源代码都经过了严格的测试,并提供了详细的文档,方便用户理解。
本设计选取STM32系列芯片的主要原因除了其优异的性能与低廉的价格之外,能连接外部以太网控制芯片独立完成以太网接口电路的设计。本文只需要以太网这个简单的功能,因此在CPU上无需选取STM32系列中性能高但价格贵的芯片。从经济成本考虑,,选取100引脚的STM32F103VET6芯片。STM32F103VET6芯片引脚图见图 2.1
图2.1 STM32F103VET6芯片引脚分布
本文使用的STM32F103VET6是100引脚的LQFP100封装,几个输出端口均为复用端口,可根据实际情况具体选择,由于只是利用该芯片的一部分功能,所以下面只对用到的有效引脚按功能分类简要说明:
(1)电源供电引脚:共有11个引脚,分别是4个外部电源引脚VDD(1、2、3、4),
第 6 页 共32 页
中北大学2012届毕业设计说明书
4个地线引脚VSS(1、2、3、4),3个特殊供电引脚VBAT、VDDA、VSSA。
(2)系统复位引脚:NRST,外接复位电路。
(3)时钟模块引脚:共4个引脚,分别是用于低速外部时钟信号LSE的PC14 OSC32_IN、 PC15 OSC32_OUT,和用于高速外部时钟信号HSE的PD0/ OSC32_IN、 PD1/OSC32_OUT。
(4)启动引导模块引脚:共2个引脚,分别是BOOT0和BOOT1,用于选择不同的启动方式。
2.2.2 以太网控制器的选择
RTL8019AS以太网控制器(引脚图见图2.2)是由Realtek公司出的一款高集成度的以太网控制芯片,RTL8019AS是一种全双工即插即用的以太网控制器,它在一块芯片上集成了RTL8019内核和一个16KB的SDRAM存储器,具有8/16位总线模式,集成了IEEE802.3协议标准的介质访问控制子层(MAC)和物理层的性能,RTL8019AS是本系统与以太网通讯的基础,它用以实现系统与网络上其他节点之间的报文发送与接收功能,处于TCP/IP协议栈的数据链路层,是信息传送、控制和管理的重要环节[12]。
其功能大致可分为以下两种;
(1)通信数据的发送和接收。发送时,将发送来的数据按照特定的格式并加上前导码、帧定界符灯装配成帧,并进行CRC校验。校验后,将数据串行的从网线上发送出去。接收时,判断报文的目的地址是否为本机地址,如果是,对报文进行校验。校验正确,则将报文发往存储器本发送一个ACK应答帧。如果校验后发现报[13]文错误,则将收到的报文丢弃并发送一个NAK否定应答帧。
(2)载波信号的收发和控制。这项功能包括载波监听、发送时间等。确切的说,网络控制器是一个DTE(数据终端设备)。按照IEEE802.3协议的模型功能划分,可将10Mb/s以太网控制器的功能模块划分为介质存取控制(MAC)子层、接入[16]单元接口(AUI)、介质接入单元(MAU)和物理信号规范(PLS)等4部分。
第 7 页 共32 页
中北大学2012届毕业设计说明书
图2.2 RTL8019AS以太网控制芯片
1.内部RAM地址空间分配
RTL8019AS内部有两块RAM要接收和发送数据包就必须通过DMA读写RTL8019AS内部的16KRAM。它实际上是双端口的RM,是指由两A套总线连接到该RAM,一套总线RTL8019AS读或写该RAM,即本地DMA;另一套总线是单片机读或写该RAM,[17]即远程DMA。
2.DMA介绍
(1)DMA(Direct Memory Access,直接内存存取)是所有现代电脑的重要特色,它允许不同速度的硬件装置来沟通而不需要依于CPU的大量中断负载否则,CPU 需要从来源把每一片段的资料复制到暂存器,然后把它们再次写回到新的地方。在这
[18]个时间中,CPU对于其他的工作来说就无法使用。
(2)DMA传输将数据从一个地址空间复制到另外一个地址空间。
当CPU初始化这个传输动作传输动作本身是由DMA控制器来实行和完成DMA
[19]传输对于高效能嵌入式系统算法和网络是很重要的。
(3)在实现DMA传输时,是由DMA控制器直接掌管总线,因此,存在着一个总线控制权转移问题。即DMA传输前,CPU要把总线控制权交给DMA控制器,而在结束DMA[20]传输后,DMA控制器应立即把总线控制权再交回给CPU。
(4)一个完整的DMA传输过程必须经过下面的4个步骤
—DMA请求,CPU对DMA控制器初始化,并向I/O发出操作命令,I/O接口提出DMA
第 8 页 共32 页
中北大学2012届毕业设计说明书
请求
—DMA响应,DMA控制器对DMA请求判别优先级及屏蔽,向总线裁决逻辑提出总线请求。当CPU执行完当前总线周期即可释放总线控制权。此时,总线裁决逻辑输[21]出总线应答,表示DMA已经响应,通过DMA控制器通知I/O接口开始DMA传输。
—DMA传输,DMA控制器获得总线控制权后,CPU即刻挂起或只执行内部操作,由DMA控制器输出读写命令,直接控制RAM与I/O接口进行DMA传输。 在DMA控制器的控制下,在存储器和外部设备之间直接进行数据传送,在传送过程中不需要中央处理器的参与。开始时需提供要传送的数据的起始位置和数据长度。
—DMA结束,当完成规定的成批数据传送后,DMA控制器即释放总线控制权,并向I/O接口发出结束信号。当I/O接口收到结束信号后,一方面停 止I/O设备的工作,另一方面向CPU提出中断请求,使CPU从不介入的状态解脱,并执行一段检查本次DMA传输操作正确性的代码。最后,带着本次操作结果及状态继续执行原来的程[22]序。
主要引脚介绍:
VDD:5V
RST:硬件复位接口,高电平有效
ANE:地址使能脚,ISA信号对有效的输入输出命令必须是低电平
INT7—0: 中断请求总线:能够分别
IRQ15,IRQ12,IRQ10,IRQ5,IRQ4,IRQ3,IRQ2/9. 唯一一条线被选择在一个时间里反映中断请求。RTL8019AS仍然用这些脚座位输入线,从而管理ISA总线上实际相应的中断线上的状态。结果记录在INTR寄存器中,这个寄存器可用软件用来保护中断
IORB:输入输出读指令端
IOWB:输入输出写指令端
SMEMRB:存储器读命令
SMEMWB:存储器写命令,用来闪存写命令解码
TEST:必须接地
BGRES:带隙引脚
BGGND:带隙地信号线
RX+,RX-:这是AUI接收端对MAU接收微分输入信号的进位
TX+,TX-:这是一对传输输出的包含微分线性的驱动器,它用来发送满切斯特编码数据到MAU。这些输出是源输出,需要270欧姆的下拉电阻到地。
2.2.3 以太网变压器芯片选择
(1)以太网网络变压器简称网络变压器具体有T1/E1隔离变压器;
—ISDN/ADSL接口变压器;
—VDSL高通/低通滤波器模块、接口变压器;
—T3/E3、SDH、64KBPS接口变压器;
—10/100BASE、 1000BASE-TX网络滤波器;
根据设计要求选用20F001N以太网变压器。
(2)它在一块网卡上所起的作用主要有两个,一是传输数据,它把PHY送出来的差分信号用差模耦合的线圈耦合滤波以增强信号,并且通过电磁场的转换耦合到不同电平的连接网线的另外一端;二是隔离网线连接的不同网络设备间的不同电平,[23]以防止不同电压通过网线传输损坏设备。
(3)网络变压器的主要作用是改善EMI特性、电平隔离。
第 9 页 共32 页
中北大学2012届毕业设计说明书
(4)EMI滤波器叫电磁干扰滤波器,在电力或者电子工程中对信号-信号、电源-电源、信号-电源和电源-信号之间利用电感性元件和电容性元件的频谱分离特性来将不需要的或者有害的电磁频谱通过阻断或者对地旁路的方式滤除的一种功能元[24]件。
(5)数据泵是消费级PCI网卡上都具备的设备,数据泵也被叫做网络变压器或可称为网络隔离变压器。
通常位于各功能电路的输入-输出端。按用途可分为电源EMI滤波器和信号EMI滤波器;按滤波频谱特性可分为高通滤波器、低通滤波器、带通滤波器、带阻滤波器;按电磁模量特征可分为差模滤波器和共模滤波器。广泛用于各类电子信号设备和开关式电源供应器中,以符合各国制定的电磁兼容标准,有效抑制有害电磁波对
[25]自身工作电路或其它敏感设备的干扰。
本论文选取以太网变压器20F001N,如图2.3为20F001N引脚图
图2.3 20F001N引脚图
20F001N是有共振电感的10阶T型滤波器,它有以下特点:
(1)输入损耗:发射器最大1分贝,接收器最大1分贝
(2)回波损耗:最小为15分贝
(3)声道干扰:当频率为1—10Hz时最小为30分贝
(4)有7个发射极点,5个接收极点
主要引脚介绍:
TD+,TD-:传输数据
RD+,RD-:接收数据
RX+,RX-:这是AUI接收端对MAU接收微分输入信号的进位
TX+,TX-:这是一对传输输出的包含微分线性的驱动器,它用来发送曼彻斯特编码数据到
曼彻斯特编码(Manchester Encoding),也叫做相位编码(PE),是一个同步时钟编码技术,被物理层使用来编码一个同步位流的时钟和数据。它常被用在以太网[26]媒介系统中。
曼彻斯特编码提供一个简单的方式给编码简单的二进制序列而没有长的周期没有转换级别,因而防止时钟同步的丢失,或来自低频率位移在贫乏补偿的模拟链接位错误。在这个技术下,实际上的二进制数据被传输通过这个电缆,不是作为一个序列的逻辑1或0来发送的。相反地,这些位被转换为一个稍微不同的格式,它通过使用直接的二进制编码有很多的优点。
第 10 页 共32 页
中北大学2012届毕业设计说明书
在曼彻斯特编码中,用电压跳变的相位不同来区分1和0,即用正的电压跳变表示0,用负的电压跳变表示1。因此,这种编码也称为相位编码。由于跳变都发生在每一个码元的中间,接收端可以方便地利用它作为位同步时钟,因此,这种编码也称为自同步编码。
2.2.4 存储器芯片选择
闪存则是一种非易失性(Non-Volatile)内存,在没有电流供应的条件下也能够长久地保持数据,其存储特性相当于硬盘,这项特性正是闪存得以成为各类便携27]型数字设备的存储介质的基础[。
NAND闪存的存储单元则采用串行结构,存储单元的读写是以页和块为单位来进行(一页包含若干字节,若干页则组成储存块NAND的存储块大小为8到32KB),这种结构最大的优点在于容量可以做得很大,超过512MB容量的NAND产品相当普遍,NAND闪存的成本较低,有利于大规模普及。
NAND闪存的缺点在于读速度较慢,它的I/O端口只有8个,比NOR要少多了。这区区8个I/O端口只能以信号轮流传送的方式完成数据的传送,速度要比NOR闪存的并行传输模式慢得多。再加上NAND闪存的逻辑为电子盘模块结构,内部不存在专门的存储控制器,一旦出现数据坏块将无法修,可靠性NOR闪存要差。NAND闪存被广泛用于移动存储、数码相机、MP3播放器、掌上电脑等新兴数字设备中。由于受到数码设备强劲发展的带动,NAND闪存一直呈现指数级的超高速增长。
NOR和NAND是现在市场上两种主要的非易失闪存技术。Intel于1988年首先开发出NOR flash技术,彻底改变了原先由EPROM和EEPROM一统天下的局面。东芝公司发表了NANDflash结构,强调降低每比特的成本,更高的性能,并且象磁盘一样可以通过接口轻松升级。但是经过了十多年之后,仍然有相当多的硬件工程师分不[28]清NOR和NAND闪存。“flash存储器”经常可以与“NOR存储器”互换使用。
NAND闪存技术相对于NOR技术有其优越之处,因为大多数情况下闪存只是用来存储少量的代码,这时NOR闪存更适合一些。而NAND则是高数据存储密度的理想解决方案。
NOR的特点是芯片内执行(XIP,eXecuteInPlace),这样应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中。NOR的传输效率很高,在1,4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。NAND结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快。应用NAND的困难在于flash的管理和需要特殊的系统接口。
1(下面分析NOR和NAND的主要区别:
(1)性能比较
擦除NOR器件时是以64,128KB的块进行的,执行一个写入/擦除操作的时间为5s,与此相反,擦除NAND器件是以8,32KB的块进行的,执行相同的操作最多只需要4ms。
NOR的读速度比NAND稍快一些,NAND的写入速度比NOR快很多。NAND的4ms擦除速度远比NOR的5s快。大多数写入操作需要先进行擦除操作。NAND的擦除单[29]元更小,相应的擦除电路更少。
(2)接口差别
NAND Flash的单元尺寸几乎是NOR器件的一半,由于生产过程更为简单,NAND结构可以在给定的模具尺寸内提供更高的容量,也就相应地降低了价格。
NOR flash占据了容量为1,16MB闪存市场的大部分,而NAND flash只是用在
第 11 页 共32 页
中北大学2012届毕业设计说明书
8,128MB的产品当中,这也说明NOR主要应用在代码存储介质中,NAND适合于数据存储。
(3)可靠性和耐用性
采用flash介质时一个需要重点考虑的问题是可靠性。对于需要扩展MTBF的系统来说,Flash是非常合适的存储方案。
(4)寿命
在NAND闪存中每个块的最大擦写次数是一百万次,而NOR的擦写次数是十万次。NAND存储器除了具有10比1的块擦除周期优势,典型的NAND块尺寸要比NOR器件小8倍,每个NAND存储器块在给定的时间内的删除次数要少一些。
(5) 位交换
所有flash器件都受位交换现象的困扰。在某些情况下(很少见,NAND发生的次数要比NOR多),一个比特位会发生反转或被报告反转了。
一位的变化可能不很明显,但是如果发生在一个关键文件上,这个小小的故障可能导致系统停机。如果只是报告有问题,多读几次就可能解决了。
当然,如果这个位真的改变了,就必须采用错误探测/错误更正(EDC/ECC)算法。位反转的问题更多见于NAND闪存,NAND的供应商建议使用NAND闪存的时候,同时使用EDC/ECC算法即错误探测/错误更正算法。
(6) 坏块处理
NAND器件需要对介质进行初始化扫描以发现坏块,并将坏块标记为不 可用在已制成的器件中,如果通过可靠的方法不能进行这项处理,将导致高故障率[30]。
2 IS61lv51216介绍
SSI的IS61LV51216是一个8M容量结构为512K*16位字长的高速率SRAM。IS61LV51216采用ISSI公司的高性能CMOS工艺制造。IS61lv51216是44pin的TSOP封装形式,高度可靠的工艺水准加上创新的电路设计技术,造就了这款高性能,低功耗的器件。
当/CE处于高电平(未选中)时,IS61LV51216进入待机模式。在此模式下,功耗可降低至CMOS输入标准。
使用IS61LV51216的低触发片选引脚(/CE)和输出使能引脚(/OE),可以轻松实现存储器扩展。低触发写入使能引脚(/WE)将完全控制存储器的写入和读取。同一个字节允许高位(/UB)存取和低位 (/LB)存取。
IS61LV51216 特性:
(1)存取时间:8ns,10ns,12ns
(2)全静态操作:不需时钟或刷新
(3)输入输出兼容TTL标准
(4)独立3.3V供电
(5)高字节数据和低字节数据可分别控制
如图2.4为IS61lv51216引脚图
第 12 页 共32 页
中北大学2012届毕业设计说明书
图 2.4 IS61lv51216引脚图
主要引脚介绍:
(1)I/O5,I/O0:数据输入输出
(2)A18,A0:地址线输入端
(3)CLE:命令锁存使能端
(4)ALE: 地址锁存使能端
(5)CE#:芯片使能,为低电平时启动器件开始工作
(6)OE#:输出使能端
(7)WE#:写使能端
(8)LB:低字节控制端
(9)UB:高字节控制端
3 SST39VF160介绍
SST39VF160是一个1M×16位的CMOS多功能Flash器件,由SST特有的高性能SuperFlash技术制造而成。SST39VF160具有高性能的自编程功能,自编程
第 13 页 共32 页
中北大学2012届毕业设计说明书
功能时间为14us,为了防止意外写的发生,器件还提供了硬件和软件数据保护机制。SST39VF160的100,000个周期的耐用性和大于100年的数据保持时间,使其可广泛用于设计,制造和测试等应用中。
SST39VF160尤其适用于要求程序,配置或数据存储可方便和降低本地更新的应用。对于所有的系统,SST39VF160的使用可显著增强系统的性能和可靠性,降低功耗。它比其它技术制造的Flash器件在擦除和编程操作中消耗更少的能量。由于不管对于任何的电压范围,SuperFlash技术都消耗很少的电流,使用很短的擦除时间,因此SST39VF160在擦除或编程操作中消耗的能量小于其它Flash技术制造而成的器件。SST39VF160也增强了程序,数据和配置存储器的低成本应用的灵活性。
SST39VF160的存储器操作有命令来启动。命令通过标准微处理器写时序写入器件,将WE#拉低,CE#保持低电平来写入命令。SST39VF160的读操作有CE#和OE#控制,只有两者都是低电平时,系统才能从器件的输出管脚获得数据。CE#是器件片选信号。当CE#为高电平时,器件未被选中工作,只消耗等待电流。OE#的输出控制信号,用来控制输出管脚数据的输出。当CE#或OE#为高电平时,数据总线呈现高阻态。
SST39VF160还提供了硬件数据保护,如果WE#或CE#脉冲宽度小于5ns,写周期不启动,如果强制使OE#为低,CE#为高或WE#为高时,写操作被禁止。可以防止上电或掉电过程中无意写操作的产生。
(1)SST39VF160是16Mb(1M×16位)NOR Flash存储器。
(2)存储器的工作电压为2.7,3.6 V
(3)高可靠性
—耐用性,100,000个周期
—数据保持时间:大于100年
(4)低功耗(14Hz时)
—有效电流:12mA
—自动低功耗模式:4uA
(5)快速读访问时间:79ns
(6)快速擦写和字编程
—扇区擦除时间:18ms
—块擦除时间:18ms
—芯片重写时间:15s
如图2.5为SST39VF160引脚图
第 14 页 共32 页
中北大学2012届毕业设计说明书
图2.5 SST39VF160引脚
主要引脚介绍
(1)A19,A0:地址输入
(2)DQ15,DQ0:数据输入输出
(3)CE#:芯片使能,为低电平时启动器件开始工作
(4)OE#:输出使能,数据输出缓冲器的门控信号
(5)WE#:写使能,控制写操作
3 系统硬件电路设计
3.1 硬件电路总体设计
硬件电路的设计必须考虑系统成本、处理速度、体积、功耗等问题,包括中央处理器、只读存储器、可读写存储器、外围的控制电路以及相关的外设。
STM32的高度集成,减少了芯片对外围电路的依赖,因此典型的最小系统只需要振荡电路、引导设置、复位电路和供电电路。如图3.1是系统的总体设计框图。
供电电路 启动电路
STM32
复位电路 F103VET6 存储器电路
第 15 页 共32 页 以太网接口 振荡电路
电 路
中北大学2012届毕业设计说明书
图3.1 系统的总体设计框图
根据上文的设计思想,首先需要设计一个能使芯片正常工作的最小系统,之后再设计相应的外围电路。具体设计原理与相关设计图如下详述。
3.2 硬件电路设计
3.2.1系统供电电路设计
电源由稳定的VDD电源供电,用于I/O和内部调压器,即为本芯片用的VCC3.3。若使用ADC,则VDD的电压范围必须在2.4V,3.6V,若不使用ADC,可为2V,3.6V。芯片的VDD引脚必须连接在带外部稳定电源的VDD电源,4个0.1uF的陶瓷电容和一个钽电容上(典型值10uF)。外部模拟电压输入引脚VDDA引脚用于ADC、复位模块等,必须连接到两个外部稳定电容上,而VSSA和4个VSS引脚都接地。
当VDD无效时,VBAT引脚必须接到外部电池(1.8~3.6)上,为RTC、外部32.768KHz晶振和备份寄存器供电。如没有外部电池,必须和0.1uF的陶瓷电容一起连接到VDD电源上。
按照供电方案,可设计出供电电路,如图3.2所示
图3.2 系统供电电路
第 16 页 共32 页
中北大学2012届毕业设计说明书
3.2.2 复位电路设计
为确保电路系统中电路稳定可靠工作,复位电路是必不可少的一部分,复位电路的第一功能是上电复位。一般微机电路正常工作需要供电电源为5V?5%,即4.75,5.25V。
由于微机电路是时序数字电路,它需要稳定的时钟信号,因此在电源上电时,只有当VCC超过4.75V低于5.25V以及晶体振荡器稳定工作时,复位信号才被撤除,微机电路开始正常工作。常见的复位电路有上电复位,手动复位,看门狗复位等,此电路选取简单的手动复位即可,复位信号是低电平有效,手动复位电路包括复位按钮,及其相应的去耦电容等元件。电路图如图3.3
图3.3 复位电路
3.2.3 启动电路设计
启动模式选项由S2(BOOT0)和S3(BOOT1)配置。在低功耗模式下(尤其是待机模式),启动项一定能够和调试工具相连(这需要从SRAM启动)。对应的启动模式如表3.1所示。
表3.1 BOOT0、BOOT1启动模式
BOOTBOOT1 启动模式 说明
0
0 X 用户存储器 用户闪存存储器,即flash启动
1 0 系统存储器 系统存储器启动,用于串口下
载
1 1 SRAM启动 用于在SRAM中调试代码
由表3.1可知,若想一上电就运行代码,则设置BOOT0为0。若需要用串口下载代码,则需把BOOT0、BOOT1都分别设为1和0。因此设计一个一键下载电路,利用串口的DTR与RTS信号来控制BOOT0、BOOT1,从而不需手动切换。启动电路如图3.4,P1为排阵,使用时用跳线帽将对应排针连接起来即可,其中BOOT0连接在STM32的BOOT0上,BOOT1连接到STM32的PB2/BOOT1上,如图3.4。
第 17 页 共32 页
中北大学2012届毕业设计说明书
图 3.4 启动电路
3.2.4 时钟电路设计
时钟电路就是产生像时钟一样准确的振荡电路,它的任何工作都是按时间顺序进行的,一般由晶体震荡器、晶震控制芯片和电容组成。
一个主晶振可驱动整个小系统,STM32内嵌的出厂前调校的8MHz的RC时钟振荡电路可做主时钟源(HSE),另外系统还需要一个时钟源用于嵌入式RTC的40MHz晶振,即(LSE)。
如图3.5主时钟源HSE及图3.6 LSE
图3.5 HSE时钟电路
第 18 页 共32 页
中北大学2012届毕业设计说明书
图3.6 LSE时钟电路
3.2.5 存储器电路设计
STM32F103VET6内置128K的闪存,嵌入式存储器不同于片外存储器,它是集成在片内,与系统中各个逻辑、混合信号等共同组成单一芯片的组成部分。嵌入式存储器包括嵌入式静态存储器、动态存储器和各种非易失性存储器。
对于较小的系统,微控制器子带的存储器就有可能满足系统要求,而较大的系统可能要求增加外部存储器。
外部存储器分为程序存储器和数据存储器。如图3.7为数据存储器IS61LV51216,图3.8为程序存储器SST39VF160
第 19 页 共32 页
中北大学2012届毕业设计说明书
图 3.7 数据存储器 IS61LV51216
第 20 页 共32 页
中北大学2012届毕业设计说明书
图3.8 程序存储器 SST39VF160
3.2.6 外围控制电路
如图 3.8为外围电路即以太网控制电路
第 21 页 共32 页
中北大学2012届毕业设计说明书
图3.8 外围控制电路
由于RTL8019AS芯片输出电压比RJ-45要求电压高,所以在RTL8019AS与RJ-45之间需要连接电压转换电路,用于为RJ-45提供合适的工作电压。
STM32F103VET6芯片的工作电压是3.3V,所以还需要一个电压转换电路,这里选用以太网电压转换芯片20F001N将5V装换成3.3V的工作电压。当开关断开时,系统掉电。最后在相应的电路上加上去耦电容,得到电压转换电路。
4 结论
随着嵌入式系统的飞速发展,嵌入式系统在当今社会越来越多的场合应用,而随着以太网的进一步发展,嵌入式在以太网中的应用也得到更多的重视。本
第 22 页 共32 页
中北大学2012届毕业设计说明书
文研究内容为基于ARM的以太网接口电路设计,从深入剖析IEEE 802.3标准开始,结合选取的面向微控制应用领域的内核芯片STM32,系统阐述了设计需要的原理及其详细的设计过程,包括相应的硬软件设计与实现,最终实现了一个嵌入式环境下以太网接口电路设计。本文主要的特点如下:
(1)选取芯片为ST公司基于多项增强架构的Cortex-M3内核的STM32芯片,性能优越,性价比优于其它同类芯片。该芯片可应用于从低端微控制器与复杂的SoC系统多种场合。
(2)目前多数关于嵌入式环境下以太网接口电路的设计均为ARM微控芯片加以太网控制芯片的模式,本文选取本身没有以太网接口模块的ARM芯片,大大降低了设计工作量,同时也降低了成本,二者综合考虑,优于传统设计方案。
(3)ST公司提供了基于STM32的多种外设固件库,可方便的进行多种基于该芯片的外设的开发。若需实现其它功能,在本设计的基础上进行设计即可。
然而,由于设计时间的限制与本人能力的欠缺,本文尚有以下不足:
(1)本文主要是基于嵌入式系统的以太网接口电路的硬件设计,只研究了各个重要芯片的主要引脚介绍及连接方法,对整个系统中传输的信号和数据介绍的不够详细和全面。
(2)由于通常的嵌入式系统中运行任务众多,有些嵌入式系统通常包含如UC/OS-II等嵌入式操作系统,如时间允许,可考虑加入嵌入式操作系统,实现多任务的运行。
(3)本文采用的以太网接口电路是ARM控制芯片加以太网控制芯片,这种方式的优点是将一个复杂的设计分成不同功能的模块解决,芯片分工明确且避免了相关底层驱动冲突等问题,但缺点是工作量加大,软件编程相对复杂,而使用有以太网模块的接口电路,构建电路简单,软件编程相对简单,但缺点是造价高。
附录A
硬件电路原理图
第 23 页 共32 页
中北大学2012届毕业设计说明书
U4e1150SD0VDDe2249VCCSD1VDDe3348SD2VDDe44SD3U1U3e55SD448A19A191101e1e66A19PA19DATA0SD547A18A!82100e2e77A18PA18DATA1SD646A17A17399e3e88A17PA17DATA2SD745A16A16498e4e99A16PA16DATA3SD844A15A15597e5e101047TX+A15PA15DATA4SD9TX+43A14A14696e6e111146TX-A14PA14DATA5SD10TX-42A13A13795e7e121245RX+A13PA13DATA6SD11RX+41A12A12894e8e131344RX-A12PA12DATA7SD12RX-40A11A11993e9e1414A11PA11DATA8SD1339A10A101092e10e1515A10PA10DATA9SD1438A9A91191e11e1616A9PA9DATA10SD1537A8A81290e12e1717A8PA8DATA11SA036A7A71389e13e1818A7PA7DATA12SA135A6A61488e14e1919A6PA6DATA13SA234A5A51587e15e2020U6A5PA5DATA14SA333A4A41686e15e2121RTL8019AS1A4PA4DATA15SA4TX+32A3A31785e16e2222U52A3PA3ADDR0SA5TX-31A2A21884e17e2323TX+173A2PA2ADDR1SA6TD+TX+RX+30A1A11983e1824TX-284A1PA1ADDR2SA7TD-CTN.C29A0A02082e192543395A0PA0ADDR3SA8BGRESCTTX-N.CS128D15D152181e202642RX+4106D15PB15ADDR4SA9BGGNDRD+RX+RX-R1127D14D14228027415117RSTD14PB14ADDR5INT0AGNDCT-RX+N.CSW SPST26D13D1323792840RX-6128 1kD13PB13ADDR6ANEAGNDRD-RX-N.C25D12D1224782939RD12PB12ADDR7IORBAGNDRJ-45224D11D1125773020F001N10kNCD11PB11ADDR8IOWB23D10D102676VCC3138D10PB10ADDR9RSTTEST322D9D927C83237NCD9PB9SMEMRBGND21D8D828753336R11R12D8PB8VBATSMEMWBGND420D7D7297434355151NCD7PB7VDD-1JDGND100nF19D6D63073VCCD6PB6VDD-2518D5D53172VDDD5PB5VDD-317D4D43271D4PB4VDD-4R8C9C10616D3D33370NCD3PB3ADDR9100uF100uFSST39VF16015D2D234100uHD2PB2S4714D1D135NCD1PB1R9C6C11C12C13C713D0D036D0PB0100nF1000pF1000pF1000pF100nF812WE#WE#37SW SPST1KNCWE#nOEVCC11OE#OE#38OE#nWEVCC910CE#CE#39R10VSSCE#CSO4010KPC7UB#41PC64269OSC32_INPC5PC14OSC32_INLB#4368OSC32_OUTPC4PC15OSC32_OUT44VCCPC3R145PC2A0144A174667A0A17PC1VSS-1A1243A164766A1A16PC0VSS-2A2342A154865A2A15PD8VSS-3A3441OE#4964A3OE#PD7VSS-4C15C16C14A4540UB#5063A4UB#PD6VSSA普通电容普通电容普通电容CE#639LB#51CE#LB#PD5VCCD0738D1552STM32I/O0I/O15PD4C3D1837D1453S3I/O1I/O14PD3100nFD2936D1354SW-PBI/O2I/O13PD2VCCD31035D1255I/O3I/O12PD1R6113456NRSTVDDGNDPD0123357C510kGNDVDDCSOD41332D11WE#58I/O4I/O11nWED51431D105962NRSTI/O5I/O10nWPNRSTD61530D9BOOT06062OSC100nFI/O6I/O9GPIOOSC_OUTY2VCCD71629D8BOOT161I/O7I/O8GPIO40MHzWE#1728A18WE#A18A51827A14OSCA5A14A61926A13OSC32_INC4A6A13R5R7A72025A12C2100nFOSC32_OUT1MA7A12Y1A82124A11VCC1MA8A11100nFA92223A10A9A108MHzC1 IS61LV51216P112R13R14BOOT0BOOT1100nF34RESRES56HEADER 3X2
图1(硬件电路原理图
附录B
硬件PCB图
第 24 页 共32 页
中北大学2012届毕业设计说明书
图2(硬件PCB图
参 考 文 献
[1]徐卫华.嵌入式系统产业链亟需完善产业链条.中国计算机报,2006,(15):125~127
第 25 页 共32 页
中北大学2012届毕业设计说明书
[2]王廷尧.以太网技术与应用.北京:人民邮电出版社,2005)15
[3]王勇,姚亦峰,陈抗生.一种嵌入式系统接入Internet的方法及实现[J](电子术,2000(9):18 ~19
[4]付冲,陈英,马希敏.一种通用嵌入式系统以太网接口的设计与实现[J](山东大学学报(工学版),2005,(13):315~324
[5]张晓林,崔迎炜)嵌入式系统设计与实践(北京:北京航空航天大学出版社(2006(315,324
[6]周立功(ARM嵌入式系统实验教程(北京:北京航空航天大学出版社,2004(31,32
[7]王廷尧(以太网技术与应用.北京:人民邮电出版社,2005(1,13
[8]马忠梅,马广云(ARM嵌入式处理器结构与应用基础.北京:北京航空航天大学出版社,2002(15,34
[9]吕京建,肖海桥(面向二十一实际的嵌入式系统综
述(http//bol-system.com,2005-08-16
[10]吴俊杰,吴建辉(以太网MAC控制器的MII接口转RMII接口的实现[J](电子器件,2008,(3):5,7
[11]陈雪梅,曾照福.基于ENC28J60的嵌入式以太网/CAN网关设计[J](现代电子技术,2009,(4):34,59
[12]W(Richard Stevens著.范建华等译.TCP,IP详解卷l协议(机械工业出版社,2002(24,69,105,115
[13]贺丹丹,张帆,刘峰.嵌入式linux开发教程[M].北京:清华大学出,2001.25
[14]赵国安,郁斌(基于Linux嵌入式原理与应用开发[M].北京:清华大学出版社,2006.25,36
[15]春雷,ARM体系结构与编程.北京:清华大学出版社,2003(125,136
[16]M Tim Jones(路小村(嵌入式系统TCP/IP应用层协议(2003(
[17]W Richard Stevens.范建华(胥光辉(张涛 TCP/IP详解卷1:协议(2002(
[18]王永虹,徐炜,郝立平(STM32系列ARM Coretex-M3微控制器原理与实践[M]
(北京:北京航天航空出版社,2008(
[20]范伟瑞,李琦,赵燕飞(Cortex-M3嵌入式处理器原理与应用[M](北京:电工业出版社(
[21] Joseph Yiu. Cortex-M3权威指南[M]. 2008.
[22] 洪毅峰(基于ARM的嵌入式系统设计[D]. 浙江:浙江大学,2005(
[23] ST公司(STM32系列详解-2009年STM MCU 巡回演讲[R],2009.
[24] Cortex-M3技术参考手册.广州周立功单片机发展有限公司.
[25] 张绮文,谢建雄,谢劲心.ARM嵌入式常用模块与综合系统实例精讲.北京:电子工业出版社,2007.1
[26] 夏军营,乔纯捷,王刚,周睿. 计算机测量与控制.北京:计算机测量与控制杂志编辑部.
[27] 王晓廷. 以太网技术与应用. 北京:人民邮电出版社,2005.
[28] 胥静.嵌入式系统设计与开发实例详解——基于ARM的应用.北京:北京航空航天大学出版社,2005.1.
第 26 页 共32 页
中北大学2012届毕业设计说明书
[29] 贾智平.嵌入式系统原理和接口技术.北京:清华大学出版社,2009.8.
[30] 沈绪榜.嵌入式计算机系统的展望[J].单片机与计算机系统的应用,2001.5.
致谢词
本设计的完成是在我的导师沈小林老师的细心指导下进行的。无论是从开始的定研究方向还是后来的查资料过程中,一直都耐心地给予我指导和意见。每次设计遇到问题时老师都不辞辛苦的讲解,才使得我走出误区,找到正确的方法。从设计的选题到资料的搜集直至最后设计的修改的整个过程中,花费了沈老师很多宝贵的时间和精力,在此向导师表示衷心地感谢~导师严谨的治学态度,开拓进取的精神和高度的责任心都将使我受益终生~还要感谢和我做同一设计的符永馨同学,是她在我平时设计中和我一起探讨问题,并指出我设计上的错误,使我能及时的发现问题并把设计顺利的进行下去。没有你们的帮助我不可能这样顺利地结稿,在此表示深深的谢意!
第 27 页 共32 页
范文五:基于ARM的嵌入式智能家居远程监控系统设计_毕业设计
本科毕业设计(论文)
基于 ARM 的嵌入式智能家居远程 监控系统设计
燕 山 大 学
本科毕业设计 (论文)
基于 ARM 的嵌入式智能家居远程 监控系统设计
学院(系) :电气工程学院
专 业:工业自动化
学生 姓名:唐传璋
学 号:090103010055
指导 教师:李建雄
答辩 日期:2013-6-22
燕山大学毕业设计 (论文 ) 任务书
摘要
摘要
科技改变生活,科技为人类带来了更舒适更方便的解决方案,智能家 居是现代化科技的体现,智能家居也正是在应人们需求下而产生的。 本设计的内容是设计一个基于 ARM 的智能家居远程监控系统。整个 硬件控制系统有以下模块:控制主机 STM32F103VET6、无线短信收发模块 GPRS(远程监控的主要模块 ) 、 用于显示的 LCD1602液晶显示屏 (显示测量出 来的温湿度值 ) 、测量外部环境温湿度的温湿度传感器 DHT11,异步电机 28BYJ-48(模拟控制窗帘收放用到的控制器 ) 、 蜂鸣器 (报警用 ) 、 LED 灯 (模拟 室内各种灯 ) 、继电器 (模拟室内各种电器的控制开关 ) 。
温湿度传感器测量出来的温湿度数值通过 LCD1602来显示, 当超过设 定的阈值将通过 GPRS 模块发送警报短信到指定的手机上, 同时也可以由手 机发送特定短信到 GPRS 上控制 LED 灯的亮灭、 控制 28BJY-48步进电机的 正反转、读取当前室内的温湿度并发送回手机上,实现远程监控的。
关键词 智能家居;远程监控; GPRS ; ARM
燕山大学本科生毕业设计(论文)
Abstract
Technology has changed life, science and technology has brought to mankind more comfortable and more convenient solution, smart home is a manifestation of modern technology, smart home is also in demand should be generated by people.
The content of this thesis is to design a remote monitoring system of smart home based on ARM. The entire hardware control system has the following modules: the host controller STM32F103VET6, wireless SMS transceiver module GPRS (the main module of the remote monitoring), LCD display (to display the temperature and humidity measured values), temperature and humidity sensor,DHT11, be used to measure the external environment temperature and humidity, asynchronous motor 28BYJ-48 (analog controller curtain used), a buzzer (alarm), LED light (simulated indoor lamps), a relay (control switch simulation of indoor each kind of electric appliance).
The temperature and humidity value measured by the temperature and humidity sensor and displayed by LCD1602, when more than a set threshold an alarm SMS will be sent by GPRS module to the designated mobile phone, but also can be caused by the mobile phone to send a specific message to the GPRS to control LED light, 28BJY-48 stepper motor reversible, read the current indoor temperature and humidity and sent back to the mobile phone.
Keywords smart home; remote monitoring; GPRS; ARM
目录
目 录
摘要 . ...................................................................................................................... I Abstract ............................................................................................................... I I 第 1章 绪论 . ....................................................................................................... 1 1.1课题背景 .................................................................................................. 1 1.2国外的发展动态 ....................................................................................... 1 1.3国内的发展动态 ...................................................................................... 2 1.4本文各章主要安排 .................................................................................. 2 第 2章 各个硬件模块的说明 . ........................................................................... 3 2.1主控模块 .................................................................................................. 3 2.1.1STM32的系统架构 . ........................................................................... 3 2.1.2STM32F103VET6的内部资源 . ......................................................... 4 2.2短信收发模块 GPRS ................................................................................ 7 2.3温湿度测量模块 ....................................................................................... 8 2.3.1DHT11的引脚说明 ............................................................................ 8 2.3.2DHT11的工作原理 ............................................................................ 9 2.4温湿度液晶显示模块 LCD1602 ............................................................ 11 2.4.1LCD1602的管脚说明 ...................................................................... 12 2.4.2LCD1602的特性 .............................................................................. 12 2.4.3LCD1602的基本指令 ...................................................................... 12 2.5收放窗帘模块步进电机 28BJY-48 ....................................................... 14 2.5.1步进电机的工作原理 ...................................................................... 14 2.5.2步进电机的引脚接线 ...................................................................... 14 2.6本章小结 ................................................................................................ 15 第 3章 硬件系统的设计 . ................................................................................. 16 3.1直流稳压电源的设计 ............................................................................ 16 3.2STM32最小系统的设计 ........................................................................ 17 3.2.1电源的供电方案 . .............................................................................. 17 3.2.2晶振电路 .......................................................................................... 17 3.2.3复位电路 .......................................................................................... 18
燕山大学本科生毕业设计(论文)
3.2.4串口驱动电路 ................................................................................... 18 3.3步进电机、继电器驱动电路设计 ......................................................... 19 3.4本章小结 ................................................................................................. 20 第 4章 软件程序的设计 . .................................................................................. 21 4.1主函数及 TIM2中断服务函数设计 . ..................................................... 21 4.1.1主函数及 TIM2中断服务函数程序代码 . ....................................... 21 4.1.2主函数及 TIM2中断服务函数程序流程图 . ................................... 23 4.2GPRS 来信中断处理函数设计 ............................................................... 24 4.2.1GPRS 来信中断处理函数程序代码 . ................................................ 24 4.2.2GPRS 来信中断处理流程图 . ............................................................ 26 4.3GPRS 的 AT 指令 .................................................................................... 27 4.3.1本设计中用到的 AT 指令 ................................................................ 27 4.3.2PDU 编码 . .......................................................................................... 27 4.3.3AT 指令的使用程序设计 .................................................................. 29 4.4本章小结 . ................................................................................................. 31结论 . .................................................................................................................... 32 参考文献 . ............................................................................................................ 33 致谢 . .................................................................................................................... 35 附录一 整个硬件系统电路图 . .......................................................................... 36 附录二 开题报告说明 . ...................................................................................... 37 附录三 文献综述 . .............................................................................................. 38 附录四 中期报告 . .............................................................................................. 39 附录五 外文文献及其翻译 . .............................................................................. 40 附录六 完整的程序代码 . .................................................................................. 41
第 1章 绪论
第 1章 绪论
1.1课题背景
随着科技的提高, 经济的发展, 人们的物质生活水平的提高, 对家居环 境的要求也越来越高, 作为家居智能化的核心部分——智能家居控制系统也 越发显得重要。 智能家居控制器可以为系统提供智能控制方案, 使住户的控 制更便捷,更高效,更能为家庭的日常活动节约不必要的能耗 [1]。而且在现 在这个注重绿色环保的世界里,智能的为住户控制好空气的湿度、温度等, 检查分析空气成分, 让住户安心入住。 家居智能化控制的开发和建设是未来 国家、经济发展的必然趋势。
在科学技术日新月异的今天, 智能家居产品也在不断发展寻求突破, 用 智能的方式缓和、解决社会矛盾,这是本课题的目的及意义所在。
1.2国外的发展动态
1984年,世界上第一座智能建筑在美国的康涅迪格州建成,这座意义 不一般的智能建筑是对一座旧式大楼在一定程度上的改造而完成的。 它只是 采用计算机系统对大楼的照明、 空调、 电梯等设备进行监控, 并提供情报资 料、语音通信、电子邮件等方面的信息服务。 2000年,新加坡大约有 5000户家庭采用了这种家庭智能家居化系统, 而与此同时, 美国采用这种智能家 居化系统的用户已高达 4万户。 目前, 在国外的家庭智能化系统技术己经越 来越成熟,预计今后,越来越多的新房将会安装具有一定的“智能家居化” 功能的系统。 于此同时, 由于科学技术的发展日益标准化, 这些新型智能家 居系统将会比世界首富比尔 . 盖茨耗资六千万美元的高端智能家居别墅便 宜得多。
在家居智能化系统研发方面,美国及一些西方国家一直处于领先地位。 近年来, 以摩托罗拉公司及美国微软公司等为首的一些国外知名企业, 先后 加入到智能家居系统的研发中。 比如 :摩托罗拉公司开发出来的 “居所之门” 、 微软公司开发出来的“梦幻之家” 、 IBM 公司开发出来的“家庭主任”等都 以日趋成稳的技术霸占家居市场。此外,亚洲国家日本、韩国、新加坡等国
燕山大学本科生毕业设计(论文)
的领头大企业也纷纷致力于家居智能化的研发,对家居市场更是跃跃欲试。 1.3 国内的发展动态
1990年后, 我国的智能家居化住宅小区日益兴起。 我国的智能家居化住 宅建筑最早起于广州、深圳和上海等沿海发达城市,并慢慢地向内陆发展。 在 1997年香港回归时,上海的中皇广场在建设部 “97跨世纪住宅小区案竞 赛活动 ” 中被建设部科技委员会评为全国首家 “ 智能住宅示范工程 ” ,从此揭 开了我国智能家居住宅小区发展的序幕。 1999年,建设部住宅产业化办公 室、建设部勘察设计司联合组织实施了全国住宅小区智能化技术示范工程, 这也标志着我国的智能家居进入了一个新阶段。 随着信息化技术日益普, 国 家经贸委领头成立了家庭信息网络技术委员会, 同时信息网络技术体系研究 及产品开发已经被列为了国家技术创新的重点专项计划。根据建设部的要 求,截止今年,大中城市中 50%的住宅要实现智能化 [2]。
我国的智能家居建设相对于国外起步比较晚, 尚未形成一定的国家标 准。 国内各大硬、 软件企业机构正在积极的研发更为符合市场的智能家居化 产品, 以解决我国当前智能化设备使用复杂、 产品价格昂贵及实用性差等缺 点, 而技术创新能力也逐渐向国际先进水平靠拢, 这样智能家居的未来值得 我们期待 [3-4]。
1.4 本文各章主要安排
本文第二章主要介绍了智能家居控制系统中用到的各个硬件模块, 有主 控模块 STM32F103VET6、 GPRS 短信收发模块 GTM900-B 、温湿度测量传 感器 DHT11、液晶显示屏 LCD1602、步进电机 28BYJ-48。
第三章主要介绍了硬件系统的设计, 重点描述各个功能模块电路图的设 计及其功能。
第四章主要介绍了控制系统软件程序的设计,主要有主函数及 TIM2中 断处理函数的程序设计, GPRS 来信中断处理函数的设计以及 GPRS 的 AT 指令的 PDU 编码过程。其中给出了主要程序代码及其程序流程图。
第 2章 各个硬件模块的说明
第 2章 各个硬件模块的说明
2.1主控模块
本设计整个系统的主控芯片选择的具有 ARM 内核 Cortex-M3的 STM32F103VET6。该芯片属于增强型的 32位高性能微控制器,具有 100引脚和高达 512K 字节的闪存存储器。
2.1.1 STM32的系统架构
STM32VET6的系统架构包含 4个驱动单元:Cortex-M3内核 Dcode 总 线、系统总线、通用 DMA1和通用 DMA2; 4个被动单元:内部闪存存储 器 Flash 、内部数据存储器 SRAM 、 FSMC 和 AHB 到 APB 的桥。这些单元 都是通过一个多级的 AHB 总线构架相互连接的,如图 2-1所示。
ICode : 该总线将闪存指令接口与 ARM 的 Cortex-M3内核的指令总线相 连接。指令预取在此总线上完成。
DCode: 该总线将闪存存储器的数据接口和 Cortex-M3内核的数据总线 相连接 (常量加载和调试访问 ) 。
系统总线 : 此总线连接 Cortex-M3内核的系统总线到总线矩阵, 总线矩 阵协调着 DMA 与内核之间的访问。
DMA 总线 : 此总线将 DMA 的 AHB 主控接口与总线矩阵相联, 总线矩 阵协调着 CPU 的 DCode 和 DMA 到 内部闪存存储器 Flash 、内部数据存储 器 SRAM 和外设的访问。
总线矩阵 : 该矩阵协调 DMA 主控总线与内核系统总线间的访问与仲 裁, 仲裁采用轮换算法。 总线矩阵包含 4个驱动部件和 4个被动部件。 AHB 外设通过总线矩阵与系统总线相连,允许 DMA 访问。
AHB/APB桥 (APB): 两个 AHB/APB桥在 AHB 和 2个 APB 总线间提供 同步连接。 APB1操作速度限于 36MHz , APB2操作于全速 (最高 72MHz) 。 有关连接到每个桥的不同外设的地址映射。在每一次复位以后,所有除 SRAM 和 FLITF 以外的外设都被关闭,在使用一个外设之前,必须设置寄 存器 RCC_AHBENR来打开该外设的时钟
3
燕山大学本科生毕业设计(论文)
图 2-1 STM32系统架构
2.1.2 STM32F103VET6的内部资源
STM32F103VET6的引脚图如图 2-2所示。
(1) 内核:ARM 的 32位 Cortex-M3微处理器;最高达 72MHZ 频率, Cortex-M3内部的数据路径是 32位的,寄存器是 32位的,存储器接口也是 32位的。 Cortex-M3采用了哈佛结构, 拥有独立的 Dcode 总线和 Icode 总线, 可以让数据访问和取指并行不悖,这样数据访问就不再占用 Icode 总线,从 而提升了工作性能。 为实现这个特性, Cortex-M3内部含有好几条总线接口, 每条都为自己的应用场合而优化过,并且它们可以并行工作。
4
第 2章 各个硬件模块的说明
图 2-2 STM32F103VET6引脚图
(2) 存储器:512KB 的闪存程序存储器; 64K 字节的静态数据存储器 5
燕山大学本科生毕业设计(论文)
SRAM ,它可以以字节、半字 (16位 ) 或全字 (32位 ) 访问。
(3) 时钟和电源管理:
(a) 三种不同的时钟源可被用来驱动系统时钟 (SYSCLK):1) HSI振荡 器时钟; 2) HSE振荡器时钟; 3) PLL时钟。
(b) STM32的工作电压 (VDD)为 2.0~3.6V , 通过内置的电压调节器提 供所需的 1.8V 电源;
(c) 独立的 A/D转换器供电和参考电压;
(d) 一个完整的上电复位 (POR)和掉电复位 (PDR)电路;
(e) 可有 3种不同工作模式的电压调节器;
(f) 可编程电压监测器 (PVD)。
(4) 通用和复用功能 I/O(GPIO和 AFIO) :5组多功能双向 5V 兼容的通 用 I/O端口;可使用复用功能重新映射到其他一些引脚上。
(5) DMA控制器:支持定时器、 ADC 、 SPI 、 IIC 和 USART 等外设。
(6) 嵌套向量中断控制器:
(a) 有 68个可屏蔽中断通道 (不包含 16个 Cortex? -M3的中断线 ) ;
(b) 16个可编程的优先等级 (使用了 4位中断优先级 ) ;
(c) 低延迟的异常和中断处理;
(d) 电源管理控制;
(e) 系统控制寄存器的实现。
(7) 模拟 /数字转换 (ADC):12位的 ADC 是一种逐次逼近型模拟数字转 换器,它有多达 18个通道,可测量 16个外部和 2个内部信号源。
(8) 定时器:2个高级控制定时器 (TIM1、 TIM8) ;
(a) 4个通用定时器 (TIM2、 TIM3、 TIM4、 TIM5) ;
(b) 2个基本定时器 (TIM6、 TIM7) ;
(c) 一个 实时 时钟 、两 个看 门 狗定 时 器和一个系统 滴答定 时器 (Systick)。
(9) 通用异步收发器 (USART):全双工的,异步通信 RZ 标准格式;发送 和接收共用的可编程波特率,最高达 4.5Mbits/s;智能卡模拟功能。
6
第 2章 各个硬件模块的说明
本设计选用的 GPRS 模块为华为的 GTM900-B 。华为 GTM900-B 无线 模块是一款两频段 GSM/GPRS 无线模块。 它支持标准的 AT 命令及增强 AT 命令, 提供丰富的语音和数据业务等功能, 是高速数据传输等各种应用的理 想解决方案。 GTM900-B 模代表支持 PPP 协议的模块, 主要兼容西门子 C35 模块还有数据传送的 AT 命令, 适用于小数据量传送的场合, 用户无需实现 PPP 协议也可实现数据传输的功能。
GTM900-B 采用 AT 命令集,通过 UART 接口与外部的 CPU 进行通信, 主要实现无线短信的发送和接收、音频处理、基带处理等功能。键盘、液晶 显示 LCD 等外部设备由外部 CPU 进行控制。本设计主要用于短信的首发来 监控主机上的一些外围设备, GTM900引脚图如图 2-3所示, 主要引脚说明如 表 2-1所示。
图 2-3 GTM900引脚图
7
燕山大学本科生毕业设计(论文)
2.3温湿度测量模块
温湿度的测量选择温湿度传感器 DHT11, 数字温湿度传感器 DHT11是 一种具有已校准数字信号输出的温度与湿度复合的传感器。 它采用了专用的 温湿度传感技术与数字模块采集技术,确保 DHT11具有极高的可靠性与优 越的长期稳定性。
2.3.1 DHT11的引脚说明
数字温湿度传感器 DHT11中具有一个 NTC 测温元件和一个电阻式感湿 元件,并与一个高性能的 8位单片机相连接。因此 DHT11具有抗干扰能力 强、超快响应、品质卓越、性价比极高等优点。每个温湿度传感器 DHT11产品都在极为精确的温湿度校验室中进行了校准。 校准系数以程序的形式储 存在 DHT11中的 OTP 内存中, 传感器内部在检测信号的处理过程中要使用 这些校准系数。其引脚接线图如图 2-4所示,引脚说明如表 2-2所示。
8
第 2章 各个硬件模块的说明
图 2-4 DHT11引脚接线图
2.3.2 DHT11的工作原理
DHT11的供电电压为 3~5.5V。传感器上电后,要等待 1s 以越过不稳定 状态, 在此期间无需发送任何指令。 DATA 引脚用于微处理器与 DHT11之间 的通讯和同步,采用的是单总线数据格式,一次通信时间为 4ms 左右,数据 分为整数部分和小数部分,当前的小数部分现读出为零。
(1) 数据的格式
进行一次温湿度采集得到完整的数据为 40bit ,高位数据先出。
数据格式 :8bit湿度整数 +8bit湿度小数 +8bi温度整数 +8bit温度小数 +8bit数据校验和。
采集到的温湿度数据传输正确时,其校验和等于 “8bit 湿度整数 +8bit湿 度小数 +8bi温度整数 +8bit温度小数 ” 所得结果的末 8位数据。
(2) 主机与 DHT11的通信过程
主机与 DHT11进行通信要有一个握手的过程,如图 2-5所示,当主机开 9
燕山大学本科生毕业设计(论文)
10
始发送开始信号后 , 温湿度传感器 DHT11即从低功耗模式转换到高速模式, 等到主机的开始信号结束后, DHT11立即发送响应信号,接下来开始送出 40bit 的温湿度数据, 用户可选择需要读取的温湿度数据。 若没有接收到主机 发送开始信号, DHT11就不会响应主机的信号也就不会主动进行温湿度采 集。当 DHT11采集数据完成后就会转换到低功耗模式。
主机发开
始信号
VCC GND
并延 时等 待
DHT11响应输 出
拉高 延时 准备 输出 数据‘ 0’
数据‘ 1’
从机 拉低 50us
数据传送接束 拉高总线
主机信号
DHT 信号
图 2-5 DHT11与主机通信过程
如图 2-6所示,当总线空闲是其状态为高电平,主机要与 DHT11通信则 需要主机将总线拉低至少 18毫秒以上 , 再拉高 20~40us, 保证 DHT11传感器能 检测到开始信号。 当 DHT11检测到主机的握手开始信号后, 会等待主机开始 信号的结束 , 然后发送 80us 低电平的响应信号。 主机发送开始信号结束后 , 接 收 DHT11的响应信号 , 当主机发送开始信号后 , 就可以由输出模式切换到输入 模式,开始接收 DHT11测量出来的温湿度数据。
VCC GND
主机信号
DHT 信号
主机至少拉低
18ms
主机拉高 20~40us
DHT 响应信号
80us
DHT 拉高 80us
开始传 送数据
图 2-6 主机与 DHT11的握手过程
DHT11发送 80us 低电平的响应信号后, 再把总线拉高 80us ,准备发送测
第 2章 各个硬件模块的说明
量出来的温湿度数据,每 1bit 的数据都以 50us 的低电平时隙开始,高电平的 长短决定了该数据位是 1还是 0,格式分别如图 2-7和图 2-8所示。如果主机读 取 DHT11的响应信号为高电平,则是 DHT11没有响应,温湿度数据测量失 败。当最后 1bit 温湿度数据传送完后, DHT11将总线拉低 50us ,接着总线由 上拉电阻拉高进入空闲状态。
图 2-7 数字 0信号的表示
图 2-8 数字 1信号的表示
2.4 温湿度液晶显示模块 LCD1602
液晶显示屏 LCD1602是一种专门用来显示符号、 数字、 字母等的点阵型 液晶显示模块,它由 32个 5*11或 5*7等的点阵字符位组成,分两行显示,每 行 16个字符位。 每个点阵字符位都可以显示一个字符, 每两个字符位间都有 一个点距的间隔,两行间也有一定的间隔,起到了字间距和行间距的作用。 1602是指显示的内容为 16*2, 即可以显示两行, 每行显示 16个字符 (显
11
燕山大学本科生毕业设计(论文)
示字符和数字)。
2.4.1 LCD1602的管脚说明
LCD1602的管教功能说明如表 2-3所示
2.4.2 LCD1602的特性
(1) 3.3V或 5V 工作电压,对比度可调;
(2) 内含复位电路;
(3) 提供各种控制命令 , 如:清屏、字符闪烁、光标闪烁、显示移位等多 种功能;
(4) 有 80字节显示数据存储器 DDRAM ;
(5) 内建有 192个 5*7点阵的字型的字符发生器 CGROM ;
(6) 8个可由用户自定义的 5X7的字符发生器 CGRAM 。
2.4.3 LCD1602的基本指令
LCD1602的显示控制模式可以自己设定,通过指定的指令码输入 LCD1602中就能得到想要的显示模式。指令的写入需要寄存器选择功能, 即当 RS 为低电平, RW 为低电平时为指令寄存器 (IR)的写入; 当 RS 为高电 平, RW 为低电平时为数据寄存器 (DR)的写入;当 RS 为低电平, RW 为高 电平时为忙标志和地址计数器的读出;当 RS 为高电平, RW 为高电平时为
12
转载请注明出处范文大全网 » 基于Cortex-M3和μC