关于我们
书单推荐
新书推荐
|
MSP430单片机原理与应用
本书以MSP430F261x单片机为例, 全面而详实地介绍了MSP430单片机结构组成、工作原理以及常用模块的使用方法。内容组织上不贪大求全, 而是尽量做到把最常用、最能反映单片机精髓的知识讲细、讲精、讲透, 以达到让读者触类旁通的目的。
考虑到初学者的特点,实例先易后难,先单个功能、单个模块地学习,逐步转换成对整个系统的分析和设计。
秉承“理论学习是认识单片机的起点,设计单片机系统是*终落脚点”的理念,把*常用、*能反映单片机精髓的知识讲细、讲精、讲透,以达到让读者触类旁通的目的;通过实例并配合配合丰富有趣的习题练习使学生对单片机的理解硬件化或产品化。
前言
MSP430单片机是美国德州仪器(TexasInstruments,TI)于1996年开始推向市场的一种16位超低功耗单片机,它具有极低功耗、高性能、丰富的片上外设和通信接口等特点。由于将多个不同功能的模拟电路、数字电路模块和微处理器集成在一个芯片上,所以又称之为混合信号处理器。
MSP430单片机不但具有传统单片机的特征,还具有一些片上系统的特点。因此,国内外很多高等院校已将MSP430系列单片机作为单片机相关课程的讲授对象。
利用该单片机进行嵌入式系统教学具有以下特点。
1.结构简单、资源丰富、使用方便
MSP430单片机使用的是16位RISCCPU,存储结构上采用冯·诺依曼结构。各个片上外设均挂接在内部总线上,但外设与外设之间、外设与CPU之间都是独立工作的,外设与CPU通过中断机制联系在一起。MSP430单片机内嵌有JTAG逻辑部件,便于下载和在线仿真。
MSP430单片机组织结构简洁、便于理解,其核心部件主要包括时钟系统、RISCCPU、Flash、RAM和相关I/O端口,其他片上外设都是对该类单片机自身的扩展和增强。
MSP430系列单片机种类丰富多样。目前,MSP430单片机涵盖F1xx、F2xx、G2xx、F4xx、F5xx、F6xx共6大系列,还有集成有无线收发功能的CC430系列等合计约有600种,能够满足大多数工程应用场合的需求。
2.有利于减少外围电路设计
MSP430单片机中集成大量的片上外围设备,例如看门狗、模拟比较器、定时器、串行通信接口、硬件乘法器、液晶驱动器、10位/12位ADC、16位ΣΔADC、DMA、I/O端口、基本定时器、实时时钟和USB控制器等。充分利用这些片上外设,可以减少嵌入式系统外围电路设计、简化设计流程、节约成本、提高系统可靠性、缩小PCB和产品体积。
3.有利于开展更高层次的学习
MSP430单片机的内核是16位RISCCPU。在整个单片机系列中,属于中端单片机。在高端32位单片机中,一般是采用RISC核,如CortexM系列单片机。在掌握了MSP430单片机原理及其开发技术后,再学习32位的高端单片机难度将大为降低。当然,在熟悉MSP430单片机的基础上学习其他类型的单片机(如51单片机)会更加容易。
4.MSP430单片机的市场逐渐扩大
在美国德州仪器公司多年来不懈的努力下,MSP430单片机的市场份额在不断增加,在16位单片机市场中独占鳌头。即便是在8位单片机市场中,也已对传统的51单片机形成了强烈冲击。
5.符合目前及未来节能降耗的要求
随着世界能源危机日趋严重,迫切需要节能环保的产品。MSP430单片机与其他单片机相比在低功耗方面有着不可比拟的优势,推广使用MSP430单片机符合“节能降耗”的时代主题。
尽管MSP430单片机具有众多的技术优势,也是目前嵌入式系统应用开发所必需的,但是目前能够用于MSP430单片机教学的图书较少。尽管这些图书在编写上各有所长,但就课堂教学来说,仍存在一些不足:①有些图书内容大多直接翻译TI提供的用户指南和数据手册,并未做进一步加工或整合;②有些图书完全工程化的讲解方式对工程师或具有一定单片机基础的人有参考价值,不适合初学者。因为这些图书直接讲述单片机的工程应用,对工作原理讲解较少,读者从这些书中获取的信息,只是知其然,而不知其所以然,难以激发创新思维。
为此,我们在编写过程中尽量弥补这些不足,同时融合了我们多年在嵌入式系统方面的科研积累与教学改革经验,使得本书具有以下鲜明特色。
(1)在内容组织上打破了传统的参考书式的讲解方式,对各个知识点的内容重新划分整合。然后再按照由浅入深、循序渐进的思路进行重新组织,使之容易被学生接受。
(2)在实例选择上尽量做到先易后难、先部分后整体,考虑到初学者的特点,力求使实例做到简单易懂。首先让学生通过学习简单的例子激发和培养学生的学习兴趣和探索欲望,然后再逐步提高难度、提升水平。先是单个功能、单个模块的学习,逐步转换成对整个系统的分析和设计。
(3)秉承“理论学习是认识单片机的起点,设计单片机系统是最终落脚点”的理念。在理论讲解的基础上,通过实例让学生对单片机的认识形象化,配合丰富有趣的习题练习使学生对于单片机的理解硬件化或产品化。
本书以MSP430F261x单片机为例,全面而翔实地介绍了MSP430单片机的结构组成、工作原理以及常用模块的使用方法。内容组织上不贪大求全,而是尽量做到把最常用、最能反映单片机精髓的知识讲细、讲精、讲透,以达到让读者触类旁通的目的。在组织结构上,全书共分为12章,第1章介绍了与嵌入式系统相关的基本知识;第2章介绍了MSP430单片机的内部结构和外部组成,并简要介绍了MSP430单片机寻址方式、指令系统;第3章主要回顾了MSP430单片机C程序设计的相关知识;第4~11章分别讲述了MSP430单片机的输入输出端口及常用接口设计、时钟系统、定时器、模数转换器、数模转换器、通用串行通信接口、存储器、DMA等常用片上模块的工作原理及使用方法;第12章介绍了MSP430单片机应用系统设计基础。
书中各章节的知识点都提供了简单易懂的例程,本书所有例程均在IAREmbeddedWorkbenchForMSP430v5和TICCSv5中调试通过。每章附有大量习题供学生课下巩固本章内容,部分习题可以训练学生的创新思维能力。
总之,全书结构紧凑、布局合理,具有一定的通用性、系统性和实用性。内容叙述力求简洁、凝练。力求做到深入浅出的理论讲解、简单易懂的实例设计、丰富有趣的习题练习、独具匠心的知识体系。为了便于学习和阅读TI公司提供的相关原始数据资料,本书使用的逻辑电路符号与公司官方资料中使用的符号保持一致。
在本书的编写和出版过程中得到了兰州大学信息科学与工程学院电路与系统研究所田毅、张燕、孙晓光、李剑、郭丽杰、杨泽坤、陈丽娜、张垚、赵继鹏等研究生,以及兰州大学信息科学与工程学院电子信息科学与技术专业和通信工程专业部分本科生的协助。感谢他们在资料搜集、书稿整理、程序调试、后期校稿等方面所做的工作。此外,书中例题参考了TI官方网站提供的大量例程,个别例题及部分内容也参考了互联网上的有关资料,在此向这些资料的作者一并表示诚挚的感谢。
需要特别指出的是,本教材的出版得到了兰州大学教材建设基金资助和兰州大学信息科学与工程学院教材建设基金资助。感谢美国德州仪器公司大学计划给予兰州大学MSP430&CortexM单片机联合实验室的持续支持。
由于作者水平所限,书中难免存在部分疏漏和不妥之处,恳请广大读者批评指正!
编者2017年3月于兰州大学
第1章绪论
1.1嵌入式系统概述
1.1.1嵌入式系统的定义
1.1.2嵌入式系统的构成
1.1.3嵌入式系统的特点
1.1.4嵌入式系统的发展
1.1.5嵌入式系统的应用
1.2嵌入式微处理器
1.2.1嵌入式处理器分类
1.2.2嵌入式处理器的体系结构
1.2.3常见嵌入式处理器
1.2.4嵌入式处理器的发展
1.3MSP430单片机
1.3.1典型特点
1.3.2命名规则
1.3.3产品系列概况
1.3.4应用场合
习题
第2章MSP430单片机结构组成
2.1内部结构
2.1.1中央处理器
2.1.2存储空间组织结构
2.1.3单片机复位过程
2.2外部结构
2.2.1封装类型
2.2.2引脚说明
2.2.3MSP430单片机最小系统
2.3指令系统
2.3.1指令集
2.3.2寻址方式
2.3.3指令周期
2.3.4指令集扩展
习题
第3章MSP430单片机C语言程序设计基础
3.1单片机程序设计基础
3.1.1程序流程图
3.1.2单片机程序设计语言
3.1.3单片机程序设计的一般步骤
3.2MSP430单片机C语言程序设计
3.2.1数据类型与运算符
3.2.2常见程序结构
3.2.3数组
3.2.4函数
3.2.5指针类型
3.2.6预处理
3.2.7typedef定义类型
3.2.8规范化编程
3.3集成开发环境快速入门
3.3.1IAR EW430快速入门
3.3.2TI CCS快速入门
习题
第4章MSP430单片机中断系统与输入输出接口
4.1中断系统
4.1.1中断系统基本概念
4.1.2中断类型
4.1.3中断响应过程
4.1.4中断函数
4.2数字I/O端口
4.2.1控制寄存器
4.2.2内部结构
4.2.3电气特性
4.3端口应用
4.3.1普通I/O端口
4.3.2外部中断
4.3.3总线模拟
习题
第5章MSP430单片机时钟系统与休眠模式
5.1时钟系统
5.1.1时钟系统结构
5.1.2时钟失效处理
5.2休眠模式
5.2.1休眠模式与低功耗
5.2.2休眠唤醒与退出
5.2.3休眠模式的应用
习题
第6章MSP430单片机定时器
6.1定时器A
6.1.1定时计数部件
6.1.2捕获/比较部件
6.2定时器B
6.2.1逻辑结构
6.2.2定时计数部件
6.2.3捕获/比较部件
6.3看门狗
6.3.1逻辑结构
6.3.2定时模式
6.3.3看门狗模式
习题
第7章MSP430单片机常用接口设计
7.1LED显示接口设计
7.1.1LED发光原理
7.1.2LED数码管
7.1.3点阵LED
7.2LCD接口设计
7.2.1LCD显示原理
7.2.2段式LCD
7.2.3点阵LCD
7.3键盘接口设计
7.3.1独立式键盘
7.3.2矩阵式键盘
7.3.3触摸按键
习题
第8章MSP430单片机模拟信号处理
8.1模拟信号处理概述
8.1.1自动控制系统
8.1.2单片机控制系统
8.1.3MSP430单片机集成的模拟设备
8.2模数转换模块
8.2.1模数转换概述
8.2.2ADC12模块
8.2.3ADC12工作过程
8.2.4转换模式
8.3数模转换模块
8.3.1数模转换概述
8.3.2DAC12模块
8.3.3应用举例
习题
第9章MSP430单片机异步串行通信
9.1异步串行通信概述
9.1.1串行通信基本概念
9.1.2常见异步串行通信
9.1.3MSP430的串行通信模块
9.2异步串行通信
9.2.1UART工作原理
9.2.2多机通信模式
9.2.3带有自动波特率检测的UART
9.2.4红外通信
9.2.5软件模拟UART通信
习题
第10章MSP430单片机同步串行通信
10.1同步串行通信概述
10.1.1同步方式
10.1.2常见同步串行通信
10.2I2C通信
10.2.1I2C概述
10.2.2I2C逻辑结构
10.2.3中断与初始化
10.2.4工作模式
10.2.5软件模拟I2C通信
10.3SPI通信
10.3.1SPI总线及工作原理
10.3.2SPI模块
10.3.3SPI连接方式
10.3.4软件模拟SPI通信
习题
第11章MSP430单片机存储系统
11.1存储器概述
11.1.1半导体存储器
11.1.2Flash存储原理
11.1.3FRAM存储原理
11.2MSP430单片机存储系统
11.2.1地址空间划分及访问方式
11.2.2数据存储器
11.2.3程序存储器
11.3Flash控制器及应用
11.3.1Flash控制器
11.3.2Flash的操作
11.4MSP430单片机存储器的扩展
11.4.1存储器扩展
11.4.2SD卡的应用
11.5直接存储器存取
11.5.1DMA模块的结构与工作原理
11.5.2DMA传输模式
11.5.3DMA触发源
习题
第12章MSP430单片机应用系统设计基础
12.1单片机应用系统设计概述
12.1.1单片机应用系统设计一般步骤
12.1.2基于MSP430单片机的应用系统设计
12.2单片机应用系统的抗干扰与低功耗设计
12.2.1抗干扰技术
12.2.2低功耗设计技术
12.3嵌入式操作系统的应用
12.3.1嵌入式操作系统基础
12.3.2μC/OS Ⅱ在MSP430单片机上的移植
12.3.3基于μC/OS Ⅱ的单片机系统开发
习题
附录A中断向量速查表
附录B端口功能速查表
附录C寄存器速查表
参考文献
第3章
CHAPTER3
MSP430单片机C语言
程序设计基础
3.1单片机程序设计基础
3.1.1程序流程图
在程序设计中,最重要的不是编写代码而是算法设计,这与建筑和机械制造很相似。例如,当要建设一栋高楼时,首先要做的是绘制高楼的结构图以及施工图,然后是现场施工。程序设计也是如此,当面对一个程序设计任务时,首先想要做的是先画出整个任务实现的流程图,然后再使用具体的程序设计语言进行代码实现。可见,程序流程图的绘制在整个程序设计中起着重要作用。实际上,绘制流程图的过程就是思考和形成算法的过程。由于其直观性,绘制过程本身又促进了思考。因此,程序流程图是人们对解决问题的方法、思路或算法的一种描述方法。当人们看到一个优秀的程序流程图时,就能很快地把握住程序结构和处理思路,有利于程序纠错和维护。
程序流程图具有符号规范、画法简单、结构清晰、逻辑性强、便于描述、容易理解等优点。绘制流程图所需要的基本符号如图3.1所示,它们分别是起始框、终止框、执行框和判别框。其中,起始框和终止框是程序流程图必备的;执行框中注有必要文字说明以指示具体执行了何种操作,该框所指的操作可大可小。在概要设计阶段执行框所描述的是一个大的功能模块。在详细设计阶段则是指在实现某一特定功能时需要执行的具体指令或语句。
图3.1流程图中基本符号
绘制程序框图的规则:使用标准的框图符号;框图一般按从上到下、从左到右的方向画;除判别框外,大多数程序框图的符号只有一个进入点和一个退出点,而判别框是具有超过一个退出点的唯一符号。在绘制流程图时要注意结构化程序设计中三种基本结构的流程图标准画法。尽量将复合条件转为多个单一条件。流程线不要忘记画箭头,因为它是反映流程执行的先后顺序。如果不画箭头,就难以判断执行次序。
3.1.2单片机程序设计语言
目前主要的单片机程序设计语言是汇编语言和C语言。汇编语言是面向CPU的程序设计语言。由于汇编语言程序直接利用单片机指令集中的指令实现具体的算法功能,因此汇编语言与机器语言具有较好的一致性,可以访问所有能够被访问的软、硬件资源。汇编语言程序的目标代码简短,占用内存少,执行速度快,是高效的程序设计语言。它经常与高级语言配合使用,以改善程序的执行速度和效率,弥补高级语言在硬件控制方面的不足。汇编语言的缺点是不同处理器具有不同的汇编语言语法和编译器,编译好的程序无法在不同的处理器上执行,缺乏可移植性。汇编语言程序的可读性差、不易维护。总之,汇编语言程序编写烦琐、工作量大、开发效率很低,周期长且单调。目前处理器性能不断提升、存储资源越来越丰富,使得汇编语言目标代码少、效率高的优势正在逐渐丧失。使用汇编语言从事嵌入式系统开发的人数总体呈下降趋势。
C语言是一种既具有高级语言的特点,又具有部分汇编语言特点的程序设计语言。C语言也是一种结构化的程序设计语言,因为它提供了三种基本结构语句,而且提供了定义“函数”的功能。函数可以完成子程序的所有功能,是完成程序功能的基本构件。由于函数允许将一个程序中的多个任务被分别定义、编码和单独编译,所以函数可以使程序模块化。作为一种高级语言,C语言功能齐全、应用范围大,已是目前最为流行的高级语言之一。但是C语言代码的执行效率比汇编语言要低。
在程序设计历史上汇编语言曾是非常流行的语言之一。一方面,随着硬件技术的进步,CPU性能不断提高、储存资源日益增大、成本逐渐降低;另一方面,随着软件规模的增长以及对开发进度和效率的苛刻要求,高级语言逐渐取代了汇编语言。但即便如此,高级语言也不可能完全替代汇编语言的作用。以Linux内核为例,尽管绝大部分内核代码是用C语言编写的,但在某些关键地方仍然使用了汇编代码。因为这部分代码与硬件的关系非常密切,即使是C语言也会显得力不从心,而汇编语言则能够很好地扬长避短,最大限度地发挥硬件的性能。
一般对于小程序来说,若是对硬件进行简单的控制可以用汇编语言,若更多涉及逻辑设计方面的内容,则需要使用C语言。对于稍大一些的程序来说,C语言的优势就十分明显了。就现代单片机程序设计来说,大多是以C语言为主,汇编语言为辅。即只有在那些对代码大小和效率要求较高的场合才使用汇编语言。
3.1.3单片机程序设计的一般步骤
图3.2单片机程序设计流程图
人们在嵌入式系统产品开发过程中摸索出了程序设计的一般步骤,具体如图3.2所示。该步骤对于基于单片机的产品设计与程序开发具有很好的借鉴作用。按此步骤进行产品开发可使设计者少走弯路,缩短开发周期,提高产品可靠性。
1.需求分析、明确任务
该阶段要尽可能搞清楚用户的全部需求信息,即对要完成的任务进行详细的了解与分析。然后将具体的实际问题抽象转化成计算机可以处理的问题。
2.算法设计
在明确任务之后,就需要将其转化成计算机算法。算法就是在计算机上解决问题的方法与步骤。对于复杂的大型程序,算法设计又可分为概要设计和详细设计两个阶段。对于比较小的软件两个可以同时做。详细设计完成后算法设计也就基本完成了,接下来将设计好的算法转化成使用具体程序设计语言编写出的程序,进而实现在计算机上的求解。在设计算法时一般会采用或借鉴现有的一些计算方法和日常生活中解决问题的逻辑思维推理方法等。
绘制程序流程图是在算法设计之初就开始的工作,在算法设计好之后,程序流程图也就确定了。所以说算法设计的过程,也是绘制程序流程的过程。通过画流程图可以首先从图上检验算法的正确性,减少出错的可能,使得动手编写程序时的思路更加清晰。
3.芯片选择及合理分配单片机资源
等完成算法设计之后,就需要决定在何种硬件平台上实现上述算法。在确定好主要芯片之后,就需要完成单片机系统的资源配置及分配,主要是单片机存储空间和工作单元的合理分配和外围设备的配置。在这个过程中,应充分利用不同型号单片机的特殊优点以方便资源配置和系统设计。例如,合理、正确地对存储空间进行分段和数据定义。由于MSP430单片机对16位数据处理效率最高,因此要充分利用这一特点。
4.代码编写
该步骤在单片机程序设计中是最为重要的一步。经过1~3步的准备,已完成了程序代码编写前的所有工作。编写程序时要选择好编写语言,对于同一种算法,不同的程序设计语言会有不同的实现方法。编程能力的提高是一个循序渐进的过程。对于初学者来说,一方面,要多读现有的程序,以学习别人的编程经验;另一方面,还必须多动手,亲自编写程序,不要怕失败,只有通过无数次失败,才能从中积累自己的编程经验。
5.程序调试
在源代码编写完毕之后,就要进行调试。通过调试的程序只能说明没有语法错误,但不能排除没有逻辑错误。所以能不能达到预期效果还必须用实际数据测试才可以。一般来说,这是一个反复测试的过程。对此,程序编写人员,尤其是初学者一定要有充分的心理准备。只要有足够的耐心,加上认真、细致的工作态度,就一定能找出其中的逻辑错误。事实上,即使是一个非常有经验的程序员,也没有百分之百的把握一次就成功。
6.性能评估
在程序调试完后,就需要将程序应用到产品上进行实际环境检验,其中包括功能检验、可靠性检验、极端环境下检验。凡经过检验符合要求了,整个程序设计工作就算结束了,接下来就是文档整理与使用说明书的编写工作了。若不符合要求,则需要重新开始,这是最坏的情况。一般而言,只要将任务需求分析做得足够细,一般不会出现这种极端情况。
7.文档整理与编写
程序运行无误,实际试运行正常,且经过了各种环境测试,但这并不意味着产品开发任务的结束。程序文档的编写也是程序设计的一个重要任务。其目的是为了便于修改和维护程序。程序文档一般包括含有功能要求和指标程序的设计任务书、程序流程图、存储单元分配清单、源程序清单、应用系统资源分配、参量计算和设计、错误信息的定义、实际功能及指标测试结果说明、程序使用和维护说明书等。需要注意的是,部分程序文档的编写是与上述1~6步同时进行的。
3.2MSP430单片机C语言程序设计
目前支持MSP430单片机的C语言编译器很多,国内主要使用的是IAR公司的IAREmbeddedWorkbenchforMSP430(EW430)和TI公司开发的CodeComposerStudio(CCS)。MSPGCC作为一种开源编译器也具有一定的使用者。这些C编译器功能比较强大,可以编译出高效、紧凑的机器代码。
MSP430单片机的C语言程序(以后简称C430)设计方法与标准C语言的基本上相同。但单片机的资源与PC相比,十分匮乏。为了更好地适应MSP430单片机的程序设计,C430对标准C语言进行了扩展。主要表现在数据类型及数据长度、关键字扩展以及由此引起的函数扩展等。需要说明的是,不同的C430编译器对C语言的扩展不完全相同,例如,IAR公司的C编译器与TI公司的C编译器都对C语言的支持程度略有不同,大多数情况下,MSP430单片机的源程序可以在各个版本的C430编译器上使用。
3.2.1数据类型与运算符
1.标识符与关键字
标识符是指常量、变量、语句标号、数组、文件名以及用户自定义函数的名称。C语言规定标识符只能由字母、数字、下画线组成,并且只能由字母、下画线开头,所用字母区分大小写。C语言中一些已被赋予特定含义的标识符被称为关键字或保留字,关键字不能用作标识符,在C语言中的关键词见表3.1。这些关键字将在后续章节中陆续介绍。
表3.1C语言中的32个关键词
与数据类型相关的关键字(12个)
short声明短整型变量或函数struct声明结构体变量或函数
int声明整型变量或函数union声明共用数据类型
long声明长整型变量或函数enum声明枚举类型
float声明浮点型变量或函数void声明函数无返回值或无参数,声明无类型指针
double声明双精度变量或函数unsigned声明无符号类型变量或函数
char声明字符型变量或函数signed声明有符号类型变量或函数
续表
与变量有关的关键字(6个)
auto声明自动变量extern声明变量是在其他文件正声明
const声明只读变量register声明寄存器变量
static声明静态变量volatile说明变量在程序执行中可被隐含地改变
与程序控制有关的关键字(12个)
if条件语句for一种循环语句
else条件语句否定分支(与if连用)do循环语句的循环体
switch用于开关语句while循环语句的循环条件
case开关语句分支continue结束当前循环,开始下一轮循环
default开关语句中的“其他”分支break跳出当前循环
goto无条件跳转语句return子程序返回语句(可以带参数,也可不带参数)
其他关键字(2个)
sizeof计算数据类型长度typedef用以给数据类型取别名
你还可能感兴趣
我要评论
|