单片机训练要点硬件构成要素软件设计结构.ppt
单片机训练要点硬件构成要素软件设计结构,嵌入式(单片机)系统中的常见硬件资源,微处理器存储器定时器通讯、接口电路、总线AD/DA,PWM复位控制与看门狗其它,一、微处理器类型与选择,微处理器类型:指令结构上:精简指令集 复杂指令集 数据与地址总线结构上:典型器件如8086;MCS51;TI公司的DSP等等 程序启动方式:是否需要引导(root)工作模式:虚拟模式 实地址模式 概念参考80386,(系统模式 用户模式 异常模式等)参考ARM 寄存器:方便在多种模式之间程序切换,支持多任务操作系统 工作目标:数据处理型(DSP)控制型(单片机),功率消耗 电池供电 市电供电1)选择低功耗的处理器(低功耗的关键)选择合适的节电模式 控制工作频率降低工作电压 对其他模块实现电源管理 注意:在嵌入式微处理器中 集成了各种外围接口电路。这部分扩展的功能也是微处理器选择的重要依据。,几种典型的微处理器,MCS51系列(通用单片机,有广泛的用户群。)AVR系列PIC系列(低功耗,低成本)ARM系列(多组寄存器结构支持多用户操作系统)TI DSP系列(极强的数字信号处理功能和速度)还有一些微处理器集成LCD驱动器、USB接口、CAN总线、以太网络接口,特别适合于相关技术的开发。,中断和异常(概念),中断-被定义为改变CPU执行指令顺序的事件,这些事件对应于CPU芯片 和 外部硬件电路 产生的电信号。中断可分为同步synchronous和异步asynchronous1)同步-由CPU控制单元产生,同步的产生与指令有关.或说同步是由于执行了一些“不恰当”的指令引起的.在指令终止执行后,CPU才发出中断-称为同步!2)异步 其他硬件设备需要CPU提供服务时向CPU提出的一种请求。对进程而言,由于随机性!80X86中,把同步和异步分别称为异常(exception)和中断(interrupt)。(有时候,我们也统称为中断),硬件中断(interruptions),1)可屏蔽中断这些中断请求被送到CPU的INTR引脚。通过清除 flags的IF标志,可以disable它!2)不可屏蔽中断这些中断请求被送到CPU的NMI引脚。只有很少的事件,例如硬件错误,会给一个高电平到不可屏蔽中断,异常exceptions(80X86为例),CPU执行指令时,发现异常情况,产生exceptions,根据eip寄存器的值可分如下类型:1)故障(fault)存在eip中的值是引起故障的指令地址。异常处理结束时,该指令要被重新执行。例如“缺页异常处理”例子。2)陷阱(trap)eip中存的是引发陷阱指令的下一条指令。表示没必要再重新执行引发陷阱的指令。这个主要用于调试程序!3)异常结束(abort)发生严重错误时触发,不能在eip放有意义的值。控制单元直接让程序退出!4)编程异常(programmed exception)程序员(的程序)向系统提交请求时会触发。由int或者int3指令触发。例如int 0 x80是程序员发出系统调用请求!。-也叫软中断。一般用于系统调用和给调试程序通知一个特定事件。,中断管理(应用),多中断源是中断管理的需求背景中断屏蔽:全局屏蔽、个别屏蔽中断向量中断服务子程序与中断源的对应关系;优先级管理各中断事件的优先权问题(中断嵌套),有时只用高低两级。管理的途径:1、专门的器件(51集成在内部);2、通过软件查询,中断子程序编写时注意要点:,确保中断向量正确;现场保护与恢复是关键(汇编语言);通过全局变量和主程序交换信息;通过静态变量处理同一中断源的不同次之间的逻辑关系;在多中断源时,要特别注意中断嵌套的问题;调试时,对中断要专门调试测试,确认正确性。,二、存储器,很多类型的存储设备在现代计算机系统中都是比不可少的。作为一个嵌入式工程师,必须明白它们之间的差别以及理解怎么有效地使用每一种类型的存储器。半导体存储器分类:随机存取的(RAM)、只读的(ROM)。在一个RAM 设备中,存储在存储器中每一个位置的数据都可以在需要的时候读或者写。在一个ROM 设备中,存储在存储器中每一个位置的数据可以随意的读取,但是不能够写入。有些时候,在一个类ROM 设备中改写其中的数据是可能的。这种设备叫作混合存储器,因为它们同时表现了RAM 和ROM 的一些特征。注:在嵌入式微处理器中,一般集成了少量的RAM 和E2PROM,还有足够的FLASH(用于存储程序代码、表格),RAM 的类型ARAM,在RAM 家族中有两种重要的存储设备:SRAM 和DRAM。它们之间的主要差别是存储于其中的数据的寿命。SRAM(静态RAM)只要是芯片有电就会保留其中的内容。然而,如果电源切断了或者是暂时断电了,其中的内容就会永远的丢失。另一方面,DRAM(动态RAM)只有极短的数据寿命通常不超过0.25 秒。即使是在连续供电的情况下也是如此。然而,一个叫作DRAM控制器的简单硬件可以使DRAM的行为更像SRAM。DRAM 控制器的任务是周期性地刷新DRAM 中存储的数据。通过一秒钟之内几次刷新数据,DRAM 控制器就可以在需要的时间内保持DRAM 中数据有效。因此DRAM 归根结底和SRAM 是同样有用的。,特点:,在决定选用哪一种类型的存储器的时候,系统设什者要考虑存取时间和成本。SRAM 设备提供了使用方便、极快的存取时间(大约比DRAM 快四倍),但是制造起来十分的昂贵,容量小,功耗大。通常SRAM 只是用于那此存取速度极端重要的场合。在大量的RAM 需要的时候,每字节的更低价格使得DRAM 很吸引人。很多嵌入式系统两种类型都包括:关键数据通道上的一小块SRAM(几百个千字节)和其他所有地方的一大块DRAM(以兆计)PSRAM(伪静态RAM):容量大、使用方便、功耗小,ROM 的类型,ROM 家族中的存储器是按照向其中写入新数据的方法(通常叫作编程)及其可以重写的次数来区分的。这个划分反映了ROM 设备从硬连线,到一次性可编程,到可擦写可编程的演化过程。这些设备的一个共同的特性就是它们都能够永久地保存数格和程序,甚至是断电之后。真正第一个ROM 是硬连线设备,它包含一组预先编排的数据或者指令。ROM 中的内容不得不在芯片生产出来之前指定。因此实际的数据被用来安排芯片内部的晶体管。硬连线内存仍旧在使用,但是它们现在叫作“掩膜ROM”以和其他类型的ROM 区分。掩膜ROM 主要的优点是低的产品成本。不幸的是,只有在需要成百上千相同ROM 的拷贝时,成本才是低廉的。,PROM,EPROM,比掩膜ROM 更进一步的是PROM(可编程ROM)。它买来的时候处于未被编程的状态。如果你要看一个未经编程的PROM 的内容,你会看到数据的每一位完全由1 组成。把你的数据写人PROM 的过程涉及到一个特殊的设备、叫作设备编程器。设备编程器通过向芯片的管脚加电,每一次向设备中写入一个字节。一旦一个PROM 通过这种方法被编程了,其中的内容就再也不能改变了。如果存储在PROM 中的代码或者数据必须改变,目前这个设备就必须废弃。PROM 也称一次性可编程设备。EPROM(可擦写可编程ROM)编程的方式和PROM 完全一样。然而,EPROM 是可以被擦除并且反复被编程的。为了擦除一个EPROM,你只要把设备暴露在强紫外线光源下。(在设备的顶端有一个让紫外线照射到硅的窗口。)这样做,你基本上可以把整个芯片重置到其初始状态未编程状态。尽管比PROM 要贵,但是它们可以被再编程的能力使得EPROM 成为软件开发及测试过程必需的一部分。,快闪存储器(FLASH MEMORY)和非易失RAM(nonvolatile RAM),快闪存储器是存储器技术最新的发展。快闪存储设备具有高密度、低价格、非易失性、快速(读取,而不是写入)以及电气可重编程等特点。这些优点作为一个直接的结果,快闪存储器在嵌入式系统中的使用迅速增长。从软件的观点来说快速存储和EEPROM 技术十分的类似。主要的差别是快速存储设备一次只能擦除一个扇区,而不是一个字节一个字节的擦除。典型的扇区的大小是在256 字节到16 千字节的范围。尽管如此,快速存储设备比EEPROM 要流行的多,并且还迅速地取代了很多ROM 设备。混合存储器的第三个成员是NVRAM(nonvolatile RAM,非易失RAM)。非易失性是ROM 及混合存储器前面讨论过的一个特征。然而,NVRAM 物理上与那些设备非常不同。NVRAM 通常只是一个带有后备电池的SRAM。当电源接通的时候,NVRAM 就像任何一个其他的SRAM 一样。但是当电源切断的时候,NVRAM 从电池中获取足够的电力以保持其中现存的内容。NVRAM 在嵌入式系统中是十分普遍的。然而,它是十分的昂贵甚至比SRAM 还要昂贵因此,它的应用被限制于存储仅仅几百字节的系统关键信息,这些信息不可能有更好的存储办法了。FLASH有擦除次数寿命;nonvolatile RAM没有,双口RAM,单口ram一般指有一组地址线,一个写使能线,一个使能线,一组输入线,一组数据输出。双口ram指有两组地址口,控制信号和数据线,他们公用一个存储器体单元。他们是独立的。两个口都可以读写数据。不过在写的时候不可以两个口同时写。因为不可以同时往一个存储块写。两个口的时钟可以不一样。双口RAM 一般用于在两个数字功能模块之间传输数据,先进先出(FIFO)存储器,先进先出(FIFO)存储器是一种特殊存储器件,其特点是在同一个芯片里的同一个存储单元配备有两个数据口,一个是输入口,只负责数据的写入,另一个是输出口,只负责数据的输出。另外在对这种存储器进行读和写的操作时不需要地址线参与寻址,它的数据是按照一种环形结构依次进行存放的。先进先出(FIFO)存储器的另一个与传统存储器不同的地方,就是写入先进先出(FIFO)存储器中的存储单元的数据一旦被读取后,则这个数据再也无法被读取,就像永久消失一样。所以,先进先出(FIFO)存储器在操作时由“空”和“满”的标志位来表示存储器内部的状态。FIFO RAM 在两个数字功能模块之间传输数据,NAND FLASH和SD卡,一种可顺序访问的、并可分块擦除的大容量的FLASH存储器。从操作特点上看,更像一个半导体磁盘。广泛应用于需要大容量记录数据的多媒体设备中。注:有多种接口方式;为降低成本、体积、功耗等常常和其他功能电路集成在一起。,存储器要点:,单片机内部一般具有少量的SRAM和足够的多的ROM,也有一些单片机内部集成E2PROM。要知道各自的用法;在一些信号处理类型的应用中,内部的SRAM可能不够用,需要掌握RAM扩展的基本技术;熟悉市场上常见的产品;特别说明:扩展容量时要知道地址范围,并确保不和其它接口地址冲突。FIFO存储器作为一种“块数据”的缓冲方式,在一些题目中特别有用,应关注IDT公司的该类型产品。,存储器的接口形式,并行总线形式(地址、数据、控制信号)串行总线形式(I2C,SPI),三、定时器/计数器,实时时钟(real timer):年月日时分秒毫秒,一般内部集成可充电电池看门狗(watch dog timer):程序跑飞之后产生复位信号,一般的 无人职守系统中需要用到看门狗。定时器(有带捕获或比较功能,也有不带捕获或比较功能):可以设置一定的时间间隔引起中断或异常。利如时间延迟、时间等待、超时判断、波特率发生器、时间分片等。捕获:在普通定时器的基础上增加一个锁存器后,可以获得两个不同(或相同)事件脉冲之间的时间差。比较:在普通定时器的基础上增加几个数字比较器后,可以在计数器的值计数到设置值时,向位处理器提出中断请求。捕获和比较大大增加了定时器的功能。典型应用PWM,复位控制与看门狗,看门狗是一种与复位电路相联系的可清零定时器(计数器),当定时器的定时时间到时,复位电路自动产生复位信号,使系统复位。所以在正常情况下,应该确保定时时间不能到达设定值(一般为固定的默认值)。方法是在程序中增加指令对定时器清零。当程序由于干扰等原因“跑飞“时,就出现了我们所说的”死机“。此时定时器也不能及时清零,将导致看门狗溢出,系统自动复位。指令对定时器清零也叫“喂狗“内部看门狗,外部看门狗,带捕获和比较功能的计数器结构示意图,定时器应用要点,掌握工作模式的应用特点:MCS51中方式1和方式2知道时间常数和定时时间的关系;掌握如何去控制定时器的开启与关闭;学会中断与查询两种处理方式;在很多应用中,可能需要长时间定时(即超过额定的实时范围),此时可借助中断软件控制实现注意计数器和定时器使用方法的细微差异必要时,可利用CPLD自己设计。,四、通讯与总线接口电路,I2C总线I2C(InterIntegrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。I2C总线产生于在80年代,最初为音频和视频设备开发,如今主要在服务器管理中使用,其中包括单个组件状态的通信。例如管理员可对各个组件进行查询,以管理系统的配置或掌握组件的功能状态,如电源和系统风扇。可随时监控内存、硬盘、网络、系统温度等多个参数,增加了系统的安全性,方便了管理。,I2C总线特点,I2C总线最主要的优点是其简单性和有效性。芯片管脚数量少,降低了互联成本。总线的长度可高达25英尺。100Kbps的最大传输速率支持40个组件。I2C总线的另一个优点是,它支持多主控(multimastering),其中任何能够进行发送和接收的设备都可以成为主总线。一个主控能够控制信号的传输和时钟频率。当然,在任何时间点上只能有一个主控。,I2C总线是由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。在CPU与被控IC之间、IC与IC之间进行双向传送。每个电路和模块都有唯一的地址,在信息的传输过程中,I2C总线上并接的每一模块电路既是主控器(或被控器),又是发送器(或接收器),这取决于它所要完成的功能。CPU发出的控制信号分为地址码和控制量两部分,地址码用来选址,即接通需要控制的电路,确定控制的种类;控制量决定该调整的类别(如对比度、亮度等)及需要调整的量。这样,各控制电路虽然挂在同一条总线上,却彼此独立。,应用,大量的存取器尤其是FLASH 存储器,a/d d/a 等器件采用I2C总线,以节约芯片的体积空间。在多个数字模块的系统中,也可以利用I2C实现数据传输特别注意:两条总线上必须分别接一个上拉电阻(4.7K-10K)MCS51没有专门的I2C总线接口,使用是需要用软件模拟时序。,SPI(Serial Peripheral interface),SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。SPI是一个环形总线结构,由ss(cs)、sck、sdi、sdo构成,其时序其实很简单,主要是在sck的控制下,两个双向移位寄存器进行数据交换。类似于用74LS164和74ls165组成的一个环形移位寄存器对,并增加了一些控制信号,形成了总线,SPI 总线是Motorola公司推出的三线同步接口,同步串行3线方式进行通信:一条时钟线SCK,一条数据输入线MOSI,一条数据输出线MISO;用于CPU与各种外围器件进行全双工、同步串行通讯。SPI主要特点有:可以同时发出和接收串行数据;可以当作主机或从机工作;提供频率可编程时钟;发送结束中断标志;写冲突保护;总线竞争保护等。图示出SPI总线工作的四种方式,其中使用的最为广泛的是SPI0和SPI3方式(实线表示):,SPI总线工作的四种方式,SPI总线特点,比I2C使用更多的信号线,而且随着节点增加信号线也增多。速度要比I2C高,编程也简单大量的存取器尤其是FLASH 存储器,a/d d/a 等器件采用spi总线,以节约芯片的体积空间。在多个数字模块的系统中,也可以利用spi实现数据传输,通用异步收发器 UART(Universal Asynchronous Receiver/Transmitter),UART是用于控制计算机与串行设备的芯片。有一点要注意的是,它提供了RS-232C数据终端设备接口,这样计算机就可以和调制解调器或其它使用RS-232C接口的串行设备通信了。作为接口的一部分,UART还提供以下功能:将由计算机内部传送过来的并行数据转换为输出的串行数据流。将计算机外部来的串行数据转换为字节,供计算机内部使用并行数据的器件使用。在输出的串行数据流中加入奇偶校验位,并对从外部接收的数据流进行奇偶校验。在输出数据流中加入启停标记,并从接收数据流中删除启停标记。,UART数据格式,波特率:一位的时间长度倒数,注意区分以下概念,UART是通用异步收发器(异步串行通信口)的英文缩写,它包括了RS232、RS499、RS423、RS422和RS485等接口标准规范和总线标准规范,即UART是异步串行通信口的总称。而RS232、RS499、RS423、RS422和RS485等,是对应各种异步串行通信口的接口标准和总线标准,它规定了通信口的电气特性、传输速率、连接特性和接口的机械特性等内容。实际上是属于通信网络中的物理层(最底层)的概念,与通信协议没有直接关系。而通信协议,是属于通信网络中的数据链路层(上一层)的概念。COM口是PC(个人计算机)上,异步串行通信口的简写。由于历史原因,IBM的PC外部接口配置为RS232,成为实际上的PC界默认标准。所以,现在PC机的COM口均为RS232。,MODBUS,MODBUS 是MODICON公司最先倡导的一种软的通讯规约,经过大多数公司的实际应用,逐渐被认可,成为一种标准的通讯规约,只要按照这种规约进行数据通讯或传输,不同的系统就可以通讯。目前,在RS232/RS485通讯过程中,更是广泛采用这种规约。常用的MODBUS 通讯规约有两种,一种是MODBUS ASCII,一种是MODBUS RTU。一般来说,通讯数据量少而且主要是文本的通讯则采用MODBUS ASCII规约,通讯数据数据量大而且是二进制数值时,多采用MODBUS RTU规约。在实际的应用过程中,为了解决某一个特殊问题,人们喜欢自己修改MODBUS规约来满足自己的需要(事实上,人们经常使用自己定义的规约来通讯,这样能解决问题,但不太规范)。更为普通的用法是,少量修改规约,但将规约格式附在软件说明书一起,或直接放在帮助中,这样就方便了用户的通讯。Modbus通讯协议详解2007-04-27 12:18工业控制已从单机控制走向集中监控、集散控制,如今已进入网络时代,工业控制器连网也为网络管理提供了方便。Modbus就是工业控制器的网络协议中的一种。,以太网,以太网,指由施乐公司创建并由施乐、Intel和DEC公司联合开发的基带局域网规范。以太网络使用CSMA/CD(载波监听多路访问及冲突检测技术)技术,并以10 Mbps的速率运行在多种类型的电缆上。90年代,交换型以太网得到了发展,并先后推出了100兆的快速以太网、1000兆的千兆位以太网和10000兆的万兆位以太网等更高速的以太网技术。以太网的帧格式特别适合于传输IP数据包。随着Internet的快速发展,以太网被广泛使用。值得一提的是,如果接入网也采用以太网,将形成从局域网、接入网、城域网到广域网全部是以太网的结构,这样采用与IP数据包结构近似的以太网帧结构,各网之间无缝连接,中间不需要任何格式转换,可以提高运行效率,方便管理,降低成本,这种结构可以提供端到端的连接。基于以上原因,以太网接入得到了快速发展,并且越来越受到人们的重视。,并行总线,打印机口:具有种工作方式,其中EPP 和ECP方式实质是8位总线接口.工作速度在5Mbyte/s或更高.PCI 总线:计算机上的标准总线配置。32位总线,标准的PCI总线速度33M*4字节/s。接口的控制电路复杂,一般可使用第三方提供的桥接芯片开发,但成本增加。目前还有若干种改进型的PCI总线。ISA,EISA 早期的计算机上标配总线。目器工控机上还保留。接口的控制电路简单,其他总线与接口,USBCANGPIB(General-Purpose Interface Bus),五、AD/DA,PWM模拟世界和数字世界的桥梁,AD DA,PWM选择的依据:速度、分辨率、接口与控制方式分辨率意味着精度与动态范围PWM需要与低通率波器配合使用,可以输出低频的单极性电压控制信号DA输出电压或电流信号,A/D、D/A应用要点,掌握几种典型的芯片及其单片机接口(不同速度、分辨率和接口方式)在高精度的应用中参考电源是关键,了解几种专门的参考电压芯片。模拟信号可能需要调理、变换,输入和输出,键盘(注意:去抖)少量的键可直接采用IO端口连接鼠标条码LED,指示灯字符LCD图形显示LCD 打印机利用总线和接口(上位机),设计与调试,硬件设计:在硬件设计时,要留下一些专门的调试端口、几个状态指示灯。调试时编写很小的程序模块,借助示波器等仪器分别验证硬件功能。特别注意端口地址不要错。软件调试:1、对软件设计而言,可通过仿真软件分别调通一些与硬件相对独立的子程序;2、软硬件联调时,要在一些关键性的位置(比如中断、功能块程序的首尾)设置一些状态显示子程序,这样可以直观地观察程序的执行情况。3、必要时采用仿真器。但滥用仿真器可能导致效率低下。,4、嵌入式软件结构 循环轮询(polling loop)系统程序依次检查系统的每一个输入条件,一旦条件成立就进行相应的处理。优点:对于简单的系统而言,便于编程和理解;没有中断的机制,程序运行良好,不会出现随机的问题。缺点:应用领域有限(由于不可确定性);对于有大量I/O服务的应用不容易实现;如果程序规模大,则不便于调试。,循环轮询系统运行方式,循环轮询系统流程,循环轮询系统通常的软件结构如下:Initialize()While(true)If(condition_1)action_1();If(condition_2)action_2();If(condition_n)action_n();,前后台系统(foreground/background)又叫中断驱动系统。后台是一个一直在运行的系统,前台是有机一些中断处理过程组成的。当有一个前台时间(外部时间发生时),引起中断,中断后台运行,进行前台处理,处理完成后有回到后台(通常后台又称为主程序)。,前后台系统程序流程,优点:可并发处理不同的异步时间,设计简单;中断处理程序有多个,主程序一个;无须学习OS相关的知识。缺点:对于复杂的系统而言,其主程序设计复杂,系统复杂度提高,可靠性降低;实时性只能通过中断来保证,如果采用中断加主程序的方式来处理事件,其实时性难以保证;中断处理程序于主程序间的共享互斥问题需应用自身解决。,