版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2010届毕业生毕业论文题 目: 基于CAN总线的校园食堂售饭系统 院系名称: 信息科学与工程学院 专业班级: 电子信息科学与技术 学生姓名: 学 号: 指导教师: 教师职称: 副教授 年 月 日摘 要CAN 是Controller Area Network 的缩写(以下称为CAN),是ISO国际标准化的串行通信协议。在当前的汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子控制系统被开发出来。本设计以PIC16F877A单片机为核心的校园食堂售饭系统的工作原理和设计方法。CAN总线由MCP2510芯片控制实现,并实现和单片机之间的数据传递。MCP2510 是一款控
2、制器局域网络 (CAN) 协议控制器 , 完全支持 CAN 总线 V2.0A/B 技术规范。该器件支持 CAN1.2、 CAN2.0A、主动和被动 CAN2.0B 等版本的协议,能够发送和接收标准和扩展报文。它还同时具备验收过滤以及报文管理功能。文中介绍了该售饭系统的CAN实现部分,包括:CAN的底层通信电路、CAN和单片机的通信设计、数据显示及按键扫描的设计 。单片机通过对MCP2510的寄存器读取以及信息的处理,从而实现售饭系统之间的信息传递。文中还着重介绍了软件设计部分,在这里采用模块化结构,主要模块有:数码管显示程序、键盘扫描及MCP2510信息设置读取、信息处理等。关键词: PIC1
3、6F877A单片机 MCP2510芯片 串口通讯Title Based on CAN Bus System Campus Dining Hall AbstractCAN is short for Controller Area Network (hereinafter referred to as CAN), is the ISO international standard serial communication protocol.In the current auto industry, for safety, comfort, convenience, low pollution, l
4、ow-cost requirements, a variety of electronic control systems have been developed.The design PIC16F877A MCU Campus Dining Hall as the core principle of the system and design method.CAN-bus controlled by the MCP2510 chip implementation, and implementation and data transfer between MCU.MCP2510 is a Co
5、ntroller Area Network (CAN) protocol controller, full support for the CAN bus V2.0A / B specifications.The device supports CAN1.2, CAN2.0A, active and passive CAN2.0B other version of the agreement, the ability to send and receive standard and extended messages.It also have the acceptance filtering
6、and message management functions.This paper introduces the implementation of the CAN Canteen system elements, including: CAN underlying communication circuit, CAN and the MCU communication design, data display and key scanning design.Microcontroller to read through the MCP2510 registers, and informa
7、tion processing, in order to achieve Canteen transmission of information between systems.The paper also highlights some of the software design, where the modular structure, the main modules are: digital display program, keyboard scanning and MCP2510 information set to read, information processing, e
8、tc.Keywords PIC16F877A microcontroller serial communication MCP2510目 次 摘 要IAbstractII1 引言11.1 CAN总线的产生与发展11.2 CAN总线特点22 工作原理43 硬件部分设计方案53.1单片机和MCP2510连接单元53.2键盘单元53.3七段数码管显示单元64 CAN协议资料74.1 CAN传输协议实现方案74.2 CAN 协议引擎74.3 CAN 报文帧95 单片机资料135.1 内部组成135.3引脚功能155.4存储器组织166 电源输入部分237 软件部分设计方案247.1 程序结构分析247
9、.2主程序24结 论25致 谢26参 考 文 献27附录A:程序清单29 1 引言1.1 CAN总线的产生与发展控制器局部网(CANCONTROLLER AREA NETWORK)是BOSCH公司为现代汽车应用领先推出的一种多主机局部网,由于其高性能、高可靠性、实时性等优点现已广泛应用于工业自动化、多种控制设备、交通工具、医疗仪器以及建筑、环境控制等众多部门。控制器局部网将在我国迅速普及推广。 随着计算机硬件、软件技术及集成电路技术的迅速发展,工业控制系统已成为计算机技术应用领域中最具活力的一个分支,并取得了巨大进步。由于对系统可靠性和灵活性的高要求,工业控制系统的发展主要表现为:控制面向多元
10、化,系统面向分散化,即负载分散、功能分散、危险分散和地域分散。分散式工业控制系统就是为适应这种需要而发展起来的。这类系统是以微型机为核心,将 5C技术-COMPUTER(计算机技术)、CONTROL(自动控制技术)、COMMUNICATION(通信技术)、CRT(显示技术)和 CHANGE(转换技术)紧密结合的产物。它在适应范围、可扩展性、可维护性以及抗故障能力等方面,较之分散型仪表控制系统和集中型计算机控制系统都具有明显的优越性。 典型的分散式控制系统由现场设备、接口与计算设备以及通信设备组成。现场总线(FIELDBUS)能同时满足过程控制和制造业自动化的需要,因而现场总线已成为工业数据总线
11、领域中最为活跃的一个领域。现场总线的研究与应用已成为工业数据总线领域的热点。尽管目前对现场总线的研究尚未能提出一个完善的标准,但现场总线的高性能价格比将吸引众多工业控制系统采用。同时,正由于现场总线的标准尚未统一,也使得现场总线的应用得以不拘一格地发挥,并将为现场总线的完善提供更加丰富的依据。控制器局部网 CAN(CONTROLLER AERANETWORK)正是在这种背景下应运而生的。 由于CAN为愈来愈多不同领域采用和推广,导致要求各种应用领域通信报文的标准化。为此,1991年 9月 PHILIPS SEMICONDUCTORS制订并发布了 CAN技术规范(VERSION 2.0)。该技术
12、规范包括A和B两部分。2.0A给出了曾在CAN技术规范版本1.2中定义的CAN报文格式,能提供11位地址;而2.0B给出了标准的和扩展的两种报文格式,提供29位地址。此后,1993年11月ISO正式颁布了道路交通运载工具-数字信息交换-高速通信控制器局部网(CAN)国际标准(ISO11898),为控制器局部网标准化、规范化推广铺平了道路。1.2 CAN总线特点CAN总线是德国BOSCH公司从80年代初为解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的一种串行数据通信协议,它是一种多主总线,通信介质可以是双绞线、同轴电缆或光导纤维。通信速率可达1MBPS。 1.2.1 CAN总线通信接口
13、中集成了CAN协议的物理层和数据链路层功能,可完成对通信数据的成帧处理,包括位填充、数据块编码、循环冗余检验、优先级判别等项工作。 1.2.2 CAN协议的一个最大特点是废除了传统的站地址编码,而代之以对通信数据块进行编码。采用这种方法的优点可使网络内的节点个数在理论上不受限制,数据块的标识码可由11位或29位二进制数组成,因此可以定义211或229个不同的数据块,这种按数据块编码的方式,还可使不同的节点同时接收到相同的数据,这一点在分布式控制系统中非常有用。数据段长度最多为8个字节,可满足通常工业领域中控制命令、工作状态及测试数据的一般要求。同时,8个字节不会占用总线时间过长,从而保证了通信
14、的实时性。CAN协议采用CRC检验并可提供相应的错误处理功能,保证了数据通信的可靠性。CAN卓越的特性、极高的可靠性和独特的设计,特别适合工业过程监控设备的互连,因此,越来越受到工业界的重视,并已公认为最有前途的现场总线之一。 1.2.3 CAN总线采用了多主竞争式总线结构,具有多主站运行和分散仲裁的串行总线以及广播通信的特点。CAN总线上任意节点可在任意时刻主动地向网络上其它节点发送信息而不分主次,因此可在各节点之间实现自由通信。CAN总线协议已被国际标准化组织认证,技术比较成熟,控制的芯片已经商品化,性价比高,特别适用于分布式测控系统之间的数通讯。CAN总线插卡可以任意插在PC AT XT
15、兼容机上,方便地构成分布式监控系统。 1.2.4 结构简单,只有2跟线与外部相连,并且内部集成了错误探测和管理模块。 1.2.5 CAN的特点如下: CAN(Controller Area Network)总线,也称控制器局部网,由于采用了许多新技术及独特的设计,CAN总线与一般的通信总线相比,它的数据通信具有突出的可靠性、实时性和灵活性。其特点如下: CAN是具有国际标准的现场总线。 CAN为多主工作方式,网络上任何一个节点均可在任意时刻主动地向 网络上其它节点发送信息,而不分主从。 在报文标识符上,CAN上的节点分成不同的优先级,可满足不同的实时要求,优先级高的数据最多可在134us内得到
16、传输。CAN采用非破坏总线仲裁技术。当多个节点同时向总线发送信息出现冲突时,优先级低的节点会主动地退出发送,而优先级高的节点可以不受影响的继续传输数据,从而大大节省了总线冲突的仲裁时间。尤其是网络负载很重的情况下,也不会出现网络瘫痪情况(以太网则可能)。 CAN节点只需通过报文的标识符滤波即可实现点对点、一点对多点及全局广播等几种方式传送接收数据。 CAN的直接通信距离最远可达10km(速率5kbps以下);通信速率最高可达1Mbps(此时通信距离最长为40m)。 CAN上的节点数主要取决于总线驱动电路,目前可达110个。在标准帧的报文标识符有11位,而在扩展帧的报文标识符(29位)个数几乎不
17、受限制。 报文采用短帧格式,传输时间短,受干扰概率低,保证了数据出错率极低。 CAN的每帧信息都有CRC校验及其他检错措施,具有极好的检错效果。 l CAN的通讯介质可以为双绞线、同轴电缆或光纤,选择灵活。 CAN节点在错误帧的情况下具有自动关闭输出功能,而总线上其它节点的操作不受影响。 CAN总线具有较高的性能价格比。它结构简单,器件容易购置,每个节点的价格较低,而且开发技术容易掌握,能充分利用现有的单片机开发工具。 CAN协议也是建立在国际标准组织的开放系统互联模型基础上的。不过,由于CAN的数据结构简单,又是范围较小的局域网,其模型结构只取OSI底层的物理层、数据链路层和应用层3层,不需
18、要其他中间层,应用层数据直接取自数据链路层或直接向数据链路层写数据。结构层次少,利于系统中实时控制信号的传送。2 工作原理MCP2510是CAN总线协议控制器,可以接收数据,和发送数据,MCP2510检测CAN总线的数据,与接收条件相比较,将与接收条件符合的数据接收到数据接收缓冲器中,然后将接受缓冲器满标志寄存器标志位置一,并且将中断口置位,PIC16F877A单片机检测中断的产生,当中断产生,判断是那个中断,如果是MCP2510中断,则读取MCP2510标志寄存器,查看是不是接受中断,是则读取MCP2510接收缓冲寄存器。单片机将接收到的数据处理,分析数据结构,然后显示到显示数码管上。同时M
19、CP2510一直检测数据总线错误,并且记录,当错误超过计数上限,则标识错误寄存器,同时产生中断。单片机检测MCP2510发送缓冲器是否为空,当为空时检测是否有数据发送,有则写数据到MCP2510的发送缓冲器中,同时发送标识符到发送缓冲器标识符寄存器中,等待数据发送。此设计用运PIC16F877A的端口中断功能,实现键盘输入功能。显示电路PAC82C250MCP2510PIC16F877A键盘电路输入电源图2.1系统框图图2.2系统原理图3 硬件部分设计方案3.1单片机和MCP2510连接单元主连接系统应用PIC16F877A单元和MCP2510完成,如图3.1所示 图3.1 主系统连接图3.2
20、键盘单元单片机应用系统中除了复位按键有专门的复位电路,以及专一的复位功能外,其它的按键或键盘都是以开关状态来设置控制功能或输入数据。本设计键盘采用了PIC单片机的端口电平变化中断功能,键盘设计在PIC16D877A单片机RB端口,PIC16D877A的RB端口电平变化可以产生中断,这样就可以节约键盘一直扫描浪费的时间。并且能更好实现功耗节约。在这种行列式矩阵键盘非编码键盘的单片机系统中,键盘处理程序首先执行等待按键产生中断,在中断程序中标记按键按下标记,并且处理执行按键处理程序。当确认有按键按下后,下一步就要识别哪一个按键按下。对键的识别通常有两种方法:一种是常用的逐行扫描查询法;另一种是速度
21、较快的线反转法。对照图3.2示的键盘,说明线反转法工作原理。首先辨别键盘中有无键按下,有单片机I/O口向键盘送全扫描字,然后读入行线状态来判断。方法是:向行线输出全扫描字00H,把全部列线置为高电平,然后将列线的电平状态读入累加器A中。如果有按键按下,总会有一根行线电平被拉至低电平从而使行线不全为1。判断键盘中哪一个键被按下是通过将列线逐列置低电平后,检查行输入状态来实现的。方法是:依次给列线送低电平,然后查所有行线状态,如果全为1,则所按下的键不在此列;如果不全为1,则所按下的键必在此列,而且是在与零电平行线相交的交点上的那个键。 图3.2 整列键盘3.3七段数码管显示单元 本部分电路主要使
22、用七段数码管和三极管来实现。采用四位一体的数码管,单片机RD口作为数码段数据传送端,RA2-RA5作为数码管为选择端,采用9015作为驱动,数码管用共阴极数码管,RD口发送段选数据,RA2-RA5发送位选数据。如图3.3所示图3.3显示连线图4 CAN协议资料4.1 CAN传输协议实现方案Microchip Technology Inc.(美国微芯科技有限公司)生产的 MCP2510(如图4.1所示) 是一款控制器局域网络 (CAN) 协议控制器 , 完全支持 CAN 总线 V2.0A/B 技术规范。该器件支持 CAN1.2、 CAN2.0A、主动和被动 CAN2.0B 等版本的协议,能够发送
23、和接收标准和扩展报文。它还同时具备验收过滤以及报文管理功能。该器件包含三个发送缓冲器和两个接收缓冲器,减少了单片机 (MCU) 的管理负担。 MCU 的通讯是通过行业标准串行外设接口(SPI)来实现的,其数据传输速率高达 5 Mb/s。MCP2510 是一款独立CAN控制器,是为简化连接CAN总线的应用而开发的.它具有高速的SPI接口,支持 0,0 和 1,1 SPI 模式, 带有可编程预分频器的时钟输出引脚,带有可选择使能设定的中断输出引脚, 缓冲器满 输出引脚可配置为各接收缓冲器的中断引脚或通用数字输出引脚, 请求发送 输入引脚可配置为发送缓冲器的控制引脚 , 用以请求立即发送报文 , 或
24、配置为通用数字输出引脚,低功耗休眠工作模式,低功耗的 CMOS 技术,工作电压范围 3.0V 到 5.5V, 5 mA 典型工作电流,5.5V 时典型待机电流为 10 A等优点,从而可以轻松实现CAN协议。 4.1 MCP25104.2 CAN 协议引擎 CAN 协议引擎包含几个功能块,见图 4.2。下面将对这些功能块及其功能进行介绍4.2.1协议有限状态机 协议引擎的核心是有限状态机(FSM)。 该状态机逐个逐位检查报文,当各个报文帧发生数据字段的发送和接收时, 状态机改变状态。FSM 是一个定序器,对 TX/RX移位寄存器, CRC 寄存器以及总线之间的顺序数据流进行控制。 FSM 还对错
25、误管理逻辑(EML)以及 TX/RX 移位寄存器和缓冲器之间的并行数据流进行控制。FSM 确保了报文接收、总线仲裁、报文发送以及错误信号发生等操作过程依据 CAN 总线协议来进行。总线上报文的自动重发送也由 FSM 处理。 4.2.2 循环冗余校验循环冗余校验寄存器产生循环冗余校验(CRC) 代码。该代码在控制字段(控制数据字节数为 0 的报文)或数据字段之后被发送,并用来检查是否有报文发入 CRC字段。 4.2.3 错误管理逻辑 错误管理逻辑负责将 CAN 器件的故障进行隔离。该逻辑具有两个计数器,即接收错误计数器(REC)和发送错误计数器 (TEC)。这两个计数器根据来自位流处理器的命令进
26、行增减计数。根据错误计数器的计数值,CAN 控制器将被设定为错误主动、错误消极和总线关闭三种状态。4.2.4 位时序逻辑位时序逻辑 (BTL)可监控总线输入, 并根据 CAN 协议处理与总线相关的位时序操作。BTL 在帧起始时,以隐性状态到显性状态的总线过渡进行同步操作(称为硬同步)。之后, 若 CAN 控制器本身不发送显性位, 则BTL 在以后的隐性状态到显性状态总线过渡时会再进行同步操作(称为再同步)。BTL 还提供可编程时间段以补偿传播延迟时间和相位位移,并对位时段内的采样点位置进行定义。对BTL 的编程取决于波特率和外部物理延迟时间。 图4.2 CAN协议框图4.3 CAN 报文帧 4
27、.3.1 标准数据帧 CAN 标准数据帧如图4.3.1 所示。与其它所有帧相同,帧以起始帧 (SOF) 位开始。SOF 为显性状态,允许所有节点进行硬同步。在 SOF 之后是仲裁字段,由 12 个位组成,分别为 11个识别位和一个远程发送请求 (RTR)位。 RTR 位用于区分报文是数据帧 (RTR 位为显性) 还是远程帧(RTR位为隐性状态)。在仲裁字段之后是控制字段,由 6 个位组成。控制字段的第一位为识别扩展(IDE) 位,该位为显性状态时,说明这是标准帧。识别扩展位的下一位为零保留位(RB0),这一保留位将由 CAN 协议定义为显性位。控制字段的其余 4 位为数据长度码(DLC),说明
28、了报文中包含的数据字节数。控制字段之后为数据字段,包含正在发送的数据字节。数据字段长度由上述数据长度码DLC定义(0-8字节)。数据字段后为循环冗余校验字段(CRC) ,用来检测报文传输错误。 CRC 字段包含一个 15 位的 CRC 序列,之后是隐性 CRC 定界位。最后一个字段是确认字段,由两个位组成。在确认间隙(ACK slot) 位执行期间,发送节点发出一个接收位。 任何收到无错误帧的节点会发回一个显性位 ( 无论该节点是否配置为接收该报文与否 ),确认帧收到无误。确认字段以隐性确认定界符结束,该字符可能不允许被改写为显性位。 图4.3.1CAN标准数据帧4.3.2扩展数据帧在扩展数据
29、帧中, 紧随 SOF 位的是 32 位仲裁字段,如图4.3.2所示。仲裁字段的前 11 位为 29 位标识符的最有效位 ( 基本 ID) 。紧随这 11 位的是替换远程请求 (SRR)位,定义为隐性状态。 SRR 位之后是 lDE 位,该位隐性时表示这是扩展的 CAN 帧。 应注意的是,如果在扩展帧标识符的前 11 位发送完后,总线仲裁无果,而此时仲裁中的节点之一发出标准数据帧 (11 位标识符),那么, 由于节点发出了显性 IDE位而使标准 CAN 帧赢得总线仲裁。 另外,扩展 CAN 帧的 SRR 位应为隐性, 以允许正在发送标准CAN 远程帧的节点发出显性 RTR 位。 SRR 位和 l
30、DE 位之后是标识符的其余 18 位(扩展 ID)以及一个远程发送请求位。为使标准帧和扩展帧都能在共享网络上发送,应将29位的扩展报文标识符拆分成最高11位和最低18位两部分。拆分后可确保IDE 位在标准数据帧和扩展帧中的位置保持不变。仲裁字段之后是 6 位控制字段。控制字段前两位为保留位,必须定义为显性位。其余4 位为数据长度码 (DLC),说明报文中包含的数据字节数。扩展数据帧的其它部分 (数据字段, CRC 字段,确认字段, 帧结尾和间断) 与标准数据帧的结构相同 图4.3.2CAN扩展数据帧4.3.3 远程帧 通常,数据传输是由数据源节点 ( 例如,传感器发送数据帧)自主完成的。但也可
31、能发生终节点向源节点请求发送数据的情况。要做到这一点,终节点须发送一个标识符与所需数据帧的标识符相匹配的远程帧。随后相应的数据源节点会发送一个数据帧以响应远程帧请求。远程帧(如图 4.3.3所示)与数据帧存在两点不同,第一,远程帧的 RTR 位为隐性状态;第二,远程帧没有数据字段。当带有相同标识符的数据帧和远程帧同时发出时,数据帧将赢得仲裁,这是因为其紧随标识符的 RTR 位为显性。这样可使发送远程帧的节点立即收到所需数据。图4.3.3远程帧4.3.4 错误帧 错误帧是由检测到总线错误的任一节点产生的。 如图 4.3.4 所示,错误帧包含两个字段,即错误标志字段,及紧随其后的错误定界字段。错误
32、标志字段有两种类型。节点发送哪种类型的出错标志字段,取决于检测到错误并产生错误标志字段的节点的错误状态。当错误主动节点检测到一个总线错误时,这个节点将产生一个主动错误标志,中断当前的报文发送 。主动错误标志由 6 个连续的显性位构成。这种位顺序主动打破了位填充规则。所有其它节点在识别到所形成的位填充错误后,会自行产生错误帧,称为错误反射标志。错误标志字段因此包含 6 到 12 个连续显性位 (由 1 个或多个节点产生)。错误定界字段为错误帧划上了句号。在错误帧发送完毕后,总线主动恢复正常状态,被中断的节点会尝试重新发送被中止的报文。当错误消极节点检测到一个总线错误时,该节点将发送一个错误消极标
33、志,并紧接着发送错误定界字段。错误消极标志包含 6 个连续的隐性位,而错误消极节点发出的错误帧则包含 14 个隐性位。由此可知,除非总线错误被正在发送报文的节点检测到,否则错误消极节点错误帧的发送,将不会影响网络中任何其它节点。如果发送节点产生一个错误消极标志,那么,由于位填充规则被打破,将导致其它节点产生错误帧。错误帧发送完毕后,错误消极节点必须等待总线上出现 6 个连续隐性位后,才能尝试重新参予总线通信。错误定界符由 8 个隐性位组成,允许总线节点在错误发生后重新启动总线通信。 图4.3.4错误帧4.3.5 过载帧如图 4.3.5 所示,过载帧与主动错误帧具有相同的格式。但是,过载帧只能在
34、帧间间隔产生,因此可通过这种方式区分过载帧和错误帧(错误帧是在帧传输时发出的)。过载帧由两个字段组成,即过载标志和随后的过载定界符。过载标志由 6 个显性位和紧随其后的其它节点产生的过载标志构成(而错误帧包含最多 12 个显性位)。过载定界符包含 8 个隐性位。节点在两种情形下会产生过载帧:第一,节点在帧间间隔检测到非法显性位;第二,由于内部原因,节点尚无法接收下一条报文。节点最多可产生两条连续过载帧来延迟下一条报文的发送。图4.3.5 过载帧4.3.6 帧间间隔帧间间隔将前一条帧(无论何种类型)与其后的数据帧或远程帧分离开来。帧间间隔由至少 3 个隐性位构成,又称为间断。间断使节点在发送下一
35、条报文之前有时间进行内部处理。在间断之后, CAN 总线将保持隐性状态 ( 总线空闲 ),直至下一条报文发送开始。5 单片机资料 PIC16F87X系列单片机是MICROCHIP公司生产的中级产品,具有FLASH程序存储器的8位CMOS单片机,品种有28引脚的PIC16F876(A)/873(A)和40/44引脚引脚的PIC16F877(A)/874(A),对应的封装形式有PDIP、SOIC、SSOP、PLCC和QFP等多种。这个系列单片机采用CMOS技术和静态设计技术,实现了低功耗和宽工作电压范围,可以满足不同的应用要求。5.1 内部组成 如图5.1所示 ,PIC16F873(A)/874(
36、A)包含4K14的程序闪存,192字节的数据随机存储器和128字节数据EEPROM存储器。PIC16F876(A)/877(A)的程序闪存为8K14,数据随机存储器为368字节,数据EEPROM存储器为256字节。PIC16F873(A)/876(A)具有A、B和C三个I/O端口,内部包含13个中断源、三个定时器、两个CCP(捕捉器/比较器/PWM)模块和一个看门狗电路,同时集成了5通道A/D转换器。PIC16F874(A)/877(A)具有A、B、C、D和E五个I/O端口,内部包含14个中断源、三个定时器、两个CCP(捕捉器/比较器/PWM)模块、一个看门狗电路和一个并行从属端口PSP,同时
37、集成了8通道A/D转换器。PIC16F87X系列既有SPI和I2C主串行通信端口,又有USART异步串行通信端口。 PIC16F87X系列单片机是一种高速度、低功耗、高性能的CMOS器件,含有ROM、RAM、EEPROM、FLASH RAM、I/O端口、A/D转换器、捕捉器/比较器/PWM、串行通信端口、定时器、中断控制器和一个中央处理器。这种结构是基于文件寄存器概念,有独立的数据/数据存储器总线和程序存储器总线。数据总线和数据存储器总线是8位的字宽,程序总线和程序存储器(FLASH PROGRAM MEMORY)是14位字宽。由于数据存储器集成在片内,通过片内的8位总线与算术逻辑单元(ALU
38、)连接,可以直接通过内部总线传送信息,所以它们都是以寄存器方式工作和寻址,程序编码简洁高效。 PIC16F87X系列单片机的内部结构框图如图4.4-1所示。整个单片机集成了算术逻辑单元ALU,FLASH程序存储器,14位指令寄存器,13指针寄存器和8级13位的堆栈,文件寄存器RAM和特殊功能寄存器,状态寄存器,定时器,多通道10位A/D转换器,数据EEPROM,同步串行通信端口,通用异步串行通信端口,捕捉器/比较器/PWM,多功能输入/输出(I/O)端口,上电定时器,振荡器起振定时器,看门狗定时器,上电和掉电复位电路,时序产生电路,从属并行端口,低电压编程电路等。 图5.1内部图5.2 指令结
39、构 哈佛结构,使得程序存储器(存放指令)的访问和数据存储器(存放运算数据)的访问并行处理。在单片机的指令运行中,一般需要如下的过程:从程序存储器取出指令,根据指令进行译码,然后执行。在复杂指令集中,首先取指令需要12个周期,译码和执行指令又需要个周期。在PIC单片机中采用RISC指令集,使用指令流水线结构,在一个周期内完成两部分工作:一是执行指令,二是从程序存储器取出下一条指令。这样总的看起来每条指令只需要一个周期(个别除外)。在一个周期中,完成本条指令的执行,同时取出了下一条指令。5.3引脚功能 在PIC系列单片机种,除电源和地线引脚之外,其它的引脚基本都可能采用编程选择多功能复用,引脚如图
40、5.3所示。 根据引脚的功能,可以将引脚分为下列几类1:电源VDD引脚和地VSS引脚PIC单片机的供电可以在+2.7V+5V的范围,为了减少电源噪声的影响,将电源引脚和地线引脚放置芯片的中间。2:振荡器输入输出引脚在PIC单片机中有一根振荡器输入引脚OSC1/CLKIN和一根振荡器输出引脚OSC2/CLKOUT,由于PIC单片机可以采用不同的振荡器,这样使得这两根引脚可以有不同的功能。采用晶体振荡器或陶瓷谐振器,将晶体振荡器的两脚直接接入OSC1/CLKIN和OSC2/CLKOUT;采用外部振荡器电路时,将OSC1/CLKIN作为输入,OSC2/CLKOUT开路;采用RC振荡器时,OSC1/C
41、LKIN作为输入,OSC2/CLKOUT作为4分频信号输出(参见图5.3)。3:主复位信号引脚主复位信号引脚用于外部电路产生复位信号使PIC单片机复位,低电平有效。在对CPU编程时,此引脚作为编程电压的输入端VPP4:端口/功能引脚在PIC单片机中,包含多个端口,且端口引脚大部分都具有两种或三种功能复用。作为端口,端口A、端口B、端口C、端口D和端口E都是双向I/O口,端口B可以通过编程设置为弱上拉输入。作为第二或第三功能口,每个引脚的功能都可能不同,主要包含有如下的功能:用于A/D转换的模拟电压输入端和参考电压输入端,用于定时器的时钟输入端和振荡器输出端,用于串行通信的数据输入/输出端和时钟
42、端,并行从属端口和读/写/片选端等 图5.3引脚图5.4存储器组织 在PIC16F87X系列单片机中,有三个存储器模块。由于单片机内采用了哈佛总线结构,它的程序存储器和数据存储器的总线是独立分开的,CPU可以同时访问程序存储器和数据存储器。 PIC16F87X系列单片机具有13位指针计数器(PC),可以访问8k14字的程序存储器空间。如图5.4。程序存储器被分为几个区: 第一是复位矢量区,占据0000H字节; 第二是中断矢量区,占据0004H字节; 第三是程序存放区,从0005H字节开始。 在程序存放区中又分为页,每页7FFH字节 图5.4存储器 数据存储器分为四个存储体,存储体中包含通用寄存
43、器和专用寄存器(SFR),体的选择采用状态寄存器(STATUS)的位6(RP1)和位5(RP0),如表5.4。 表5.4 每个存储体最多可包含128字节,而每个存储体中专用寄存器放在低位存储区,专用寄存器上面是通用寄存器,通用寄存器采用静态随机访问存储器(SRAM) 所有的执行存储体都包含有专用寄存器(SFR),为了达到减少编码和快速访问的目的,一些经常访问的专用寄存器可以从一个存储体映射到另一个存储体。PIC16F873/873A/874/874A数据存储器的映射图如图5.4.1所示,PIC16F877/877A/876/876A数据存储器的映射图如图5.4.2所示 对于间接地址,它表示一个
44、具体物理寄存器;对于阴影部分,实际上不可操作,读操作结果是0 图5.4.1 图5.4.2 5.4.1数据E2PROM和闪存组织 数据E2PROM和FLASH程序存储器在正常的操作中都可以读写,对E2PROM的操作是单字节,对程序存储器的操作是字。对定义的字节或字进行“写”操作,实际的过程是“先擦除然后写”的操作。 读/写两种存储器的操作都是通过一系列特殊寄存器(FSR)间接寻址的。这些寄存器包含:EEDATA、EEDATH、EEADR、EEADRH、EECON1和EECON2。1:E2PROM数据存储器和FLASH程序存储器的读/写操作控制: EEPDG控制访问E2PROM数据存储器还是访问F
45、LASH程序存储器:置位时,访问E2PROM数据存储器;复位时,访问程序存储器。 读操作标志位RD:置1,表示希望读取存储单元的值已经输入到数据寄存器中。这标志置位后用软件无法复位,由硬件自动在读操作结束时置0。读E2PROM数据存储器,在RD置位后的下一个指令周期数据放入EEDATA。对于读程序存储器,在RD置位后的下一个指令周期数据放入EEDATH:EEDATA。 写操作控制位(WR和WREN)和两个状态标志位(WRERR和EEIF): 控制位WREN用于设置允许或禁止写操作,当WREN=0时,禁止写操作。在执行写操作前,必须使WREN=1。 控制位WR用于初始化写操作,在写操作的结束时硬
46、件自动清零。 中断标志EEIF用于显示存储器的写什么时刻完成,置位后必须在置位WR之前用软件清零。 对E2PROM数据存储器,一旦WREN和WR置位,在EEADR寄存器中的地址将被擦除,紧跟着EEDATA中写入存储器。这些操作不影响CPU的其它指令执行,与CPU并行工作。一旦写操作完成,标志位EEIF置位。 对程序存储器,一旦WREN和WR置位,CPU停止其它指令的操作,等待写操作完成再继续执行。WREN和WR置位后,由EEADRH:EEADR指定的存储单元内容被擦除,由EEDATH:EEDATA中的数据写入。完成写操作后,标志位EEIF被置位。标志位WRERR用于表示在写操作过程芯片被复位,
47、只有在上电复位时WRERR被清零。在正常操作过程中写操作如果被 复位或看门狗定时溢出复位,WREER被置位,这样用户可以检测WREER来判断复位的类型以及存储单元的是否需要重写。数据寄存器的内容、地址寄存器的内容和EEPGD标志位不受 和看门狗定时溢出复位的影响。2:E2PROM数据存储器的读和写操作读E2PROM数据存储器只要求希望访问的地址写入到EEADR寄存器和EEPGD选择位清零。在RD位置1后,在下一个指令周期数据就放到EEDATA寄存器。EEDATA寄存器将保持这个值到下一个“读”操作初始化或到被软件写 读E2PROM数据存储分为如下四个步骤: 在确保地址不超过PIC16F87X芯
48、片存储器地址范围的情况下,将地址写入EEADR。清EEPGD选择位,表示读E2PROM数据存储器。置位RD,初始化读操作。 从EEDATA寄存器读取数据。 以下给出了E2PROM数据存储器读的编程设计 BSF STATUS, RP1 ;选择BANK 2 BCF STATUS, RP0 ; MOVF ADDR, W ; MOVWF EEADR ; 写入地址 BSF STATUS, RP0 ;选择BANK 3 BCF EECON1, EEPGD ;选择E2PROM数据存储器 BSF EECON1, RD ;初始化读 BCF STATUS, RP0 ;选择BANK 2 MOVF EEDATA, W
49、;将读出数据放入W寄存器 将数据写入E2PROM数据存储器需要步骤。 首先是写入地址和数据,必须放入特殊功能寄存器中,然后清EEPGD位和WREN置位。WREN只有在写E2PROM数据存储器时需要置位,否则保持0。当WREN置位后,置位WR,WREN和WR不能在同一操作中置位(不能同时置位,必须WREN在前,WR在后)。在写操作完成后用软件使WREN复位,过早(在写完成前)复位WREN不影响写的过程。 在写操作前必须加入一个特殊的指令序列,以防止一些非法的操作。这些操作必须在禁止中断情况下完成,因此在执行这些特殊指令之前先禁止中断。在指向写之前,必须用软件判断没有写操作在进行。写E2PROM数据存储器的步骤如下。 如果第10步没有执行,首先检查WR标志位,看写操作是否正在进行。在确保地址不超过PIC16F87X
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 8中学工会管理工作计划
- 2024年幼儿园健康教育工作计划结尾样本
- 年度工作学习计划
- 高一上学期英语教学工作计划范文
- 保卫科的年度工作计划
- 高一班主任个人工作计划总结范文
- 《动物的类群》课件
- 第一学期生物工作计划
- 2024年四年级语文工作计划范文
- 浅谈新课改下的少先队工作工作计划
- 肝素钠提取建设项目环境影响评价报告书
- 口腔生理-口腔其他功能(口腔解剖生理学课件)
- 沪教版三年级数学上册《分米的认识》评课稿
- 比亚迪全新秦EV说明书
- 非计划性拔管风险评估表二实用文档
- (2023)政府采购评审专家考试题库
- Unit+1+Developing+ideas+Little+White+Lies+课件 【核心知识精讲精思】 高中英语外研版(2019)必修第三册
- 选选科指导与生涯规划
- 脑梗死影像诊断
- 2023年1月浙江省高中学业水平考试物理试卷真题(含答案详解)
- 企业法务概论智慧树知到答案章节测试2023年温州大学
评论
0/150
提交评论