首页资源分类嵌入式开发单片机 > Launchpad口袋实验平台 (指导书).pdf

Launchpad口袋实验平台 (指导书).pdf

已有 456409个资源

下载专区

文档信息举报收藏

标    签: MSP430Launchpad

分    享:

文档简介

自TI推出超低功耗MSP430单片机以来,MSP430凭借其优越的性能,丰富的外设,易于上手的特性备受业内工程师的欢迎。超高性价比Value Line 系列的横空出世,使得MSP430在性价比上更具有其他单片机无法比拟的优势。

TI中国大学计划一直致力于将TI先进技术,高性能器件推广到高校中。近几年更是加大在单片机与模拟大学计划上的投入,在相关教学改革,学生创新与竞赛等方面加强与大学的合作。2012年TI中国大学计划开始与全国各高校合作成立基于MSP430G2 Launchpad 的口袋实验室,使得学生对单片机以及电路的入门学习不再局限在实验室,做到“一人一板,随时学习”,这一概念也受到广大师生的欢迎和好评。

在实践的过程中, 由于G2 Launchpad 自带的硬件资源较少,而MSP430G2553的集成外设相当丰富(ADC, Timer, Comparator, Touch Key, SPI, I2C, UART, 等), 为了学习到每一个外设,老师和同学们投入了相当多的精力和时间来开发对应的外围模块来完整的学习MSP430G2553。其中,青岛大学傅强和杨艳老师在开展口袋实验室教学的过程中上积累了大量的经验,开发了一系列外围模块,为了向更多的兄弟院校以最简单便捷的方式推广他们的成功案例,TI中国大学计划与两位老师共同设计开发了一套G2全功能迷你扩展板,作为TI MCU 生态系统的一个组成部分:在和Launchpad同等大小的PCB上,集成了多款TI模拟和数字器件来提供声、光、电相结合的实验,集学习性与趣味性于一体。这套实验板卡和配套材料一方面继承口袋实验室的理念——所有实验都可以脱离实验室完成,另一方面,将单片机和模拟器件完美的结合在一起,通过该迷你扩展板,不仅可以学习到MSP430的所有外设,还可以学习基本的模拟知识和系统设计方法,可谓一举多得。

为方便大家的自学,傅强和杨艳两位老师付出了极大的心血和努力,历经一年,甚至牺牲了春节的休息时间,为大家精心准备了配套的学习资料,包括这本480余页的学习指导书(特别推荐书中那些化繁为简,平易近人的语言,绝对是帮助大家理解MSP430和其外围电路的好帮手),PPT,参考例程以及实验教学视频。这些资料将附在光盘中以及在TI中国大学计划网站上(http://www.deyisupport.com/universityprogram/default.aspx )供老师和同学下载和学习。在此,特地向傅强老师,杨艳老师及其学生的辛勤与努力,表示衷心的感谢!

祝大家在学习中满载而归的同时,也享受到其中的乐趣,这是TI大学计划和合作老师们的的一致追求!

文档预览

前言 自 TI 推出超低功耗 MSP430 单片机以来,MSP430 凭借其优越的性能,丰富的外设,易 于上手的特性 备受业内 工程师的 欢迎。超高 性价比 Value Line 系列的横空 出世,使得 MSP430 在性价比上更具有其他单片机无法比拟的优势。 TI 中国大学计划一直致力于将 TI 先进技术,高性能器件推广到高校中。近几年更是加 大在单片机与模拟 大学计划上 的投入,在 相关教学改革 ,学生创新 与竞赛等方 面加强与大学 的合作。2012 年 TI 中国大学计划开始与全国各高校合作成立基于 MSP430G2 Launchpad 的 口袋实验室,使得 学生对单片 机以及电路 的入门学习不 再局限在实 验室,做到 “一人一板, 随时学习”,这一概念也受到广大师生的欢迎和好评。 在实践的过程中, 由于 G2 Launchpad 自带的硬件资源较少,而 MSP430G2553 的集成 外设相当丰富(ADC, Timer, Comparator, Touch Key, SPI, I2C, UART, 等), 为了学习到每一个 外设,老 师和 同学们 投入了 相当 多的精 力和时 间来开 发对 应的外 围模块 来完 整的学习 MSP430G2553。其中,青岛大学傅强 和杨艳老师在开展 口袋实验室教学的 过程中上积累了大 量的经验,开发了 一系列外围 模块,为了 向更多的兄弟 院校以最简 单便捷的方 式推广他们的 成功案例,TI 中国大学计划与两位老师共同设计开发了一套 G2 全功能迷你扩展板,作为 TI MCU 生态系统的一个组成部分:在和 Launchpad 同等大小的 PCB 上,集成了多款 TI 模拟 和数字器件来提供 声、光、电 相结合的实 验,集学习性 与趣味性于 一体。这套 实验板卡和配 套材料一方面继承 口袋实验室 的理念—— 所有实验都可 以脱离实验 室完成,另 一方面,将单 片机和模拟器件完美的结合在一起,通过该迷你扩展板,不仅可以学习到 MSP430 的所有外 设,还可以学习基本的模拟知识和系统设计方法,可谓一举多得。 为方便大家的自 学,傅强和 杨艳两位老 师付出了极 大的心血和努 力,历经一 年,甚至牺 牲了春节的休息时间,为大家精心准备了配套的学习资料,包括这本 480 余页的学习指导书 (特别推荐书中那些化繁为简,平易近人的语言,绝对是帮助大家理解 MSP430 和其外围电 路的好帮手),PPT,参考例程以及实验教学视频。这些资料将附在光盘中以及在 TI 中国大 学计划网站上(http://www.deyisupport.com/universityprogram/default.aspx )供老师和同学下 载和学习。在此,特地向傅强老师,杨艳老师及其学生的辛勤与努力,表示衷心的感谢! 祝大家在学习中满载而归的同时,也享受到其中的乐趣,这是 TI 大学计划和合作老师们 的的一致追求!如对 TI 中国大学计划有任何意见或建议,请发邮件给 frank-huang@ti.com. 德州仪器中国大学计划 2013 年 7 月 引言 MSP-EXP430G2 LaunchPad (以下简称 G2)是 TI 公司推出的 1 款 MSP430 开发板,它 提供了具有 集成仿真 功能的 14/20 引脚 DIP 插座目标板,可通过 Spy Bi-Wire(2 线 JTAG)协议对系统内置的 MSP430 超值系列器件(G 系列)进行快速编程和调试。 MSP-EXP430G2 价格极具亲和力,特别适用于在校学生单片机入门学习之用。受 TI 中 国大学计划部委托,特别设计了 1 款 MSP-EXP430G2 口袋实验平台扩展板。该扩展板基于 MSP430G2553 单片机设计,面积与 MSP-EXP430G2 大小相等,两者对插后可为 G2 提供丰 富的实验外设。 本书编写的初衷是为扩展板 编写实验教 程,换句话 说,书是扩 展板的衍生品 。但随着编 写工作的深入,对于本书的定性和理解发生了重大变化。关于 G2 的定位,应该是针对单片 机入门学生的,如 果仅抛出一 个个孤立的 实验,“显摆 ”单片机和 扩展板有多 能耐,是不能 真正帮助学生入门 的。所以, 最终书是引 领单片机入门 学习的主线 ,扩展板几 经修改后成为 辅助教学的得力工具。 第 1 章为扩展板的硬件原理介绍。这一章最重要的知识是关于电源单元的一番讨论,包 含耦合干扰、滤波 、去耦、地 线冲突等诸 多知识。而其 他硬件单元 仅为概括性 的阐述,在本 书后面的章节里会有更详细的论述。 第 2 章为 CCS 软件的使用。大多数教程对于单片机开发软件的安装使用,仅限于“自古 华山一条路”的教 法,完全建 立在没有任 何意外和“创 意”的情况 下。人不是 机器,人会犯 各种错误,会迸发 各种靠谱不 靠谱的创意 ,如果为了一 个小小的软 件问题困扰 几天,仅有的 一点学习激情将耗尽。所以在 CCS 软件使用章节的最后,专门开辟一节常见问题解答,将自 己遇到过的,学生问过的各种软件问题集中起来解答。 第 3 章为基础知识。单片机的学习绝没有“XX 天学会”“XX 小时入门”的可能性,但 也不是非得受过多“高等”的教育才能学。学单片机只要会一点 C 语言的皮毛就行,基础知 识章节就是帮助大 家梳理学习 单片机前需 要掌握的一些 知识。任何 知识都不是 灌输能够教会 的,基础知识也不 例外,在初 次学习时, 能记住多少记 多少,有个 大概印象就 行。后面学习 的过程中,遇到问 题,再带着 问题翻回基 础知识部分复 习,这也是 个学以致用 ,消化知识的 过程。 第 4 章为系统时钟。从这一章开始,将以 MSP430G2553 单片机的片内外设为主线,讲 解 MSP430 单片机的原理。系统时钟章节对初学者来说会有些枯燥,这章可以采用跳读的方 法学习,但最起码 需要掌握的 是用调取出 厂校验参数的 方法快速设 定时钟,并 理解低功耗实 1 现的原理。待到本书最后一章,我们将返回时钟部分,将其彻底驯服。 第 5 章为 GPIO。控制单片机最基本的就是控制其输入输出口(IO),本章将介绍 MSP430 单片机 IO 的控制方法,IO 中断的使用方法。另外还有关于经典的上拉、下拉、图 腾柱输出的科普知识。可以说,IO 不吃透,就不要再往下翻了。 第 6 章为 Timer_A 定时器。定时器是单片机中最重要的片内外设,没有定时器,其他花 哨的外设都是浮云。Timer_A 定时器除了普通闹钟用途外,最拿手的两个本领是捕获脉冲边 沿和比较输出波形 。本章的重 点也放在了 讲解捕获和比 较的实现原 理上。本章 最后,一劳永 逸的将 TA 生成 PWM 写成库函数文件,在将来使用 PWM 的时候,事半功倍。 第 7 章为看门狗定时器。在大多数单片机中,看门狗定时器仅是一个“非正式”的定时 器,除了看门狗复位,一般不会去用它。但在 MSP430G2 系列单片机中,由于没有基础定时 器(Basic Timer),看门狗定时器就担当起闹钟的职责。类似闹钟原理的定时节拍用法,是 定时器使用的精华 ,本章将看 门狗定时器 用到了极致, 通过大量的 例程,让大 家深刻认识定 时器在单片机编程 中的巨大作 用。本章没 有学会,也不 用往下翻了 ,先安心、 耐心、细心的 “养好”那只忠诚、可靠、能干的看门狗吧。 第 8 章为电容触摸章节。电容触摸属于比较花哨的内容,其实质是通过 Timer_A 的计数 功能和看门狗的定 时功能相结 合而实现的 。本章相当于 是对前面章 节知识的一 个总结,请在 本章停下来,稍事休整和总结。觉得自己真的有所心得,准备好了,再开始新的征程。 第 9 章为串行通信原理。本章内容既不包括 MSP430G2553 单片机的片内外设,也不含 任何一行代码,而 是从科普角 度介绍串行 通信的原理。 本章没有什 么内容是必 须掌握的,能 够领悟串行通信的思想最好,不能领悟就当成字典以便将来翻看查找也行。 第 10 章为 USCI_UART 章节。本章主要介绍如何用 CCS 辅助初始化 UART 异步串行通 信模块,如何通过 UART 与上位机通信从而实现人机交互。本章代码中,理解 FIFO 的原理 和使用是亮点,需很好的掌握。 第 11 章为 USCI_SPI 章节。本章的内容包括两个部分,一是如何真正用上硬件 SPI 模 块,为其编写库函数文件。二是 SD 卡的初始化、读扇区、写扇区原理,以及为其编写库函 数文件。硬件 SPI 的使用上,与硬件 UART 有很大区别,需要用库函数封装起来才能用起来 顺手。像 SD 卡这种外设,说明书“规定”怎么操作,就得怎么操作,没有什么神乎其技的 刀法在里面。SD 内容比较多,但都是依照操作时序按部就班来就行,也是需要封装成库函 数才好使用,都是一劳永逸的事。 第 12 章为 USCI_I2C 章节。本章的内容也包含两个部分,一是如何真正用上硬件 I2C 模 块,为其编写库函数文件。二是基于 I2C 接口的 IO 扩展芯片 TCA6416A 的使用。硬件 I2C 模块要真正用起来,比 SPI 还要复杂一点,必须封成库函数才能用。至于 TCA6416A 则是调 2 取 I2C 库函数,按说明书时序操作就行,同样要再次封装成 TCA6416A 的库函数。在学完 TCA6416A 后,扩展板的功能才算是被“激活”,按键和显示单元才能谈怎么用。 第 13 章为软件串行通信章节。在任何情况下,都可以使用软件方法来模拟串行通信,这 里面饱含“我命由己不由天”的英雄气概。对于硬件 SPI 和硬件 I2C 的库函数文件,想要看 明白想明白其实是 很不容易的 。这是因为 ,半硬半软的 库函数受硬 件掣肘颇多 ,库函数在编 写过程中常有憋屈 的感觉。而 纯软件编写 串行通信库函 数,反倒感 觉一气呵成 ,条理清楚。 学完本章之后,再返工去看硬件 SPI 和 I2C 章节,一定会有新的认识。 第 14 章为 LCD 段式液晶章节。本章分为 LCD 顶层库函数和 LCD 硬件驱动 HT1621 函 数两个部分。已知显示内容的情况下,如何计算出控制 LCD 显示的“显存”数据是一个难 点。耐心、细心再 加上手指头 脚趾头一定 可以算出来的 !这部分内 容来不得半 点跳读,你骗 书,书就骗你。单看 HT1621 的说明书,不过是按时序进行控制。但扩展板上是用 I2C 协议 的扩展 IO 间接控制 HT1621,一想到这里,别说是 CPU,人脑子都要当机了。其实无论是用 什么类型的 IO 进行控制,我们都可以编写与硬件无关的 HT1621 库函数文件,这就是硬件隔 离的编程思想。学会如何通过 TCA6416A 间接控制 HT1621,再控制 LCD 显示,就像打通了 任督二脉,以后多复杂的控制程序都会不在话下。 第 15 章为存储器章节。储存器是单片机系统的重要组成部分,本章相当于是对各种存储 器原理做一个综述,本身与 MSP430 单片机无关,也不包含任何一行代码。当做科普来阅 读,对存储器有个比较宏观的了解,对入门后的学习会大有裨益。 第 16 章为 Flash 控制器章节。MSP430 全系列单片机都提供了 Flash 控制器,可以实现 程序运行中,擦写 Flash ROM,这意味着可将 Flash ROM 作为掉电不失存储器来使用。这章 内 容 不涉 及其 他模 块 知识 ,主 要就 是 按“ 规定 ”操 作寄 存 器, 用数 组搬 运数 据 而已 。编 写 Flash 库函数文件可以方便使用这一片内外设。 第 17 章为 Comparator_A 比较器章节。乍看这个章节的内容时,还以为标题写错了,怎 么都觉得是在写模数转换器 ADC 的。没错,比较器实际就是构成模数转换器的核心器件。 本章的前半部分都是谈如何用比较器实现 ADC 的原理,后半部分是介绍一种只用一个比较 器就能实现的 Slope 型 ADC。最后,配以一个生动有趣的例程,展示 Slope 型 ADC 性能的 同时,学习代码移植的方法。 第 18 章为模数转换器章节。本章也是科普章节,内容多且有一定难度。如果只是想要 ADC 出数,大可不必看这一章。但是要想用好 ADC,本章内容还只是抛了块板砖,ADC 采 样的知识需要不断在实践中积累。本章最后给出了单极性 ADC 采集双极性信号的方法,有 必要重点掌握。 第 19 章为 ADC10 章节。有了前两章的浓墨铺垫,本章的内容显得轻松惬意。片内 ADC 3 的使用通常都非常 简单,就是 “吱一声” 的事。最后, 本章借温度 传感器采样 的例程,介绍 了如何从 CCS Example 中移植修改代码。 第 20 章为 PWM 波形合成与双极性信号采样章节。从这章开始,进入了综合实验部分。 虽然在前面的 Timer_A 章节已经介绍了 PWM 是什么,但是只有经过本章的学习,才能真正 领悟 PWM 的精髓。相信会给大家带来全新的收获。 第 21 章为 DAC 与 AWG 章节。对于初学者来说,ADC 和 DAC 就像是单片机学习的双 枪一样,少了 DAC 好像人生都不完美了。但是 DAC 到手后拿来干什么是个问题,本章用 AWG 任意波形发生器的例子展示了 DAC 的非凡魅力,大家看完这章后对于扩展板上不到半 粒米大小的 DAC8411 肯定会刮目相看。为了让没有示波器的同学也能共享“发展成果”, 特别加了音频功率放大器,来驱动喇叭,如果从 TF 卡中读取音频文件来生成 AWG,那么喇 叭就可以播放音乐了。 第 22 章为自校准 DCO 章节。对于 MSP430G2553 的学习,是从系统时钟开始的,最后 又回到时钟上去。出厂时,MSP430G2553 单片机的 DCO 校准了 1/8/12/16MHz 四个频率点。 当我们学成归来之 时,投桃报 李,还以颜 色,校准任意 频率点,而 且精度高于 出厂校准,为 本书的学习划上完美的句号。 一般书的序言中 都会写到“ 纰漏在所难 免”,本书 用纰漏来形容 已经不够用 了。本书的 编写历时 4 个月,从初稿到定稿修改的错漏不计其数,每增加 1 天时间,又会想改动几个地 方,最后自己也受不了了,不敢看了,就此定稿。 本书的编写要特别感谢已经 保研的准研 究生王景兵 同学,每天 对着缺乏注释 天马行空的 代码初稿进行修改 调试,与毕 业生花天酒 地的生活是多 大的反差。 还要感谢田 睿同学,花了 大量时间吃“半熟螃蟹”,准确及时的反馈顾客意见。 最后,感谢 TI 中国大学计划部的工程师们,在给予全面帮助支持的同时,让我们体会了 一次写作的乐趣。 编者 2013 年 4 月于青岛大学 4 目录 前 言 ………………… ……… …… ……… ……… ……… …… ……… ……… ……… …… ………1 引言.................................................................................................................................... 1 第 1 章 扩展板硬件原理...................................................................................................... 1 1.1 概述...................................................................................................................................................................... 1 1.2 供电单元.............................................................................................................................................................. 2 1.2.1 电源指示 ...................................................................................................................................................... 2 1.2.2 负压的产生 .................................................................................................................................................. 3 1.2.3 仪器仪表的共地问题 .................................................................................................................................. 5 1.2.4 滤波电容 ...................................................................................................................................................... 7 1.2.5 电源线耦合干扰 .......................................................................................................................................... 8 1.2.6 去耦电容原理 .............................................................................................................................................. 9 1.2.7 去耦电容位置原则 ...................................................................................................................................... 9 1.2.8 滤波去耦电容的选型 ................................................................................................................................ 10 1.3 触摸板单元........................................................................................................................................................ 11 1.4 I2C 扩展 IO 单元................................................................................................................................................ 12 1.5 LCD 显示单元.................................................................................................................................................... 13 1.6 PWM 与滤波器单元.......................................................................................................................................... 14 1.7 双极性信号采样单元........................................................................................................................................ 15 1.8 Slope ADC 单元.................................................................................................................................................. 16 1.9 TF 卡单元........................................................................................................................................................... 16 1.10 DAC 单元.......................................................................................................................................................... 17 1.11 音频功放单元.................................................................................................................................................. 18 第 2 章 CCS 软件 ..............................................................................................................19 2.1 概述..................................................................................................................................................................... 19 2.2 下载和安装 CCS ............................................................................................................................................... 19 2.2.1 下载及授权许可 ........................................................................................................................................ 19 2.2.2 CCS 的安装注意事项................................................................................................................................. 19 I 2.3 新建 CCS 普通工程 .......................................................................................................................................... 20 2.3.1 建立 CCS 工程........................................................................................................................................... 20 2.3.2 程序编译 .................................................................................................................................................... 22 2.3.3 下载及仿真调试 ........................................................................................................................................ 22 2.4 CCS 创建工程举例 ............................................................................................................................................ 24 2.4.1 闪烁灯程序 ................................................................................................................................................ 24 2.4.2 引用外部函数 ............................................................................................................................................ 25 2.5 CCS 常见问题解答 ............................................................................................................................................ 26 2.5.1 如何导入已有工程 .................................................................................................................................... 26 2.5.2 为何有些工程无法导入 ............................................................................................................................ 26 2.5.3 如何在工程中添加文件和文件夹 ............................................................................................................ 26 2.5.4 为什么编译时出现“文件路径错误” .................................................................................................... 27 2.5.5 如何定义外部文件的路径 ........................................................................................................................ 27 2.5.6 如何建立 Grace 工程................................................................................................................................. 29 2.6 CCS 使用技巧 .................................................................................................................................................... 29 2.6.1 如何改变 CCS 代码编辑区的字体........................................................................................................... 29 2.6.2 怎样改变代码风格 .................................................................................................................................... 30 2.6.3 如何注释掉一大段代码 ............................................................................................................................ 31 2.6.4 拷贝一片区域的代码 ................................................................................................................................ 31 2.6.5 向后对齐代码及反操作 ............................................................................................................................ 34 2.6.6 “撤销”操作与“恢复”操作 ................................................................................................................ 34 2.6.7 利用 CCS 观测波形................................................................................................................................... 34 第 3 章 基础知识 ...............................................................................................................38 3.1 概述.................................................................................................................................................................... 38 3.2 M SP430 单片机的位操作.................................................................................................................................. 38 3.2.1 写位操作 .................................................................................................................................................... 38 3.2.2 读位操作 .................................................................................................................................................... 39 3.3 M SP430 单片机的寄存器.................................................................................................................................. 39 3.3.1 寄存器的一般宏定义配置方法 ................................................................................................................ 40 3.3.2 宏定义配置的注意事项 ............................................................................................................................ 40 3.3.3 寄存器配置的宏定义组合 ........................................................................................................................ 41 II 3.3.4 特殊情况下寄存器的配置 ........................................................................................................................ 42 3.3.5 寄存器配置小结 ........................................................................................................................................ 42 3.4 使用 Grace 来设置寄存器 ................................................................................................................................ 42 3.4.1 在 CCS 中建立 Grace 工程 ....................................................................................................................... 43 3.4.2 Grace 的图形化操作................................................................................................................................... 43 3.4.3 Grace 配置代码的移植............................................................................................................................... 47 3.5 MPS430 单片机的中断...................................................................................................................................... 48 3.5.1 中断的作用 ................................................................................................................................................ 48 3.5.2 中断的使用方法 ........................................................................................................................................ 49 3.5.3 中断服务子函数 ........................................................................................................................................ 49 3.5.4 中断嵌套 .................................................................................................................................................... 50 3.6 非阻塞编程原则................................................................................................................................................ 50 3.7 M SP430 的函数与文件管理.............................................................................................................................. 50 3.7.1 函数 ............................................................................................................................................................ 50 3.7.2 文件管理 .................................................................................................................................................... 52 第 4 章 MSP430x2xx 系列单片机的系统时钟......................................................................54 4.1 系统时钟概述..................................................................................................................................................... 54 4.2 BCS+模块单元的基本构造 ............................................................................................................................... 55 4.3 Grace 的 Basic User 模式 ................................................................................................................................... 56 4.4 Grace 的 Power User 模式.................................................................................................................................. 58 4.4.1 数控振荡器 DCO....................................................................................................................................... 59 4.4.2 出厂预校正频率 ........................................................................................................................................ 60 4.4.3 低频振荡器 VLO ....................................................................................................................................... 62 4.4.4 内部匹配电容 ............................................................................................................................................ 62 4.4.5 延时启动 .................................................................................................................................................... 63 4.4.6 自动选择 M CLK 源................................................................................................................................... 63 4.4.7 时钟输出 .................................................................................................................................................... 63 4.4.8 振荡器失效中断 ........................................................................................................................................ 64 4.4.9 中断事件处理函数 .................................................................................................................................... 64 4.4.10 退出中断后的节能选项 .......................................................................................................................... 64 4.5 低功耗模式........................................................................................................................................................ 64 III 4.6 小结.................................................................................................................................................................... 66 4.7 直接配置 System Clock..................................................................................................................................... 66 4.8 例程-观测 DCO 频率变化................................................................................................................................. 67 4.8.1 主函数部分 ................................................................................................................................................ 67 4.8.2 初始化函数 GPIO_Init()............................................................................................................................ 68 4.8.3 中断服务函数 PORT1_ISR().................................................................................................................... 68 4.8.4 事件检测函数 P1_IODect()....................................................................................................................... 69 4.8.5 事件处理函数 P13_Onclick().................................................................................................................... 71 4.9 前后台程序结构................................................................................................................................................. 72 第 5 章 GPIO ....................................................................................................................73 5.1 概述.................................................................................................................................................................... 73 5.2 IO 的一般读写控制............................................................................................................................................ 74 5.3 IO 的输出类型.................................................................................................................................................... 74 5.3.1 图腾柱输出 ................................................................................................................................................ 75 5.3.2 下拉电阻输出 ............................................................................................................................................. 76 5.3.3 上拉电阻输出 ............................................................................................................................................. 77 5.4 M SP430 单片机的 IO 输出................................................................................................................................ 79 5.4.1 IO 的内部电阻............................................................................................................................................ 79 5.4.2 线与逻辑的实现 ........................................................................................................................................ 80 5.5 M SP430 单片机的 IO 输入中断........................................................................................................................ 81 5.5.1 IO 外部中断使用方法................................................................................................................................ 81 5.5.2 机械按键的消抖 ........................................................................................................................................ 81 5.6 例程-中断按键................................................................................................................................................... 83 5.6.1 主函数部分 ................................................................................................................................................ 83 5.6.2 初始化函数 GPIO_Init()............................................................................................................................ 84 5.6.3 中断服务函数 PORT1_ISR().................................................................................................................... 85 5.6.4 事件检测函数 P1_IODect()....................................................................................................................... 85 5.6.5 事件处理函数 P13_Onclick().................................................................................................................... 86 5.7 程序小结............................................................................................................................................................ 87 第 6 章 Timer_A 定时器 ....................................................................................................88 IV 6.1 概述.................................................................................................................................................................... 88 6.2 Timer_A 模块...................................................................................................................................................... 89 6.3 16 位主定时器.................................................................................................................................................... 90 6.3.1 连续计数模式 ............................................................................................................................................ 90 6.3.2 增计数模式 ................................................................................................................................................ 91 6.3.3 增减计数模式 ............................................................................................................................................ 91 6.3.4 主定时器的一般设置 ................................................................................................................................ 92 6.4 捕获/比较模块 CCRx......................................................................................................................................... 93 6.4.1 捕获模块 .................................................................................................................................................... 93 6.4.2 比较模块 .................................................................................................................................................... 94 6.5 小结.................................................................................................................................................................... 99 6.6 Timer_A 库函数文件.......................................................................................................................................... 99 6.6.1 基本分析 .................................................................................................................................................... 99 6.6.2 库函数的头文件 ...................................................................................................................................... 100 6.6.3 初始化函数 TA0_PWM _Init()................................................................................................................. 101 6.6.4 周期设定函数 TA0_PWM _SetPeriod() .................................................................................................. 103 6.6.5 占空比设定 TA0_PWM _SetPermill()..................................................................................................... 104 6.7 例程-基于 PWM 的 LED 调光控制............................................................................................................... 105 6.7.1 工程目录 .................................................................................................................................................. 106 6.7.2 主函数部分 .............................................................................................................................................. 109 6.7.3 初始化函数 GPIO_init().......................................................................................................................... 110 6.7.4 中断服务函数 PORT1_ISR().................................................................................................................. 110 6.7.5 事件检测函数 P1_IODect()..................................................................................................................... 111 6.7.6 事件处理函数 P13_Onclick().................................................................................................................. 112 第 7 章 WDT 定时器........................................................................................................ 114 7.1 概述.................................................................................................................................................................. 114 7.2 WDT+模块........................................................................................................................................................ 114 7.3 WDTCTL 控制寄存器 ..................................................................................................................................... 115 7.4 WDTCTL 寄存器配置注意事项 ..................................................................................................................... 116 7.5 单片机复位详解.............................................................................................................................................. 117 7.5.1 什么情况单片机会复位 .......................................................................................................................... 117 V 7.5.2 单片机复位后的初始状态 ...................................................................................................................... 117 7.6 WDT 代码举例................................................................................................................................................. 117 7.6.1 看门狗模式举例 ...................................................................................................................................... 118 7.6.2 定时器模式举例 ...................................................................................................................................... 118 7.6.3 NM I 中断举例........................................................................................................................................... 119 7.7 使用 Grace 配置看门狗定时器 ...................................................................................................................... 120 7.8 例程-呼吸灯..................................................................................................................................................... 121 7.8.1 外部文件管理 .......................................................................................................................................... 121 7.8.2 主函数文件 main.c................................................................................................................................... 122 7.8.3 事件文件 Breath_Lamp_Event.c ............................................................................................................. 123 7.8.4 全局变量文件 Breath_Lamp_Global.c.................................................................................................... 124 7.8.5 头文件 ...................................................................................................................................................... 124 7.9 定时扫描按键原理.......................................................................................................................................... 125 7.10 例程-定时扫描非阻塞按键........................................................................................................................... 126 7.10.1 主函数部分 ............................................................................................................................................ 126 7.10.2 初始化函数 GPIO_Init()........................................................................................................................ 127 7.10.3 初始化函数 WDT_init()........................................................................................................................ 127 7.10.4 中断服务函数 WDT_ISR() ................................................................................................................... 128 7.10.5 事件检测函数 P1_IODect()................................................................................................................... 128 7.10.6 事件处理函数 P13_Onclick()................................................................................................................ 129 7.11 状态机建模.................................................................................................................................................... 130 7.11.1 状态中判断事件 .................................................................................................................................... 131 7.11.2 事件中查询状态 .................................................................................................................................... 132 7.11.3 两种状态机的区别 ................................................................................................................................ 133 7.12 例程-长短键识别........................................................................................................................................... 133 7.12.1 状态转换图 ............................................................................................................................................ 133 7.12.2 主函数部分 ............................................................................................................................................ 134 7.12.3 初始化函数 GPIO_init()........................................................................................................................ 135 7.12.4 初始化函数 WDT_init()........................................................................................................................ 135 7.12.5 中断服务函数 WDT_ISR() ................................................................................................................... 136 7.12.6 M ealy 状态机函数 Key_SM ()................................................................................................................ 136 7.12.7 M oore 状态机函数 Key_SM ()................................................................................................................ 138 VI 7.12.8 事件检测函数 LongClick_Dect().......................................................................................................... 139 7.12.9 事件函数 ................................................................................................................................................ 140 第 8 章 电容触摸 ............................................................................................................. 142 8.1 概述.................................................................................................................................................................. 142 8.2 IO 振荡与电容触摸按键.................................................................................................................................. 142 8.3 Timer_A 测频原理............................................................................................................................................ 144 8.4 电容触摸库函数文件...................................................................................................................................... 144 8.4.1 变量与宏定义 .......................................................................................................................................... 144 8.4.2 测频函数 Key_M easure_Freq()............................................................................................................... 146 8.4.3 FIFO 函数 Key_FIFO()............................................................................................................................. 146 8.4.4 按键仲裁函数 Key_Judge()..................................................................................................................... 147 8.4.5 触摸检测函数 TouchIN_Dect( ).............................................................................................................. 148 8.4.6 库函数头文件 .......................................................................................................................................... 148 8.5 例程-电容触摸按键......................................................................................................................................... 149 8.5.1 主函数部分 .............................................................................................................................................. 149 8.5.2 事件相关函数 .......................................................................................................................................... 150 8.6 例程-电容触摸长短键..................................................................................................................................... 151 8.6.1 主函数部分 .............................................................................................................................................. 152 8.6.2 初始化函数 GPIO_init().......................................................................................................................... 153 8.6.3 中断初始化函数及中断服务函数 .......................................................................................................... 153 8.6.4 状态机函数 Key_SM ()............................................................................................................................ 154 8.6.5 事件检测函数 LongClick_Dect()............................................................................................................ 156 8.6.6 长短按键的事件处理函数 ...................................................................................................................... 157 8.7 按键 LED 程序小结 ........................................................................................................................................ 157 第 9 章 串行通信原理 ...................................................................................................... 159 9.1 概述.................................................................................................................................................................. 159 9.1.1 同步与异步 .............................................................................................................................................. 159 9.1.2 单工、全双工、半双工 .......................................................................................................................... 160 9.1.3 并行通信的数据线 .................................................................................................................................. 160 9.1.4 串行通信数据线 ...................................................................................................................................... 161 VII 9.1.5 什么是通信协议 ...................................................................................................................................... 163 9.1.6 串行通信协议的分类 .............................................................................................................................. 163 9.2 UART 原理....................................................................................................................................................... 163 9.2.1 UART 双机通信........................................................................................................................................ 164 9.2.2 UART 多机通信........................................................................................................................................ 165 9.2.3 地址位模式多机通信 .............................................................................................................................. 166 9.2.4 空闲帧模式多机通信 .............................................................................................................................. 166 9.2.5 UART 小结................................................................................................................................................ 167 9.3 SPI 原理 ............................................................................................................................................................ 167 9.3.1 SPI 的数据接口......................................................................................................................................... 167 9.3.2 SPI 的通信模式......................................................................................................................................... 168 9.3.3 SPI 协议时序图......................................................................................................................................... 168 9.4 I2C 原理............................................................................................................................................................ 169 9.4.1 I2C 的线与结构 ........................................................................................................................................ 170 9.4.2 I2C 协议的基本规范 ................................................................................................................................ 170 9.4.3 I2C 协议的起止位 .................................................................................................................................... 171 9.4.4 I2C 的地址规范 ........................................................................................................................................ 172 9.4.5 I2C 的多主机仲裁 .................................................................................................................................... 173 9.4.6 I2C 小结 .................................................................................................................................................... 174 9.5 小结.................................................................................................................................................................. 175 第 10 章 USCI 的 UART 模式.......................................................................................... 176 10.1 概述................................................................................................................................................................ 176 10.2 UART 的初始化............................................................................................................................................. 176 10.2.1 使用 Grace 配置 UART .......................................................................................................................... 176 10.2.2 UART 初始化代码.................................................................................................................................. 177 10.3 UART 工作过程............................................................................................................................................. 179 10.4 使用 FIFO 发送 UART 数据.......................................................................................................................... 179 10.5 使用 FIFO 接收 UART 数据.......................................................................................................................... 180 10.6 UART FIFO 库函数文件................................................................................................................................ 180 10.6.1 全局变量文件 UART_Global.c.............................................................................................................. 181 10.6.2 写字节函数 Rx_FIFO_WriteChar()........................................................................................................ 182 VIII 10.6.3 读字节函数 Rx_FIFO_ReadChar() ....................................................................................................... 183 10.6.4 FIFO 清空函数 Rx_FIFO_Clear().......................................................................................................... 184 10.6.5 写字节函数 Tx_FIFO_WriteChar()....................................................................................................... 185 10.6.6 读字节函数 Tx_FIFO_ReadChar()........................................................................................................ 186 10.6.7 FIFO 清空函数 Tx_FIFO_Clear() .......................................................................................................... 187 10.7 超级终端 ........................................................................................................................................................ 187 10.7.1 硬件连接 ................................................................................................................................................ 188 10.7.2 超级终端软件安装设置 ........................................................................................................................ 188 10.7.3 在超级终端上显示信息 ........................................................................................................................ 189 10.7.4 使用键盘输入信息 ................................................................................................................................ 189 10.8 例程-超级终端人机交互............................................................................................................................... 189 10.8.1 主函数文件 ............................................................................................................................................ 190 10.8.2 UART 初始化文件.................................................................................................................................. 191 10.8.3 UART 事件文件...................................................................................................................................... 192 10.9 人机交互演示................................................................................................................................................ 197 第 11 章 USCI 的 SPI 模式 ............................................................................................... 198 11.1 概述................................................................................................................................................................ 198 11.2 三线制 SPI 主模式的 Grace 配置................................................................................................................. 198 11.2.1 使用 Grace 初始化 SPI .......................................................................................................................... 198 11.2.2 SPI 初始化代码....................................................................................................................................... 199 11.3 SPI 的库函数文件 .......................................................................................................................................... 201 11.3.1 硬件宏定义 ............................................................................................................................................ 202 11.3.2 变量声明 ................................................................................................................................................ 202 11.3.3 初始化函数 SPI_init()............................................................................................................................ 203 11.3.4 使能控制函数 ........................................................................................................................................ 204 11.3.5 中断选择函数 SPI_Interrupt_Sel()........................................................................................................ 204 11.3.6 接收帧函数 SPI_RxFrame() .................................................................................................................. 206 11.3.7 发送帧函数 SPI_TxFrame() .................................................................................................................. 206 11.3.8 中断服务子函数 .................................................................................................................................... 207 11.3.9 事件处理函数 SPI_RxISR() .................................................................................................................. 208 11.3.10 事件处理函数 SPI_TxISR() ................................................................................................................ 209 IX 11.3.11 波特率函数........................................................................................................................................... 210 11.3.12 头文件 SPI.h......................................................................................................................................... 211 11.4 SD 存储卡....................................................................................................................................................... 211 11.4.1 SD 卡存储的特点 ................................................................................................................................... 212 11.4.2 SD 卡的 SPI 模式硬件连接.................................................................................................................... 213 11.4.3 SD 卡的命令字 ....................................................................................................................................... 213 11.4.4 SD 卡的复位函数 SD_Reset()................................................................................................................ 215 11.4.5 SPI 模式函数 SD_Set_SPI() ................................................................................................................... 216 11.4.6 SD 卡的初始化函数 SD_Init()............................................................................................................... 218 11.4.7 读扇区函数 SD_Read_Sector() .............................................................................................................. 219 11.4.8 写扇区函数 SD_Write_Sector().............................................................................................................. 221 11.4.9 宏定义 .................................................................................................................................................... 224 11.4.10 底层硬件子函数 .................................................................................................................................. 225 11.4.11 文件结构............................................................................................................................................... 229 11.5 例程-SD 卡读写扇区..................................................................................................................................... 230 11.5.1 主函数 .................................................................................................................................................... 230 11.5.2 写 SD 卡函数 My_Write_Data()............................................................................................................ 231 11.5.3 读 SD 卡函数 My_Read_Data()............................................................................................................ 231 11.5.4 查看数据 ................................................................................................................................................ 232 第 12 章 USCI 的 I2C 模式 .............................................................................................. 233 12.1 概述................................................................................................................................................................. 233 12.1.1 鱼和熊掌的取舍 .................................................................................................................................... 233 12.1.2 软件模拟 UART 的困难........................................................................................................................ 233 12.1.3 同步通信的自由 .................................................................................................................................... 233 12.1.4 完整的 I2C 协议 .................................................................................................................................... 234 12.1.5 简化的 I2C 协议 .................................................................................................................................... 234 12.2 使用 Grace 初始化 I2C ................................................................................................................................. 234 12.3 I2C 的初始化代码.......................................................................................................................................... 236 12.4 I2C 的库函数文件.......................................................................................................................................... 240 12.4.1 宏定义及变量声明 ................................................................................................................................. 240 12.4.2 初始化函数 I2C_Init()........................................................................................................................... 241 X 12.4.3 初始化函数 I2C_Tx_Init()..................................................................................................................... 241 12.4.4 初始化函数 I2C_Rx_Init() .................................................................................................................... 242 12.4.5 发送帧函数 I2C_TxFrame() .................................................................................................................. 243 12.4.6 接收帧函数 I2C_RxFrame().................................................................................................................. 243 12.4.7 中断服务函数 USCIAB0TX_ISR() ...................................................................................................... 244 12.4.8 事件处理函数 I2C_TxFrame_ISR()...................................................................................................... 245 12.4.9 事件处理函数 I2C_RxFrame_ISR()...................................................................................................... 245 12.4.10 头文件 USCI_I2C.h ............................................................................................................................. 246 12.5 IO 扩展芯片 TCA6416A................................................................................................................................ 246 12.5.1 IO 扩展基本原理.................................................................................................................................... 246 12.5.2 TCA6416A 的硬件连接 ......................................................................................................................... 247 12.5.3 TAC6416A 的寄存器.............................................................................................................................. 248 12.5.4 TCA6416A 写数据 ................................................................................................................................. 250 12.5.5 TCA6416A 读数据 ................................................................................................................................. 250 12.5.6 TCA6416A 的 IO 输入寄存器............................................................................................................... 251 12.6 TCA6416A 库函数文件................................................................................................................................. 252 12.6.1 宏定义与全局变量 ................................................................................................................................. 252 12.6.2 发送帧函数 TCA6416_Tx_Frame() ...................................................................................................... 253 12.6.3 接收帧函数 TCA6416_Rx_Frame() ...................................................................................................... 254 12.6.4 初始化函数 TCA6416A_Init().............................................................................................................. 254 12.6.5 输出控制函数 PinOUT()....................................................................................................................... 255 12.6.6 输入检测函数 PinIN()........................................................................................................................... 257 12.6.7 文件结构 ................................................................................................................................................ 257 12.7 例程-I2C 扩展 IO .......................................................................................................................................... 258 12.7.1 主函数 ..................................................................................................................................................... 259 12.7.2 初始化函数 WDT_init()........................................................................................................................ 260 12.7.3 中断服务函数 WDT_ISR() ................................................................................................................... 260 12.7.4 事件处理函数 I2C_IO10_Onclick()...................................................................................................... 261 12.7.5 事件处理函数 I2C_IO11_Onclick()...................................................................................................... 262 12.7.6 事件处理函数 I2C_IO12_Onclick()...................................................................................................... 262 12.7.7 事件处理函数 I2C_IO13_Onclick()...................................................................................................... 262 12.7.8 事件检测函数 I2C_IODect()................................................................................................................. 263 XI 12.7.9 程序效果 ................................................................................................................................................ 264 第 13 章 软件串行通信与条件编译................................................................................... 265 13.1 概述................................................................................................................................................................. 265 13.2 软件 SPI .......................................................................................................................................................... 265 13.2.1 变量及宏定义 ........................................................................................................................................ 266 13.2.2 初始化函数 SPI_init()............................................................................................................................ 266 13.2.3 使能控制函数 ........................................................................................................................................ 267 13.2.4 延时函数 delay_us() .............................................................................................................................. 267 13.2.5 发送字节函数 Tx_Char() ...................................................................................................................... 268 13.2.6 接收字节函数 Rx_Char() ...................................................................................................................... 269 13.2.7 发送帧函数 SPI_TxFrame() .................................................................................................................. 270 13.2.8 接收帧函数 SPI_RxFrame() .................................................................................................................. 271 13.2.9 波特率设定函数 .................................................................................................................................... 271 13.3 使用条件编译................................................................................................................................................ 272 13.3.1 条件编译的基本语法 ............................................................................................................................ 272 13.3.2 例程-软硬件 SPI 读写 TF 卡................................................................................................................. 274 13.4 软件 I2C......................................................................................................................................................... 275 13.4.1 库函数及宏定义 .................................................................................................................................... 276 13.4.2 延时函数 delay_us() .............................................................................................................................. 276 13.4.3 起始位函数 Start()................................................................................................................................. 277 13.4.4 结束位函数 Stop()................................................................................................................................. 278 13.4.5 初始化函数 I2C_Init()........................................................................................................................... 279 13.4.6 发送字节函数 Send_Char() ................................................................................................................... 279 13.4.7 主机应答函数 M aster_Ack()................................................................................................................. 280 13.4.8 接收字节函数 Get_Char()..................................................................................................................... 281 13.4.9 发送帧函数 I2C_TxFrame() .................................................................................................................. 282 13.4.10 接收帧函数 I2C_RxFrame()................................................................................................................ 284 13.4.11 软硬件 I2C 的条件编译 ...................................................................................................................... 285 第 14 章 LCD 段式液晶 ................................................................................................... 287 14.1 概述................................................................................................................................................................ 287 XII 14.2 LCD 液晶原理................................................................................................................................................ 287 14.2.1 LCD 显示原理 ........................................................................................................................................ 287 14.2.2 LCD 的驱动 ............................................................................................................................................ 288 14.2.3 128 段 LCD 的控制引脚 ........................................................................................................................ 289 14.2.4 LCD 的其他参数 .................................................................................................................................... 290 14.3 显存隔离与显示译码..................................................................................................................................... 290 14.3.1 显存隔离 ................................................................................................................................................ 290 14.3.2 人肉显示译码 ......................................................................................................................................... 291 14.4 显示译码库函数文件.................................................................................................................................... 292 14.4.1 LCD 段码宏定义 .................................................................................................................................... 293 14.4.2 显单个数码函数 LCD_DisplayDigit() ................................................................................................... 294 14.4.3 显示数字函数 LCD_DisplayNum() ....................................................................................................... 296 14.4.4 计算数码显存函数 Calculate_NumBuff() ............................................................................................. 297 14.4.5 辅助控制函数 ......................................................................................................................................... 298 14.4.6 头文件 LCD_128.h ................................................................................................................................ 300 14.5 LCD 驱动器 HT1621...................................................................................................................................... 300 14.5.1 HT1621 的硬件连接............................................................................................................................... 300 14.5.2 HT1621 的显存....................................................................................................................................... 302 14.6 硬件隔离的思想............................................................................................................................................. 302 14.7 HT1621 库函数文件....................................................................................................................................... 303 14.7.1 外部库函数及宏定义 ............................................................................................................................ 304 14.7.2 位发送函数 HT1621_SendBit() ............................................................................................................ 304 14.7.3 初始化函数 HT1621_init().................................................................................................................... 305 14.7.4 全显存刷新函数 HT1621_Reflash()..................................................................................................... 307 14.7.5 单字节显存刷新函数 HT1621_Reflash_Digit() ................................................................................... 308 14.8 例程-LCD 显示自检...................................................................................................................................... 309 14.8.1 主函数部分 ............................................................................................................................................ 309 14.8.2 字符显示函数 LCD_Display_Pass()..................................................................................................... 311 14.8.3 LCD 自检完成效果 ................................................................................................................................ 312 第 15 章 存储器 ............................................................................................................... 313 15.1 概述................................................................................................................................................................ 313 XIII 15.2 SRAM.............................................................................................................................................................. 313 15.2.1 SRAM 的存储原理................................................................................................................................. 313 15.2.2 SRAM 的读写操作................................................................................................................................. 314 15.2.3 SRAM 小结............................................................................................................................................. 315 15.3 DRAM ............................................................................................................................................................. 315 15.3.1 DRAM 存储原理.................................................................................................................................... 315 15.3.2 DRAM 的读写操作................................................................................................................................ 316 15.3.3 DRAM 小结............................................................................................................................................ 316 15.4 FIFO ................................................................................................................................................................ 316 15.4.1 FIFO 原理................................................................................................................................................ 317 15.4.2 FIFO 的应用............................................................................................................................................ 317 15.4.3 FIFO 小结................................................................................................................................................ 317 15.5 场效应管浮栅存储原理................................................................................................................................ 318 15.5.1 场效应管开关原理 ................................................................................................................................ 318 15.5.2 浮栅场效应管 ........................................................................................................................................ 318 15.5.3 EEPROM 与 Flash 的区别 ..................................................................................................................... 319 15.6 EEPROM......................................................................................................................................................... 319 15.7 Flash ROM ...................................................................................................................................................... 320 15.8 FRAM.............................................................................................................................................................. 321 第 16 章 Flash 控制器...................................................................................................... 322 16.1 概述................................................................................................................................................................ 322 16.2 M SP430 单片机的内存结构.......................................................................................................................... 322 16.2.1 普林斯顿结构与哈佛结构 .................................................................................................................... 322 16.2.2 M SP430 的内存结构.............................................................................................................................. 322 16.2.3 Infomation Flash ...................................................................................................................................... 323 16.2.4 M SP430 的程序自升级.......................................................................................................................... 324 16.2.5 内存中的字与字节 ................................................................................................................................ 324 16.3 Flash 控制器的时钟 ....................................................................................................................................... 325 16.4 Flash 的写操作 ............................................................................................................................................... 326 16.4.1 字节写入模式 ........................................................................................................................................ 326 16.4.2 块写入模式 ............................................................................................................................................ 327 XIV 16.4.3 函数指针操作 ........................................................................................................................................ 328 16.5 Flash 的擦除操作 ........................................................................................................................................... 328 16.6 Flash 的寄存器 ............................................................................................................................................... 329 16.7 Flash 操作库函数文件 ................................................................................................................................... 330 16.7.1 库函数说明 ............................................................................................................................................ 330 16.7.2 初始化函数 Flash_Init( ) ....................................................................................................................... 331 16.7.3 擦除函数 Flash_Erase() ......................................................................................................................... 332 16.7.4 读字节函数 Flash_ReadChar() .............................................................................................................. 333 16.7.5 读字函数 Flash_ReadWord()................................................................................................................. 333 16.7.6 读整段函数 Flash_ReadSeg()................................................................................................................ 334 16.7.7 直接写字节函数 Flash_Direct_WriteChar() ......................................................................................... 334 16.7.8 直接写字函数 Flash_Direct_WriteWord() ............................................................................................ 335 16.7.9 备份擦写字节函数 Flash_Bak_WriteChar() ......................................................................................... 336 16.7.10 备份擦写字函数 Flash_Bak_WriteWord() .......................................................................................... 338 16.7.11 读 InfoA 字节函数 Flash_SegA_ReadChar() ....................................................................................... 339 第 17 章 Comparator_A+比较器 ...................................................................................... 340 17.1 概述................................................................................................................................................................ 340 17.2 比较器的用途................................................................................................................................................ 341 17.2.1 比较器用于逐次逼近型 ADC............................................................................................................... 341 17.2.2 比较器用于并行比较型 ADC............................................................................................................... 342 17.2.3 比较器用于积分型 ADC....................................................................................................................... 343 17.3 比较器与普通运放的区别............................................................................................................................ 345 17.4 Copmarator_A+模块....................................................................................................................................... 345 17.5 Slope 型 ADC 的库函数文件 ........................................................................................................................ 347 17.5.1 使用 Grace 配置 Comparator_A+.......................................................................................................... 347 17.5.2 利用 Grace 配置 Timer_A3 ................................................................................................................... 349 17.5.3 Slope ADC 顶层函数文件...................................................................................................................... 351 17.6 例程-拨盘电位器........................................................................................................................................... 355 17.6.1 宏定义与变量 ........................................................................................................................................ 357 17.6.2 主函数部分 ............................................................................................................................................ 357 17.6.3 中断服务函数 WDT_ISR() ................................................................................................................... 358 XV 17.6.4 事件处理函数 WDT_OnTime() ............................................................................................................ 358 17.6.5 阻值分档函数 Slope_R_Dect() ............................................................................................................. 360 17.6.6 LED 控制函数 TCA6416A_LED()........................................................................................................ 361 17.6.7 字符显示函数 Display_SLOPE().......................................................................................................... 361 17.6.8 阻值显示函数 Display_RSENS().......................................................................................................... 362 17.6.9 实验效果 ................................................................................................................................................ 363 第 18 章 模数转换器........................................................................................................ 365 18.1 概述................................................................................................................................................................ 365 18.2 分辨率与采样率............................................................................................................................................ 365 18.3 ADC 采样........................................................................................................................................................ 366 18.4 采样定理 ........................................................................................................................................................ 367 18.5 频谱分析 ........................................................................................................................................................ 368 18.6 抗混叠滤波.................................................................................................................................................... 369 18.7 采样保持电路................................................................................................................................................ 371 18.8 同步采样与分时复用.................................................................................................................................... 373 18.9 单极性运放采集双极性信号........................................................................................................................ 374 18.9.1 运放法 .................................................................................................................................................... 375 18.9.2 电阻法 .................................................................................................................................................... 375 18.10 单端、伪差分和全差分输入...................................................................................................................... 376 18.11 ADC 校准...................................................................................................................................................... 377 第 19 章 ADC 10............................................................................................................. 379 19.1 ADC10 的采样转换过程................................................................................................................................ 379 19.2 使用 Grace 配置 ADC10............................................................................................................................... 380 19.2.1 输入设置 ................................................................................................................................................ 381 19.2.2 基准设置 ................................................................................................................................................ 382 19.2.3 ADC 时钟来源........................................................................................................................................ 383 19.2.4 采样起始信号 ........................................................................................................................................ 383 19.2.5 采样保持时间设定 ................................................................................................................................ 383 19.2.6 单次/重复转换 ....................................................................................................................................... 384 19.2.7 自动存储设置 ........................................................................................................................................ 384 XVI 19.2.8 中断设置 ................................................................................................................................................ 385 19.3 使用 Grace 配置 ADC10............................................................................................................................... 385 19.4 例程-温度传感器采样及显示....................................................................................................................... 386 19.4.1 利用 CCS 的 Example 编写代码........................................................................................................... 387 19.4.2 代码移植 ................................................................................................................................................ 390 19.4.3 变量与宏定义 ........................................................................................................................................ 390 19.4.4 主函数部分 ............................................................................................................................................ 391 19.4.5 初始化函数 LCD_Init()......................................................................................................................... 392 19.4.6 温度显示函数 LCD_Displaly()............................................................................................................. 393 19.4.7 初始化函数 ADC10_init()..................................................................................................................... 394 19.4.8 中断服务函数 ADC10_ISR_HOOK() .................................................................................................. 394 19.4.9 温度计显示效果 .................................................................................................................................... 395 第 20 章 PWM 波形合成与双极性信号采样...................................................................... 396 20.1 概述................................................................................................................................................................ 396 20.2 面积等效原理与 PWM 波形合成................................................................................................................ 396 20.2.1 SPWM 原理............................................................................................................................................. 396 20.2.2 SPWM 的比较法..................................................................................................................................... 397 20.2.3 SPWM 的查表法..................................................................................................................................... 398 20.3 滤波器设计.................................................................................................................................................... 399 20.3.1 有源滤波器与无源滤波器 ..................................................................................................................... 399 20.3.2 FilterPro 软件的使用.............................................................................................................................. 399 20.4 SPWM 滤波与采样硬件电路........................................................................................................................ 403 20.5 例程-SPWM 波形合成及采样...................................................................................................................... 403 20.5.1 宏定义及变量 ........................................................................................................................................ 404 20.5.2 后台程序 ADC10 采样.......................................................................................................................... 404 20.5.3 前台程序波形合成 ................................................................................................................................ 406 20.6 数据还原显示................................................................................................................................................ 407 20.7 示波器观测波形............................................................................................................................................ 409 20.7.1 PWM 合成正弦信号............................................................................................................................... 409 20.7.2 改变正弦波幅值 .................................................................................................................................... 410 20.7.3 改变正弦波频率 .................................................................................................................................... 411 XVII 20.7.4 PWM 合成三角波形............................................................................................................................... 414 20.7.5 PWM 合成不等幅正弦波....................................................................................................................... 415 20.7.6 PWM 合成锯齿波................................................................................................................................... 416 20.8 小结................................................................................................................................................................ 418 第 21 章 DAC 与 AWG .................................................................................................... 419 21.1 概述................................................................................................................................................................ 419 21.2 数模转换器 DAC7311/8311/8411.................................................................................................................. 420 21.2.1 DAC8411 控制原理................................................................................................................................ 420 21.2.2 DAC8411 库函数.................................................................................................................................... 421 21.3 AWG 单元硬件原理图................................................................................................................................... 423 21.4 例程-任意波形发生器 AWG ........................................................................................................................ 424 21.4.1 宏定义和常量数组 ................................................................................................................................ 424 21.4.2 主函数部分 ............................................................................................................................................ 425 21.4.3 TA 定时相关函数................................................................................................................................... 426 21.4.4 AWG 波形 ............................................................................................................................................... 427 21.5 例程-基于 AWG 的音频播放 ....................................................................................................................... 429 21.5.1 程序分析 ................................................................................................................................................ 429 21.5.2 查看文件的扇区地址 ............................................................................................................................ 430 21.5.3 程序的文件结构 .................................................................................................................................... 431 21.5.4 改写 SPI.c 文件...................................................................................................................................... 431 21.5.5 软件 FIFO............................................................................................................................................... 433 21.5.6 主函数文件 ............................................................................................................................................ 434 21.6 附录-AWG 数据生成方法 ............................................................................................................................ 439 21.6.1 波形取点 ................................................................................................................................................. 439 21.6.2 数据点的批量处理 ................................................................................................................................ 442 第 22 章 自校准 DCO ...................................................................................................... 445 22.1 概述................................................................................................................................................................ 445 22.2 自校准 DCO 的原理...................................................................................................................................... 445 21.2.1 自测 DCO 准确频率.............................................................................................................................. 445 22.2.2 自测 VLO 准确频率 .............................................................................................................................. 446 XVIII 22.2.3 DCO 的校验参数.................................................................................................................................... 446 22.3 例程-自校验 DCO ......................................................................................................................................... 447 22.3.1 程序分析 ................................................................................................................................................ 447 22.3.2 变量和宏定义 ........................................................................................................................................ 448 22.3.3 开始指示函数 Calibrate_Start() ............................................................................................................ 449 22.3.4 测频函数 M easure_Temp().................................................................................................................... 450 22.3.5 比较函数 Find_RSELx_DCO x_Winer() ............................................................................................... 452 22.3.6 测频比较函数 M easure_M ODx().......................................................................................................... 453 22.3.7 数据合成函数 Calculate_InfoFlash_Data()........................................................................................... 455 22.3.8 写 Flash 函数 Write_InfoFlashB() ......................................................................................................... 456 22.3.9 完成指示函数 Calibrate_Finish() .......................................................................................................... 457 22.3.10 测试函数 DCOTest()............................................................................................................................ 457 22.3.11 主函数部分 .......................................................................................................................................... 458 22.4 DCO 校验实验................................................................................................................................................ 459 22.4.1 实验内容 ................................................................................................................................................ 459 22.4.2 实验数据 ................................................................................................................................................ 459 22.4.3 观测 DCO 的混频抖动.......................................................................................................................... 460 22.5 借助 CCS 分析数据 ...................................................................................................................................... 461 22.5.1 获取数据 ................................................................................................................................................ 461 22.5.2 查看数据 ................................................................................................................................................ 462 22.6 常见问题解答................................................................................................................................................ 464 22.6.1 校验好了 DCO 参数有什么用?.......................................................................................................... 464 22.6.2 如何将校验参数写入 InfoFlashA?..................................................................................................... 465 22.6.3 什么是“纯净”频率,什么是 MODx 混频?................................................................................... 465 22.6.4 为什么要先把 128 个“纯净”频率测出来? .................................................................................... 466 22.6.5 为什么 Temp[]频率不能超过待校验的频率?.................................................................................... 466 22.6.6 休眠代码 _bis_SR_register(LPM 0_bits)有什么用?.......................................................................... 467 22.6.7 数组 RSELx_DCO x_Winer[Calibrate_Num]存的是什么?................................................................ 467 附录................................................................................................................................. 468 XIX 第 1 章 扩展板硬件原理 第 1 章 扩展板硬件原理 1.1 概述 LaunchPad 系列口袋实验平台有两个特点,一是体积小巧,最好能与 LaunchPad 系列电 路板一样大小,二是能够脱离实验室仪器在宿舍里自行学习。MSP-EXP430G2 口袋扩展板就 是满足这样两个要求的口袋实验平台。 如图 1.1 所示为口袋扩展板与 MSP-EXP430G2 电路板对插的实物图,两者的外形尺寸完 全一致,配色方面也很吻合。图 1.2 为口袋扩展板的正反面主视图,下面将分单元讲解扩展 板的硬件组成。 图 1.1 M SP-EXP430G2 及其扩展板 1 LaunchPad 口袋实验平台—M SP-EXP430G2 篇 图 1.2 LaucnchPad G2 扩展板正反面主视图 1.2 供电单元 扩展板的 3.6V 供电引自于 MSP-EXP430G2 底板的两列公插针,扩展板上的供电单元的 主要功能是指示电源的工作状态、提供某些芯片所需负电压,以及对用电芯片去耦。 1.2.1 电源指示 电源指示也就是用 LED 指示电源状态,看似很简单,但是其中还是有学问的。图 1.3 (a)所示为扩展板的电源指示方案,LED 被接在了正负电源