32 位 MCU 开 发 全 攻 略 -- 工 程 师 创 新 宝 典 上 册 前 言 前 言 单 片 机 可 能 是 中 国 工 程 师 最 熟 悉 的 一 种 器 件 了, 几 乎 每 个 工 科 大 学 生 都 接 触 过 这 个 器 件,20 多 年 前, 在 陈 章 龙 何 立 民 邵 贝

Similar documents
说 明 为 了 反 映 教 运 行 的 基 本 状 态, 为 校 和 院 制 定 相 关 政 策 和 进 行 教 建 设 与 改 革 提 供 据 依 据, 校 从 程 资 源 ( 开 类 别 开 量 规 模 ) 教 师 结 构 程 考 核 等 维 度, 对 2015 年 春 季 期 教 运 行 基

何 秋 琳 张 立 春 视 觉 学 习 研 究 进 展 视 觉 注 意 视 觉 感 知


评 委 : 李 炎 斌 - 个 人 技 术 标 资 信 标 初 步 审 查 明 细 表 序 号 投 标 单 位 投 标 函 未 按 招 标 文 件 规 定 填 写 漏 填 或 内 容 填 写 错 误 的 ; 不 同 投 标 人 的 投 标 文 件 由 同 一 台 电 脑 或 同 一 家 投 标 单

,,,,, :,, (.,, );, (, : ), (.., ;. &., ;.. &.., ;, ;, ),,,,,,, ( ) ( ),,,,.,,,,,, : ;, ;,.,,,,, (., : - ),,,, ( ),,,, (, : ),, :,

<433A5C446F63756D656E E E67735C41646D696E F725CD7C0C3E65CC2DBCEC4CFB5CDB3CAB9D3C3D6B8C4CFA3A8BCF2BBAFA3A95CCAB9D3C3D6B8C4CF31302D31392E646F63>

2006年顺德区高中阶段学校招生录取分数线


0 年 上 半 年 评 价 与 考 核 细 则 序 号 部 门 要 素 值 考 核 内 容 考 核 方 式 考 核 标 准 考 核 ( 扣 原 因 ) 考 评 得 3 安 全 生 产 目 30 无 同 等 责 任 以 上 道 路 交 通 亡 人 事 故 无 轻 伤 责 任 事 故 无 重 大 质 量

评 委 : 徐 岩 宇 - 个 人 技 术 标 资 信 标 初 步 审 查 明 细 表 序 号 投 标 单 位 投 标 函 未 按 招 标 文 件 规 定 填 写 漏 填 或 内 容 填 写 错 误 的 ; 不 同 投 标 人 的 投 标 文 件 由 同 一 台 电 脑 或 同 一 家 投 标 单

( ) 信 号 与 系 统 Ⅰ 学 科 基 础 必 修 课 教 周 2016 年 06 月 13 日 (08:00-09:35) ( )

抗 战 时 期 国 民 政 府 的 银 行 监 理 体 制 探 析 % # % % % ) % % # # + #, ) +, % % % % % % % %

18 上 报 该 学 期 新 生 数 据 至 阳 光 平 台 第 一 学 期 第 四 周 至 第 六 周 19 督 促 学 习 中 心 提 交 新 增 专 业 申 请 第 一 学 期 第 四 周 至 第 八 周 20 编 制 全 国 网 络 统 考 十 二 月 批 次 考 前 模 拟 题 第 一 学

ETF、分级基金规模、份额变化统计

龚 亚 夫 在 重 新 思 考 基 础 教 育 英 语 教 学 的 理 念 一 文 中 援 引 的 观 点 认 为 当 跳 出 本 族 语 主 义 的 思 维 定 式 后 需 要 重 新 思 考 许 多 相 连 带 的 问 题 比 如 许 多 发 音 的 细 微 区 别 并 不 影 响 理 解 和

深圳市新亚电子制程股份有限公司

Microsoft Word - 文件汇编.doc

<4D F736F F D D323630D6D0B9FAD3A6B6D4C6F8BAF2B1E4BBAFB5C4D5FEB2DFD3EBD0D0B6AF C4EAB6C8B1A8B8E6>

I

《C语言基础入门》课程教学大纲

马 克 思 主 义 公 正 观 的 基 本 向 度 及 方 法 论 原 则!! # #

名 称 生 命 科 学 学 院 环 境 科 学 1 生 物 学 仅 接 收 院 内 调 剂, 初 试 分 数 满 足 我 院 生 物 学 复 试 最 低 分 数 线 生 命 科 学 学 院 生 态 学 5 生 态 学 或 生 物 学 生 命 科 学 学 院

Microsoft Word - 第7章 图表反转形态.doc


课程类 别

修改版-操作手册.doc

<433A5C C6B73625C B746F705CB9FABCCAD6D0D2BDD2A9D7A8D2B5B8DFBCB6BCBCCAF5D6B0B3C6C6C0C9F3C9EAC7EBD6B8C4CFA3A CDA8D3C3B0E6A3A92E646F63>

一 公 共 卫 生 硕 士 专 业 学 位 论 文 的 概 述 学 位 论 文 是 对 研 究 生 进 行 科 学 研 究 或 承 担 专 门 技 术 工 作 的 全 面 训 练, 是 培 养 研 究 生 创 新 能 力, 综 合 运 用 所 学 知 识 发 现 问 题, 分 析 问 题 和 解 决

黄 金 原 油 总 持 仓 增 长, 同 比 增 幅 分 别 为 4.2% 和 4.1% 而 铜 白 银 以 及 玉 米 则 出 现 减 持, 减 持 同 比 减 少 分 别 为 9.4%,9.4% 以 及 6.5% 大 豆, 豆 粕 结 束 连 续 4 周 总 持 仓 量 增 长, 出 现 小 幅


学 年 第 二 学 期 集 中 考 试 安 排 (18 周 ) 考 试 日 期 :6 月 27 日 星 期 一 8:10-9:50 第 二 公 共 教 学 楼 A 区 A 高 等 数 学 ( 理 二 2) 复 材 材 料 科 学 与 工 程

中 国 软 科 学 年 第 期!!!

采 取 行 动 的 机 会 90% 开 拓 成 功 的 道 路 2

金 不 少 于 800 万 元, 净 资 产 不 少 于 960 万 元 ; (3) 近 五 年 独 立 承 担 过 单 项 合 同 额 不 少 于 1000 万 元 的 智 能 化 工 程 ( 设 计 或 施 工 或 设 计 施 工 一 体 ) 不 少 于 2 项 ; (4) 近 三 年 每 年

一 从 分 封 制 到 郡 县 制 一 从 打 虎 亭 汉 墓 说 起

随着执业中医师资格考试制度的不断完善,本着为我校中医学专业认证服务的目的,本文通过对我校中医类毕业生参加2012年和2013年的中医执业医师考试成绩及通过率、掌握率进行分析,并与全国的平均水平进行差异比较分析,以此了解我校执业中医师考试的现状,进而反映我校中医类课程总体教学水平,发现考核知识模块教学中存在的不足,反馈给相关学院和教学管理部门,以此提高教学和管理水平。

HSK( 一 级 ) 考 查 考 生 的 日 常 汉 语 应 用 能 力, 它 对 应 于 国 际 汉 语 能 力 标 准 一 级 欧 洲 语 言 共 同 参 考 框 架 (CEF) A1 级 通 过 HSK( 一 级 ) 的 考 生 可 以 理 解 并 使 用 一 些 非 常 简 单 的 汉 语

抗 日 战 争 研 究 年 第 期

收 入 支 出 项 目 2016 年 预 算 项 目 2016 年 预 算 预 算 01 表 单 位 : 万 元 ( 保 留 两 位 小 数 ) 一 公 共 财 政 预 算 拨 款 一 人 员 经 费 一 般 财 力 人 员 支 出 成 品

中 中 中 中 部 中 岗 位 条 件 历 其 它 历 史 师 地 理 师 生 物 师 体 与 健 康 师 从 事 中 历 史 工 从 事 中 地 理 工 从 事 中 生 物 工 从 事 中 体 与 健 康 工 2. 课 程 与 论 ( 历 史 ); 2. 科 ( 历 史 )


国债回购交易业务指引

思 想 政 治 理 论 经 核 查 无 误 思 想 政 治 理 论 经 核 查 无 误 思 想 政 治 理 论 经 核 查 无 误 思 想

3 月 30 日 在 中 国 证 券 报 上 海 证 券 报 证 券 时 报 证 券 日 报 和 上 海 证 券 交 易 所 网 站 上 发 出 召 开 本 次 股 东 大 会 公 告, 该 公 告 中 载 明 了 召 开 股 东 大 会 的 日 期 网 络 投 票 的 方 式 时 间 以 及 审

¹ º ¹ º 农 业 流 动 人 口 是 指 户 口 性 质 为 农 业 户 口 在 流 入 地 城 市 工 作 生 活 居 住 一 个 月 及 以 上 的 流 动 人 口 非 农 流 动 人 口 是 指 户 口 性 质 为 非 农 户 口 在 流 入 地 城 市 工 作 生 活 居 住 一 个

一 开 放 性 的 政 策 与 法 规 二 两 岸 共 同 的 文 化 传 承 三 两 岸 高 校 各 自 具 有 专 业 优 势 远 见 杂 志 年 月 日

工 程 勘 察 资 质 标 准 根 据 建 设 工 程 勘 察 设 计 管 理 条 例 和 建 设 工 程 勘 察 设 计 资 质 管 理 规 定, 制 定 本 标 准 一 总 则 ( 一 ) 本 标 准 包 括 工 程 勘 察 相 应 专 业 类 型 主 要 专 业 技 术 人 员 配 备 技 术


<4D F736F F D20B9D8D3DAB0BABBAAA3A8C9CFBAA3A3A9D7D4B6AFBBAFB9A4B3CCB9C9B7DDD3D0CFDEB9ABCBBE C4EAC4EAB6C8B9C9B6ABB4F3BBE1B7A8C2C9D2E2BCFBCAE92E646F6378>

Microsoft Word - 资料分析练习题09.doc

2014年中央财经大学研究生招生录取工作简报

2016 年 荔 湾 区 财 政 核 定 支 出 汇 总 表 表 二 单 位 名 称 : 广 州 文 化 公 园 基 本 支 出 项 目 支 出 科 目 编 码 预 算 科 目 名 称 一 般 公 共 预 算 5, , , , ,

全国建筑市场注册执业人员不良行为记录认定标准(试行).doc

新, 各 地 各 部 门 ( 单 位 ) 各 文 化 事 业 单 位 要 高 度 重 视, 切 实 加 强 领 导, 精 心 组 织 实 施 要 根 据 事 业 单 位 岗 位 设 置 管 理 的 规 定 和 要 求, 在 深 入 调 查 研 究 广 泛 听 取 意 见 的 基 础 上, 研 究 提

3 复 试 如 何 准 备 4 复 试 成 绩 计 算 5 复 试 比 例 6 复 试 类 型 7 怎 么 样 面 对 各 种 复 试 04 05

<4D F736F F D20B3D6B2D6CFDEB6EEB1EDB8F1D7EED6D52E646F63>



<B4FACFFABBF9BDF0C3FBB5A5A3A A3A92E786C73>

抗 日 战 争 研 究! 年 第 期 # # # # #!!!!!!!! #!!

珠江钢琴股东大会

( 二 ) 现 行 统 一 高 考 制 度 不 利 于 培 养 人 的 创 新 精 神,,,,,,,,,,,,, [ ],,,,,,,,,,, :, ;,,,,,,? ( 三 ) 现 行 统 一 高 考 制 度 不 利 于 全 体 学 生 都 获 得 全 面 发 展,, [ ],,,,,,,,,,,

( 此 页 无 正 文, 为 广 东 东 方 精 工 科 技 股 份 有 限 公 司 关 于 提 供 资 料 真 实 准 确 和 完 整 的 承 诺 函 之 签 署 页 ) 广 东 东 方 精 工 科 技 股 份 有 限 公 司 法 定 代 表 人 : 唐 灼 林 2016 年 7 月 28 日

证券代码: 证券简称:长城电脑 公告编号:

002 电 子 科 学 与 工 程 学 院 拟 招 生 150 人 联 系 人 : 周 老 师, 电 话 物 理 电 子 学 电 路 分 析 电 磁 场 理 论 01 电 磁 物 理 与 微 波 电 子 学 02 光 子 学 与 光 电 技 术 03 微 纳


教师上报成绩流程图

公 开 刊 物 须 有 国 内 统 一 刊 (CN), 发 表 文 章 的 刊 物 需 要 在 国 家 新 闻 出 版 广 电 总 局 ( 办 事 服 务 便 民 查 询 新 闻 出 版 机 构 查 询 ) 上 能 够 查 到 刊 凡 在 有 中 国 标 准 书 公 开

Microsoft Word - 第3章.doc

GONGZUO JUJIAO 宝 山 区 领 军 人 才 名 单 宝 山 区 第 七 批 拔 尖 人 才 名 单 2

证监会行政审批事项目录

 编号:

目 录 关 于 图 标... 3 登 陆 主 界 面... 3 工 单 管 理... 5 工 单 列 表... 5 搜 索 工 单... 5 工 单 详 情... 6 创 建 工 单... 9 设 备 管 理 巡 检 计 划 查 询 详 情 销 售 管

21 业 余 制 -- 高 起 专 (12 级 ) 75 元 / 学 分 网 络 学 院 学 生 沪 教 委 财 (2005)49 号 江 西 化 校 工 科 22 业 余 制 -- 高 起 专 (12 级 ) 70 元 / 学 分 网 络 学 院 学 生 沪 教 委 财 (2005)49 号 吉

书面申请

01

伊 犁 师 范 学 院 611 语 言 学 概 论 全 套 考 研 资 料 <2016 年 最 新 考 研 资 料 > 2-2 语 言 学 纲 要 笔 记, 由 考 取 本 校 本 专 业 高 分 研 究 生 总 结 而 来, 重 点 突 出, 借 助 此 笔 记 可 以 大 大 提 高 复 习 效

二 6 年 收 支 预 算 总 表 ( 经 济 分 类 科 目 ) 收 入 项 目 6 年 预 算 项 目 6 年 预 算 一 财 政 拨 款 ( 补 助 ) 5, 合 计 5, 一 般 公 共 预 算 5, 工 资 福 利 2, 政 府 性 基 金

<B8BDBCFE31A3BABAD3B1B1CAA6B7B6B4F3D1A7B8DFB2E3B4CEC8CBB2C5D5D0C6B8BCC6BBAE2E786C73>

目 录 第 一 部 分 概 况 一 主 要 职 能 二 部 门 预 算 单 位 构 成 第 二 部 分 15 年 部 门 预 算 表 一 15 年 收 支 预 算 总 表 二 15 年 收 入 预 算 表 三 15 年 支 出 预 算 表 ( 按 科 目 ) 四 15 年 支 出 预 算 表 ( 按

年 8 月 11 日, 公 司 召 开 2015 年 第 五 次 临 时 股 东 大 会, 审 议 通 过 了 关 于 公 司 <2015 年 股 票 期 权 激 励 计 划 ( 草 案 )> 及 其 摘 要 的 议 案 关 于 提 请 股 东 大 会 授 权 董 事 会 办 理 公

!!!!!

2016年山东省民主党派办公大楼管理处

untitled

上海证券交易所会议纪要

试 论 后 民 权 时 代 美 国 黑 人 的 阶 层 分 化 和 族 裔 特 征 学 者 年 代 黑 人 中 产 阶 层 定 义 弗 瑞 泽 毕 林 斯 勒 马 克 艾 德 威 尔 逊 科 林 斯 兰 德 里 奥 力 威 夏 佩 罗 帕 锑 罗 收 入 来 源 于 从 事 可 以 定 义 为 白

关于修订《沪市股票上网发行资金申购

目 录 一 系 统 访 问... 1 二 门 户 首 页 申 报 用 户 审 核 用 户... 2 三 系 统 登 录 用 户 名 密 码 登 录 新 用 户 注 册 用 户 登 录 已 注 册 用


世华财讯模拟操作手册

第二讲 数列

2016年德州市机构编制委员会

西 南 民 族 学 院 学 报 哲 学 社 会 科 学 版 第 卷 资 料 来 源 中 国 统 计 年 鉴 年 年 新 中 国 五 十 年 统 计 资 料 汇 编 中 国 人 口 统 计 年 鉴 年 数 据 资 料 来 源 中 国 统 计 年 鉴 中 国 统 计 出 版 社 年 版 资 料 来 源

<4D F736F F D2033D4C2C6DAD4D3D6BEA3A8B6A8B8E5CEC4BCFEA3A92E646F63>

一、资质申请

导 数 和 微 分 的 概 念 导 数 的 几 何 意 义 和 物 理 意 义 函 数 的 可 导 性 与 连 续 性 之 间 的 关 系 平 面 曲 线 的 切 线 和 法 线 导 数 和 微 分 的 四 则 运 算 基 本 初 等 函 数 的 导 数 复 合 函 数 反 函 数 隐 函 数 以

定 位 和 描 述 : 程 序 设 计 / 办 公 软 件 高 级 应 用 级 考 核 内 容 包 括 计 算 机 语 言 与 基 础 程 序 设 计 能 力, 要 求 参 试 者 掌 握 一 门 计 算 机 语 言, 可 选 类 别 有 高 级 语 言 程 序 设 计 类 数 据 库 编 程 类

河北省人大常委会机关车队

Template BR_Rec_2005.dot


Transcription:

1

32 位 MCU 开 发 全 攻 略 -- 工 程 师 创 新 宝 典 上 册 前 言 前 言 单 片 机 可 能 是 中 国 工 程 师 最 熟 悉 的 一 种 器 件 了, 几 乎 每 个 工 科 大 学 生 都 接 触 过 这 个 器 件,20 多 年 前, 在 陈 章 龙 何 立 民 邵 贝 贝 等 我 国 单 片 机 应 用 前 辈 的 推 动 下, 单 片 机 走 入 中 国, 在 工 业 控 制 家 庭 应 用 等 方 面 发 挥 出 巨 大 的 作 用! 目 前, 虽 然 8 位 单 片 机 如 51 等 依 然 是 单 片 机 应 用 的 主 体, 但 是 32 位 单 片 机 ( 也 称 MCU) 的 应 用 呈 现 出 高 速 增 长 势 态, 有 数 据 显 示 : 仅 在 过 去 一 年, 基 于 ARM Cortex-M3 的 MCU 的 出 货 量 增 长 率 就 达 到 200%! 这 些 高 性 能 低 功 耗 的 MCU 广 泛 应 用 于 汽 车 电 子 工 业 应 用 医 疗 电 子 等 领 域, 而 据 研 究 机 构 预 测, 中 国 MCU 的 可 用 市 场 总 量 (TAM) 将 从 2009 年 的 20 亿 美 元 增 长 到 2013 年 的 30 亿 美 元 以 上, 其 增 幅 为 全 球 水 平 的 两 倍 市 场 对 稳 定 可 靠 而 又 有 着 丰 富 外 设 集 成 的 通 用 微 控 制 器 有 着 迫 切 需 求, 这 也 从 侧 面 说 明 普 及 MCU 开 发 知 识 有 充 足 的 必 要 性 另 一 个 有 趣 的 现 象 是 当 我 在 书 店 查 找 有 关 书 籍 时, 却 发 现 在 查 找 的 400 多 本 有 关 单 片 机 的 图 书 中, 有 95% 左 右 的 是 关 于 51 单 片 机 的, 还 有 3% 左 右 是 关 于 16 位 单 片 机 的, 只 有 2% 左 右 的 是 关 于 32 位 MCU 的, 可 见 需 求 和 供 给 之 间 出 现 了 巨 大 的 落 差, 这 也 是 电 子 创 新 网 推 出 32 位 MCU 开 发 全 攻 略 电 子 书 的 初 衷 之 一 基 于 上 述 原 因, 本 电 子 书 主 要 讲 述 32 位 MCU 应 用 开 发 知 识, 对 于 8 位 单 片 机 的 开 发, 因 为 已 经 有 大 量 书 籍, 这 里 不 再 赘 述 本 书 的 第 一 章 主 要 介 绍 了 嵌 入 式 系 统 的 背 景 知 识 基 本 概 念 和 目 前 发 展 状 况, 让 大 家 对 嵌 入 式 系 统 的 发 展 有 大 致 的 了 解 第 二 章 主 要 介 绍 了 微 控 制 器 的 基 本 原 理 结 构 和 32 位 ARM MCU 供 应 商 的 信 息 第 三 章 主 要 介 绍 了 ARM 内 核 的 一 些 特 点 及 ARM 指 令 集 第 四 章 以 恩 智 浦 公 司 的 MCU 为 例 详 细 介 绍 了 32 位 ARM MCU 的 具 体 结 构 功 能 和 特 点 第 五 章 是 本 书 的 重 点 内 容, 以 恩 智 浦 的 LPC17xx 系 列 MCU 为 例, 分 模 块 详 细 介 绍 了 MCU 的 应 用 开 发, 这 些 介 绍 把 软 硬 件 结 合 在 一 起, 这 是 本 书 和 其 他 类 似 书 籍 的 区 别 之 一 第 六 章 介 绍 了 MCU 开 发 工 具 及 开 发 流 程 第 七 章 我 们 搜 集 了 多 个 MCU 开 发 应 用 实 例, 通 过 这 些 实 例, 进 一 步 强 化 MCU 开 发 技 巧 和 系 统 设 计 方 法 第 八 章 我 们 以 问 答 的 形 式 介 绍 MCU 开 发 的 技 巧, 这 些 问 答 具 有 一 定 的 基 础 性 和 代 表 性, 可 以 帮 助 工 程 师 解 决 MCU 应 用 开 发 中 遇 到 的 难 题 第 九 章 我 们 罗 列 了 一 些 MCU 开 发 资 源 信 息, 工 程 师 朋 友 可 以 通 过 链 接 获 得 所 需 的 知 识 第 十 章 是 有 关 本 书 的 编 委 信 息 第 十 一 章 是 本 书 的 版 权 声 明, 我 们 授 权 工 程 师 朋 友 和 媒 体 免 费 下 载 此 书 并 进 行 推 广, 但 是 不 得 以 本 书 进 行 商 业 活 动

32 位 MCU 开 发 全 攻 略 -- 工 程 师 创 新 宝 典 上 册 前 言 本 文 因 为 内 容 很 多, 分 为 上 下 册, 上 册 为 基 础 知 识 篇, 从 第 一 章 到 第 五 章, 下 册 为 开 发 技 巧 篇, 为 第 六 章 以 后 内 容 本 书 可 以 作 为 MCU 应 用 工 程 师 大 中 专 学 生 或 MCU 爱 好 者 学 习 32 位 MCU 开 发 的 参 考 教 材 在 本 书 的 开 发 过 程 中, 恩 智 浦 相 关 工 作 人 员 对 本 书 的 内 容 编 写 给 予 了 大 力 支 持, 上 海 丰 宝 电 子 有 限 公 司 牛 晓 东 先 生 以 及 南 京 航 空 航 天 学 院 白 延 敏 老 师 也 编 写 了 部 分 章 节 此 外, 南 京 航 空 航 天 大 学 的 解 书 钢 王 钦 玉 浙 江 大 学 的 余 凯 上 海 交 通 大 学 的 喻 焰 以 及 福 州 大 学 黄 鹏 程 等 同 学 对 本 电 子 书 编 写 给 予 了 大 力 支 持, 在 此 表 示 衷 心 地 感 谢! 科 技 在 不 断 进 步, 工 程 师 对 知 识 的 渴 求 是 无 止 境 的, 本 书 对 32 位 MCU 应 用 开 发 进 行 了 粗 浅 地 探 讨, 难 免 存 在 疏 漏 之 处, 我 们 愿 意 收 集 来 自 工 程 师 朋 友 的 改 进 建 议 以 便 提 供 更 好 的 内 容, 任 何 有 关 该 书 的 建 议 见 请 发 信 到 richard@eetrend.com, 谢 谢 大 家 的 支 持! 32 位 MCU 开 发 全 攻 略 电 子 书 主 编 张 国 斌 电 子 创 新 网 CEO 2009 年 9 月

32 位 MCU 开 发 全 攻 略 -- 工 程 师 创 新 宝 典 上 册 目 录 目 录 前 言 2 第 1 章 嵌 入 式 系 统 概 述 6 1.1 嵌 入 式 系 统 概 述 6 1.2 嵌 入 式 系 统 的 定 义 7 1.3 嵌 入 式 系 统 的 发 展 历 程 8 1.4 嵌 入 式 系 统 的 特 征 9 1.5 嵌 入 式 系 统 的 组 成 10 1.6 嵌 入 式 操 作 系 统 简 介 12 1.7 嵌 入 式 系 统 在 不 同 领 域 的 应 用 17 第 2 章 微 控 制 器 (MCU) 概 述 20 2.1 什 么 是 哈 佛 结 构 和 冯 诺 伊 曼 结 构 20 2.2 微 控 制 器 的 发 展 历 程 21 2.3 微 控 制 器 的 应 用 领 域 22 2.4 微 控 制 器 的 组 成 24 2.5 微 控 制 器 内 核 体 系 结 构 26 第 3 章 ARM 内 核 详 解 30 3.1 ARM 嵌 入 式 处 理 器 简 介 30 3.2 ARM9 内 核 介 绍 36 3.3 ARM Cortex-M3 内 核 介 绍 38 3.4 ARM 指 令 特 点 50 第 4 章 典 型 MCU 架 构 详 解 与 主 流 MCU 介 绍 53 4.1 恩 智 浦 LPC1000 系 列 MCU 53 4.2 恩 智 浦 LPC3000 系 列 MCU 60 4.3 恩 智 浦 LPC2000 系 列 MCU 63 第 5 章 MCU 软 硬 件 基 本 知 识 77 5.1 LPC17xx 系 列 处 理 器 简 介 77 5.2 LPC17xx 处 理 器 引 脚 配 置 78 4

32 位 MCU 开 发 全 攻 略 -- 工 程 师 创 新 宝 典 上 册 目 录 5.3 存 储 器 管 理 80 5.4 中 断 向 量 控 制 器 84 5.5 电 源 电 路 86 5.6 复 位 电 路 87 5.7 时 钟 电 路 91 5.8 锁 相 环 PLL0 93 5.9 锁 相 环 PLL1 96 5.10 时 钟 分 频 100 5.11 功 率 控 制 : 低 功 耗 模 式 102 5.12 通 用 输 入 / 输 出 接 口 GPIO 106 5.13 定 时 器 0/1/2/3 109 5.14 系 统 节 拍 定 时 器 113 5.15 看 门 狗 115 5.16 实 时 时 钟 117 5.17 UART 串 口 通 信 121 5.18 I 2 C 接 口 127 5.19 SPI 接 口 131 5.20 CAN 控 制 器 133 5.21 USB 接 口 136 5.22 以 太 网 接 口 141 5.23 数 模 转 换 器 和 模 数 转 换 器 150 5.24 电 机 控 制 PWM 152 5.25 LPC17xx 的 调 试 手 段 154 5.26 LCD 接 口 简 介 156 5.27 基 于 Cortex-M3 内 核 编 程 简 述 159 附 录 一 MCU 开 发 资 源 总 汇 160 附 录 二 编 委 信 息 与 后 记 161 附 录 三 版 权 声 明 162 附 录 四 参 考 文 献 163 5

第 1 章 嵌 入 式 系 统 概 述 1.1 嵌 入 式 系 统 概 述 很 多 人 认 为 PC 市 场 是 堪 称 全 球 第 一 的 大 市 场,2008 年, 全 球 PC 出 货 量 近 3 亿 台! 也 就 是 说 英 特 尔 AMD 等 卖 出 了 近 3 亿 个 芯 片, 但 是 你 知 道 吗?2008 年 仅 用 于 嵌 入 式 系 统 的 嵌 入 式 处 理 器 出 货 量 就 超 过 了 100 亿 片! 这 是 PC 芯 片 的 30 倍 以 上! 而 2009 年 这 个 数 字 还 将 增 长 到 107.6 亿! 不 过 09 年 PC 市 场 却 萎 缩 近 4%, 所 以, 其 实 嵌 入 式 系 统 才 是 当 之 无 愧 的 全 球 第 一 大 市 场 可 以 毫 不 夸 张 地 说, 我 们 现 在 的 时 代 是 一 个 完 全 被 嵌 入 式 系 统 垄 断 的 世 界, 全 球 95% 以 上 的 电 子 产 品 都 属 于 嵌 入 式 系 统, 大 到 航 空 航 天 设 备 小 到 袖 珍 的 数 码 产 品, 可 以 进 入 人 体 的 电 子 药 丸, 嵌 入 式 产 品 深 入 到 我 们 生 活 的 方 方 面 面,PC 机 主 要 应 用 于 办 公 自 动 化 家 庭 领 域, 但 是 嵌 入 式 系 统 已 经 广 泛 渗 透 到 人 们 的 工 作 生 活 中, 从 家 用 电 器 手 持 通 信 设 备 汽 车 到 信 息 终 端 仪 器 仪 表 航 天 航 空 军 事 装 备 制 造 工 业 过 程 控 制 等 如 今, 嵌 入 式 系 统 带 来 的 工 业 年 产 值 已 超 过 1 万 亿 美 元 美 国 著 名 未 来 学 家 尼 葛 罗 庞 蒂 曾 预 言 : 嵌 入 式 智 能 电 脑 将 是 除 了 PC 和 互 联 网 之 外 最 伟 大 的 发 明 据 统 计, 嵌 入 式 处 理 器 的 数 量 占 到 全 球 处 理 器 的 94%, 而 PC 机 用 的 处 理 器 只 占 6% 汽 车 大 王 福 特 公 司 的 高 级 经 理 曾 称 : 福 特 卖 出 的 计 算 能 力 已 超 过 了 IBM! 用 市 场 观 点 来 看,PC 已 经 从 高 速 增 长 进 入 到 平 稳 发 展 时 期, 其 年 增 长 率 由 20 世 纪 90 年 代 中 期 的 35% 逐 年 下 降, 单 纯 由 PC 带 领 电 子 产 业 蒸 蒸 日 上 的 时 代 已 经 成 为 历 史, 基 于 PC 时 代 的 概 念, 美 国 Business week 杂 志 认 为 我 们 已 经 进 入 了 后 PC 时 代 根 据 美 国 嵌 入 式 系 统 专 业 杂 志 RTC 报 道 :21 世 纪 初 的 10 年 中, 全 球 嵌 入 式 系 统 市 场 需 求 量 创 造 出 比 PC 市 场 大 10 100 倍 的 商 机 业 界 早 就 提 出 的 三 网 合 一, 随 时 随 地 上 网 的 梦 想 正 由 嵌 入 式 系 统 在 实 现 虽 然 嵌 入 式 系 统 这 一 名 词 在 最 近 几 年 才 成 为 流 行, 但 在 20 世 纪 80 年 代 初 期, 国 际 上 就 有 一 些 IT 组 织 公 司 开 始 进 行 商 用 嵌 入 式 系 统 和 专 用 操 作 系 统 的 研 制 在 硬 件 方 面,32 64 位 微 处 理 器 成 为 目 前 嵌 入 式 系 统 的 核 心, 它 们 多 半 是 采 用 基 于 ARM PowerPC 或 者 MIPS 架 构 的 RISC 处 理 器, 据 ARM 公 司 透 露, 仅 在 2008 年, 全 球 就 批 运 了 近 40 亿 个 ARM 处 理 器 芯 片, 几 乎 每 天 1000 万 的 出 货, 与 PC 市 场 不 同 的 是, 在 嵌 入 式 系 统 领 域, 云 集 了 上 百 家 处 理 器 芯 片 供 应 商, 它 们 的 产 品 各 具 特 色, 应 用 于 形 形 色 色 的 产 品 在 软 件 方 面, 嵌 入 式 操 作 系 统 (Embedded OperatingSystem) 也 蓬 勃 发 展, 目 前 比 较 成 熟 的 嵌 入 式 实 时 操 作 系 统 有 40 多 种, 比 较 常 见 的 有 Linux uclinux WinCE PalmOS Symbian ecos ucos-ii VxWorks psos Nucleus ThreadX Rtems QNX Integrity OSE C Executive 等 嵌 入 式 系 统 硬 件 和 软 件 的 多 样 性 使 嵌 入 式 市 场 充 满 了 活 力, 这 也 是 嵌 入 式 系 统 能 成 为 引 领 科 技 发 展 主 力 的 6

根 本 原 因 1.2 嵌 入 式 系 统 的 定 义 什 么 是 嵌 入 式 系 统? 每 个 工 程 师 都 可 能 有 自 己 的 理 解, 经 过 对 比 和 查 询, 我 们 认 为 嵌 入 式 系 统 可 以 定 义 为 : 以 应 用 为 中 心 以 计 算 机 技 术 为 基 础 软 件 硬 件 可 裁 剪 适 应 应 用 系 统 对 功 能 可 靠 性 成 本 体 积 功 耗 严 格 要 求 的 专 用 计 算 机 系 统 这 样 看 来, 嵌 入 式 系 统 也 可 以 称 为 嵌 入 式 计 算 机, 它 在 应 用 数 量 上 远 远 超 过 了 各 种 通 用 计 算 机, 一 台 通 用 计 算 机 的 外 部 设 备 中 就 包 含 了 5-10 个 嵌 入 式 微 处 理 器, 键 盘 鼠 标 软 驱 硬 盘 显 示 卡 显 示 器 Modem 网 卡 声 卡 打 印 机 扫 描 仪 摄 像 头 USB 集 线 器 等 均 是 由 嵌 入 式 处 理 器 控 制 的 制 造 工 业 过 程 控 制 通 讯 仪 器 仪 表 汽 车 船 舶 航 空 航 天 军 事 装 备 医 疗 电 子 和 消 费 类 产 品 均 是 嵌 入 式 计 算 机 的 主 要 应 用 领 域 从 嵌 入 式 系 统 的 构 成 来 看, 嵌 入 式 系 统 是 将 先 进 的 计 算 机 技 术 半 导 体 技 术 和 各 个 行 业 的 具 体 应 用 相 结 合 后 的 产 物, 这 一 点 就 决 定 了 它 必 然 是 一 个 技 术 密 集 资 金 密 集 高 度 分 散 不 断 创 新 的 知 识 集 成 系 统 嵌 入 式 系 统 由 传 感 器 微 处 理 器 微 控 制 器 存 储 器 等 一 系 列 微 电 子 芯 片 与 器 件 以 及 嵌 入 在 存 储 器 中 的 微 型 操 作 系 统 控 制 应 用 软 件 组 成, 共 同 实 现 诸 如 实 时 控 制 监 视 管 理 计 算 数 据 处 理 等 各 种 任 务 不 同 功 能 的 嵌 入 式 系 统 的 复 杂 程 度 有 很 大 不 同 简 单 的 嵌 入 式 系 统 仅 仅 具 有 单 一 的 功 能, 存 储 器 中 的 程 序 就 是 为 了 这 一 功 能 设 计 的, 其 系 统 处 理 核 心 也 是 单 一 任 务 处 理 器 复 杂 的 嵌 入 式 系 统 不 仅 功 能 强 大, 往 往 还 配 用 实 时 操 作 系 统, 例 如 功 能 强 大 的 智 能 手 机 等, 几 乎 具 有 与 微 型 计 算 机 一 样 的 功 能, 嵌 入 式 系 统 采 用 紧 凑 的 存 储 器 来 存 储 代 码 和 数 据 典 型 的 嵌 入 式 系 统 如 图 1.1 所 示, 它 是 基 于 恩 智 浦 半 导 体 MCU 的 一 款 汽 车 防 盗 方 案 已 经 在 很 多 汽 车 上 采 用 图 1.1 基 于 恩 智 浦 MCU 的 汽 车 防 盗 方 案 7

1.3 嵌 入 式 系 统 的 发 展 历 程 嵌 入 式 系 统 的 出 现 已 有 30 多 年 的 历 史, 近 几 年 来, 随 着 计 算 机 通 信 消 费 电 子 融 合 趋 势 日 益 明 显, 嵌 入 式 系 统 已 成 为 一 个 研 究 热 点 纵 观 嵌 入 式 系 统 的 发 展 历 程, 大 致 经 历 了 4 个 阶 段 第 一 阶 段 : 以 单 芯 片 为 核 心 的 可 编 程 控 制 器 形 式 的 系 统 这 类 系 统 具 有 与 监 测 伺 服 设 备 相 配 合 的 功 能, 大 部 分 应 用 于 一 些 专 业 性 强 的 工 业 控 制 系 统 中, 一 般 没 有 操 作 系 统 的 支 持, 通 过 汇 编 语 言 编 程 对 系 统 进 行 直 接 控 制 这 一 阶 段 系 统 的 主 要 特 点 是 : 系 统 结 构 和 功 能 相 对 单 一, 处 理 效 率 较 低, 存 储 容 量 较 小, 几 乎 没 有 用 户 接 口 由 于 这 种 嵌 入 式 系 统 使 用 简 单, 价 格 低, 以 前 在 国 内 工 业 领 域 应 用 较 为 普 遍, 但 是 已 经 远 不 能 适 应 高 效 的 需 要 大 容 量 存 储 的 现 代 工 业 控 制 和 新 兴 信 息 家 电 等 领 域 的 需 求 第 二 阶 段 : 以 嵌 入 式 CPU 为 基 础 以 简 单 操 作 系 统 为 核 心 的 嵌 入 式 系 统 主 要 特 点 是 :CPU 种 类 繁 多, 通 用 性 比 较 弱 ; 系 统 内 核 小, 效 率 高 ; 操 作 系 统 具 有 一 定 的 兼 容 性 和 扩 展 性 ; 应 用 软 件 较 专 业, 用 户 界 面 不 够 友 好 第 三 阶 段 : 以 嵌 入 式 操 作 系 统 为 标 志 的 嵌 入 式 系 统 主 要 特 点 是 : 嵌 入 式 操 作 系 统 能 运 行 于 各 种 不 同 类 型 的 微 处 理 器 上, 兼 容 性 好 ; 操 作 系 统 内 核 小 效 率 高, 并 且 具 有 高 度 的 模 块 化 和 扩 展 性 ; 具 备 文 件 和 目 录 管 理 多 任 务 网 络 支 持 图 形 窗 口 以 及 用 户 界 面 等 功 能 ; 具 有 大 量 的 应 用 程 序 接 口 API, 开 发 应 用 程 序 较 简 单 ; 嵌 入 式 应 用 软 件 丰 富 第 四 阶 段 : 以 互 联 网 为 标 志 的 嵌 入 式 系 统 目 前 大 多 数 嵌 入 式 系 统 还 孤 立 于 互 联 网 之 外, 但 随 着 互 联 网 的 发 展 以 及 互 联 网 技 术 与 信 息 家 电 工 业 控 制 技 术 结 合 日 益 紧 密, 嵌 入 式 设 备 与 互 联 网 的 结 合 将 代 表 嵌 入 式 系 统 的 未 来 目 前, 很 多 公 司 在 致 力 于 M2M( 机 器 对 机 器 ) 通 信 技 术,IBM 还 推 出 了 智 慧 的 星 球 计 划, 这 标 志 嵌 入 式 技 术 进 入 到 新 的 层 次 8

图 1.2 未 来 M2M 通 信 技 术 设 想 1.4 嵌 入 式 系 统 的 特 征 1. 功 能 的 单 一 性 嵌 入 式 系 统 包 含 简 单 的 嵌 入 式 系 统 和 复 杂 的 嵌 入 式 系 统 在 通 常 情 况 下, 由 于 设 计 思 想 的 原 因, 一 个 嵌 入 式 系 统 只 能 执 行 一 个 或 一 组 特 定 的 功 能, 而 不 具 备 如 个 人 计 算 机 的 那 种 随 着 执 行 程 序 的 不 同 有 着 不 同 的 功 能 表 现 例 如 生 活 中 常 用 的 数 码 相 机, 无 论 功 能 如 何 强 大, 均 只 能 执 行 照 相 这 一 特 定 任 务 而 个 人 计 算 机 则 可 以 运 行 不 同 的 执 行 程 序 进 而 执 行 如 计 算 字 处 理 统 计 和 游 戏 等 不 同 任 务 不 过, 随 着 嵌 入 式 技 术 的 发 展, 某 些 复 杂 的 嵌 入 式 设 备 已 经 能 够 通 过 更 新, 对 自 身 功 能 进 行 升 级, 并 具 有 多 种 能 力, 例 如 智 能 手 机, 除 了 进 行 电 话 通 信 之 外, 还 可 以 进 行 网 上 聊 天 游 戏 等 2. 系 统 的 紧 凑 性 由 于 设 计 指 标 的 严 格 约 束, 嵌 入 式 系 统 需 要 综 合 考 虑 价 格 体 积 功 耗 和 可 靠 性 等 问 题 简 单 的 嵌 入 式 系 统 成 本 必 须 在 几 个 美 元 之 内, 体 积 与 芯 片 大 小 可 比 拟, 并 且 处 理 速 度 要 足 够 快, 还 需 要 有 较 低 的 功 耗, 以 便 延 长 续 航 时 间 除 了 成 本 之 外, 复 杂 的 嵌 入 式 系 统 也 同 样 面 临 上 述 问 题 此 外, 由 于 系 统 的 复 杂 性 和 体 积 以 及 功 耗 等 问 题, 往 往 在 开 发 过 程 中 都 会 遇 到 更 为 棘 手 的 样 机 建 立 时 间 和 上 市 时 间 等 类 似 问 题 3. 运 用 的 实 时 性 很 多 嵌 入 式 系 统 都 要 不 断 地 对 所 处 环 境 变 化 做 出 反 应, 而 且 要 实 时 得 到 计 算 结 果, 不 能 延 迟 例 如, 汽 车 的 定 速 控 制 器 需 要 持 续 检 测 速 度 等 参 数, 并 针 对 不 同 情 况 作 出 反 应, 同 时 还 要 在 有 限 的 时 间 内 对 汽 车 的 加 速 度 进 行 计 算, 从 而 控 制 发 动 机 中 喷 油 嘴 开 合 程 度, 保 持 一 定 的 速 度, 计 算 延 迟 将 会 导 致 控 制 失 灵 而 传 统 计 算 机 则 主 要 用 于 计 算, 偶 尔 的 计 算 延 迟 并 不 对 系 统 产 生 致 命 的 影 响 如 下 图 1.3 所 示 的 倒 车 雷 达 系 统, 这 个 嵌 入 式 系 统 需 要 实 时 计 算 汽 车 的 速 度 和 车 后 物 体 的 距 离 等 等, 并 进 行 实 图 1.3 汽 车 倒 车 雷 达 系 统 9

1.5 嵌 入 式 系 统 的 组 成 1.4 所 示 嵌 入 式 系 统 的 硬 件 一 般 包 括 嵌 入 式 处 理 器 存 储 器 操 作 系 统 应 用 程 序 和 输 入 / 输 出 设 备, 如 图 图 1.4 典 型 嵌 入 式 系 统 组 成 框 嵌 入 式 系 统 的 核 心 由 硬 件 部 分 和 软 件 部 分 组 成 输 入 系 统 获 取 外 界 信 息, 传 输 给 核 心 系 统 进 行 处 理, 处 理 后 发 出 指 令, 输 出 系 统 接 收 到 指 令 后 进 行 动 作 输 入 系 统 和 输 出 系 统 可 以 很 简 单, 如 温 控 系 统 在 感 知 温 度 变 化 后 需 要 使 用 继 电 器 动 作 ; 也 可 能 很 复 杂, 如 机 器 人 的 手 臂, 输 入 系 统 有 几 十 个 传 感 器, 输 出 系 统 则 有 近 十 个 伺 服 电 机, 可 以 执 行 复 杂 的 动 作 从 图 1.4 中 可 以 看 出, 嵌 入 式 系 统 硬 件 的 组 成 可 以 简 单 地 分 为 嵌 入 式 处 理 器 和 存 储 器 实 际 上, 由 于 超 大 规 模 集 成 电 路 的 迅 速 发 展, 很 多 单 片 的 嵌 入 式 处 理 器 中 都 含 有 丰 富 的 资 源 目 前, 在 一 片 嵌 入 式 处 理 器 上 添 加 电 源 电 路 时 钟 电 路 和 存 储 器 电 路, 就 构 成 了 一 个 嵌 入 式 核 心 控 制 模 块 软 件 中 的 操 作 系 统 和 应 用 程 序 都 可 以 存 放 在 存 储 器 中 以 下 就 嵌 入 式 系 统 的 不 同 组 成 部 分 进 行 简 要 的 介 绍 1.5.1 嵌 入 式 处 理 器 嵌 入 式 处 理 器 是 嵌 入 式 系 统 的 硬 件 核 心, 它 与 通 用 处 理 器 的 最 大 区 别 在 于 嵌 入 式 处 理 器 大 多 数 工 作 于 专 门 设 计 的 应 用 场 合, 它 将 许 多 通 用 处 理 器 中 需 要 外 接 辅 助 设 备 的 功 能 使 用 芯 片 内 部 的 资 源 完 成, 因 此, 系 统 可 以 设 计 得 比 较 小 巧, 同 时 兼 有 高 效 率 和 高 可 靠 性 早 期 的 处 理 器 均 采 用 冯. 诺 伊 曼 体 系 结 构, 而 目 前 的 嵌 入 式 处 理 器 大 多 采 用 哈 佛 体 系 结 构 指 令 系 统 可 以 是 精 简 指 令 集 计 算 机 (Reduced Instruction Set Computer,RISC), 也 可 以 是 复 杂 指 令 集 计 算 机 (Complex Instruction Set Computer,CISC),CISC 计 算 机 指 令 集 复 杂 多 样, 寻 址 方 式 众 多, 但 是 大 多 数 指 令 使 用 频 率 并 不 高 ;RISC 计 算 机 系 统 则 只 使 用 使 用 频 率 最 高 的 指 令, 其 他 指 令 的 功 能 用 指 令 组 合 的 方 式 得 到, 从 而 提 高 了 执 行 效 率, 并 使 CPU 硬 件 结 构 设 计 简 单 化 嵌 入 式 处 理 器 可 以 分 为 嵌 入 式 微 控 制 器 嵌 入 式 微 处 理 器 嵌 入 式 DSP 处 理 器 和 嵌 入 式 片 上 系 统 等 几 类, 嵌 入 式 处 理 器 有 各 种 不 同 的 体 系, 即 使 在 同 一 体 系 中 也 可 能 具 有 不 同 的 时 钟 频 率 和 数 据 总 线 宽 10

度, 或 集 成 了 不 同 的 外 设 和 接 口 目 前 嵌 入 式 微 处 理 器 已 经 超 过 1000 多 种, 体 系 结 构 有 30 多 个 系 列, 较 成 熟 应 用 较 为 广 泛 的 有 :ARM MIPS PowerPC X86 和 SH 等 这 些 嵌 入 式 处 理 器 共 同 占 据 了 市 场 大 部 分 份 额 1.5.2 存 储 器 1. 主 存 储 器 主 存 储 器 是 嵌 入 式 微 处 理 器 能 直 接 访 问 的 存 储 器, 用 来 存 放 系 统 和 用 户 的 应 用 程 序 以 及 数 据 一 般 在 处 理 器 内 部 有 部 分 主 存 储 器, 这 部 分 存 储 器 通 常 在 几 十 KB 到 数 十 MB 之 间, 由 于 可 以 被 CPU 在 一 个 时 钟 周 期 内 访 问 而 无 等 待, 因 此 速 度 较 其 他 存 储 器 快 有 时 微 处 理 器 自 带 的 存 储 器 不 能 满 足 需 求, 这 时 就 需 要 片 外 的 大 容 量 存 储 器 支 持 经 常 用 做 片 外 存 储 器 的 有 ROM 类 和 RAM 类 两 种 其 中 ROM 类 FLASH 存 储 器 由 于 寿 命 长 存 取 速 度 快 存 储 容 量 大 价 格 便 宜 等 因 素 在 嵌 入 式 领 域 内 得 到 了 广 泛 的 应 用 2. 高 速 缓 冲 存 储 器 高 速 缓 冲 存 储 器 简 称 高 速 缓 存, 是 一 种 容 量 小 速 度 快 的 存 储 器 阵 列, 它 位 于 主 存 和 嵌 入 式 微 处 理 器 内 核 之 间, 存 储 的 信 息 是 处 理 器 经 过 预 测 需 要 运 行 的 代 码 和 数 据 在 需 要 取 出 的 时 候, 微 处 理 器 尽 可 能 从 高 速 缓 冲 存 储 器 中 而 不 是 主 存 储 器 中 寻 找 指 令 由 于 高 速 缓 存 的 速 度 快, 因 此, 可 大 大 提 高 系 统 性 能 3. 辅 助 存 储 器 辅 助 存 储 器 用 来 存 放 大 量 数 据 的 程 序 代 码 或 信 息, 它 的 容 量 大, 但 是 读 取 速 度 较 慢, 适 合 用 于 长 期 存 储 数 据 和 信 息 1.5.3 接 口 嵌 入 式 处 理 器 获 取 外 界 信 息 并 驱 动 输 出 系 统 产 生 动 作 或 执 行 指 令, 这 需 要 通 过 接 口 来 完 成 较 为 常 用 的 输 入 输 出 接 口 有 A/D D/A 和 I/O 接 口 等 不 同 系 列 的 嵌 入 式 处 理 器 集 成 了 不 同 的 接 口, 可 以 驱 动 丰 富 的 外 设 资 源 较 为 常 用 的 接 口 有 :A/D( 模 拟 / 数 字 转 换 接 口 ) D/A( 数 字 / 模 拟 转 换 接 口 ) 串 行 通 信 接 口 并 行 接 口 以 太 网 接 口 USB 接 口 音 频 接 口 SPI 接 口 红 外 接 口 以 及 蓝 牙 接 口 等, 近 来, 随 着 触 摸 屏 技 术 的 发 展, 很 多 嵌 入 式 系 统 将 输 入 和 输 出 系 统 整 合, 这 是 革 命 性 的 技 术, 会 推 动 嵌 入 式 系 统 创 新 1.5.4 电 源 系 统 嵌 入 式 系 统 中 的 电 源 是 系 统 组 成 的 重 要 部 分, 它 已 经 不 再 是 只 需 要 电 池 或 交 流 稳 压 器 的 简 单 电 11

源, 而 是 集 成 了 电 源 管 理 和 电 源 保 护 功 能 的 复 杂 集 成 系 统 目 前 有 很 多 成 型 的 产 品 使 用 方 便 功 能 强 大, 单 片 集 成 电 路 就 可 以 完 成 电 源 系 统 的 全 部 功 能 1.6 嵌 入 式 操 作 系 统 简 介 嵌 入 式 操 作 系 统 是 一 种 支 持 嵌 入 式 系 统 应 用 的 操 作 系 统 软 件 它 是 嵌 入 式 系 统 ( 包 括 硬 软 件 系 统 ) 极 为 重 要 的 组 成 部 分, 通 常 包 括 与 硬 件 相 关 的 底 层 驱 动 软 件 系 统 内 核 设 备 驱 动 接 口 通 信 协 议 图 形 界 面 标 准 化 浏 览 器 Browser 等 嵌 入 式 操 作 系 统 具 有 通 用 操 作 系 统 的 基 本 特 点, 如 能 够 有 效 管 理 越 来 越 复 杂 的 系 统 资 源 ; 能 够 把 硬 件 虚 拟 化, 使 得 开 发 人 员 从 繁 忙 的 驱 动 程 序 移 植 和 维 护 中 解 脱 出 来 ; 能 够 提 供 库 函 数 标 准 设 备 驱 动 程 序 以 及 工 具 集 等 与 通 用 操 作 系 统 相 比 较, 嵌 入 式 操 作 系 统 在 系 统 实 时 高 效 性 硬 件 的 相 关 依 赖 性 软 件 固 态 化 以 及 应 用 的 专 用 性 等 方 面 具 有 较 为 突 出 的 特 点 目 前 流 行 的 嵌 入 式 操 作 系 统 可 以 为 分 两 类 : 一 类 是 从 运 行 在 个 人 电 脑 上 的 操 作 系 统 移 植 到 嵌 入 式 系 统 中, 形 成 的 嵌 入 式 操 作 系 统, 如 微 软 公 司 的 Windows CE 及 其 新 版 本 SUN 公 司 的 Java 操 作 系 统 嵌 入 式 Linux 等 这 类 系 统 经 过 个 人 电 脑 或 高 性 能 计 算 机 等 产 品 的 长 期 运 行 考 验, 技 术 日 趋 成 熟, 其 相 关 的 标 准 和 软 件 开 发 方 式 已 被 用 户 普 遍 接 受, 同 时 积 累 了 丰 富 的 开 发 工 具 和 应 用 软 件 资 源 另 一 类 是 实 时 操 作 系 统, 如 风 河 公 司 的 VxWorks QNX 系 统 软 件 公 司 的 QNX ATI 的 Nucle-us 等, 这 类 产 品 在 操 作 系 统 的 结 构 和 实 现 上 都 针 对 所 面 向 的 应 用 领 域, 对 实 时 性 和 高 可 靠 性 等 进 行 了 精 巧 设 计, 并 提 供 了 独 立 完 备 的 系 统 开 发 和 测 试 工 具, 较 多 地 应 用 在 军 用 产 品 和 工 业 控 制 等 领 域 中 下 面 介 绍 典 型 的 主 流 嵌 入 式 操 作 系 统 1.6.1 VxWorks VxWorks 操 作 系 统 是 美 国 风 河 公 司 于 1983 年 设 计 开 发 的 一 种 嵌 入 式 实 时 操 作 系 统 (RTOS), 是 Tomado 嵌 入 式 开 发 环 境 的 关 键 组 成 部 分 它 适 用 面 广 适 用 性 强 且 可 靠 性 高, 具 有 多 达 1800 个 功 能 强 大 的 应 用 程 序 接 口 (API), 可 以 用 于 所 有 的 流 行 的 CPU 平 台 美 国 火 星 探 测 器 所 使 用 的 嵌 入 式 实 时 操 作 系 统 就 是 VxWorks 良 好 的 持 续 发 展 能 力 高 性 能 的 内 核 以 及 友 好 的 用 户 开 发 环 境, 使 其 在 嵌 入 式 实 时 操 作 系 统 领 域 占 据 一 席 之 地 VxWorks 具 有 可 裁 剪 微 内 核 结 构, 高 效 的 任 务 管 理, 灵 活 的 任 务 间 通 信, 微 秒 级 的 中 断 处 理, 支 持 POSLX 1003.1b 实 时 扩 展 标 准, 支 持 多 种 物 理 介 质 及 标 准 的 完 整 的 TCP/IP 网 络 协 议 等 优 点, VxWorks 为 程 序 员 提 供 了 高 效 的 实 时 任 务 调 度 中 断 管 理, 实 时 的 系 统 资 源 以 及 实 时 的 任 务 间 通 信 应 用 程 序 员 可 以 将 尽 可 能 多 的 精 力 放 在 应 用 程 序 本 身, 而 不 必 再 去 关 心 系 统 资 源 的 管 理 该 系 统 主 要 应 用 在 单 板 机 数 据 网 络 ( 以 太 网 交 换 机 路 由 器 ) 和 通 信 方 面 等 多 方 面 12

1.6.2 uc/os-ii uc/os-ii 是 著 名 的 源 代 码 公 开 实 时 内 核, 是 专 为 嵌 入 式 系 统 应 用 设 计 的, 可 用 于 8 位 16 位 和 32 位 单 片 机 或 数 字 信 号 处 理 器 (DSP) 它 在 原 版 本 uc/os 的 基 础 上 做 了 重 大 改 进 与 升 级, 并 有 了 近 10 年 的 使 用 实 践, 有 许 多 成 功 应 用 该 实 时 内 核 的 实 例 它 的 主 要 特 点 如 下 : * 公 开 源 代 码 : 很 容 易 把 操 作 系 统 移 植 到 各 个 不 同 的 硬 件 平 台 上 ; * 可 移 植 性 : 绝 大 部 分 源 代 码 是 用 C 语 言 编 写 的, 便 于 移 植 到 其 他 微 处 理 器 上 ; * 可 固 化 ; * 可 裁 剪 性 : 可 有 选 择 地 使 用 需 要 的 系 统 服 务, 以 减 少 所 需 的 存 储 空 间 ; * 占 先 式 : 完 全 是 占 先 式 的 实 时 内 核, 即 总 是 运 行 就 绪 条 件 下 优 先 级 最 高 的 任 务 ; * 多 任 务 : 可 管 理 64 个 任 务, 任 务 的 优 先 级 必 须 是 不 同 的, 不 支 持 时 间 片 轮 转 调 度 法 ; * 可 确 定 性 : 函 数 调 用 与 服 务 的 执 行 时 间 具 有 其 可 确 定 性, 不 依 赖 于 任 务 的 多 少 ; * 实 用 性 和 可 靠 性 : 成 功 应 用 该 实 时 内 核 的 实 例, 是 其 实 用 性 和 可 靠 性 的 最 好 证 据 由 于 uc/os-ii 仅 是 一 个 实 时 内 核, 这 就 意 味 着 它 不 像 其 他 实 时 操 作 系 统 那 样 提 供 给 用 户 的 只 是 一 些 API 函 数 接 口, 还 有 很 多 工 作 需 要 用 户 自 己 去 完 成 1.6.3 Linux Linux 是 一 个 类 似 于 Unix 的 操 作 系 统 它 起 源 于 芬 兰 一 个 名 为 Linus Torvalds 的 业 余 爱 好 者, 但 是 现 在 已 经 是 最 流 行 的 一 款 开 放 源 代 码 的 操 作 系 统 Linux 从 1991 年 问 世 到 现 在, 短 短 十 几 年 的 时 间 内 已 发 展 成 为 一 个 功 能 强 大 设 计 完 善 的 操 作 系 统, 伴 随 网 络 技 术 进 步 而 发 展 起 来 的 Linux OS 已 成 为 微 软 公 司 的 Windows 的 强 劲 对 手 Linux 系 统 不 仅 能 够 运 行 于 PC 平 台, 还 在 嵌 入 式 系 统 方 面 广 泛 应 用 Linux 是 个 与 生 俱 来 的 网 络 操 作 系 统, 成 熟 而 且 稳 定 因 为 是 源 代 码 开 放 软 件, 所 以 不 存 在 黑 箱 技 术, 任 何 人 都 可 以 修 改 它, 或 者 用 它 开 发 自 己 的 产 品 Linux 系 统 是 可 以 定 制 的, 系 统 内 核 目 前 已 经 可 以 做 得 很 小 一 个 带 有 中 文 系 统 及 图 形 化 界 面 的 核 心 程 序 也 可 以 做 到 不 足 1MB, 而 且 同 样 稳 定 Linux 作 为 一 种 可 裁 减 的 软 件 平 台 系 统, 是 发 展 未 来 嵌 入 设 备 产 品 的 绝 佳 资 源, 遍 布 全 球 的 众 多 Linux 爱 好 者 又 能 给 予 Linux 开 发 者 强 大 的 技 术 支 持 因 此,Linux 作 为 嵌 入 式 系 统 新 选 择, 是 非 常 有 发 展 前 途 的 它 的 特 点 是 : * 与 硬 件 芯 片 的 紧 密 结 合 : 后 PC 时 代 的 智 能 设 备 已 经 逐 渐 模 糊 了 硬 件 与 软 件 的 界 限,SOC 系 统 (System On Chip) 的 发 展 就 是 这 种 软 硬 件 无 缝 结 合 趋 势 的 证 明, 将 来 可 能 出 现 在 处 理 器 片 内 嵌 进 操 作 系 统 的 代 码 模 块 嵌 入 式 Linux 比 一 般 操 作 系 统 更 加 接 近 于 硬 件, 并 具 备 了 嵌 入 式 RTOS 的 一 切 特 征 : 实 时 性 及 与 嵌 入 式 处 理 器 的 紧 密 结 合 ; * 开 放 的 源 代 码 : 代 码 的 开 放 性 主 要 体 现 在 源 代 码 可 获 得 上,Linux 代 码 开 发 就 像 是 集 市 式 开 13

发, 任 意 选 择 并 按 自 己 的 意 愿 整 合 出 新 的 产 品 1.6.4 Windows CE Windows CE 是 微 软 开 发 的 一 个 开 放 的 可 升 级 的 32 位 嵌 入 式 操 作 系 统, 是 基 于 掌 上 型 电 脑 类 的 电 子 设 备 操 作 系 统, 它 是 精 简 的 Windows 95 操 作 系 统 Windows CE 的 图 形 用 户 界 面 相 当 出 色 CE 中 的 C 代 表 袖 珍 (Compact) 消 费 (Consumer) 通 信 能 力 (Connectivity) 和 伴 侣 (Companion);E 代 表 电 子 产 品 (Electronics) 与 Windows 95/98/NT 不 同 的 是,Windows CE 所 有 源 代 码 全 部 由 微 软 自 行 开 发, 但 Windows CE 是 基 于 Win32API 重 新 开 发 的 新 型 信 息 设 备 平 台 Windows CE 具 有 模 块 化 结 构 化 和 基 于 Win32 应 用 程 序 接 口 以 及 处 理 器 无 关 等 特 点 Windows CE 1.0 最 早 于 1996 年 推 出, 是 单 色 的 Windows 95 简 化 版 本 1997 年 秋 季 Comdex 大 会 上 公 布 的 Windows CE 2.0 仍 是 基 于 Win95 的 操 作 系 统, 效 率 远 高 于 1.0 版 Windows CE 3.0 是 微 软 的 Windows Compact Edition, 已 摆 脱 旧 有 的 Windows 95 简 化 格 式, 是 一 套 全 新 的 操 作 系 统, 支 持 5 种 CPU:x86, PowerPC, ARM, MIPS, SH3/4 并 且 改 名 为 Windows for Pocket PC, 简 称 Pocket PC 2002 年 1 月 微 软 又 推 出 Windows CE.Net, 即 Windows CE 4.0 2004 年 5 月 份 推 出 Windows CE 5.0, 开 放 有 250 万 行 源 代 码 2006 年 11 月, 微 软 推 出 Windows Embedded CE 6.0 Windows CE 可 以 使 用 在 各 式 各 样 的 系 统 上, 最 有 名 的 是 Pocket PC 以 及 微 软 的 SmartPhone 其 他 较 不 为 人 知 的 设 备 包 括 微 软 的 车 用 计 算 机 机 顶 盒 生 产 在 线 的 控 制 设 备 公 共 场 所 的 信 息 站 (Kiosk) 电 子 辞 典 等, 有 些 设 备 甚 至 没 有 任 何 人 机 界 面 Windows CE 的 设 计 目 标 是 : 模 块 化 及 可 伸 缩 性 实 时 性 能 好 通 信 能 力 强 大 支 持 多 种 CPU 它 的 设 计 可 以 满 足 多 种 设 备 的 需 要, 一 个 典 型 的 基 于 Windows CE 的 嵌 入 系 统 通 常 为 某 个 特 定 用 途 而 设 计, 并 在 不 联 机 的 情 况 下 工 作 它 要 求 所 使 用 的 操 作 系 统 体 积 较 小, 内 部 兼 有 对 中 断 的 响 应 功 能 它 的 的 特 点 有 : * 具 有 灵 活 的 电 源 管 理 功 能, 包 括 睡 眠 / 唤 醒 模 式 ; * 使 用 了 对 象 存 储 (object store) 技 术, 包 括 文 件 系 统 注 册 表 及 数 据 库 它 还 具 有 很 多 高 性 能 高 效 率 的 操 作 系 统 特 性, 包 括 按 需 换 页 共 享 存 储 交 叉 处 理 同 步 支 持 大 容 量 堆 等 (heap); * 拥 有 良 好 的 通 信 能 力 广 泛 支 持 各 种 通 信 硬 件, 亦 支 持 直 接 的 局 域 连 接 以 及 拨 号 连 接, 并 提 供 与 PC 内 部 网 以 及 互 联 网 的 连 接, 还 提 供 与 Windows9x/NT 的 最 佳 集 成 和 通 信 ; * 支 持 嵌 套 中 断, 允 许 更 高 优 先 级 别 的 中 断 首 先 得 到 响 应, 而 不 是 等 待 低 级 别 的 ISR 完 成 这 使 得 该 操 作 系 统 具 有 嵌 入 式 操 作 系 统 所 要 求 的 实 时 性 ; * 更 好 的 线 程 响 应 能 力 对 高 级 别 IST( 中 断 服 务 线 程 ) 的 响 应 时 间 上 限 的 要 求 更 加 严 格, 在 线 程 响 应 能 力 方 面 的 改 进, 帮 助 开 发 人 员 掌 握 线 程 转 换 的 具 体 时 间, 并 通 过 增 强 的 监 控 能 力 和 对 硬 件 的 控 14

制 能 力 帮 助 他 们 创 建 新 的 嵌 入 式 应 用 程 序 ; * 256 个 优 先 级 别 可 以 使 开 发 人 员 在 控 制 嵌 入 式 系 统 的 时 序 安 排 方 面 有 更 大 的 灵 活 性 ; * Windows CE 的 API 是 Win32API 的 一 个 子 集, 支 持 近 1500 个 Win32API 有 了 这 些 API, 足 可 以 编 写 任 何 复 杂 的 应 用 程 序 当 然, 在 Windows CE 系 统 中, 所 提 供 的 API 也 可 以 随 具 体 应 用 的 需 求 而 定 在 掌 上 型 电 脑 中,Windows CE 包 含 如 下 一 些 重 要 组 件 :Pocket Outlook 及 其 组 件 语 音 录 音 机 移 动 频 道 远 程 拨 号 访 问 世 界 时 钟 计 算 器 多 种 输 入 法 GBK 字 符 集 中 文 TTF 字 库 英 汉 双 向 词 典 袖 珍 浏 览 器 电 子 邮 件 Pooket Office 系 统 设 置 Windows CE Services 软 件 等 1.6.5 RTEMS RTEMS, 即 : 实 时 多 处 理 器 系 统 (Real Time Executive for Multiprocessor Systems) 是 一 个 开 源 的 无 版 税 实 时 嵌 入 操 作 系 统 RTOS 它 最 早 用 于 美 国 国 防 系 统, 早 期 的 名 称 为 实 时 导 弹 系 统 (Real Time Executive for Missile Systems), 后 来 改 名 为 实 时 军 用 系 统 (Real Time Executive for Military Systems), 现 在 由 OAR 公 司 负 责 版 本 的 升 级 与 维 护 目 前 无 论 是 航 空 航 天 军 工, 还 是 民 用 领 域 RTEMS 都 有 着 极 为 广 泛 的 应 用 从 体 系 结 构 上 来 看,RTEMS 是 微 内 核 抢 占 式 的 实 时 系 统, 它 具 有 下 面 的 优 点 : * 优 秀 的 实 时 性 能 ; * 支 持 硬 实 时 和 软 实 时 ( 可 抢 占 内 核 ); * 支 持 优 先 级 继 承, 防 止 优 先 级 反 转 ; * 支 持 单 周 期 调 度 ; * 支 持 优 先 级 高 度 协 议 ; * 非 常 稳 定 ; * 运 行 速 度 快 ; * 支 持 多 种 CPU, 无 论 是 ARM MIPS PowerPC i386 还 是 DSP AVR Zilog, 都 可 以 找 到 对 应 的 BSP; * 高 度 可 剪 裁 内 核 ( 目 标 系 统 小 只 有 30Kb; 大 可 上 百 兆 ); * 占 用 系 统 资 源 小, 在 32 位 系 统 中 最 小 的 内 核 只 有 30Kb 左 右 ; * 支 持 多 处 理 器 ( 不 同 于 SMP,RTEMS 中 多 个 处 理 器 是 协 作 关 系 ); * 提 供 POSIX API,Linux/UNIX 下 的 程 序 可 以 方 便 移 植 ; * 提 供 完 整 的 BSD 的 TCP/IP 协 议 栈 以 及 FTP WebServer NFS 等 服 务 ; * 使 用 面 向 对 象 思 想 设 计, 可 以 大 大 缩 短 开 发 周 期 ; 15

* 核 心 代 码 使 用 C/C++ 写 作, 可 移 植 性 好 ; * 支 持 ISO/ANSI C 库 ; * 支 持 ISO/ANSI C++ 库 以 及 STL 库 ; * 支 持 精 简 的 可 重 入 glibc 库 ; * 支 持 图 形 用 户 界 面 (Microwindows/Nano-X); * 支 持 文 件 系 统 (FAT,IMFS 等 ); * 支 持 多 种 调 试 模 式 ( 包 括 GDB,DDD, 串 口 调 试, 以 太 网 调 试 ); * 支 持 32 位 处 理 器,Tiny RTEMS 项 目 将 对 8 位 和 16 位 处 理 器 进 行 支 持 ; * 支 持 JAVA 虚 拟 机 RTEMS 的 官 方 网 站 是 www.rtems.com, 当 前 最 新 的 稳 定 版 本 是 4.7.1, 开 发 版 是 4.9 在 国 内, RTEMS 主 要 用 在 航 空 航 天 和 军 工 领 域 RTEMS 在 性 能 上 丝 毫 不 输 于 VxWorks, 在 通 信 航 空 航 天 工 业 控 制 军 事 等 领 域 有 着 非 常 广 泛 的 应 用, 在 系 统 实 现 上,RTEMS 和 VxWorks 以 及 NucleusPlus 的 实 现 基 本 相 同 1.6.6 Palm OS Palm 是 3Com 公 司 的 产 品, 其 操 作 系 统 为 Palm OS Palm OS 是 一 种 32 位 的 嵌 入 式 操 作 系 统 Palm 提 供 了 串 行 通 信 接 口 和 红 外 线 传 输 接 口, 利 用 它 可 以 方 便 地 与 其 他 外 部 设 备 通 信 传 输 数 据 Palm OS 是 一 套 极 具 开 放 性 的 系 统, 现 在 有 大 约 数 千 种 专 门 为 Palm OS 编 写 的 应 用 程 序 从 程 序 内 容 上 看, 小 到 个 人 管 理 游 戏, 大 到 行 业 解 决 方 案,Palm OS 无 所 不 含 在 丰 富 的 软 件 支 持 下, 基 于 Palm OS 的 掌 上 电 脑 功 能 得 以 不 断 扩 展 Palm OS 是 一 套 专 门 为 掌 上 电 脑 开 发 的 OS 在 编 写 程 序 时,Palm OS 充 分 考 虑 了 掌 上 电 脑 内 存 相 对 较 小 的 情 况, 只 占 用 非 常 小 的 内 存 由 于 基 于 Palm OS 编 写 的 应 用 程 序 占 用 的 空 间 也 非 常 小 ( 通 常 只 有 几 十 KB), 因 此, 基 于 Palm OS 掌 上 电 脑 ( 虽 然 只 有 同 MB 的 RAM) 可 以 运 行 众 多 应 用 程 序 由 于 Palm 产 品 的 最 大 特 点 是 使 用 简 便 机 体 轻 巧, 因 此 决 定 了 Palm OS 具 有 以 下 特 点 : * 操 作 系 统 的 节 能 功 能 : 由 于 掌 上 电 脑 要 求 使 用 电 源 尽 可 能 小, 因 此 在 Palm OS 的 应 用 程 序 中, 如 果 没 有 事 件 运 行, 则 系 统 设 备 进 入 半 休 眠 (Doze) 状 态 ; 如 果 应 用 程 序 停 止 活 动 一 段 时 间, 则 系 统 自 动 进 入 休 眠 (Sleep) 状 态 ; * 合 理 的 内 存 管 理 :Palm 的 存 储 器 全 部 是 可 读 写 的 快 速 R AM, 动 态 R AM(Dynamic R AM) 类 似 于 PC 机 上 的 R AM, 它 为 全 局 变 量 和 其 他 不 需 永 久 保 存 的 数 据 提 供 临 时 的 存 储 空 间 ; 存 储 R AM (Storage RAM) 类 似 于 PC 机 上 的 硬 盘, 可 以 永 久 保 存 应 用 程 序 和 数 据 ; * Palm OS 的 数 据 以 数 据 库 (Database) 的 格 式 存 储 : 数 据 库 由 一 组 记 录 (Records) 和 一 些 数 据 16

库 头 信 息 组 成 为 保 证 程 序 处 理 速 度 和 存 储 器 空 间, 在 处 理 数 据 的 时 候,Palm OS 不 是 把 数 据 从 存 储 堆 (Storage Heap) 拷 贝 到 动 态 堆 (Dynamic Heap) 后 再 进 行 处 理, 而 是 在 存 储 堆 中 直 接 处 理 为 避 免 错 误 地 调 用 存 储 器 地 址,Palm OS 规 定, 一 切 数 据 处 理 都 必 须 调 用 其 内 存 管 理 器 的 API 来 实 现 ; * PC 机 协 同 工 作 :Palm OS HotSync 软 件 允 许 你 将 掌 上 电 脑 信 息 备 份 到 PC 机 上, 这 样 即 使 你 的 掌 上 电 脑 丢 失 或 者 损 坏, 数 据 和 大 部 分 应 用 信 息 也 可 以 恢 复, 保 证 数 据 永 不 丢 失 ; * 易 于 使 用 ; 无 论 同 步 数 据, 安 排 日 程, 还 是 使 用 palm 内 置 的 手 写 输 入 法 输 入 英 文 信 息, 或 者 利 用 其 他 语 言 和 方 式 的 文 本 输 入 工 具,Palm 总 是 提 供 简 单 快 捷 用 法 ; * 有 线 和 无 线 通 信 : 大 部 分 使 用 Palm Powered 的 硬 件 具 有 红 外 传 送 功 能, 使 掌 上 电 脑 用 户 之 间 很 容 易 交 换 信 息, 许 多 型 号 Palm 设 备 可 以 利 用 有 线 调 制 解 调 器, 支 持 高 速 无 线 局 域 网 连 接 和 蓝 牙 无 线 网 络 标 准 的 掌 上 电 脑 扩 展 设 备 一 些 Palm 系 统 具 有 移 动 电 话 功 能, 支 持 CDMA 和 GSM 网 络 1.6.7 国 产 嵌 入 式 实 时 操 作 系 统 1.DeltaOS DeltaOS 是 中 国 完 全 自 主 研 发 的 最 成 熟 的 嵌 入 式 强 实 时 多 任 务 操 作 系 统, 该 操 作 系 统 已 应 用 于 飞 机 导 航 核 动 力 控 制 雷 达 终 端 录 取 平 台 等 军 用 与 民 用 领 域 DeltaOS 可 以 嵌 入 到 以 32 位 中 央 处 理 器 为 核 心 的 各 种 电 子 设 备 中 ; 作 为 应 用 程 序 运 行 的 支 撑 环 境,DeltaOS 所 提 供 的 各 种 机 制 可 以 使 电 子 设 备 中 的 应 用 程 序 在 多 任 务 环 境 下 运 行, 同 时 满 足 开 发 人 员 在 开 发 电 子 设 备 时 的 基 本 需 求, 比 如 : 实 时 响 应 外 部 事 件 存 储 管 理 以 及 联 网 需 求 等 2.Hopen 操 作 系 统 Hopen 是 由 北 京 凯 思 软 件 集 团 开 发 的 嵌 入 式 操 作 系 统, 是 我 国 具 有 自 主 知 识 产 权 的 智 能 操 作 系 统 Hopen 是 针 对 嵌 入 式 系 统 特 点 设 计 的 一 个 实 时 多 任 务 操 作 系 统, 由 一 个 体 积 很 小 的 微 内 核 及 一 些 可 以 根 据 需 要 进 行 定 制 的 系 统 模 块 组 成 Hopen 核 心 一 般 为 10KB 左 右 大 小, 即 便 加 上 其 它 必 要 的 模 块, 所 占 用 的 空 间 也 很 小, 并 具 有 实 时 多 任 务 多 线 程 的 系 统 特 征 虽 然 本 土 公 司 积 极 开 发 国 产 嵌 入 式 操 作 系 统, 但 是 目 前 看 来, 这 些 系 统 的 应 用 率 还 比 较 低, 本 土 嵌 入 式 操 作 系 统 的 路 还 很 长 1.7 嵌 入 式 系 统 在 不 同 领 域 的 应 用 电 子 等 嵌 入 式 技 术 应 用 前 景 广 阔, 领 域 包 括 : 信 息 家 电 工 业 控 制 环 境 工 程 军 事 国 防 汽 车 电 子 医 疗 1. 信 息 家 电 17

嵌 入 式 系 统 在 信 息 家 电 中 应 用 得 很 广 泛, 如 移 动 电 话 数 码 相 机 便 携 式 摄 像 机 MP3/MP4 GPS PMP 等 产 品 中, 均 可 以 见 到 嵌 入 式 技 术 目 前, 具 有 互 动 用 户 界 面 ( 例 如 触 摸 屏 控 制 ) 能 够 远 程 控 制 智 能 管 理 的 信 息 家 电 代 表 了 嵌 入 式 系 统 的 发 展 方 向 2. 工 业 控 制 目 前 有 大 量 的 嵌 入 式 处 理 器 应 用 于 诸 如 工 业 过 程 控 制 数 控 设 备 电 力 系 统 运 行 和 检 测 等 方 面 早 期 的 工 业 用 嵌 入 式 系 统 产 品 虽 然 只 采 用 低 级 处 理 器, 完 成 简 单 的 控 制 和 监 控 任 务, 但 是 其 使 用 数 量 非 常 巨 大 随 着 技 术 的 发 展, 出 现 了 具 有 智 能 的 嵌 入 式 工 控 系 统, 使 得 32 位 处 理 器 成 为 主 流 在 工 业 控 制 设 备 中, 一 些 工 业 控 制 机 采 用 以 X86 为 核 心 处 理 器 的 计 算 机 系 统 由 于 它 们 具 有 体 积 小 稳 定 可 靠 等 特 点, 受 到 用 户 的 青 睐 不 过 这 些 工 业 控 制 机 采 用 的 往 往 是 DOS 和 Windows 操 作 系 统, 虽 然 具 有 嵌 入 式 的 特 点, 却 不 能 称 为 纯 粹 的 嵌 入 式 系 统 随 着 节 能 环 保 意 识 的 提 升,32 位 MCU 在 工 业 控 制 中 的 应 用 加 快 3. 环 境 工 程 传 感 器 网 络 作 为 未 来 四 大 支 柱 产 业 之 一, 经 常 用 于 高 危 环 境 的 检 测 中 当 前 许 多 公 司 都 开 发 针 对 环 境 检 测 的 传 感 器 网 络 类 嵌 入 式 节 点 4. 军 事 国 防 嵌 入 式 系 统 广 泛 应 用 于 军 事 指 挥 通 信 系 统 和 兵 器 系 统 中 当 前 各 种 先 进 的 武 器 控 制 系 统 如 导 弹 和 鱼 雷 控 制, 以 及 坦 克 飞 机 中 的 稳 定 控 制 成 像 控 制 制 导 系 统 乃 至 单 兵 系 统 等, 都 有 嵌 入 式 系 统 的 身 影 例 如, 下 图 是 洛 克 希 德. 马 丁 公 司 推 出 的 一 种 可 大 幅 度 增 加 士 兵 负 重 能 力 的 金 属 骨 架 这 种 新 型 装 备 全 称 人 类 负 重 外 骨 骼 ( 简 称 HULC), 是 一 种 能 够 通 过 提 供 外 力 来 满 足 士 兵 对 机 动 性 和 支 撑 性 需 要 的 机 器 人 技 术 装 备 洛. 马 公 司 介 绍 称, 目 前,HULC 系 统 的 最 大 负 重 量 可 以 达 到 90.7 千 克 士 兵 穿 上 这 个 HULC 就 变 身 为 科 幻 电 影 中 的 大 力 士, 可 以 背 负 很 重 的 装 备 仍 然 健 步 如 飞 轻 松 地 翻 山 越 岭, 其 实 HULC 的 核 心 就 是 基 于 性 能 强 大 的 微 控 制 器 和 传 感 器 的 嵌 入 式 系 统, 它 通 过 传 感 器 感 测 士 兵 的 每 一 个 动 作, 然 后 微 控 制 器 让 HULC 背 负 的 重 量 通 过 电 池 驱 动 的 金 属 骨 骼 转 移 到 地 面 上, 从 而 减 轻 士 兵 的 负 荷 18

图 1.5 可 增 加 士 兵 负 重 能 力 的 金 属 骨 架 系 统 5. 汽 车 电 子 随 着 汽 车 向 机 电 化 和 智 能 化 发 展, 汽 车 中 的 嵌 入 式 应 用 日 益 普 遍, 据 统 计, 以 前 平 均 每 部 汽 车 大 约 会 用 到 20 颗 MCU, 而 现 在 汽 车 中 使 用 的 MCU 数 量 已 达 40-60 颗, 部 分 高 档 轿 车 MCU 数 量 已 经 达 到 上 百 颗, 这 些 MCU 应 用 于 汽 车 车 身 控 制 信 息 娱 乐 发 动 机 控 制 和 安 全 防 盗 等 各 个 方 面, 尤 其 是 近 年 来, 随 着 汽 车 总 线 技 术 如 CAN 总 线 Lin 总 线 的 普 及, 汽 车 嵌 入 式 应 用 呈 现 加 速 势 态 6. 医 疗 电 子 随 着 越 来 越 多 的 国 家 步 入 老 龄 化, 人 们 的 保 健 意 识 日 益 提 高, 这 给 嵌 入 式 系 统 带 来 了 新 的 用 武 之 地, 我 们 目 前 熟 悉 的 血 糖 仪 数 字 体 温 计 血 压 计 等 便 携 式 保 健 产 品 都 属 于 嵌 入 式 系 统 的 范 畴, 而 B 超 设 备 监 护 仪 CT 等 大 型 医 疗 设 备 也 属 于 嵌 入 式 系 统, 此 外, 那 些 可 以 进 入 人 体 体 内 进 行 疾 病 探 测 和 治 疗 的 药 丸 摄 像 机 探 头 等 也 属 于 嵌 入 式 系 统 图 1.6 藏 有 摄 像 机 的 药 丸 19

第 2 章 微 控 制 器 (MCU) 概 述 微 控 制 器 (Microcontroller) 是 将 微 型 计 算 机 的 主 要 部 分 集 成 在 一 个 芯 片 上 的 单 芯 片 微 型 计 算 机 由 于 微 控 制 器 目 前 在 产 品 的 品 种 和 数 量 上 是 所 有 嵌 入 式 处 理 器 中 最 多 的, 其 单 片 化 使 应 用 系 统 的 体 积 大 大 减 小, 从 而 使 功 耗 和 成 本 大 幅 度 下 降 可 靠 性 提 高, 决 定 了 微 控 制 器 是 嵌 入 式 系 统 的 应 用 主 流 所 以, 从 本 章 开 始 将 重 点 介 绍 微 控 制 器 原 理 结 构 及 开 发 微 控 制 器 诞 生 于 20 世 纪 70 年 代 中 期, 经 过 20 多 年 的 发 展, 其 成 本 越 来 越 低, 而 性 能 越 来 越 强 大, 这 使 其 应 用 已 经 无 处 不 在 遍 及 各 个 领 域 例 如 电 机 控 制 条 码 阅 读 器 / 扫 描 器 消 费 类 电 子 游 戏 设 备 电 话 楼 宇 安 全 与 门 禁 控 制 工 业 控 制 与 自 动 化 和 白 色 家 电 ( 洗 衣 机 微 波 炉 ) 等 微 控 制 器 又 称 为 单 片 机, 因 为 它 将 微 型 计 算 机 的 主 要 组 成 CPU 存 储 器 和 输 入 输 出 单 元 都 集 成 在 了 一 个 单 芯 片 上, 故 称 单 片 机 微 控 制 器 一 般 以 某 个 微 处 理 器 内 核 为 核 心, 芯 片 内 部 集 成 了 存 储 器 总 线 定 时 器 看 门 狗 I/O A/D D/A LCD 驱 动 电 源 管 理 等 功 能 模 块, 为 适 应 嵌 入 式 应 用, 一 般 微 控 制 器 会 衍 生 出 多 个 型 号, 以 便 让 它 和 应 用 最 大 程 度 匹 配, 所 以 微 控 制 器 的 种 类 非 常 繁 多, 据 不 完 全 统 计, 全 球 目 前 单 片 机 种 类 已 经 超 过 上 千 种 微 控 制 器 可 从 不 同 方 面 进 行 分 类 : 根 据 数 据 总 线 宽 度 可 分 为 8 位 16 位 和 32 位 ; 根 据 存 储 器 结 构 可 分 为 哈 佛 结 构 (Harvard) 和 冯. 诺 伊 曼 (Von Neumann) 结 构 ; 根 据 内 嵌 程 序 存 储 器 的 类 别 可 分 为 OTP 掩 膜 EPROM/EEPROM 和 闪 存 Flash; 根 据 指 令 结 构 又 可 分 为 CISC(Complex Instruction Set Computer) 和 RISC(Reduced Instruction Set Computer) 微 控 制 器 2.1 什 么 是 哈 佛 结 构 和 冯. 诺 伊 曼 结 构 哈 佛 结 构 是 一 种 将 程 序 指 令 存 储 和 数 据 存 储 分 开 的 存 储 器 结 构, 中 央 处 理 器 首 先 到 程 序 指 令 存 储 器 中 读 取 程 序 指 令 内 容, 解 码 后 得 到 数 据 地 址, 再 到 相 应 的 数 据 存 储 器 中 读 取 数 据, 并 进 行 下 一 步 的 操 作 ( 通 常 是 执 行 ) 程 序 指 令 存 储 和 数 据 存 储 分 开, 可 以 使 指 令 和 数 据 有 不 同 的 数 据 宽 度, 如 Microchip 公 司 的 PIC16 芯 片 的 程 序 指 令 是 14 位 宽 度, 而 数 据 是 8 位 宽 度 哈 佛 结 构 的 微 处 理 器 通 常 具 有 较 高 的 执 行 效 率 其 程 序 指 令 和 数 据 指 令 分 开 组 织 和 存 储, 执 行 时 可 以 预 先 读 取 下 一 条 指 令 目 前 使 用 哈 佛 结 构 的 中 央 处 理 器 和 微 控 制 器 有 很 多, 除 了 上 面 提 到 的 Microchip 公 司 的 PIC 系 列 芯 片, 还 有 摩 托 罗 拉 公 司 的 MC68 系 列 Zilog 公 司 的 Z8 系 列 ATMEL 公 司 的 AVR 系 列 和 ARM 公 司 的 ARM9 ARM10 和 ARM11 以 及 ARM 公 司 最 新 的 Cortex-M3 内 核 都 属 于 哈 佛 结 构, 基 于 该 内 核 的 恩 智 浦 LPC1700 系 列 MCU 具 备 极 高 的 运 算 能 力 和 中 断 响 应 能 力 冯. 诺 伊 曼 结 构 也 称 普 林 斯 顿 结 构, 是 一 种 将 程 序 指 令 存 储 器 和 数 据 存 储 器 合 并 在 一 起 的 存 储 器 20

结 构 程 序 指 令 存 储 地 址 和 数 据 存 储 地 址 指 向 同 一 个 存 储 器 的 不 同 物 理 位 置, 因 此 程 序 指 令 和 数 据 的 宽 度 相 同, 如 英 特 尔 公 司 的 8086 中 央 处 理 器 的 程 序 指 令 和 数 据 都 是 16 位 宽 目 前 使 用 冯. 诺 伊 曼 结 构 的 中 央 处 理 器 和 微 控 制 器 有 很 多 除 了 上 面 提 到 的 英 特 尔 公 司 的 8086, 英 特 尔 公 司 的 其 他 中 央 处 理 器 ARM 公 司 的 ARM7 MIPS 公 司 的 MIPS 处 理 器 也 采 用 了 冯. 诺 伊 曼 结 构 2.2 微 控 制 器 的 发 展 历 程 微 控 制 器 就 是 单 片 机, 所 以 微 控 制 器 的 发 展 历 史 就 是 单 片 机 的 发 展 历 史, 单 片 机 最 早 被 用 在 工 业 控 制 领 域 最 初 的 设 计 理 念 是 通 过 将 大 量 外 围 设 备 和 CPU 集 成 在 一 个 芯 片 中, 使 计 算 机 系 统 更 小, 更 容 易 集 成 进 复 杂 的 而 对 体 积 要 求 严 格 的 控 制 设 备 当 中 Zilog 的 Z80 是 最 早 按 照 这 种 思 想 设 计 出 的 处 理 器, 从 此 以 后, 单 片 机 和 专 用 处 理 器 的 发 展 便 分 道 扬 镳 早 期 的 单 片 机 都 是 8 位 或 4 位 的 其 中 最 成 功 的 是 Intel 的 8031, 因 为 简 单 可 靠 而 性 能 不 错 获 得 了 好 评 此 后 在 8031 上 发 展 出 了 MCS51 系 列 单 片 机 系 统 基 于 这 一 系 统 的 单 片 机 系 统 直 到 现 在 还 在 广 泛 使 用 随 着 工 业 控 制 需 求 提 高, 开 始 出 现 了 16 位 单 片 机, 但 因 为 性 价 比 不 理 想 并 未 得 到 很 广 泛 的 应 用 90 年 代 后 随 着 消 费 电 子 产 品 大 发 展, 单 片 机 技 术 得 到 了 巨 大 的 提 高 随 着 Intel i960 系 列 特 别 是 后 来 的 ARM 系 列 的 广 泛 应 用,32 位 单 片 机 迅 速 取 代 16 位 单 片 机 的 高 端 地 位, 并 且 进 入 主 流 市 场 而 传 统 的 8 位 单 片 机 的 性 能 也 得 到 了 飞 速 提 高, 集 成 度 大 大 提 升, 其 处 理 能 力 比 最 初 的 产 品 提 高 了 数 百 倍 目 前, 高 端 的 32 位 单 片 机 主 频 已 经 超 过 1GHz, 性 能 可 以 和 PC 处 理 器 媲 美, 一 些 公 司 还 推 出 了 1 美 元 价 格 的 32 位 MCU, 其 性 价 比 得 到 极 大 提 升 当 代 单 片 机 系 统 已 经 不 再 只 在 裸 机 环 境 下 开 发 和 使 用, 大 量 专 用 的 嵌 入 式 操 作 系 统 被 广 泛 应 用 在 全 系 列 的 单 片 机 上 图 2.1 最 早 的 微 控 制 器 Zilog 公 司 的 Z80 纵 观 单 片 机 的 发 展 历 史, 可 以 看 到 单 片 机 经 历 了 SCM MCU SoC 三 大 阶 段 第 一 阶 段 :SCM 即 单 片 微 型 计 算 机 (Single Chip Microcomputer) 阶 段, 主 要 是 寻 求 最 佳 的 单 片 形 态 嵌 入 式 系 统 的 最 佳 体 系 结 构, 在 开 创 嵌 入 式 系 统 独 立 发 展 道 路 上,Intel 公 司 功 不 可 没 21

第 二 阶 段 :MCU 即 微 控 制 器 (Micro Controller Unit) 阶 段, 主 要 的 技 术 发 展 方 向 是 : 不 断 扩 展 满 足 嵌 入 式 应 用 中 对 象 系 统 要 求 的 各 种 外 围 电 路 与 接 口 电 路, 凸 显 其 对 象 的 智 能 化 控 制 能 力 它 所 涉 及 的 领 域 都 与 对 象 系 统 相 关, 因 此, 发 展 MCU 的 重 任 不 可 避 免 地 落 在 电 气 电 子 技 术 厂 家 身 上 从 这 一 角 度 来 看,Intel 逐 渐 淡 出 MCU 的 发 展 也 有 其 客 观 因 素 在 发 展 MCU 方 面, 最 著 名 的 厂 家 当 数 Philips 公 司 Philips 公 司 以 其 在 嵌 入 式 应 用 方 面 的 巨 大 优 势, 将 MCS-51 从 单 片 微 型 计 算 机 迅 速 发 展 到 微 控 制 器 因 此, 当 我 们 回 顾 嵌 入 式 系 统 发 展 道 路 时, 不 要 忘 记 Intel 和 Philips 的 历 史 功 绩, 现 在 恩 智 浦 (NXP) 公 司 除 了 继 续 将 Philips 公 司 的 单 片 机 发 展 外, 还 推 出 了 大 量 基 于 ARM 内 核 的 微 控 制 器, 在 后 面 的 章 节 我 们 将 详 细 介 绍 第 三 阶 段 : 随 着 微 电 子 技 术 IC 设 计 EDA 工 具 的 发 展, 基 于 SoC 的 单 片 机 应 用 系 统 设 计 会 有 较 大 的 发 展 因 此, 对 单 片 机 的 理 解 可 以 从 单 片 微 型 计 算 机 单 片 微 控 制 器 延 伸 到 单 片 应 用 系 统 从 工 艺 角 度 对 单 片 机 的 发 展 进 行 概 括, 基 本 发 展 历 程 如 下 : 第 一 代 : 七 十 年 代 后 期,4 位 逻 辑 控 制 器 件 发 展 到 8 位 使 用 NMOS 工 艺 ( 速 度 低, 功 耗 大 集 成 度 低 ) 代 表 产 品 :MC6800 Intel 8048 等 第 二 代 : 八 十 年 代 初, 采 用 CMOS 工 艺, 并 逐 渐 被 高 速 低 功 耗 的 HMOS 工 艺 代 替 代 表 产 品 : MC146805 Intel 8051 等 第 三 代 : 近 十 年 来,MCU 的 发 展 出 现 了 许 多 新 特 点 : * 在 技 术 上, 由 可 扩 展 总 线 型 向 纯 单 片 型 发 展, 即 只 能 工 作 在 单 片 方 式 ; * MCU 的 扩 展 方 式 从 并 行 总 线 型 发 展 出 各 种 串 行 总 线 ; * 将 多 个 CPU 集 成 到 一 个 MCU 中 ; * 在 降 低 功 耗, 提 高 可 靠 性 方 面,MCU 工 作 电 压 已 降 至 3.3V 第 四 代 :FLASH 的 使 用 使 MCU 技 术 进 入 了 第 四 代 2.3 微 处 理 器 的 应 用 领 域 目 前 微 控 制 器 渗 透 到 我 们 生 活 的 各 个 领 域, 导 弹 的 导 航 装 置, 飞 机 上 各 种 仪 表 的 控 制, 计 算 机 的 网 络 通 讯 与 数 据 传 输, 工 业 自 动 化 过 程 的 实 时 控 制 和 数 据 处 理, 广 泛 使 用 的 各 种 智 能 IC 卡, 民 用 豪 华 轿 车 的 安 全 保 障 系 统, 录 像 机 摄 像 机 全 自 动 洗 衣 机 的 控 制, 以 及 程 控 玩 具 电 子 宠 物 等 等, 这 些 都 离 不 开 微 控 制 器, 更 不 用 说 自 动 控 制 领 域 的 机 器 人 智 能 仪 表 医 疗 器 械 了 因 此, 微 控 制 器 的 学 习 开 发 与 应 用 将 造 就 出 一 批 计 算 机 应 用 与 智 能 化 控 制 的 科 学 家 工 程 师 微 控 制 器 的 应 用 大 致 可 分 如 下 几 个 范 畴 : 1. 在 智 能 仪 器 仪 表 上 的 应 用 22

微 控 制 器 具 有 体 积 小 功 耗 低 控 制 功 能 强 扩 展 灵 活 微 型 化 和 使 用 方 便 等 优 点, 广 泛 应 用 于 仪 器 仪 表 中, 结 合 不 同 类 型 的 传 感 器, 可 实 现 诸 如 电 压 功 率 频 率 湿 度 温 度 流 量 速 度 厚 度 角 度 长 度 硬 度 元 素 压 力 等 物 理 量 的 测 量 采 用 微 控 制 器 控 制 使 得 仪 器 仪 表 数 字 化 智 能 化 微 型 化, 且 功 能 比 起 采 用 电 子 或 数 字 电 路 更 加 强 大 例 如 精 密 的 测 量 设 备 ( 功 率 计, 示 波 器, 各 种 分 析 仪 ) 2. 在 工 业 控 制 中 的 应 用 用 微 控 制 器 可 以 构 成 形 式 多 样 的 控 制 系 统 数 据 采 集 系 统 例 如 工 厂 流 水 线 的 智 能 化 管 理, 电 梯 智 能 化 控 制 各 种 报 警 系 统, 与 计 算 机 联 网 构 成 二 级 控 制 系 统 等 3. 在 家 用 电 器 中 的 应 用 可 以 这 样 说, 现 在 的 家 用 电 器 基 本 上 都 采 用 了 微 控 制 器 控 制, 从 电 饭 煲 洗 衣 机 电 冰 箱 空 调 机 彩 电 到 其 他 音 响 视 频 器 材, 可 谓 五 花 八 门, 无 所 不 在 目 前, 大 量 微 控 制 器 还 应 用 于 电 子 宠 物 智 能 玩 具 和 玩 具 机 器 人, 这 些 微 控 制 器 的 应 用 提 升 了 电 子 产 品 的 智 能 级 别, 使 电 子 产 品 可 以 和 人 产 生 互 动, 例 如 下 图 所 示 的 恐 龙 Pelo 采 用 了 多 个 微 控 制 器 和 传 感 器, 可 以 根 据 人 的 动 作 而 做 出 不 同 的 反 应 图 2.2 很 有 人 气 的 智 能 恐 龙 宝 宝 pelo 就 采 用 了 多 个 MCU 23

4. 在 计 算 机 网 络 和 通 信 领 域 中 的 应 用 现 代 微 控 制 器 普 遍 具 备 通 信 接 口, 可 以 很 方 便 地 与 计 算 机 进 行 数 据 通 信, 为 在 计 算 机 网 络 和 通 信 设 备 间 的 应 用 提 供 了 极 好 的 物 质 条 件, 现 在 的 通 信 设 备 基 本 上 都 实 现 了 微 控 制 器 智 能 控 制, 从 电 话 机 小 型 程 控 交 换 机 楼 宇 自 动 通 信 呼 叫 系 统 列 车 无 线 通 信 再 到 日 常 工 作 中 随 处 可 见 的 移 动 电 话, 集 群 移 动 通 信, 无 线 电 对 讲 机 等 5. 微 控 制 器 在 医 用 设 备 领 域 中 的 应 用 微 控 制 器 在 医 用 设 备 中 的 用 途 亦 相 当 广 泛, 例 如 医 用 呼 吸 机 各 种 分 析 仪 监 护 仪 超 声 诊 断 设 备 及 病 床 呼 叫 系 统 等 等 6. 在 各 种 大 型 电 器 中 的 模 块 化 应 用 某 些 专 用 微 控 制 器 设 计 用 于 实 现 特 定 功 能, 从 而 在 各 种 电 路 中 进 行 模 块 化 应 用, 而 不 要 求 使 用 人 员 了 解 其 内 部 结 构 在 大 型 电 路 中, 这 种 模 块 化 应 用 极 大 地 缩 小 了 体 积, 简 化 了 电 路, 降 低 了 损 坏 错 误 率, 也 方 便 于 更 换 此 外, 微 控 制 器 在 工 商 金 融 科 研 教 育 国 防 航 空 航 天 等 领 域 都 有 着 十 分 广 泛 的 用 途 目 前 微 控 制 器 实 用 数 量 呈 现 指 数 上 升 趋 势, 仅 2009 年 全 球 就 会 消 耗 上 百 亿 个 微 控 制 器! 2.4 微 控 制 器 的 组 成 微 控 制 器 的 构 成 和 计 算 机 系 统 很 相 似, 基 本 由 五 大 部 分 组 成, 分 别 是 CPU 系 统 程 序 存 储 器 数 据 存 储 器 各 种 I/O 端 口 基 本 功 能 单 元 ( 定 时 器 / 计 数 器 等 ) 等 1.CPU 系 统 CPU 系 统 包 括 有 CPU 时 钟 系 统 复 位 总 线 (BUS, 即 信 号 的 公 共 通 道 ) 控 制 逻 辑 * CPU: 单 片 机 中 的 CPU 与 微 型 计 算 机 中 的 CPU 有 所 不 同, 它 的 特 点 是, 面 向 控 制 面 向 嵌 入 系 统 面 向 单 芯 片 化 * 时 钟 系 统 : 时 钟 系 统 用 于 产 生 单 片 机 工 作 所 需 的 时 钟 信 号 它 必 须 满 足 CPU 及 单 片 机 内 各 单 元 电 路 对 时 钟 的 要 求 * 复 位 电 路 : 复 位 电 路 应 满 足 上 电 复 位 信 号 控 制 复 位 的 要 求 * 总 线 控 制 逻 辑 : 总 线 控 制 逻 辑 应 满 足 CPU 对 内 部 总 线 和 外 部 总 线 的 控 制 要 求 2. 程 序 存 储 器 程 序 存 储 器 是 一 种 只 读 存 储 器 ROM(Read Only Memory), 用 它 来 固 化 单 片 机 的 应 用 程 序 和 一 些 表 格 常 数 单 片 机 生 产 厂 家 按 单 片 机 内 部 程 序 存 储 器 的 不 同 结 构, 形 成 单 片 机 的 不 同 结 构 类 型, 计 有 : 24

(1)Mask ROM 型 (2)EPROM 型 (3)ROM less 型 (4)OTP ROM (5)Flash ROM(MTP ROM) 型 前 三 种 程 序 存 储 器 的 单 片 机 是 早 期 的 产 品, 目 前 EPROM ROM Less 型 已 较 少 使 用 3. 数 据 存 储 器 RAM RAM 是 一 种 可 读 写 的 存 储 器, 也 叫 随 机 存 储 器 单 片 机 内 部 的 RAM 除 了 作 为 工 作 寄 存 器 位 标 志 和 堆 栈 区 以 外 的 单 元 都 可 以 作 为 数 据 缓 冲 器 使 用, 存 放 输 入 的 数 据 或 运 算 的 结 果 由 于 单 片 机 主 要 是 面 向 测 控 系 统, 所 以 单 片 机 内 部 的 数 据 存 储 器 容 量 较 小, 而 且 都 使 用 静 态 随 机 存 储 器 SRAM(Static Random Access Memory) 4. 各 种 I/O 端 口 I/O 端 口 是 计 算 机 的 输 入 输 出 接 口 这 些 I/O 端 口 可 分 为 以 下 几 种 类 型 : * 总 线 输 入 / 输 出 端 口 * 用 户 I/O 端 口 由 用 户 用 于 外 部 电 路 的 输 入 / 输 出 控 制 * 单 片 机 内 部 功 能 的 输 入 / 输 出 端 口 例 如, 定 时 器 / 计 数 器 的 计 数 输 入 外 部 中 断 源 输 入 等 为 减 少 单 片 机 引 脚 数 量, 一 般 I/O 口 都 有 复 式 功 能 例 如 不 使 用 外 部 总 线 时, 总 线 端 口 可 出 让 给 用 户 做 输 入 / 输 出 端 口 用 从 I/O 口 的 结 构 上 还 可 以 分 为 并 行 I/O 口, 即 多 位 数 据 一 起 输 出 或 输 入, 这 种 形 式 传 送 数 据 速 度 快 但 使 用 的 引 脚 多 另 种 I/O 口 称 为 串 行 I/O 口, 即 传 送 数 据 是 顺 序 输 出 或 输 入, 这 种 形 式 可 大 大 减 少 I/ O 口 的 引 脚 数, 但 传 送 数 据 较 慢 5. 基 本 功 能 单 元 基 本 功 能 单 元 是 为 满 足 单 片 机 测 控 功 能 而 设 置 的 一 些 电 路, 是 用 来 完 善 和 扩 大 计 算 机 功 能 的 一 些 基 本 电 路, 如 定 时 器 / 计 数 器, 中 断 系 统 等 定 时 器 / 计 数 器 在 实 际 应 用 中 作 用 非 常 大, 如 精 确 的 定 时, 或 者 对 外 部 事 件 进 行 计 数 等 典 型 51 系 列 单 片 机 组 成 如 2.3 所 示 图 2.3 MCS-51 单 片 机 结 构 框 图 25

近 年 来, 随 着 半 导 体 工 艺 技 术 的 发 展, 微 控 制 器 的 集 成 度 日 益 提 高,32 位 微 控 制 器 相 比 最 初 的 51 单 片 机 复 杂 了 很 多 倍, 如 下 图 2.4 所 示 为 恩 智 浦 公 司 LPC1700 系 列 单 片 机 的 组 成 框 图 从 图 中 可 知,LPC1700 系 列 MCU 以 ARM Cortex-M3 为 内 核, 采 用 3 级 流 水 线 和 哈 佛 结 构, 带 独 立 的 本 地 指 令 和 数 据 总 线 以 及 用 于 外 设 的 高 性 能 的 第 三 条 总 线, 并 包 含 一 个 支 持 分 支 预 测 的 内 部 预 取 指 单 元 2.5 微 控 制 器 内 核 体 系 结 构 图 2.4 恩 智 浦 公 司 LPC1700 系 列 单 片 机 方 框 图 体 系 结 构 是 指 从 程 序 员 的 角 度 观 察 到 的 处 理 器 组 织 方 式, 所 以 也 称 为 处 理 器 的 构 成 模 型, 其 主 要 内 容 为 处 理 器 的 寄 存 器 组 织 对 存 储 器 的 寻 址 方 式 指 令 系 统 等, 微 控 制 器 自 诞 生 发 展 到 现 今, 其 内 核 体 系 在 众 多 MCU 供 应 商 的 推 动 下 呈 现 多 样 化 的 发 展 势 态, 目 前 我 们 比 较 熟 悉 的 内 核 有 8051 内 核 TI 16 位 RISC 混 合 信 号 处 理 器 ( 代 表 产 品 为 MSP430 产 品 系 列 ) 瑞 萨 公 司 的 CISC 微 控 制 器 ( 代 表 产 品 为 RX 系 列 MCU) 飞 思 卡 尔 的 ColdFire 内 核 ( 代 表 为 其 ColdFire 系 列 MCU) NEC 的 V850 内 核 ( 代 表 为 NECV850 系 列 MCU) MIPS 内 核 ARM 内 核 ( 代 表 为 大 量 基 于 ARM 架 构 的 32 位 微 控 制 器 ), 由 于 目 前 基 于 32 位 ARM 内 核 的 微 控 制 器 出 货 增 长 非 常 快, 所 以 本 电 子 书 对 ARM 内 核 做 详 细 介 绍, 其 他 内 核 知 识 大 家 可 以 浏 览 相 关 资 料 ARM 内 核 介 绍 : ARM(advanced RISC Machines), 既 可 以 认 为 是 一 个 公 司 的 名 字, 也 可 以 认 为 是 对 一 类 微 处 理 器 的 通 称, 还 可 以 认 为 是 一 种 技 术 的 名 字 1991 年 ARM 公 司 成 立 于 英 国 剑 桥, 最 初 公 司 准 备 开 发 计 算 机 芯 片, 最 后, 转 型 为 出 售 芯 片 设 计 技 术 的 授 权 (IP) 目 前, 采 用 ARM 技 术 知 识 产 权 (IP) 核 的 微 处 理 器, 即 通 常 所 说 的 ARM 微 处 理 器 已 广 泛 应 用 于 工 业 控 制 消 费 电 子 产 品 通 信 系 统 网 络 系 统 无 线 26

系 统 等 各 个 领 域, 在 很 多 半 导 体 厂 商 采 用 ARM7 ARM9 内 核 开 发 微 控 制 器 后,ARM 公 司 还 开 发 了 专 门 针 对 MCU 的 内 核 Cortex-MX 系 列, 这 个 系 列 的 内 核 一 经 推 出 就 受 到 厂 商 的 关 注, 很 多 公 司 推 出 了 基 于 Cortex-M3 内 核 的 微 控 制 器, 本 电 子 书 就 主 要 介 绍 这 类 MCU 产 品 1.ARM 内 核 的 特 点 * 体 积 小 低 功 耗 低 成 本 高 性 能 ; * 支 持 Thumb(16 位 )/ARM(32 位 ) 双 指 令 集, 兼 容 8 位 和 16 位 器 件 ; * 大 量 使 用 寄 存 器, 指 令 执 行 速 度 更 快 ; * 大 多 数 数 据 操 作 都 在 寄 存 器 中 完 成 * 寻 址 方 式 灵 活 简 单, 执 行 效 率 高 * 指 令 长 度 固 定 2.ARM 内 核 系 列 目 前 常 用 的 ARM 微 处 理 器 有 ARM7 系 列 ARM9 系 列 ARM9E 系 列 ARM10 系 列 SecurCore 系 列 Intel 的 StrongARM Intel 的 XScale( 现 已 出 售 给 Marvell) ARM11 ARM Cortex 系 列 等 等 其 中, ARM7 ARM9 ARM9E 和 ARM10E 为 4 个 通 用 处 理 器 系 列, 每 一 个 系 列 提 供 一 套 相 对 独 特 的 性 能 来 满 足 不 同 应 用 领 域 的 需 求 例 如,ARM7 系 列 适 用 于 工 业 控 制 网 络 设 备 移 动 电 话 等 应 用,ARM9 ARM9E 和 ARM10E 系 列 则 更 适 合 无 线 设 备 消 费 类 电 子 产 品 设 计,SecurCore 系 列 专 门 为 安 全 要 求 较 高 的 应 用 而 设 计 Cortex 系 列 又 分 为 A 系 列 ( 高 性 能 应 用 ) R 系 列 ( 实 时 应 用 ) 和 M 系 列 (MCU) 等, 它 们 采 用 ARM V7 架 构, 在 性 能 和 低 功 耗 方 面 都 有 更 大 提 升 我 们 将 在 第 三 章 对 ARM 内 核 做 详 细 介 绍 3. 主 流 ARM 微 控 制 器 供 应 商 介 绍 (1) 恩 智 浦 公 司 (NXP) 恩 智 浦 半 导 体 是 2006 年 从 皇 家 飞 利 浦 体 系 中 独 立 出 的 半 导 体 公 司, 共 有 超 过 6700 位 研 发 工 程 师, 总 部 仍 设 在 荷 兰 Eindhoven, 为 欧 洲 第 二 大 半 导 体 公 司, 恩 智 浦 公 司 的 ARM MCU 主 要 为 LPC 系 列 芯 片, 主 要 是 32 位 的 LPC3000 系 列 LPC2000 系 列 LPC1000 系 列 LH7A 系 列 LH7 系 列 和 8 位 LPC900 系 列 LPC700 系 列 等 2009 年 6 月, 恩 智 浦 半 导 体 宣 布 根 据 嵌 入 式 微 处 理 器 基 准 协 会 (EEMBC) 的 测 试 结 果, 恩 智 浦 LPC1700 系 列 MCU 成 为 业 界 性 能 最 高 的 Cortex-M3 微 控 制 器 EEMBC 测 试 结 果 显 示, 以 相 同 时 钟 速 度 运 行 时,LPC1700 执 行 应 用 程 序 代 码 的 速 度 比 其 它 主 要 Cor tex- M3 竞 争 产 品 平 均 快 35% 当 LPC1700 以 较 高 时 钟 速 度 运 行 时, 恩 智 浦 的 性 能 优 势 愈 加 显 著 LPC1700 已 通 过 EEMBC 72,100 和 27

120MHz 认 证 恩 智 浦 LPC1700 系 列 得 到 广 泛 的 工 具 厂 商 的 支 持, 与 目 前 支 持 恩 智 浦 基 于 ARM 的 32 位 微 控 制 器 的 工 具 厂 商 一 致, 如 Keil(ARM 旗 下 公 司 ) IAR Systems ZLG 等 公 司 图 2.5 恩 智 浦 LPC1700 系 列 MCU (2) 德 州 仪 器 (TI) 2009 年 7 月, 德 州 仪 器 (TI) 正 式 宣 布 成 功 收 购 32 位 MCU 供 应 商 Luminary Micro 此 举 不 仅 壮 大 了 德 州 仪 器 微 控 制 器 产 品 阵 营, 更 直 接 进 入 ARM 微 控 制 器 领 域,TI 成 功 收 购 Luminary Micro 后, 将 有 超 过 130 种 基 于 ARM Cortex-M3 的 MCU 产 品 在 32 位 通 用 处 理 器 领 域,Luminary 的 Stellaris 系 列 MCU 定 位 于 要 求 强 大 控 制 处 理 与 连 接 功 能 的 低 成 本 应 用, 如 运 动 控 制 远 程 监 控 楼 宇 控 制 工 厂 自 动 化 测 量 测 试 和 医 疗 仪 表 等 最 新 推 出 的 第 四 代 Stellaris 器 件 LM3S9000 Series 系 列 在 通 用 处 理 性 能 方 面 取 得 了 最 新 突 破, 实 现 了 连 接 性 存 储 器 配 置 以 及 高 级 运 动 控 制 的 结 合, 还 可 为 客 户 提 供 业 界 标 准 ARM Cortex-M3 内 核 的 通 用 处 理 性 能 以 及 Stellaris 产 品 系 列 的 高 级 通 信 功 能, 如 10/100 以 太 网 MAC+PHY CAN USB OTG USB 主 机 / 装 置 SSI/SPI UART I 2 S 以 及 I 2 C 等 (3) 意 法 半 导 体 (ST) 意 法 半 导 体 的 STM32 系 列 32 位 闪 存 微 控 制 器 基 于 ARM Cortex-M3 内 核, 在 结 合 了 高 性 能 低 功 耗 和 低 电 压 特 性 的 同 时 保 持 了 高 度 的 集 成 性 能 和 简 易 的 开 发 特 性 2009 年 6 月, 意 法 半 导 体 宣 布 推 出 最 新 的 STM32 互 联 系 列 (Connectivity Line) 微 控 制 器, 这 款 STM32 互 联 系 列 让 设 计 人 员 可 以 在 同 时 需 要 以 太 网 USB CAN 和 音 频 级 I 2 S 接 口 的 产 品 设 计 中 发 挥 工 业 标 准 的 32 位 微 处 理 器 的 优 异 性 能 目 前 其 互 联 系 列 下 设 两 个 产 品 系 列 :STM32F105 和 STM32F107 STM32F105 系 列 集 成 一 个 全 速 USB2.0 Host/Device/OTG 接 口 和 两 个 具 有 先 进 过 滤 功 能 的 CAN2.0B 控 制 器 ;STM32F107 系 列 则 在 STM32F105 系 列 基 础 增 加 一 个 10/100 以 太 网 媒 体 访 问 控 制 器 (MAC), 以 完 整 的 硬 件 支 持 IEEE1588 28

精 确 时 间 协 议, 使 设 计 人 员 能 够 为 实 时 应 用 开 发 以 太 网 连 接 功 能 内 置 专 用 缓 存 让 USB OTG 两 个 CAN 控 制 器 和 以 太 网 接 口 同 时 工 作, 以 满 足 通 信 网 关 应 用 的 需 求, 以 及 各 种 需 要 灵 活 的 工 业 标 准 连 接 功 能 的 挑 战 性 需 求 (4) 爱 特 梅 尔 公 司 (Atmel) Atmel 公 司 在 微 控 制 器 领 域 也 深 耕 多 年, 其 产 品 有 早 期 推 出 的 8051 内 核 的 8 位 MCU 和 现 今 推 出 的 基 于 ARM Cortex-M0 的 32 位 微 控 制 器,32 位 MCU 中 有 采 用 ARM7 内 核 的 SAM7 系 列 MCU 和 采 用 ARM9 内 核 的 SAM9 系 列 MCU, 也 有 采 用 Cortex-M3 的 SAM3 系 列 MCU 2009 年 8 月,Atmel 公 司 宣 布 推 出 400MHz ARM926 嵌 入 式 微 控 制 器 系 列 的 首 款 产 品 SAM9G45, 该 器 件 支 持 第 二 代 双 倍 数 据 速 率 DR AM(DDR 2), 并 针 对 楼 宇 自 控 系 统 数 据 记 录 仪 销 售 终 端 机 (POS) 报 警 系 统 和 医 疗 设 备 等 工 业 应 用 而 优 化 ARM926 外 设 包 括 带 有 片 上 物 理 层 的 ECHI 兼 容 高 速 USB 双 EBI 10/100 以 太 网 MAC LCD 和 触 控 屏 控 制 器 可 编 程 1.8 或 3.3V I/O 供 电 电 压, 以 及 高 数 据 带 宽 架 构 Atmel 的 基 于 Cortex-M3 的 MCU 附 加 特 性 包 括 两 个 分 别 为 10 和 12 位 的 8 通 道 模 数 转 换 器 (ADC), 后 者 带 有 集 成 可 编 程 增 益 放 大 器 (PGA) 可 省 去 外 部 运 算 放 大 器 及 1Msps 采 样 速 率 的 差 分 和 单 端 输 入 4 个 UART 5 个 SPI 2 个 I 2 C I 2 S 定 时 器 PWM 128 位 独 特 ID, 以 及 功 率 和 重 置 管 理 功 能 外 部 总 线 接 口 提 供 8 位 和 16 位 数 据 总 线 宽 度 的 选 择, 用 于 扩 展 存 储 器 或 连 接 外 部 FPGA 和 ASSP SAM3U 的 供 电 电 压 范 围 为 1.62V 至 3.6V, 这 是 基 于 Cortex-M3 的 微 控 制 器 罕 有 的 特 性 爱 特 梅 尔 还 是 首 家 在 ARM 闪 存 微 控 制 器 中 采 用 全 速 USB 作 为 必 然 外 设 的 厂 商 29

第 3 章 ARM 内 核 详 解 作 者 : 白 延 敏 南 京 航 空 航 天 大 学 前 面 的 章 节 中 我 们 介 绍 了 微 控 制 器 的 基 本 组 成, 本 章 我 们 将 详 细 介 绍 流 行 的 ARM MCU 内 核 知 识 3.1 ARM 嵌 入 式 处 理 器 简 介 A RM 系 列 嵌 入 式 处 理 器 是 英 国 先 进 RISC(Reduced Instruction Set Computer) 机 器 公 司 (Advanced RISC Machines, 简 称 ARM 公 司 ) 的 产 品 ARM 公 司 是 业 界 领 先 的 知 识 产 权 供 应 商, 与 一 般 的 公 司 不 同,ARM 公 司 既 不 生 产 芯 片, 也 不 销 售 芯 片, 而 是 设 计 出 高 性 能 低 功 耗 低 成 本 和 高 可 靠 性 的 IP 内 核, 如 ARM 处 理 器 内 核 ( 如 ARM7TDMI ARM9TDMI ARM10TDMI 等 ) 和 ARM 处 理 器 宏 核 (ARM720T ARM920T/922T/940T ARM1020E/1022E 等 ), 授 权 给 各 半 导 体 公 司 使 用 ; 半 导 体 公 司 (ARM 公 司 合 作 伙 伴 ) 在 ARM 技 术 的 基 础 上, 根 据 自 己 公 司 的 产 品 定 位, 添 加 自 己 的 设 计 并 推 出 各 种 嵌 入 式 微 处 理 器 MPU 或 微 控 制 器 MCU 芯 片 产 品 ; 最 后 由 OEM 客 户 采 用 这 些 芯 片 来 构 建 基 于 ARM 技 术 的 最 终 应 用 系 统 产 品 由 上 面 可 以 得 知,ARM 并 不 是 一 款 处 理 器 的 名 称, 它 只 是 一 个 公 司 的 名 称, 或 者 说 是 嵌 入 式 处 理 器 的 内 核 名 称 所 以,ARM 嵌 入 式 处 理 器 应 该 理 解 为 以 ARM 为 内 核 的 嵌 入 式 处 理 器 ARM 处 理 器 是 精 简 指 令 集 计 算 机 (RISC) RISC 的 概 念 源 于 斯 坦 福 大 学 和 伯 克 利 大 学 在 1980 年 前 后 进 行 的 处 理 器 研 究 计 划 最 初 ARM 是 1983 到 1985 年 间 在 英 国 剑 桥 的 Acorn Computer 公 司 开 发 的 它 是 第 一 个 为 商 业 用 途 开 发 的 RISC 微 处 理 器, 同 后 来 的 RISC 体 系 结 构 有 明 显 的 不 同 1990 年, ARM 特 别 为 扩 大 开 发 ARM 技 术 而 成 立 了 独 立 的 公 司 从 那 以 后,ARM 已 被 授 权 给 世 界 各 地 的 许 多 半 导 体 制 造 厂 它 已 经 成 为 低 功 耗 和 追 求 成 本 的 嵌 入 式 应 用 的 市 场 领 导 者 ARM 微 处 理 器 主 要 系 列 包 括 ARM7 系 列 ARM9 系 列 ARM9E 系 列 ARM10E 系 列 ARM11 系 列 SecurCore 系 列 OptimoDE 系 列 StrongARM 系 列 XScale 系 列, 以 及 Cortex 系 列 等 ARM 芯 片 还 获 得 了 许 多 实 时 操 作 系 统 供 应 商 的 支 持, 比 较 知 名 的 有 :Windows CE uclinux psos Vxworks Nucleus uc/os Palm OS 等 目 前 ARM 公 司 已 形 成 完 整 的 产 业 链 图 3.1 列 出 了 ARM 的 全 球 合 作 伙 伴, 主 要 由 半 导 体 和 系 统 伙 伴 操 作 系 统 伙 伴 开 发 工 具 伙 伴 应 用 伙 伴 ARM 技 术 共 享 计 划 (ATAP) 组 成 图 的 左 下 方 是 操 作 系 统 提 供 商, 可 以 看 到 有 一 些 比 较 知 名 的 公 司, 如 WindRiver 公 司 ( 风 河 公 司 ), 提 供 Vxworks 操 作 系 统 ; Microsoft( 微 软 ) 公 司, 提 供 Windows CE 操 作 系 统 图 的 左 上 方 是 ARM 技 术 共 享 计 划, 也 就 是 说, 这 些 公 司 和 ARM 公 司 合 作 研 发 并 且 共 同 使 用 开 发 的 成 果 图 的 右 上 方 是 开 发 工 具 提 供 商, 有 的 公 司 提 供 开 30

发 环 境, 有 的 提 供 JTAG 仿 真 器 图 右 下 方 是 ARM 的 应 用 伙 伴 另 外 还 有 生 产 ARM 处 理 器 的 半 导 体 厂 家, 有 Motorala 公 司 ( 目 前 Motorala 的 半 导 体 生 产 已 经 独 立 出 来, 现 称 Freescale( 飞 思 卡 尔 ) 半 导 体 有 限 公 司 ) Philips 公 司 ( 半 导 体 生 产 也 已 经 独 立 出 来, 现 称 NXP( 恩 智 浦 ) 半 导 体 有 限 公 司 ) Samsung( 三 星 ) 公 司 等 图 3.1 ARM 公 司 合 作 伙 伴 组 成 结 构 图 目 前,ARM 系 列 芯 片 以 低 功 耗 低 成 本 的 特 性 在 嵌 入 式 应 用 领 域 确 立 了 市 场 领 导 地 位, 是 32 位 处 理 器 市 场 中 使 用 最 为 广 泛 的 微 处 理 器,ARM 嵌 入 式 处 理 器 已 被 广 泛 应 用 于 移 动 电 话 手 持 式 计 算 机 以 及 各 种 各 样 的 嵌 入 式 应 用 领 域 3.1.1 ARM 内 核 特 点 ARM 处 理 器 为 RISC 芯 片, 其 简 单 的 结 构 使 ARM 内 核 非 常 小, 这 使 得 器 件 的 功 耗 也 非 常 低 它 具 有 经 典 RISC 的 特 点 : * 大 的 统 一 的 寄 存 器 文 件 ; * 简 单 的 寻 址 模 式 ; * 统 一 和 固 定 长 度 的 指 令 域,3 地 址 指 令 格 式, 简 化 了 指 令 的 译 码 编 译 开 销 大, 尽 可 能 优 化, 采 用 三 地 址 指 令 格 式 较 多 寄 存 器 和 对 称 的 指 令 格 式 便 于 生 成 优 化 代 码 ; * 单 周 期 操 作,ARM 指 令 系 统 中 的 指 令 只 需 要 执 行 简 单 的 和 基 本 的 操 作, 因 此 其 执 行 过 程 在 一 个 机 器 周 期 内 完 成 ; * 固 定 的 32 位 长 度 指 令, 指 令 格 式 固 定 为 32 位 长 度, 这 样 使 指 令 译 码 结 构 简 单, 效 率 提 高 ; * 采 用 指 令 流 水 线 技 术 31

3.1.2 ARM 内 核 体 系 结 构 ARM 架 构 自 诞 生 至 今, 已 经 发 生 了 很 大 的 演 变, 至 今 已 定 义 了 7 种 不 同 的 版 本 : V1 版 架 构 : 该 架 构 只 在 原 型 机 ARM1 出 现 过, 其 基 本 性 能 包 括 基 本 的 数 据 处 理 指 令 ( 无 乘 法 ) 字 节 半 字 和 字 的 Load/Store 指 令 转 移 指 令, 包 括 子 程 序 调 用 及 链 接 指 令 软 件 中 断 指 令 寻 址 空 间 64MB V2 版 架 构 : 该 版 架 构 对 V1 版 进 行 了 扩 展, 如 ARM2 与 ARM3(V2a 版 ) 架 构, 增 加 的 功 能 包 括 乘 法 和 乘 加 指 令 支 持 协 处 理 器 操 作 指 令 快 速 中 断 模 式 SWP/SWPB 的 最 基 本 存 储 器 与 寄 存 器 交 换 指 令 寻 址 空 间 64MB V3 版 架 构 : 该 版 对 ARM 体 系 结 构 作 了 较 大 的 改 动, 把 寻 址 空 间 增 至 32 位 (4GB), 增 加 了 当 前 程 序 状 态 寄 存 器 CPSR 和 程 序 状 态 保 存 寄 存 器 SPSR 以 便 于 异 常 处 理 增 加 了 中 止 和 未 定 义 2 种 处 理 器 模 式 ARM6 就 采 用 该 版 结 构 指 令 集 变 化 包 括 增 加 了 MRS/MSR 指 令, 以 访 问 新 增 的 CPSR/SPSR 寄 存 器 增 加 了 从 异 常 处 理 返 回 的 指 令 功 能 V4 版 架 构 :V4 版 结 构 是 目 前 最 广 泛 应 用 的 ARM 体 系 结 构, 对 V3 版 架 构 进 行 了 进 一 步 扩 充, 有 的 还 引 进 了 16 位 的 Thumb 指 令 集, 使 ARM 使 用 更 加 灵 活 ARM7 ARM9 和 StrongARM 都 采 用 了 该 版 结 构 其 指 令 集 中 增 加 的 功 能 包 括 符 号 化 和 非 符 号 化 半 字 及 符 号 化 字 节 的 存 / 取 指 令 增 加 了 16 位 Thumb 指 令 集 完 善 了 软 件 中 断 SWI 指 令 的 功 能 处 理 器 系 统 模 式 引 进 特 权 方 式 时 使 用 用 户 寄 存 器 操 作 把 一 些 未 使 用 的 指 令 空 间 捕 捉 为 未 定 义 指 令 V5 版 架 构 : 在 V4 版 基 础 上 增 加 了 一 些 新 的 指 令 ARM10 和 XScale 都 采 用 该 版 架 构 这 些 新 增 指 令 有 带 有 链 接 和 交 换 的 转 移 BLX 指 令 计 数 前 导 零 计 数 CLZ 指 令 BRK 中 断 指 令 增 加 了 信 号 处 理 指 令 (V5TE 版 ) 为 协 处 理 器 增 加 更 多 可 选 择 的 指 令 V6 版 架 构 :ARM 体 系 架 构 V6 是 2001 年 发 布 的 基 本 特 点 包 括 100% 与 以 前 的 体 系 兼 容 SIMD 媒 体 扩 展, 使 媒 体 处 理 速 度 快 1.75 倍 改 进 了 的 内 存 管 理, 使 系 统 性 能 提 高 30% 改 进 了 的 混 合 端 (Endian) 与 不 对 齐 数 据 支 持, 使 得 小 端 系 统 支 持 大 端 数 据 ( 如 TCP/IP), 许 多 RTOS 是 小 端 的 为 实 时 系 统 改 进 了 中 断 响 应 时 间, 将 最 坏 情 况 下 的 35 周 期 改 进 到 了 11 个 周 期 V7 版 架 构 :ARM 体 系 架 构 V7 是 2005 年 发 布 的 它 使 用 了 能 够 带 来 更 高 性 能 功 耗 效 率 和 代 码 密 度 的 Thumb-2 技 术 它 首 次 采 用 了 强 大 的 信 号 处 理 扩 展 集, 对 H.264 和 MP3 等 媒 体 编 解 码 提 供 加 速 Cortex-M3 处 理 器 采 用 的 就 是 V7 版 的 结 构 ARM 处 理 器 核 使 用 的 体 系 结 构 如 表 3.1 所 示 32

表 3.1 ARM 核 心 采 用 的 体 系 结 构 ARM 内 核 名 称 ARM1 ARM2 ARM2aS ARM3 ARM6 ARM600 ARM610 ARM7 ARM700 ARM710 ARM7TDMI ARM710T ARM720T ARM740T Strong ARM ARM8 ARM810 ARM9TDMI ARM920T ARM940T ARM9E-S ARM10TDMI ARM1020E XScale ARM11 ARM1156T2-S ARM1156T2F-S ARM1176JZ-S Cortex-A8TM Cortex-M3 体 系 结 构 V1 V2 V2a V3 V4 V4T V4 V4T V5 V5TE V6 V7 3.1.3 ARM 内 核 种 类 在 高 性 能 的 32 位 嵌 入 式 片 上 系 统 (SoC=System on Chip) 设 计 中, 几 乎 都 是 以 ARM 作 为 处 理 器 核 ARM 核 已 是 现 在 嵌 入 式 SoC 系 统 芯 片 的 核 心, 也 是 现 代 嵌 入 式 系 统 发 展 的 方 向 ARM 处 理 器 核 作 为 基 本 处 理 单 元, 根 据 发 展 需 求 还 集 成 了 与 处 理 器 核 密 切 相 关 的 功 能 模 块, 如 Cache 存 储 器 和 存 储 器 管 理 MMU 硬 件, 这 些 基 于 微 处 理 器 核 并 集 成 这 些 IP(Intelligence Property) 核 的 标 准 配 置 的 ARM 核 都 具 有 基 本 处 理 器 的 配 置, 这 些 内 核 称 为 处 理 器 核 基 于 ARM 的 处 理 器 核 简 称 ARM 核, 核 并 不 是 芯 片,ARM 核 与 其 它 部 件 如 RAM ROM 片 内 外 设 组 合 在 一 起 才 能 构 成 现 实 的 芯 片, 例 如 LPC2290 S3C44B0X AT91FR40162 分 别 是 Philips( 荷 兰 飞 利 浦 公 司 ) Samsung( 韩 国 三 星 公 司 ) Atmel( 美 国 爱 特 梅 尔 公 司 ) 基 于 ARM 公 司 ARM7TMDI 核 的 嵌 入 式 微 处 理 器 芯 片 ARM 公 司 开 发 了 很 多 系 列 的 ARM 处 理 器 核, 在 表 3.1 中 可 以 看 出, 目 前 最 新 的 系 列 是 ARM Cortex 系 列, 下 面 我 们 将 对 ARM 各 内 核 做 简 单 介 绍 首 先 介 绍 一 下 ARM 核 的 命 名 规 则 及 含 义 如 图 3.2 所 示 图 3.2 ARM 核 的 命 名 规 则 及 含 义 33

1.ARM7 系 列 ARM7 体 系 结 构 具 有 三 级 流 水 空 间 统 一 的 指 令 与 数 据 Cache 平 均 功 耗 为 0.6mW/MHz 时 钟 速 度 为 66MHz 每 条 指 令 平 均 执 行 1.9 个 时 钟 周 期 等 特 性 其 中 的 ARM710 ARM720 和 ARM740 为 内 带 Cache 的 ARM 核 ARM7 指 令 集 同 Thumb 指 令 集 扩 展 组 合 在 一 起, 可 以 减 少 内 存 容 量 和 系 统 成 本, 同 时, 它 还 利 用 嵌 入 式 ICE 调 试 技 术 来 简 化 系 统 设 计, 并 用 一 个 DSP 增 强 扩 展 来 改 进 性 能 ARM7 体 系 结 构 是 小 型 快 速 低 能 耗 集 成 式 的 RISC 内 核 结 构 该 产 品 的 典 型 用 途 是 数 字 蜂 窝 电 话 和 硬 盘 驱 动 器 等, 目 前 主 流 的 ARM7 内 核 是 ARM7TDMI ARM7TDMI-S ARM7EJ-S ARM720T 现 在 市 场 上 用 得 最 多 的 ARM7 处 理 器 有 思 智 浦 公 司 的 LPC2000 系 列 微 控 制 器 Samsung 公 司 的 S3C44BOX 与 S3C4510 处 理 器 Atmel 公 司 的 AT91FR40162 系 列 处 理 器 Cirrus 公 司 的 EP73xx 系 列 等 该 系 列 包 括 ARM7TDMI ARM7TDMI-S 带 有 高 速 缓 存 处 理 器 宏 单 元 的 ARM720T 和 扩 充 了 Jazelle 的 ARM7EJ-S 等 这 些 处 理 器 提 供 Thumb16 位 压 缩 指 令 集 和 EmbededICE 软 件 调 试 方 式, 适 用 于 更 大 规 模 的 SoC 设 计 中 ARM7 系 列 广 泛 应 用 于 多 媒 体 和 嵌 入 式 设 备, 包 括 互 联 网 设 备 网 络 和 调 制 解 调 器 设 备, 以 及 移 动 电 话 PDA 等 无 线 设 备 2.ARM9E 系 列 ARM9 处 理 器 采 用 ARMV4T( 哈 佛 ) 体 系 结 构 这 种 体 系 结 构 由 于 程 序 和 数 据 存 储 器 在 两 个 分 开 的 物 理 空 间 中, 因 而 取 指 和 执 行 能 完 全 重 叠 ARM9 采 用 五 级 流 水 处 理 及 分 离 的 Cache 结 构, 平 均 功 耗 为 0.7mW/MHz 时 钟 速 度 为 120MHz~200MHz, 每 条 指 令 平 均 执 行 1.5 个 时 钟 周 期 与 ARM7 处 理 器 系 列 相 似, 其 中 的 ARM920 ARM940 和 ARM9E 处 理 器 均 为 含 有 Cache 的 CPU 核, 性 能 为 132MIPS (120MHz 时 钟,3.3V 供 电 ) 或 220MIPS(200MHz 时 钟 ) ARM9 处 理 器 同 时 也 配 备 Thumb 指 令 扩 展 调 试 和 Harvard 总 线 在 生 产 工 艺 相 同 的 情 况 下, 性 能 是 ARM7TDMI 处 理 器 的 两 倍 之 多 常 用 于 无 线 设 备 仪 器 仪 表 联 网 设 备 机 顶 盒 设 备 高 端 打 印 机 及 数 码 相 机 应 用 中 ARM9E 内 核 是 在 ARM9 内 核 的 基 础 上 增 加 了 紧 密 耦 合 存 储 器 TCM 及 DSP 部 分 目 前 主 流 的 ARM9 内 核 是 ARM920T ARM922T ARM940 相 关 的 处 理 器 芯 片 有 Samsung 公 司 的 S3C2510 Cirrus 公 司 的 EP93xx 系 列 等 主 流 的 ARM9E 内 核 是 ARM926EJ-S ARM946E-S ARM966E-S 等 3.ARM10 系 列 ARM10E 处 理 器 采 用 ARMVST 体 系 结 构, 可 以 分 为 六 级 流 水 处 理, 采 用 指 令 与 数 据 分 离 的 Cache 结 构, 平 均 功 耗 1000mW, 时 钟 速 度 为 300MHz, 每 条 指 令 平 均 执 行 1.2 个 时 钟 周 期 ARM10TDMI 与 所 有 ARM 核 在 二 进 制 级 代 码 中 兼 容, 内 带 高 速 32 16 MAC, 预 留 DSP 协 处 理 器 接 口 其 中 的 VFP10 ( 向 量 浮 点 单 元 ) 为 七 级 流 水 结 构 其 中 的 ARM1020T 处 理 器 则 是 由 ARMl0TDMI 32KB 指 令 数 据 34

Caches 及 MMU 部 分 构 成 的 其 系 统 时 钟 高 达 300MHz 时 钟, 指 令 Cache 和 数 据 Cache 分 别 为 32KB, 数 据 宽 度 为 64 位, 能 够 支 持 多 种 商 用 操 作 系 统, 适 用 于 下 一 代 高 性 能 手 持 式 因 特 网 设 备 及 数 字 式 消 费 类 应 用 主 流 的 ARM10 内 核 是 ARM1020E ARM1022E ARM1026EJ-S 等 该 系 列 包 括 ARM1020E 和 ARM1020E 处 理 器 核, 其 核 心 在 于 使 用 向 量 浮 点 (VFP) 单 元 VFP10 提 供 高 性 能 的 浮 点 解 决 方 案, 从 而 极 大 提 高 了 处 理 器 的 整 型 和 浮 点 运 算 性 能 可 以 用 于 视 频 游 戏 机 和 高 性 能 打 印 机 等 场 合 4.SecureCore 系 列 SecurCore 系 列 处 理 器 提 供 了 基 于 高 性 能 的 32 位 RISC 技 术 的 安 全 解 决 方 案, 该 系 列 处 理 器 具 有 体 积 小 功 耗 低 代 码 密 度 大 和 性 能 高 等 特 点 另 外 最 为 特 别 的 就 是 该 系 列 处 理 器 提 供 了 安 全 解 决 方 案 的 支 持 采 用 软 内 核 技 术, 以 提 供 最 大 限 度 的 灵 活 性, 以 及 防 止 外 部 对 其 进 行 扫 描 探 测, 提 供 面 向 智 能 卡 的 和 低 成 本 的 存 储 保 护 单 元 MPU, 可 以 灵 活 地 集 成 用 户 自 己 的 安 全 特 性 和 其 他 的 协 处 理 器, 目 前 包 括 有 SC100 SC110 SC200 SC210 计 4 种 产 品 5.StrongARM 系 列 和 XScale 系 列 StrongARM 处 理 器 采 用 ARMV4T 的 五 级 流 水 体 系 结 构 目 前 有 SA110 SA1100 SA1110 等 3 个 版 本 以 及 Intel 公 司 的 基 于 ARMv5TE 体 系 结 构 的 XScale PXA27x 系 列 处 理 器, 与 StrongARM 相 比 增 加 了 I/D Cache, 并 且 加 入 了 部 分 DSP 功 能, 更 适 合 于 移 动 多 媒 体 应 用 2006 年,Intel 公 司 将 XScale 处 理 器 出 售 给 了 Marvell 公 司 6.ARM11 处 理 器 ARM11 处 理 器 系 列 可 以 在 使 用 130nm 工 艺 技 术 小 至 2.2mm 2 芯 片 面 积 和 低 至 0.24mW/MHz 的 前 提 下 达 到 高 达 500MHz 的 性 能 表 现 ARM11 处 理 器 系 列 以 众 多 消 费 产 品 市 场 为 目 标, 推 出 了 许 多 新 的 技 术, 包 括 针 对 媒 体 处 理 的 SIMD, 用 以 提 高 安 全 性 能 的 TrustZone 技 术, 智 能 能 源 管 理 (IEM), 以 及 需 要 非 常 高 的 可 升 级 的 超 过 2600 Dhrystone 2.1 MIPS 性 能 的 系 统 多 处 理 技 术 主 要 的 ARM11 处 理 器 有 ARM1136JF-S ARM1156T2F-S ARM1176JZF-S ARM11 MCORE 等 多 种 7.ARM Cortex 系 列 处 理 器 ARM Cortex 系 列 处 理 器 是 基 于 ARMv7 架 构, 又 分 为 Cortex-M Cortex-R 和 Cortex-A 三 类,ARM Cortex 系 列 的 三 款 产 品 全 都 集 成 了 Thumb -2 指 令 集, 可 满 足 各 种 不 同 的 日 益 增 长 的 市 场 需 求 ARM Cortex 系 列 的 三 款 处 理 器 瞄 准 的 领 域 如 下 : * ARM Cortex-A 系 列 : 针 对 复 杂 操 作 系 统 以 及 用 户 应 用 设 计 的 应 用 处 理 器 ; * ARM Cortex-R 系 列 : 实 时 系 统 专 用 嵌 入 式 处 理 器 ; 35

* ARM Cortex-M 系 列 : 针 对 微 控 制 器 和 低 成 本 应 用 专 门 优 化 的 深 嵌 入 式 处 理 器 Cortex-M3 是 首 款 基 于 ARMv7-M 架 构 的 处 理 器, 是 专 门 瞄 准 对 功 耗 和 成 本 敏 感 的 嵌 入 式 应 用 实 现 高 性 能 而 设 计 的, 它 大 大 简 化 了 可 编 程 的 复 杂 性, 使 ARM 架 构 成 为 各 种 应 用 方 案 ( 即 使 是 最 简 单 的 方 案 ) 的 上 佳 选 择 虽 然 很 多 微 控 制 器 以 ARM7 处 理 器 为 核 心, 但 是 因 为 目 前 已 经 有 大 量 介 绍 ARM7 内 核 的 资 料, 所 以 本 电 子 书 着 重 对 ARM9 和 Cortex-M3 内 核 进 行 介 绍 3.2 ARM9 内 核 详 细 介 绍 ARM9 系 列 有 ARM9TDMI ARM920T 和 带 有 高 速 缓 存 处 理 器 宏 单 元 的 ARM940T 所 有 ARM9 系 列 处 理 器 都 具 有 Thumb 压 缩 指 令 集 和 基 于 EmbeddedICE JTAG 的 软 件 调 试 方 法 ARM9 兼 容 ARM7 系 列, 而 且 能 够 比 ARM7 进 行 更 加 灵 活 的 设 计 ARM9 系 列 主 要 用 于 引 擎 管 理 仪 器 仪 表 安 全 系 统 机 顶 盒 高 端 打 印 机 PDA 网 络 电 脑 等 领 域 下 面 将 详 细 介 绍 ARM9TDMI 和 ARM920T 两 款 ARM9 内 核 3.2.1 ARM9TDMI 内 核 ARM9TDMI 将 流 水 线 的 级 数 从 ARM7TDMI 的 3 级 增 加 到 5 级, 并 使 用 分 开 的 指 令 与 数 据 存 储 器 的 哈 佛 (Harvard) 体 系 结 构, 因 此 简 单 的 总 线 接 口 很 容 易 连 接 Cache 或 SRAM 存 储 器 系 统 ARM9TDMI 支 持 与 外 部 存 储 器 的 双 向 或 单 向 连 接, 支 持 调 试 结 构 ARM9TDMI 的 性 能 在 相 同 工 艺 条 件 下 近 似 达 到 ARM7TDMI 两 倍 1.ARM9TDMI 技 术 特 点 * 支 持 Thumb 指 令 集 ; * 含 有 EmbeddedICE 模 块 支 持 片 上 调 试 ; * 通 过 采 用 5 级 流 水 线 以 增 加 最 高 时 钟 速 率 ; * 分 开 的 指 令 与 数 据 存 储 器 端 口 以 改 善 CPI, 提 高 处 理 器 性 能 2.ARM9TDMI 组 织 ARM9 内 核 采 用 了 与 之 前 提 到 的 Strong ARM 相 同 的 5 级 流 水 线 ARM9TDMI 与 StrongARM 核 的 主 要 区 别 在 于 Strong ARM 有 一 个 与 寄 存 器 读 出 级 并 行 操 作 的 专 用 的 转 移 加 法 器 进 行 转 移 地 址 计 算, 而 ARM9TDMI 使 用 数 据 路 径 中 的 ALU 来 计 算 转 移 目 标 地 址 3.ARM9TDMI 的 流 水 线 操 作 36

ARM9TDMI 的 5 级 流 水 线 的 操 作 见 图 3.3, 图 中 与 ARM7TDMI 采 用 的 3 级 流 水 线 进 行 了 比 较 该 图 显 示 出 处 理 器 的 主 要 处 理 功 能 及 如 何 在 流 水 线 级 增 加 时 重 新 分 配 执 行, 以 便 使 时 钟 频 率 在 相 同 工 艺 技 术 的 条 件 下 能 够 加 倍 ( 近 似 ) 重 新 分 配 执 行 功 能 ( 寄 存 器 读 移 位 ALU 寄 存 器 写 ) 并 不 是 达 到 高 时 钟 频 率 所 需 的 全 部 处 理 器 还 须 能 在 ARM7TDMI 所 用 的 一 半 时 间 内 访 问 指 令 存 储 器, 并 重 新 构 造 指 令 译 码 逻 辑, 是 寄 存 器 读 与 实 际 的 译 码 同 时 进 行 图 3.3 ARM7TDMI 与 ARM9TDMI 流 水 线 比 较 4. 协 处 理 器 支 持 ARM9TDMI 还 有 一 个 协 处 理 器 接 口, 可 支 持 片 上 浮 点 协 处 理 器 数 字 信 号 处 理 或 其 他 专 用 的 硬 件 加 速 要 求 3.2.2 ARM920T 内 核 A R M 9 2 0 T 是 基 于 A R M 9 T D M I 内 核 的 处 理 器 宏 核, 其 内 部 结 构 图 如 3. 4 所 示 它 的 核 心 是 ARM9TDMI, 此 外 包 括 存 储 器 管 理 部 件 MMU 双 重 分 离 的 Cache( 指 令 Cache+ 数 据 Cache) 写 回 RAM AMBA 总 线 接 口 外 部 协 处 理 器 接 口 以 及 跟 踪 调 试 接 口 等 37

图 3.4 ARM920T 内 部 结 构 框 图 ARM920T 内 核 中, 指 令 和 数 据 Cache 的 大 小 都 是 16KB, 采 用 64 路 相 连 的 分 段 式 CAM-ARM 组 织 每 个 Cache 分 为 8 段, 每 段 64 行 段 由 A[7:5] 寻 址 每 行 8 个 字 (32 字 节 ), 支 持 以 256 字 节 为 单 位 的 锁 定 替 换 策 略 为 伪 随 机 或 循 环, 由 CP15 寄 存 器 1 的 RR 位 ( 位 14) 决 定 在 Cache 未 命 中 时, 一 次 将 整 行 8 个 字 全 部 读 入 指 令 Cache 为 只 读, 数 据 Cache 采 用 写 回 (Copy-Back) 策 略 写 缓 冲 器 可 保 存 4 个 地 址 和 16 个 数 据 字 3.3 ARM Cortex-M3 内 核 介 绍 ARM 公 司 的 Cortex 系 列 处 理 器 有 三 个 产 品 线, 分 别 是 A 系 列 R 系 列 和 M 系 列, 由 于 本 书 主 要 介 绍 微 控 制 器 产 品, 所 以 我 们 对 Cortex-M3 进 行 了 详 细 介 绍 ARM 公 司 于 2004 年 推 出 了 Cortex-M3 微 处 理 器, 如 果 按 ARM 公 司 原 来 的 ARM7,ARM9,ARM11 等 方 式 来 命 名, 这 款 芯 片 的 名 称 应 该 为 ARM12, 但 是 ARM 已 经 决 定 用 Cortex 系 列 来 命 名,Cortex-M3 是 针 对 微 控 制 器 (MCU) 领 域 推 出 的 第 一 款 产 品, 它 采 用 的 是 V7 指 令 集, 速 度 比 ARM7 快 三 分 之 一, 功 耗 低 四 分 之 三, 并 且 能 实 现 更 小 芯 片 面 积, 利 于 将 更 多 功 能 整 合 在 更 小 的 芯 片 尺 寸 中 Cor tex- M3 处 理 器 是 专 门 为 那 些 对 成 本 和 功 耗 非 常 敏 感 但 同 时 对 性 能 要 求 又 相 当 高 的 应 用 而 设 计 的 其 核 心 是 基 于 哈 佛 架 构 的 3 级 流 水 线 内 核, 该 内 核 集 成 了 分 支 预 测, 单 周 期 乘 法, 硬 件 除 法 等 众 多 功 能 强 大 特 性, 使 其 在 Dhrystone benchmark 上 具 有 出 色 的 表 现 (1.25 DMIPS/MHz) 根 据 Dhrystone benchmark 的 测 评 结 果, 采 用 新 的 Thumb -2 指 令 集 ( 下 节 内 容 会 对 该 指 令 集 做 详 细 介 绍 ) 架 构 的 Cortex-M3 处 理 器, 与 执 行 Thumb 指 令 的 ARM7TDMI-S 处 理 器 相 比, 每 兆 赫 的 效 率 提 高 了 70%, 与 执 行 ARM 指 令 的 ARM7TDMI-S 处 理 器 相 比, 效 率 提 高 了 35% 凭 借 代 码 大 小 和 中 断 延 迟 的 优 化 集 成 的 系 统 部 件 灵 活 的 配 置 简 单 的 高 级 语 言 编 程 和 强 大 的 软 件 系 统,Cortex-M3 处 理 器 将 成 为 广 大 系 统 ( 从 复 杂 片 上 系 统 到 低 端 的 微 控 制 器 ) 的 理 想 解 决 方 案 图 3.5 ARM7TDMI-S(ARM) 和 Cortex-M3(Thumb-2) 的 性 能 对 比 38

图 3.6 ARM7TDMI-S(ARM) 和 Cortex-M3(Thumb-2) 的 代 码 大 小 3.3.1 ARM Cortex-M3 内 核 结 构 基 于 ARMV7 架 构 的 Cortex-M3 处 理 器 带 有 一 个 分 级 结 构 它 集 成 了 名 为 CM3Core 的 中 心 处 理 器 内 核 和 先 进 的 系 统 外 设, 实 现 了 内 置 的 中 断 控 制 存 储 器 保 护 以 及 系 统 的 调 试 和 跟 踪 功 能 这 些 外 设 可 进 行 高 度 配 置, 允 许 Cortex-M3 处 理 器 处 理 大 范 围 的 应 用 并 更 贴 近 系 统 的 需 求 目 前 Cortex-M3 内 核 和 集 成 部 件 ( 如 图 3.7 所 示 ) 已 进 行 了 专 门 的 设 计, 用 于 实 现 最 小 存 储 容 量 减 少 管 脚 数 目 和 降 低 功 耗 39

图 3.7 Cortex-M3 处 理 器 内 部 结 构 Cortex-M3 中 央 内 核 基 于 哈 佛 架 构, 指 令 和 数 据 各 使 用 一 条 总 线, 所 以 Cortex-M3 处 理 器 对 多 个 操 作 可 以 并 行 执 行, 加 快 了 应 用 程 序 的 执 行 速 度 内 核 流 水 线 分 3 个 阶 段 : 取 指 译 码 和 执 行 当 遇 到 分 支 指 令 时, 译 码 阶 段 也 包 含 预 测 的 指 令 取 指, 这 提 高 了 执 行 的 速 度 处 理 器 在 译 码 阶 段 期 间 自 行 对 分 支 目 的 地 指 令 进 行 取 指 在 稍 后 的 执 行 过 程 中, 处 理 完 分 支 指 令 后 便 知 道 下 一 条 要 执 行 的 指 令 如 果 分 支 不 跳 转, 那 么 紧 跟 着 的 下 一 条 指 令 随 时 可 供 使 用 如 果 分 支 跳 转, 那 么 在 跳 转 的 同 时 分 支 指 令 可 供 使 用, 空 闲 时 间 限 制 为 一 个 周 期 40

Cortex-M3 内 核 方 框 图 如 图 3.8 所 示 图 3.8 Cortex-M3 内 核 方 框 图 Cortex-M3 内 核 包 含 一 个 适 用 于 传 统 Thumb 和 新 型 Thumb-2 指 令 的 译 码 器 一 个 支 持 硬 件 乘 法 和 硬 件 除 法 的 先 进 ALU 控 制 逻 辑 和 用 于 连 接 处 理 器 其 他 部 件 的 接 口 Cortex-M3 处 理 器 是 一 个 32 位 处 理 器, 带 有 32 位 宽 的 数 据 路 径, 寄 存 器 库 和 存 储 器 接 口 其 中 有 13 个 通 用 寄 存 器, 两 个 堆 栈 指 针, 一 个 链 接 寄 存 器, 一 个 程 序 计 数 器 和 一 系 列 包 含 编 程 状 态 寄 存 器 的 特 殊 寄 存 器 Cortex-M3 处 理 器 支 持 两 种 工 作 模 式 ( 线 程 (Thread) 和 处 理 器 (Handler)) 和 两 个 等 级 的 访 问 形 式 ( 有 特 权 或 无 特 权 ), 在 不 牺 牲 应 用 程 序 安 全 的 前 提 下 实 现 了 对 复 杂 的 开 放 式 系 统 的 执 行 无 特 权 代 码 的 执 行 限 制 或 拒 绝 对 某 些 资 源 的 访 问, 如 某 个 指 令 或 指 定 的 存 储 器 位 置 Thread 是 常 用 的 工 作 模 式, 它 同 时 支 持 享 有 特 权 的 代 码 以 及 没 有 特 权 的 代 码 当 异 常 发 生 时, 进 入 Handler 模 式, 在 该 模 式 中 所 有 代 码 都 享 有 特 权 此 外, 所 有 操 作 均 根 据 以 下 两 种 工 作 状 态 进 行 分 类,Thumb 代 表 常 规 执 行 操 作,Debug 代 表 调 试 操 作 41

图 3.9 存 储 器 映 射 Cortex-M3 处 理 器 是 一 个 存 储 器 映 射 系 统, 为 高 达 4GB 的 可 寻 址 存 储 空 间 提 供 简 单 和 固 定 的 存 储 器 映 射, 同 时, 这 些 空 间 为 代 码 ( 代 码 空 间 ) SRAM( 存 储 空 间 ), 外 部 存 储 器 / 器 件 和 内 部 / 外 部 外 设 提 供 预 定 义 的 专 用 地 址, 如 图 3.9 所 示 另 外, 还 有 一 个 特 殊 区 域 专 门 供 厂 家 使 用 借 助 bit-banding 技 术, 如 图 3.10 所 示,Cortex-M3 处 理 器 可 以 在 简 单 系 统 中 直 接 对 数 据 的 单 个 位 进 行 访 问 存 储 器 映 射 包 含 两 个 位 于 SRAM 的 大 小 均 为 1MB 的 bit-band 区 域 和 映 射 到 32MB 别 名 区 域 的 外 设 空 间 在 别 名 区 域 中, 某 个 地 址 上 的 加 载 / 存 储 操 作 将 直 接 转 化 为 对 被 该 地 址 别 名 的 位 的 操 作 对 别 名 区 域 中 的 某 个 地 址 进 行 写 操 作, 如 果 使 其 最 低 有 效 位 置 位, 那 么 bit-band 位 为 1, 如 果 使 其 最 低 有 效 位 清 零, 那 么 bit-band 位 为 零 读 别 名 后 的 地 址 将 直 接 返 回 适 当 的 bit-band 位 中 的 值 除 此 之 外, 该 操 作 为 原 子 位 操 作, 其 他 总 线 活 动 不 能 对 其 中 断 42

图 3.10 传 统 的 位 处 理 方 法 和 Cortex-M3 bit-banding 的 比 较 基 于 传 统 ARM7 处 理 器 的 系 统 只 支 持 访 问 对 齐 的 数 据, 只 有 沿 着 对 齐 的 字 边 界 才 可 以 对 数 据 进 行 访 问 和 存 储 Cortex-M3 处 理 器 采 用 非 对 齐 数 据 访 问 方 式, 使 非 对 齐 数 据 可 以 在 单 核 访 问 中 进 行 传 输 当 使 用 非 对 齐 传 输 时, 这 些 传 输 将 转 换 为 多 个 对 齐 传 输, 但 这 一 过 程 不 为 程 序 员 所 见 Cortex-M3 处 理 器 除 了 支 持 单 周 期 32 位 乘 法 操 作 之 外, 还 支 持 带 符 号 的 和 不 带 符 号 的 除 法 操 作, 这 些 操 作 使 用 SDIV 和 UDIV 指 令, 根 据 操 作 数 大 小 的 不 同 在 2 到 12 个 周 期 内 完 成 如 果 被 除 数 和 除 数 大 小 接 近, 那 么 除 法 操 作 可 以 更 快 地 完 成 Cortex-M3 处 理 器 凭 借 着 这 些 在 数 学 能 力 方 面 的 改 进, 成 为 了 众 多 高 数 字 处 理 强 度 应 用 ( 如 传 感 器 读 取 和 取 值 或 硬 件 在 环 仿 真 系 统 ) 的 理 想 选 择 3.3.2 嵌 套 向 量 中 断 控 制 器 (NVIC) NVIC 是 Cortex-M3 处 理 器 中 一 个 完 整 的 部 分, 它 可 以 进 行 高 度 配 置, 为 处 理 器 提 供 出 色 的 中 断 处 理 能 力 在 NVIC 的 标 准 执 行 中, 它 提 供 了 一 个 非 屏 蔽 中 断 (NMI) 和 32 个 通 用 物 理 中 断, 这 些 中 断 带 有 8 级 的 抢 占 优 先 权 NVIC 可 以 通 过 综 合 选 择 配 置 为 1 到 240 个 物 理 中 断 中 的 任 何 一 个, 并 带 有 多 达 256 个 优 先 级 Cortex-M3 处 理 器 使 用 一 个 可 以 重 复 定 位 的 向 量 表, 表 中 包 含 了 将 要 执 行 的 函 数 的 地 址, 可 供 具 体 的 中 断 处 理 器 使 用 中 断 被 接 受 之 后, 处 理 器 通 过 指 令 总 线 接 口 从 向 量 表 中 获 取 地 址 向 量 表 复 位 时 指 向 零, 编 程 控 制 寄 存 器 可 以 使 向 量 表 重 新 定 位 为 了 减 少 门 计 数 并 提 高 系 统 的 灵 活 性,Cortex-M3 已 从 ARM7 处 理 器 的 分 组 映 像 寄 存 器 异 常 模 型 升 级 到 了 基 于 堆 栈 的 异 常 模 型 当 异 常 发 生 时, 编 程 计 数 器 编 程 状 态 寄 存 器 链 接 寄 存 器 和 R0- R3 R12 等 通 用 寄 存 器 将 被 压 进 堆 栈 在 数 据 总 线 对 寄 存 器 压 栈 的 同 时, 指 令 总 线 从 向 量 表 中 识 别 出 异 常 向 量, 并 获 取 异 常 代 码 的 第 一 条 指 令 一 旦 压 栈 和 取 指 完 成, 中 断 服 务 程 序 或 故 障 处 理 程 序 就 开 43

始 执 行, 随 后 寄 存 器 自 动 恢 复, 中 断 了 的 程 序 也 因 此 恢 复 正 常 的 执 行 由 于 可 以 在 硬 件 中 处 理 堆 栈 操 作,Cortex-M3 处 理 器 免 去 了 在 传 统 的 C 语 言 中 断 服 务 程 序 中 为 了 完 成 堆 栈 处 理 所 要 编 写 的 汇 编 程 序 包, 这 使 应 用 程 序 的 开 发 变 得 更 加 简 单 NVIC 支 持 中 断 嵌 套 ( 压 栈 ), 允 许 通 过 提 高 中 断 的 优 先 级 对 中 断 进 行 提 前 处 理 它 还 支 持 中 断 的 动 态 优 先 权 重 置 优 先 权 级 别 可 以 在 运 行 期 间 通 过 软 件 进 行 修 改 正 在 处 理 的 中 断 会 防 止 被 进 一 步 激 活, 直 到 中 断 服 务 程 序 完 成, 所 以 在 改 变 它 们 的 优 先 级 的 同 时, 也 避 免 了 意 外 重 新 进 入 中 断 的 风 险 在 背 对 背 中 断 情 况 中, 传 统 的 系 统 将 重 复 状 态 保 存 和 状 态 恢 复 的 过 程 两 次, 导 致 了 延 迟 的 增 加 Cortex-M3 处 理 器 使 用 末 尾 连 锁 (tail-chaining) 技 术 简 化 了 激 活 的 和 未 决 的 中 断 之 间 的 移 动, 如 图 3.11 所 示 末 尾 连 锁 技 术 把 需 要 用 时 30 个 时 钟 周 期 才 能 完 成 的 连 续 的 堆 栈 弹 出 和 压 入 操 作 替 换 为 6 个 周 期 就 能 完 成 的 指 令 取 指, 实 现 了 延 迟 的 降 低 处 理 器 状 态 在 进 入 中 断 时 自 动 保 存, 在 中 断 退 出 时 自 动 恢 复, 比 软 件 执 行 用 时 更 少, 大 大 提 高 了 频 率 为 100MHz 的 子 系 统 的 性 能 3.3.3 存 储 器 保 护 单 元 (MPU) 图 3.11 NVIC 中 的 末 尾 连 锁 (Tail chaining) 技 术 MPU 是 Cortex-M3 处 理 器 中 一 个 可 选 的 部 分, 它 通 过 保 护 用 户 应 用 程 序 中 操 作 系 统 所 使 用 的 重 要 数 据, 分 离 处 理 任 务 ( 禁 止 访 问 各 自 的 数 据 ), 禁 止 访 问 存 储 器 区 域, 将 存 储 器 区 域 定 义 为 只 读, 以 及 对 有 可 能 破 坏 系 统 的 未 知 的 存 储 器 访 问 进 行 检 测 等 手 段 来 改 善 嵌 入 式 系 统 的 可 靠 性 MPU 使 应 用 程 序 可 以 拆 分 为 多 个 进 程 每 个 进 程 不 仅 有 指 定 的 存 储 器 ( 代 码 数 据 栈 和 堆 ) 和 器 件, 而 且 还 可 以 访 问 共 享 的 存 储 器 和 器 件 MPU 还 会 增 强 用 户 和 特 权 访 问 规 则 这 包 括 以 正 确 的 优 先 级 别 执 行 代 码 以 及 加 强 享 有 特 权 的 代 码 和 用 户 代 码 对 存 储 器 和 器 件 的 使 用 权 的 控 制 MPU 将 存 储 器 分 成 不 同 的 区 域, 并 通 过 防 止 无 授 权 的 访 问 对 存 储 器 实 施 保 护 MPU 支 持 多 达 8 个 区 域, 每 个 区 域 又 可 以 分 为 8 个 子 区 域 所 支 持 的 区 域 大 小 从 32 字 节 开 始, 以 2 为 倍 数 递 增, 最 大 可 达 到 4GB 可 寻 址 空 间 每 个 区 域 都 对 应 一 个 区 域 号 码 ( 从 0 开 始 的 索 引 ), 用 于 对 区 域 进 行 寻 址 另 外, 也 可 以 为 享 有 特 权 的 地 址 定 义 一 个 默 认 的 背 景 存 储 器 映 射 对 未 在 MPU 区 域 中 定 义 的 或 在 区 域 设 置 中 44

被 禁 止 的 存 储 器 位 置 进 行 访 问 将 会 导 致 存 储 器 管 理 故 障 (Memory Management Fault) 异 常 的 产 生 区 域 的 保 护 是 根 据 规 则 来 执 行 的, 这 些 规 则 以 处 理 的 类 型 ( 读 写 和 执 行 ) 和 执 行 访 问 的 代 码 的 优 先 级 为 基 础 进 行 制 定 每 个 区 域 都 包 含 一 组 位 影 响 访 问 的 允 许 类 型, 以 及 一 组 位 影 响 所 允 许 的 总 线 操 作 MPU 还 支 持 重 叠 的 区 域 ( 覆 盖 同 一 地 址 的 区 域 ) 由 于 区 域 大 小 是 乘 2 所 得 的 结 果, 所 以 重 叠 意 味 着 一 个 区 域 有 可 能 完 全 包 含 在 另 一 个 区 域 里 面 因 此, 有 可 能 出 现 多 个 区 域 包 含 在 单 个 区 域 中 以 及 嵌 套 重 叠 的 情 况 当 寻 址 重 叠 区 域 中 的 位 置 时, 返 回 的 将 是 拥 有 最 高 区 域 号 码 的 区 域 3.3.4 调 试 和 跟 踪 对 Cortex-M3 处 理 器 系 统 的 调 试 访 问 是 通 过 调 试 访 问 端 口 (Debug Access Port) 来 实 现 的 该 端 口 可 以 作 为 串 行 线 调 试 端 口 (SW-DP)( 构 成 一 个 两 脚 ( 时 钟 和 数 据 ) 接 口 ) 或 串 行 线 JTAG 调 试 端 口 (SWJ-DP)( 使 能 JTAG 或 SW 协 议 ) 使 用 SWJ-DP 在 上 电 复 位 时 默 认 为 JTAG 模 式, 并 且 可 以 通 过 外 部 调 试 硬 件 所 提 供 的 控 制 序 列 进 行 协 议 的 切 换 调 试 操 作 可 以 通 过 断 点 观 察 点 出 错 条 件 或 外 部 调 试 请 求 等 各 种 事 件 进 行 触 发 当 调 试 事 件 发 生 时,Cortex-M3 处 理 器 可 以 进 入 挂 起 模 式 或 者 调 试 监 控 模 式 在 挂 起 模 式 期 间, 处 理 器 将 完 全 停 止 程 序 的 执 行 挂 起 模 式 支 持 单 步 操 作 中 断 可 以 暂 停, 也 可 以 在 单 步 运 行 期 间 进 行 调 用, 如 果 对 其 屏 蔽, 外 部 中 断 将 在 逐 步 运 行 期 间 被 忽 略 在 调 试 监 控 模 式 中, 处 理 器 通 过 执 行 异 常 处 理 程 序 来 完 成 各 种 调 试 任 务, 同 时 允 许 享 有 更 高 优 先 权 的 异 常 发 生 该 模 式 同 样 支 持 单 步 操 作 Flash 补 丁 和 断 点 (FPB) 单 元 执 行 6 个 程 序 断 点 和 两 个 常 量 数 据 取 指 断 点, 或 者 执 行 块 操 作 指 令 或 位 于 代 码 存 储 空 间 和 系 统 存 储 空 间 之 间 的 常 量 数 据 该 单 元 包 含 6 个 指 令 比 较 器, 用 于 匹 配 代 码 空 间 的 指 令 取 指 通 过 向 处 理 器 返 回 一 个 断 点 指 令, 每 个 比 较 器 都 可 以 把 代 码 重 新 映 射 到 系 统 空 间 的 某 个 区 域 或 执 行 一 个 硬 件 断 点 这 个 单 元 还 包 含 两 个 常 量 比 较 器, 用 于 匹 配 从 代 码 空 间 加 载 的 常 量 以 及 将 代 码 重 新 映 射 到 系 统 空 间 的 某 一 个 区 域 数 据 观 察 点 和 跟 踪 (DWT) 单 元 包 含 4 个 比 较 器, 每 一 个 比 较 器 都 可 以 配 置 为 硬 件 观 察 点 当 比 较 器 配 置 为 观 察 点 使 用 时, 它 既 可 以 比 较 数 据 地 址, 也 可 以 比 较 编 程 计 数 器 DWT 比 较 器 还 可 以 配 置 用 来 触 发 PC 采 样 事 件 和 数 据 地 址 采 样 事 件, 以 及 通 过 配 置 使 嵌 入 式 跟 踪 宏 单 元 (ETM) 发 出 指 令 跟 踪 流 中 的 触 发 数 据 包 ETM 是 设 计 用 于 单 独 支 持 指 令 跟 踪 的 可 选 部 件, 其 作 用 是 确 保 在 对 区 域 的 影 响 最 小 的 情 况 下 实 现 程 序 执 行 的 重 建 ETM 使 指 令 的 跟 踪 具 有 高 性 能 和 实 时 性, 数 据 通 过 压 缩 处 理 器 内 核 的 跟 踪 信 息 进 行 传 输 可 以 最 小 化 带 宽 的 需 求 45

32位MCU开发全攻略--工程师创新宝典 上册 基础篇 图3.12 Cortex-M3跟踪系统 Cortex-M3 处理器采用带 DWT 和 ITM 测量跟踪宏单元 的数据跟踪技术 如图3.12所示 DWT 提供指令执行统计并产生观察点事件来调用调试或触发指定系统事件上的 ETM ITM 是由应用程序 驱动的跟踪资源 支持跟踪 OS 和应用程序事件的 printf 类型调试 它接受 DW T 的硬件跟踪数据包以 及处理器内核的软件跟踪激励 并使用时间戳来发送诊断系统信息 跟踪端口接口单元 Trace Port Interface Unit-TPIU 接收 ETM 和 ITM 的跟踪信息 然后将其合并 格式化并通过串行线浏览器 Serial Wire Viewer-SWV 发送到外部跟踪分析器单元 通过单管脚导出数据流 SWV 支持简单和具有成本 效率的系统事件压型 曼切斯特编码和 UART 都是SWV 支持的格式 3.3.5 总线矩阵和接口 Cor tex- M3 处理器总线矩阵把处理器和调试接口连接到外部总线 也就是把基于32位 AMBA A H B - L i te 的 I C o d e D C o d e 和系 统 接口连 接到基 于3 2 位 A M B A A PB 的专用外设 总 线 Pr i vate Peripheral Bus-PPB 总线矩阵也采用非对齐数据访问方式以及 bit banding 技术 图3.13 Cortex-M3总线矩阵示意图 46

32 位 ICode 接 口 用 于 获 取 代 码 空 间 中 的 指 令, 只 有 CM3Core 可 以 对 其 访 问 所 有 取 指 的 宽 度 都 是 一 个 字, 每 个 字 里 面 的 指 令 数 目 取 决 于 所 执 行 代 码 的 类 型 及 其 在 存 储 器 中 的 对 齐 方 式 32 位 DCode 接 口 用 于 访 问 代 码 存 储 空 间 中 的 数 据,CM3Core 和 DAP 都 可 以 对 其 访 问 32 位 系 统 接 口 分 别 获 取 和 访 问 系 统 存 储 空 间 中 的 指 令 和 数 据, 与 DCode 相 似, 可 以 被 CM3Core 和 DAP 访 问 PPB 可 以 访 问 Cortex-M3 处 理 器 系 统 外 部 的 部 件 3.3.6 Cortex-M3 的 应 用 程 序 开 发 和 指 令 集 缩 短 上 市 时 间 与 降 低 开 发 成 本 是 选 择 微 控 制 器 的 关 键 标 准, 而 快 速 和 简 易 的 软 件 开 发 能 力 是 实 现 这 些 要 求 的 关 键 Cortex-M3 处 理 器 专 门 针 对 快 速 和 简 单 的 编 程 而 设 计, 用 户 无 需 深 厚 的 架 构 知 识 或 编 写 任 何 汇 编 代 码 就 可 以 建 立 简 单 的 应 用 程 序 Cortex-M3 处 理 器 带 有 一 个 简 化 的 基 于 栈 的 编 程 模 型, 该 模 型 与 传 统 的 ARM 架 构 兼 容, 同 时 与 传 统 的 8 位 16 位 架 构 所 使 用 的 系 统 相 似, 它 简 化 了 8 位 16 位 到 32 位 的 转 换 过 程 此 外, 使 用 基 于 硬 件 的 中 断 机 制 意 味 着 编 写 中 断 服 务 程 序 (handlers) 不 再 重 要 在 不 需 要 汇 编 代 码 寄 存 器 操 作 的 情 况 下, 启 动 代 码 得 到 了 大 大 的 简 化 在 位 字 段 处 理 硬 件 除 法 和 If/ Then 指 令 的 协 助 下,Thumb -2 指 令 集 架 构 (Instruction Set Architecture-ISA) 底 层 的 关 键 特 性 使 C 代 码 的 执 行 变 得 更 加 自 然 在 开 发 方 面,Thumb-2 指 令 自 动 优 化 了 性 能 和 代 码 密 度, 在 无 需 交 互 使 用 ARM 代 码 和 Thumb 代 码 的 情 况 下 加 快 了 开 发 的 进 程, 简 化 了 编 译 目 标 的 长 期 维 护 和 支 持 工 作 如 此 一 来, 用 户 不 但 可 以 继 续 使 用 C 代 码, 而 且 还 免 去 了 建 立 预 编 译 目 标 代 码 库 的 麻 烦, 代 码 在 更 大 程 度 上 获 得 了 重 复 利 用 3.3.7 Cortex-M3 和 ARM7 的 比 较 由 于 很 多 微 控 制 器 也 采 用 基 于 ARM7 的 内 核 架 构, 这 里 我 们 就 将 ARM 公 司 专 门 针 对 微 控 制 器 推 出 的 内 核 Cortex-M3 和 它 做 一 比 较 下 表 对 ARM7TDMI-S 和 Cortex-M3 做 了 一 些 比 较 表 3.2 ARM7TDMI-S 和 Cortex-M3 的 比 较 ( 采 用 100MHz 频 率 和 TSMC 0.18G 制 程 ) 特 性 ARM7TDMI-S Cortex-M3 架 构 ARMv4T( 冯 诺 伊 曼 ) ARMv7-M( 哈 佛 ) ISA 支 持 Thumb/ARM Thumb / Thumb-2 流 水 线 3 级 3 级 + 分 支 预 测 中 断 FIQ / IRQ NMI + 1 到 240 个 物 理 中 断 中 断 延 迟 24-42 个 时 钟 周 期 12 个 时 钟 周 期 休 眠 模 式 无 内 置 存 储 器 保 护 无 8 段 存 储 器 保 护 单 元 Dhrystone 0.95 DMIPS/MHz(ARM 模 式 ) 1.25 DMIPS/MHz 功 耗 0.28mW/MHz 0.19mW/MHz 47

特 性 ARM7TDMI-S Cortex-M3 面 积 0.62mm2( 仅 内 核 ) 0.86mm2( 内 核 + 外 设 )* * 不 包 含 可 选 系 统 外 设 (MPU 和 ETM) 或 者 集 成 的 部 件 1. 在 架 构 上,ARM7 内 核 采 用 冯. 诺 伊 曼 (Von Neumann) 架 构, 指 令 和 数 据 共 用 信 号 总 线 以 及 存 储 器 ; 而 Cortex-M3 采 用 哈 佛 架 构, 指 令 和 数 据 各 使 用 一 条 总 线 2. 在 ISA 支 持 上,ARM7 支 持 Thumb/ARM 指 令, 虽 然 它 们 各 有 优 缺 点, 但 是 鱼 与 熊 掌 不 可 兼 得, 两 者 之 间 的 切 换 相 当 的 麻 烦 而 Cortex-M3 内 核 基 于 哈 佛 架 构, 指 令 和 数 据 可 以 从 存 储 器 中 同 时 读 取, 对 多 个 操 作 可 以 并 行 执 行, 加 快 了 应 用 程 序 执 行 速 度 而 且 由 于 Tumb-2 指 令 是 Thumb 指 令 的 扩 展,16 位 和 32 位 指 令 共 存 于 同 一 模 式 下, 所 以 复 杂 性 大 幅 下 降, 代 码 密 度 和 性 能 均 得 到 提 高 图 3.14 Thumb/ARM 指 令 比 较 3. 在 流 水 线 设 计 上,ARM7 采 用 三 级 流 水 线, 其 特 点 如 图 3.15 图 3.16 所 示 图 3.15 ARM7 三 级 流 水 线 特 点 48

图 3.16 ARM7 三 级 流 水 线 特 点 Cortex-M3 采 用 带 分 支 预 测 的 三 级 流 水 线, 其 特 点 如 图 3.17 图 3.18 所 示 图 3.17 Cortex-M3 采 用 带 分 支 预 测 的 三 级 流 水 线 特 点 图 3.18 Cortex-M3 采 用 带 分 支 预 测 的 三 级 流 水 线 特 点 4.Cortex-M3 处 理 器 内 核 的 核 心 部 分 (0.18um G) 的 门 数 仅 为 33000 个, 它 把 紧 密 相 连 的 系 统 部 件 有 效 地 结 合 在 一 起 通 过 采 用 非 对 齐 数 据 存 储 技 术 原 子 位 操 作 和 Thumb-2 指 令 集, 存 储 容 量 的 需 求 得 到 最 小 化,Cortex-M3 处 理 器 支 持 扩 展 时 钟 门 控 和 内 置 睡 眠 模 式 当 采 用 ARM Metro 标 准 单 元 库 和 TSMC 0.13G 制 造 工 艺 时, 处 理 器 运 行 在 50MHz 的 目 标 频 率 下 的 功 耗 仅 为 4.5mW, 芯 片 封 装 面 积 只 有 0.33mm2, 在 内 核 功 耗 上,Cortex-M3 功 耗 相 比 ARM7 会 更 低, 如 图 3.19 所 示 图 3.19 Cortex-M3 和 ARM7 内 核 功 耗 对 比 49

综 上 所 述,Cortex-M3 是 一 款 非 常 适 合 微 控 制 器 应 用 内 核, 所 以 一 经 推 出 就 受 到 产 业 的 热 捧, 目 前 ( 截 至 2009 年 7 月 )Cortex-M3 处 理 器 内 核 的 授 权 客 户 数 已 达 到 28 家, 包 括 恩 智 浦 半 导 体 东 芝 ST Ember Accent Actel ENERGY ADI TI Atmel Broadcom Samsung Zilog 和 Renesas 等, 其 中 恩 智 浦 ST TI Atmel 和 东 芝 已 经 推 出 基 于 Cortex-M3 的 MCU 产 品 据 ARM 公 司 统 计, 目 前 基 于 ARM 内 核 的 MCU 产 品 已 超 过 450 款, 其 中 基 于 Cortex-M3 的 MCU 产 品 已 达 到 近 250 款, 复 合 年 平 均 增 长 率 达 到 140% 可 说 在 MCU 业 界 创 出 了 奇 迹 3.4 ARM 指 令 特 点 指 令 是 汇 编 语 言 程 序 设 计 的 基 础, 在 基 于 ARM 的 嵌 入 式 软 件 开 发 中, 即 便 大 部 分 程 序 用 高 级 语 言 完 成, 但 系 统 的 引 导 启 动 代 码 仍 必 须 用 汇 编 语 言 来 编 写 ARM 处 理 器 支 持 ARM 指 令 集 Thumb 指 令 集 和 Thumb-2 指 令 集 3.4.1 ARM 指 令 集 ARM 指 令 集 是 32 位 的, 程 序 的 启 动 都 是 从 ARM 指 令 集 开 始 所 有 的 ARM 指 令 集 都 可 以 是 有 条 件 执 行 的 ARM 指 令 集 是 以 32 位 二 进 制 编 码 的 方 式 给 出 的, 大 部 分 的 指 令 编 码 中 定 义 了 第 一 操 作 数 第 二 操 作 数 目 的 操 作 数 条 件 标 志 影 响 位 以 及 每 条 指 令 所 对 应 的 不 同 功 能 实 现 的 二 进 制 位 每 条 32 位 ARM 指 令 都 具 有 不 同 的 二 进 制 编 码 方 式, 和 不 同 的 指 令 功 能 相 对 应 ARM 指 令 集 可 以 分 为 六 大 类, 分 别 为 数 据 处 理 指 令 Load/Store 指 令 跳 转 指 令 程 序 状 态 寄 存 器 处 理 指 令 协 处 理 器 指 令 和 异 常 产 生 指 令 具 体 的 指 令 及 功 能 如 表 3.2 所 示 ( 表 中 指 令 为 基 本 ARM 指 令, 不 包 括 派 生 的 ARM 指 令 ) ARM 指 令 及 功 能 描 述 : 表 3.2 ARM 指 令 及 功 能 描 述 助 记 符 ( 按 字 母 为 序 ) 指 令 功 能 描 述 所 属 类 型 ADC 带 进 位 加 法 指 令 数 据 处 理 类 之 算 术 运 算 指 令 ADD 加 法 指 令 数 据 处 理 类 之 算 术 运 算 指 令 AND 逻 辑 与 指 令 数 据 处 理 类 之 逻 辑 运 算 指 令 B 跳 转 指 令 分 支 类 指 令 BIC 位 清 零 指 令 数 据 处 理 类 之 逻 辑 运 算 指 令 BKPT 断 点 中 断 指 令 异 常 中 断 类 指 令 BL 带 返 回 的 跳 转 指 令 分 支 类 指 令 BLX 带 返 回 和 状 态 切 换 的 跳 转 指 令 分 支 类 指 令 BX 带 状 态 切 换 的 跳 转 指 令 分 支 类 指 令 CDP 协 处 理 器 数 据 操 作 指 令 协 处 理 器 类 指 令 CMN 比 较 反 值 指 令 数 据 处 理 类 之 比 较 类 指 令 CMP 比 较 指 令 数 据 处 理 类 之 比 较 类 指 令 50

助 记 符 ( 按 字 母 为 序 ) 指 令 功 能 描 述 所 属 类 型 EOR 异 或 指 令 数 据 处 理 类 之 逻 辑 运 算 指 令 LDC 存 储 器 到 协 处 理 器 的 数 据 传 送 指 令 加 载 / 存 储 类 指 令 LDM 加 载 多 个 寄 存 器 指 令 加 载 / 存 储 类 指 令 LDR 存 储 器 到 寄 存 器 的 数 据 传 送 指 令 加 载 / 存 储 类 指 令 MCR 从 寄 存 器 到 协 处 理 器 寄 存 器 的 数 据 传 送 指 令 协 处 理 器 类 指 令 MLA 乘 加 运 算 指 令 数 据 处 理 类 之 算 术 运 算 指 令 MOV 数 据 传 送 指 令 数 据 处 理 类 之 数 据 传 送 指 令 MRC 从 协 处 理 器 寄 存 器 到 寄 存 器 的 数 据 传 送 指 令 协 处 理 器 类 指 令 MRS 传 送 CPSR 或 SPSR 的 内 容 到 通 用 寄 存 器 指 令 程 序 状 态 寄 存 器 与 通 用 寄 存 器 传 输 类 指 令 MSR 传 送 通 用 寄 存 器 到 CPSR 或 SPSR 的 指 令 程 序 状 态 寄 存 器 与 通 用 寄 存 器 传 输 类 指 令 MUL 32 位 乘 法 指 令 数 据 处 理 类 之 算 术 运 算 指 令 MLA 32 位 乘 加 指 令 数 据 处 理 类 之 算 术 运 算 指 令 MVN 数 据 取 反 传 送 指 令 数 据 处 理 类 之 数 据 传 送 指 令 ORR 逻 辑 或 指 令 数 据 处 理 类 之 逻 辑 运 算 指 令 RSB 逆 向 减 法 指 令 数 据 处 理 类 之 算 术 运 算 指 令 RSC 带 借 位 的 逆 向 减 法 指 令 数 据 处 理 类 之 算 术 运 算 指 令 SBC 带 借 位 减 法 指 令 数 据 处 理 类 之 算 术 运 算 指 令 STC 协 处 理 器 寄 存 器 写 入 存 储 器 指 令 协 处 理 器 类 指 令 STM 批 量 内 存 字 写 入 指 令 加 载 / 存 储 类 指 令 STR 寄 存 器 到 存 储 器 的 数 据 传 送 指 令 加 载 / 存 储 类 指 令 SUB 减 法 指 令 数 据 处 理 类 之 算 术 运 算 指 令 SWI 软 件 中 断 指 令 异 常 中 断 类 指 令 SWP 交 换 指 令 数 据 处 理 类 之 交 换 指 令 TEQ 相 等 测 试 指 令 数 据 处 理 类 之 测 试 指 令 3.4.2 Thumb 指 令 集 Thumb 指 令 集 可 看 作 是 ARM 指 令 集 压 缩 形 式 的 子 集, 是 针 对 代 码 密 度 的 问 题 而 提 出 的, 它 具 有 16 位 的 代 码 密 度 虽 然 所 有 Thumb 指 令 都 有 相 对 应 的 ARM 指 令, 但 Thumb 不 是 一 个 完 整 的 体 系 结 构, 处 理 器 不 可 能 只 执 行 Thumb 指 令 而 不 支 持 ARM 或 Thumb-2 指 令 集 Thumb 指 令 集 特 点 如 下 : * Thumb 指 令 继 承 了 ARM 指 令 集 的 许 多 特 点 ; * Thumb 指 令 也 是 采 用 Load/Store 结 构, 有 数 据 处 理 数 据 传 送 及 流 控 制 指 令 等 ; * Thumb 指 令 集 丢 弃 了 ARM 指 令 集 一 些 特 性 大 多 数 Thumb 指 令 是 无 条 件 执 行 的 ( 除 了 转 移 指 令 B), 而 所 有 ARM 指 令 都 是 条 件 执 行 的 许 多 Thumb 数 据 处 理 指 令 采 用 2 地 址 格 式, 即 目 的 寄 存 器 与 一 个 源 寄 存 器 相 同, 而 大 多 数 ARM 数 据 处 理 指 令 采 用 的 是 3 地 址 格 式 ( 除 了 64 位 乘 法 指 令 外 ) 51

16 位 Thumb 指 令 集 是 从 32 位 ARM 指 令 集 提 取 指 令 格 式 的, 每 条 Thumb 指 令 有 相 同 处 理 器 模 型 所 对 应 的 32 位 ARM 指 令 ARM 开 发 工 具 完 全 支 持 Thumb 指 令, 应 用 程 序 可 以 灵 活 的 将 ARM 和 Thumb 子 程 序 混 合 编 程 以 便 在 例 程 的 基 础 上 提 高 性 能 或 代 码 密 度 在 编 写 Thumb 指 令 时, 先 要 用 伪 指 令 CODE16 声 明 (ADS 的 编 译 环 境 下 ), 而 且 在 ARM 指 令 中 要 使 用 BX 指 令 跳 转 到 Thumb 指 令, 以 切 换 处 理 器 状 态 3.4.3 Thumb-2 指 令 集 Thumb-2 技 术 是 16 位 和 32 位 指 令 的 结 合, 实 现 了 32 位 ARM 指 令 性 能, 匹 配 原 始 的 16 位 Thumb 指 令 集 并 与 之 后 向 兼 容 图 3.20 显 示 了 预 测 的 ARM Thumb 和 Thumb2 指 令 之 间 性 能 和 代 码 量 的 比 较 结 果, 由 结 果 可 见,Thumb-2 技 术 确 实 达 到 了 预 期 的 目 标 图 3.20 ARM Thumb 以 及 Thumb-2 相 关 的 性 能 和 代 码 大 小 比 较 ARM7TDMI 内 核 就 支 持 ARM 和 Thumb 两 种 指 令 集, 而 Cortex-M3 内 核 支 持 Thumb 和 Thumb-2 两 种 指 令 集 在 基 于 ARM7 处 理 器 的 系 统 中, 处 理 器 内 核 会 根 据 特 定 的 应 用 切 换 到 Thumb 状 态 ( 以 获 取 高 代 码 密 度 ) 或 ARM 状 态 ( 以 获 取 出 色 的 性 能 ) 然 而, 在 Cortex-M3 处 理 器 中 无 需 交 互 使 用 指 令,16 位 指 令 和 32 位 指 令 共 存 于 同 一 模 式, 复 杂 性 大 幅 下 降, 代 码 密 度 和 性 能 均 得 到 提 高 由 于 Thumb-2 指 令 是 16 位 Thumb 指 令 的 扩 展 集, 所 以 Cortex-M3 处 理 器 可 以 执 行 之 前 所 写 的 任 何 Thumb 代 码 得 益 于 Thumb-2 指 令,Cortex-M3 处 理 器 同 时 兼 容 于 其 他 ARM Cortex 处 理 器 的 家 族 成 员 Thumb-2 指 令 集 用 于 多 种 不 同 应 用, 使 紧 凑 代 码 的 编 写 更 加 简 单 快 捷 BFI 和 BFC 指 令 为 位 字 段 指 令, 在 网 络 信 息 包 处 理 等 应 用 中 可 大 派 用 场 SBFX 和 UBFX 指 令 改 进 了 从 寄 存 器 插 入 或 提 取 多 个 位 的 能 力, 这 一 能 力 在 汽 车 应 用 中 的 表 现 相 当 出 色 RBIT 指 令 的 作 用 是 将 一 个 字 中 的 位 反 转, 在 DFT 等 DSP 运 算 法 则 的 应 用 中 非 常 有 用 表 分 支 指 令 TBB 和 TBH 用 于 平 衡 高 性 能 和 代 码 的 紧 凑 性 Thumb-2 指 令 集 还 引 入 了 一 个 新 的 If-Then 结 构, 意 味 着 可 以 有 多 达 4 个 后 续 指 令 进 行 条 件 执 行 以 上 我 们 介 绍 了 ARM 内 核 的 特 点, 在 下 一 章 中, 我 们 要 结 合 恩 智 浦 公 司 的 MCU 详 细 介 绍 微 控 制 器 的 组 成 和 结 构 特 点 52

第 4 章 典 型 MCU 架 构 详 解 与 主 流 MCU 介 绍 在 前 面 的 介 绍 中, 我 们 已 经 了 解 到 MCU 就 是 基 于 一 定 的 内 核 体 系, 集 成 了 存 储 并 行 或 串 行 I/O 定 时 器 中 断 系 统 以 及 其 他 控 制 功 能 的 微 型 计 算 机 系 统, 如 图 4.1 是 典 型 的 MCU 组 成 框 图 图 4.1 典 型 MCU 的 组 成 框 图 目 前, 虽 然 很 多 厂 商 采 用 了 ARM 内 核 体 系, 但 是 在 具 体 的 MCU 产 品 上, 各 个 公 司 集 成 的 功 能 差 异 非 常 大, 形 成 MCU 百 花 齐 放 的 格 局, 由 于 本 书 的 重 点 是 介 绍 32 位 MCU, 所 以 我 们 将 重 点 以 恩 智 浦 公 司 的 MCU 为 例 来 介 绍, 这 些 MCU 中,LPC3000 LH7A 采 用 ARM9 内 核,LPC2000 和 LH7 采 用 ARM7 内 核,LPC1000 系 列 采 用 Cortex-M3 或 M0 内 核, 通 过 这 几 个 系 列 的 介 绍 可 以 了 解 MCU 的 构 成 和 差 异 4.1 恩 智 浦 LPC1000 系 列 MCU LPC1000 系 列 MCU 是 以 第 二 代 Cortex-M3 为 内 核 的 微 控 制 器, 用 于 处 理 要 求 高 度 集 成 和 低 功 耗 的 嵌 入 式 应 用 采 用 3 级 流 水 线 和 哈 佛 结 构, 其 运 行 速 度 高 达 100MHz, 带 独 立 的 本 地 指 令 和 数 据 总 线 以 及 用 于 外 设 的 第 三 条 总 线, 使 得 代 码 执 行 速 度 高 达 1.25MIPS/MHz, 并 包 含 一 个 支 持 分 支 预 测 的 内 部 预 取 指 单 元, 特 别 适 用 于 静 电 设 计 照 明 设 备 工 业 网 络 报 警 系 统 白 色 家 电 电 机 控 制 等 领 域 LPC1000 系 列 MCU 又 分 为 LPC1700 系 列 和 LPC1300 系 列, 下 面 我 们 分 开 介 绍 4.1.1 LPC1700 系 列 MCU 介 绍 LPC1700 系 列 ARM 是 以 第 二 代 的 Cortex-M3 为 内 核, 是 为 嵌 入 式 系 统 应 用 而 设 计 的 高 性 能 低 功 耗 的 32 位 微 处 理 器, 适 用 于 仪 器 仪 表 工 业 通 讯 电 机 控 制 灯 光 控 制 报 警 系 统 等 领 域 其 操 作 频 率 高 达 100MHz, 采 用 3 级 流 水 线 和 哈 佛 结 构, 带 独 立 的 本 地 指 令 和 数 据 总 线 以 及 用 于 外 设 的 高 性 能 的 第 三 条 总 线, 使 得 代 码 执 行 速 度 高 达 1.25MIPS/MHz, 并 包 含 一 个 支 持 分 支 预 测 的 内 部 预 取 指 单 元 LPC1700 系 列 ARM Cortex-M3 的 外 设 组 件 : 最 高 配 置 包 括 512KB 片 内 Flash 程 序 存 储 器 64KB 片 53

内 SRAM 8 通 道 GPDMA 控 制 器 4 个 32 位 通 用 定 时 器 一 个 8 通 道 12 位 ADC 一 个 10 位 DAC 一 路 电 机 控 制 PWM 输 出 一 个 正 交 编 码 器 接 口 6 路 通 用 PWM 输 出 一 个 看 门 狗 定 时 器 以 及 一 个 独 立 供 电 的 超 低 功 耗 RTC LPC1700 系 列 ARM Cortex-M3 还 集 成 了 大 量 的 通 信 接 口 : 一 个 以 太 网 MAC 一 个 USB 2.0 全 速 接 口 4 个 UART 接 口 2 路 CAN 2 个 SSP 接 口 1 个 SPI 接 口 3 个 I 2 C 接 口 2 路 I 2 S 输 入 和 2 路 I 2 S 输 出 1.LPC1700 系 列 MCU 关 键 特 性 : * 第 二 代 Cortex-M3 内 核, 运 行 速 度 高 达 100MHz; * 采 用 纯 Thumb2 指 令 集, 代 码 存 储 密 度 高 ; * 内 置 嵌 套 向 量 中 断 控 制 器 (NVIC), 极 大 程 度 的 降 低 了 中 断 延 迟 ; * 不 可 屏 蔽 中 断 (NMI) 输 入 ; * 具 有 存 储 器 保 护 单 元, 内 嵌 系 统 时 钟 ; * 全 新 的 中 断 唤 醒 控 制 器 (WIC); * 存 储 器 保 护 单 元 (MPU); * 以 太 网 USB Host/OTG/Device CAN I2S; * 快 速 (Fm+)I 2 C SPI/SSP UART; * 电 机 控 制 PWM 输 出 和 正 交 编 码 器 接 口 ; * 12 位 ADC; * 低 功 耗 实 时 时 钟 (RTC); * 第 二 个 专 用 的 PLL 可 用 于 USB 接 口, 增 加 了 主 PLL 设 置 的 灵 活 性 ; * 4 个 低 功 率 模 式 : 睡 眠 深 度 睡 眠 掉 电 深 度 掉 电, 可 通 过 外 部 中 断 RTC 中 断 USB 活 动 中 断 以 太 网 唤 醒 中 断 CAN 总 线 活 动 中 断 NMI 等 中 断 唤 醒 ; * 具 有 在 系 统 编 程 (ISP) 和 在 应 用 编 程 (IAP) 功 能 的 512KB 片 上 Flash 程 序 存 储 器 ; * 64KB 片 内 SRAM 包 括 : * 32KB SRAM 可 供 高 性 能 CPU 通 过 本 地 代 码 / 数 据 总 线 访 问 ; * 2 个 16KB SRAM 模 块, 带 独 立 访 问 路 径, 可 进 行 更 高 吞 吐 量 的 操 作 这 些 SRAM 模 块 可 用 于 以 太 网 USB DMA 存 储 器, 以 及 通 用 指 令 和 数 据 存 储 ; * AHB 多 层 矩 阵 上 具 有 8 通 道 的 通 用 DMA 控 制 器 (GPDMA), 结 合 SSP I 2 S UART AD/DA 转 换 定 时 器 匹 配 信 号 和 GPIO 使 用, 并 可 用 于 存 储 器 到 存 储 器 的 传 输 ; * 多 层 AHB 矩 阵 内 部 连 接, 为 每 个 AHB 主 机 提 供 独 立 的 总 线 AHB 主 机 包 括 CPU 通 用 DMA 控 制 器 以 太 网 MAC 和 USB 接 口 这 个 内 部 连 接 特 性 提 供 无 仲 裁 延 迟 的 通 信 ; 54

32位MCU开发全攻略--工程师创新宝典 上册 基础篇 * 实用的 LQFP 80/100 脚封装 2. LPC1700系列中 LPC1766方框图 图4.2 LPC1766方框图 3. LPC1700系列 MCU 参数规格如下表所示 表4.1 LPC1700系列MCU参数规格一览 EtherNet USB 2.0 LPC1751 32 8 - Device 8ch 1 1-3 6ch 6ch/12bit LPC1752 64 16 - Device 8ch 1 1-3 6ch LPC1754 128 32 - Device/Host/OTG 8ch 1 1-3 LPC1756 256 32 - Device/Host/OTG 8ch 1 2 1 LPC1758 512 64 1 Device/Host/OTG 8ch 1 2 LPC1764 128 32 1 Device 8ch 1 2 器件 型号 Flash SRAM (KB) (KB) 正交 GP CAN 编 码 2.0B I2S DMA I2C PWM A/D D/A - 器 Timer SPI 32bit SSP UART (485 /IrDA) 封装 4 1/2 4 LQFP80 6ch/12bit 4 1/2 4 LQFP80 6ch 6ch/12bit 1ch/10bit 4 1/2 4 LQFP80 3 6ch 6ch/12bit 1ch/10bit 4 1/2 4 LQFP80 1 3 6ch 6ch/12bit 1ch/10bit 4 1/2 4 LQFP80-3 6ch 8ch/12bit 4 1/2 4 LQFP100 55 -

器 件 型 号 Flash (KB) SRAM (KB) EtherNet USB 2.0 GP DMA 正 交 编 码 器 CAN 2.0B I2 S I 2 C PWM A/D D/A Timer 32bit SPI SSP UART (485 /IrDA) 封 装 LPC1765 256 64 - Device/Host/OTG 8ch 1 2 1 3 6ch 8ch/12bit 1ch/10bit 4 1/2 4 LQFP100 LPC1766 256 64 1 Device/Host/OTG 8ch 1 2 1 3 6ch 8ch/12bit 1ch/10bit 4 1/2 4 LQFP100 LPC1768 512 64 1 Device/Host/OTG 8ch 1 2 1 3 6ch 8ch/12bit 1ch/10bit 4 1/2 4 LQFP100 4.1.2 LPC1300 系 列 MCU 介 绍 LPC1311/13/42/43 是 以 第 二 代 ARM Cortex-M3 为 内 核 的 微 控 制 器, 其 系 统 性 能 大 大 提 高, 增 强 了 调 试 特 性, 令 所 支 持 模 块 的 集 成 级 别 更 高 其 最 大 亮 点 在 于 具 有 极 高 的 代 码 集 成 度 和 极 低 的 功 耗, 是 业 界 功 耗 最 低 的 32 位 Cortex-M3 MCU LPC1300 系 列 ARM 微 控 制 器 的 操 作 频 率 高 达 70MHz, 具 有 3 级 流 水 线 功 能, 并 采 用 支 持 独 立 本 地 指 令 和 数 据 总 线 以 及 用 于 外 设 的 第 三 条 总 线 的 哈 佛 架 构, 使 得 代 码 执 行 速 度 高 达 1.25MIPS/MHz, 还 包 括 了 一 个 内 部 预 取 单 元, 支 持 分 支 预 测 操 作 LPC1311/13/42/43 的 外 设 组 件 : 最 高 配 置 有 32KB 的 Flash 存 储 器 8KB 的 数 据 存 储 器 USB 设 备 ( 仅 对 于 LPC1342/43) 一 个 快 速 模 式 I 2 C 接 口 一 个 UART 四 个 通 用 定 时 器 42 个 通 用 I/O 引 脚 1.LPC13XX 系 列 MCU 关 键 特 性 * 第 二 代 Cortex-M3 内 核, 高 达 70MHz 的 运 行 速 度 ; * 内 置 有 嵌 套 向 量 中 断 控 制 器 (NVIC); * 具 有 32KB(LPC1343/13)/16KB(LPC1342)/8KB(LPC1311) 片 上 Flash 程 序 存 储 器 ; * 10 位 ADC, 在 8 个 引 脚 中 实 现 输 入 多 路 复 用 ; * 在 系 统 编 程 (ISP) 和 在 应 用 编 程 (IAP) 可 通 过 片 内 引 导 装 载 程 序 软 件 来 实 现 ; 串 行 接 口 * 带 有 用 于 设 备 的 片 内 PHY 的 USB 2.0 全 速 设 备 控 制 器 ( 仅 对 于 LPC1342/43); * 可 产 生 小 数 波 特 率 具 有 调 制 解 调 器 内 部 FIFO 和 支 持 RS-485/EIA-485 标 准 的 UART; * SSP 控 制 器, 带 FIFO 和 多 协 议 功 能 ; * I 2 C 总 线 接 口, 完 全 支 持 I 2 C 总 线 规 范 和 快 速 模 式, 数 据 速 率 为 1Mbit/s, 具 有 多 个 地 址 识 别 功 能 和 监 控 模 式 ; 其 它 外 设 * 多 达 42 个 通 用 I/O(GPIO) 引 脚, 带 可 配 置 的 上 拉 / 下 拉 电 阻, 并 有 新 的 可 配 置 的 开 漏 操 作 模 式 ; * 4 个 通 用 定 时 器 / 计 数 器, 共 有 4 路 捕 获 输 入 和 13 路 匹 配 输 出 ; 56

* 可 编 程 的 看 门 狗 定 时 器 (WDT); * 具 有 系 统 定 时 器 ; * 每 个 外 设 都 具 有 其 自 身 的 时 钟 分 频 器, 以 进 一 步 降 低 功 耗 ; * 集 成 了 PMU( 电 源 管 理 单 元 ), 可 在 睡 眠 深 度 睡 眠 和 深 度 掉 电 模 式 中 极 大 限 度 减 少 功 耗 ; * 具 有 三 种 低 功 耗 模 式 : 睡 眠 模 式 深 度 睡 眠 模 式 和 深 度 掉 电 模 式 ; * 带 驱 动 的 时 钟 输 出 功 能 可 以 反 映 主 振 荡 器 时 钟 IRC 时 钟 CPU 时 钟 看 门 狗 时 钟 和 USB 时 钟 ; * 掉 电 检 测, 具 有 4 个 独 立 的 阀 值, 用 于 中 断 和 强 制 的 复 位 ; * 12MHz 内 部 RC 振 荡 器 可 调 节 到 1% 的 精 度, 可 将 其 选 择 为 系 统 时 钟 ; * PLL 允 许 CPU 在 最 大 的 CPU 速 率 下 操 作, 而 无 需 高 频 晶 振, 可 从 主 振 荡 器 内 部 RC 振 荡 器 或 看 门 狗 振 荡 器 中 运 行 ; * 可 采 用 48 脚 LQFP 封 装 和 33 引 脚 HVQFN 封 装 2.LPC13XX 系 列 MCU 方 框 图 如 下 表 所 示 : 57

图 4.3 LPC13XX MCU 方 框 图 3.LPC13XX 系 列 MCU 参 数 规 格 如 下 表 所 示 : 表 4.2 LPC13XX MCU 参 数 规 格 一 览 器 件 型 号 Flash(KB) SRAM(KB) USB2.0 I 2 C(Fast+) ADC Timer32bit/16bit SSP UART (RS-485) 封 装 LPC1311 8 2-1 8ch/10bit 2/2 1 1 HVQFN33 LPC1313 32 3-1 8ch/10bit 2/2 1 1 H V Q F N 3 3 / LQFP48 LPC1342 16 4 Device 1 8ch/10bit 2/2 1 1 HVQFN33 LPC1343 32 8 Device 1 8ch/10bit 2/2 1 1 H V Q F N 3 3 / LQFP48 4.1.3 LPC1100-- 更 高 效 能 MCU 向 我 们 走 来 2009 年 5 月, 恩 智 浦 宣 布 推 出 将 于 2010 年 初 推 出 基 于 Cortex-M0 的 LPC1100 系 列 产 品 LPC1100 非 常 适 合 那 些 电 池 供 电 电 子 计 量 消 费 电 子 外 围 设 备 远 程 传 感 器 以 及 所 有 的 16 位 应 用 ARM Cortex-M0 处 理 器 是 市 场 上 现 有 的 最 小 能 耗 最 低 最 节 能 的 ARM 处 理 器 该 处 理 能 耗 非 常 低 门 数 量 少 代 码 占 用 空 间 小, 使 得 MCU 开 发 人 员 能 够 以 8 位 处 理 器 的 价 位, 获 得 32 位 处 理 器 的 性 能 超 低 门 数 还 使 其 能 够 用 于 模 拟 信 号 设 备 和 混 合 信 号 设 备 及 MCU 应 用 中, 可 望 明 显 节 约 系 统 成 本, 同 时 保 留 功 能 强 大 的 Coretex-M0 处 理 器 的 工 具 和 二 进 制 兼 容 能 力 Cortex-M0 最 大 的 优 势 在 于 能 效 数 据 显 示, 其 运 算 能 力 可 以 达 到 0.9 DMIPS/MHz, 但 功 耗 却 仅 有 80uW/MHz 这 源 于 所 谓 的 超 低 功 耗 深 度 睡 眠 架 构, 是 因 为 采 用 了 ARM 180ULL 库 和 PMK, 所 以 相 比 传 统 8/16 位 MCU 拥 有 更 低 的 静 态 功 耗 另 外, 尽 管 动 态 功 耗 与 眼 下 的 16 位 处 理 器 相 当, 但 是 由 于 运 算 性 能 的 提 高, 实 际 上 处 理 器 在 执 行 同 样 的 任 务 时 所 耗 费 的 时 间 降 低 了, 这 就 大 幅 降 低 了 处 理 器 的 动 态 功 耗 ARM Cortex-M0 处 理 器 关 键 特 性 : * 50MHz 主 频 * 紧 密 耦 合 的 巢 状 向 量 中 断 控 制 器 快 速 确 定 性 中 断 ; * 唤 醒 中 断 控 制 器 允 许 从 优 先 级 中 断 中 自 动 唤 醒 ; * 3 个 低 功 耗 模 式 : 睡 眠, 深 度 睡 眠 和 深 度 掉 电 ; 存 储 器 ; * 128KB 的 FLASH 存 储 器 ; * 16KB 的 SRAM; 串 行 外 围 设 备 ; * 带 有 分 数 波 特 率, 内 部 FIFO, 支 持 RS-485 的 UART; 58

* 带 有 FIFO 和 多 重 协 定 能 力 的 SPI 控 制 器 ; * I 2 C 总 线 接 口 支 持 全 速 I 2 C 总 线 规 格 和 快 速 模 式 的 波 特 率 为 1Mbps 带 有 多 样 的 地 址 识 别 和 监 控 模 式 ; * 模 拟 外 围 设 备 ; * 8 通 道 10 位 的 A/D 转 换 器, 转 换 率 高 达 250K 采 样 每 秒 图 4.4 ARM Cortex-M0 方 框 图 LPC1100 系 列 是 世 界 首 款 基 于 Cortex-M0 内 核 的 MCU, 性 价 比 高,LPC1100 的 代 码 和 工 具 与 恩 智 浦 其 他 基 于 ARM 内 核 的 MCU 产 品 相 兼 容,32 位 性 能 与 多 重 电 源 模 式 和 非 常 低 的 深 度 睡 眠 模 式 相 结 合 LPC1100 提 供 业 界 领 先 的 能 源 效 率 大 大 延 长 电 池 的 使 用 寿 命 LPC1100 的 性 能 效 率 结 合 了 新 标 准, 代 码 密 度 有 了 显 著 的 改 进, 可 使 电 池 寿 命 更 长 也 降 低 了 成 本 LPC1100 系 列 方 框 图 如 下 所 示 : 电 源 管 理 单 元 ADC GPIO Cortex-M0 单 元 I 2 C SPI 定 时 器 RAM ROM Flash UART 时 钟 发 生 单 元 图 4.5 LPC1100 系 列 方 框 图 59

4.2 恩 智 浦 LPC3000 系 列 MCU 恩 智 浦 公 司 的 LPC3000 系 列 MCU, 适 用 于 要 求 高 性 能 和 低 功 耗 结 合 的 嵌 入 式 应 用, 并 通 过 使 用 90 纳 米 的 工 艺 技 术, 将 一 个 带 有 矢 量 浮 点 协 处 理 器 的 ARM926EJ-S CPU 内 核 与 一 系 列 包 括 USB On- The-Go 在 内 的 标 准 外 设 结 合 起 来,LPC3000 系 列 MCU 工 作 频 率 高 于 266MHz ARM926EJ-S CPU 内 核 加 入 5 级 流 水 处 理 并 采 用 哈 佛 结 构, 该 内 核 还 具 有 一 个 完 整 的 存 储 器 管 理 单 元 (MMU), 以 提 供 支 持 现 代 操 作 系 统 多 程 序 设 计 所 需 的 虚 拟 存 储 器 功 能 ARM926EJ-S CPU 内 核 还 包 含 了 带 有 单 周 期 MAC 操 作 的 一 系 列 DSP 指 令 扩 展, 以 及 Jazelle Java 字 节 代 码 执 行 为 了 实 现 低 功 耗,LPC3000 系 列 MCU 采 用 恩 智 浦 半 导 体 先 进 的 开 发 技 术 来 优 化 内 在 功 率, 并 使 用 增 强 型 软 件 控 制 结 构 优 化 功 率 管 理 LPC3000 系 列 MCU 还 包 含 有 256kB 的 片 内 静 态 RAM 1 个 NAND Flash 接 口 1 个 以 太 网 MAC 1 个 支 持 STN 和 TFT 面 板 的 LCD 控 制 器 1 个 支 持 SDR 和 DDR SDRAM 以 及 静 态 设 备 的 外 部 总 线 接 口 此 外,LPC3000 系 列 MCU 包 括 1 个 USB2.0 全 速 接 口 或 USB2.0 高 速 接 口 7 个 UART 2 个 I 2 C 接 口 2 个 SPI/SSP 端 口 2 个 I 2 S 接 口 2 个 多 通 道 PWM 4 个 带 有 捕 获 输 入 和 比 较 输 出 的 通 用 定 时 器 1 个 加 密 数 字 (SD) 接 口 和 1 个 带 有 触 屏 感 应 选 项 的 10 位 A/D 转 换 器 4.2.1 LPC3000 系 列 MCU 参 数 规 格 表 恩 智 浦 LPC3000 系 列 目 前 大 约 有 十 一 款 MCU, 主 要 代 表 为 LPC3130 LPC3131 LPC3180/01 LPC3151 LPC3152 LPC3153 LPC3154 LPC3220 LPC3230 LPC3240 和 LPC3250 等, 其 主 要 参 数 如 表 4.3 所 示 表 4.3 LPC3000 系 列 MCU 参 数 规 格 表 型 号 存 储 器 R A M (kb) 以 c a c h e 太 (kb) 网 串 行 接 口 USB I 2 S UART LCD 接 N A N D 口 / Flash 控 制 器 LPC3130 96 16 2 - host/device/otg[1] 2 1 1[3] LPC3131 192 16 2 - host/device/otg[1] 2 1 1[3] LPC3141 192 16 2 - host/device/otg[1] 2 1 1[3] LPC3143 192 16 2 - host/device/otg[1] 2 1 1[3] LPC3152 192 16 2 - host/device/otg[1] 2 1 1[3] LPC3154 192 16 2 - host/device/otg[1] 2 1 1[3] MCI SD/MMC/ S D I O / C E -ATA SD/MMC/ S D I O / C E -ATA SD/MMC/ S D I O / C E -ATA SD/MMC/ S D I O / C E -ATA SD/MMC/ S D I O / C E -ATA SD/MMC/ S D I O / C E -ATA DDR 最 高 频 率 (MHz) CPU 电 压 I/O 电 压 温 度 范 围 选 择 封 装 180 1.2V 3.3/2.8/1.8V -40~85 TFBGA180 180 1.2V 3.3/2.8/1.8V -40~85 TFBGA180 270 1.2V 3.3/2.8/1.8V -40~85 TFBGA180 270 1.2V 3.3/2.8/1.8V -40~85 TFBGA180 180 1.2V 3.3/2.8/1.8V -40~85 TFBGA208 180 1.2V 3.3/2.8/1.8V -40~85 TFBGA208 LPC3220 128 32 2 - host/device/otg[2] 2 7 - SD 266 1.35/1.2V 3.3/1.8V -40~85 TFBGA296 60

型 号 存 储 器 R A M (kb) 以 c a c h e 太 (kb) 网 串 行 接 口 USB I 2 S UART LCD 接 N A N D 口 / Flash 控 制 器 MCI DDR 最 高 频 率 (MHz) CPU 电 压 I/O 电 压 温 度 范 围 选 择 封 装 LPC3230 256 32 2 - host/device/otg[2] 2 7 1[4] SD 266 1.35/1.2V 3.3/1.8V -40~85 TFBGA296 LPC3240 256 32 2 1 host/device/otg[2] 2 7 - SD 266 1.35/1.2V 3.3/1.8V -40~85 TFBGA296 LPC3250 256 32 2 1 host/device/otg[2] 2 7 1[4] SD 266 1.35/1.2V 3.3/1.8V -40~85 TFBGA296 我 们 以 恩 智 浦 最 新 的 LPC32X0 系 列 MCU 特 性 和 构 成 来 说 明 LPC3000 系 列 MCU 的 组 成, 恩 智 浦 半 导 体 的 LPC32x0 系 列 芯 片 适 用 于 要 求 高 性 能 和 低 功 耗 结 合 的 嵌 入 式 应 用 中 4.2.2 LPC32x0 系 列 MCU 特 性 * ARM926EJS 处 理 器,CPU 时 钟 运 行 速 率 可 高 达 266MHz; * 矢 量 浮 点 协 处 理 器 ; * 32kB 指 令 高 速 缓 存 和 32kB 数 据 高 速 缓 存 ; * 高 达 256kB 的 内 部 SRAM(IRAM); * 可 选 择 从 不 同 的 外 部 设 备 中 启 动 :NAND Flash SPI 存 储 器 USB UART 或 静 态 存 储 器 ; * 多 层 AHB 系 统 为 每 个 AHB 主 机 单 独 提 供 总 线, 包 括 CPU 的 指 令 总 线 和 数 据 总 线 DMA 控 制 器 的 两 条 数 据 总 线 和 USB 控 制 器 的 另 一 条 总 线, 两 条 数 据 总 线 一 条 用 于 LCD 另 一 条 用 于 以 太 网 MAC 一 般 情 况 下 没 有 仲 裁 延 迟, 除 非 出 现 2 个 主 机 同 时 访 问 同 一 个 从 机 的 情 况 ; * DDR 和 SDR SDRAM 以 及 静 态 设 备 的 外 部 存 储 器 控 制 器 ; * 2 个 NAND Flash 控 制 器 一 个 支 持 单 级 NAND Flash 器 件, 另 一 个 支 持 多 级 NAND Flash 器 件 ; * 1 个 主 机 中 断 控 制 器 (MIC) 和 2 个 从 机 中 断 控 制 器 (SIC), 支 持 74 个 中 断 源 ; * 1 个 8 路 通 用 AHB DMA 控 制 器 (GPDMA), 可 与 SD 卡 端 口 高 速 UART I 2 S 端 口 和 SPI 接 口 一 同 用, 来 实 现 存 储 器 到 存 储 器 之 间 的 传 输 ; 串 口 接 口 * 带 有 特 定 DMA 控 制 器 的 10/100 以 太 网 MAC; * USB 接 口 支 持 设 备 主 机 ( 遵 循 OHCI) 或 On-The-Go(OTG), 带 有 相 关 的 DMA 控 制 器, 由 特 定 的 PLL 来 提 供 所 需 的 48MHz USB 时 钟 ; * 4 个 标 准 UART, 带 有 小 数 波 特 率 发 生 器 和 64 字 节 FIFO, 其 中 一 个 标 准 的 UART 支 持 IrDA; * 3 个 其 它 的 高 速 UART, 在 13MHz 的 主 振 荡 器 作 用 下 可 支 持 高 达 921,600bps 的 板 内 通 信 ; 所 有 高 速 UART 都 提 供 64 字 节 FIFO; * 2 个 SPI 控 制 器 ; 61

* 2 个 SSP 控 制 器 ; * 2 个 独 立 的 主 机 I 2 C 接 口, 具 有 标 准 开 漏 管 脚 I 2 C 总 线 接 口 支 持 单 主 机 从 机 和 多 主 机 的 I 2 C 配 置 2 个 I 2 S 接 口, 每 个 具 有 独 立 输 入 (RX) 和 输 出 (TX) 通 道, 每 个 通 道 可 在 3 个 管 脚 上 独 立 操 作, 或 输 入 和 输 出 通 道 可 使 用 4 个 管 脚 和 1 个 共 用 的 时 钟 ; 其 它 处 设 * LCD 控 制 器 支 持 STN 和 TFT 面 板, 带 有 特 定 的 DMA 控 制 器 可 编 程 的 显 示 分 辨 率 高 达 1024 768; * 加 密 数 字 (SD) 存 储 卡 接 口, 遵 循 SD 存 储 卡 规 范 版 本 1.01; * 通 用 输 入 输 出 和 I/O 管 脚, 包 括 12 个 通 用 输 入 管 脚 24 个 通 用 输 出 管 脚 和 51 个 通 用 I/O 管 脚 ; * 10 位 400kHz 的 A/D 转 换 器, 带 3 个 管 脚 的 输 入 多 路 复 用 或 A/D 转 换 器 可 用 作 触 屏 控 制 器 ; * 实 时 时 钟 (RTC), 带 单 独 的 电 源 管 脚 该 RTC 具 有 特 定 的 32kHz 振 荡 器 NXP 在 一 个 独 立 的 电 源 域 内 执 行 RTC, 使 其 可 在 芯 片 的 其 它 部 分 断 电 时 仍 保 持 有 效,RTC 还 包 含 一 个 32 字 节 的 暂 存 存 储 器 ; * 具 有 16 位 预 分 频 器 的 32 位 通 用 高 速 定 时 器 该 定 时 器 包 括 1 个 外 部 捕 获 输 入 管 脚 和 连 接 到 RTC 时 钟 的 捕 获 可 利 用 3 个 匹 配 寄 存 器 来 产 生 中 断 ; * 6 个 增 强 型 的 定 时 器 / 计 数 器, 除 外 设 基 址 外 它 们 都 相 同, 最 少 有 2 个 捕 获 输 入 和 2 个 匹 配 输 出 被 配 置 用 于 4 个 定 时 器, 每 个 定 时 器 可 选 择 几 个 管 脚 定 时 器 1 引 出 第 三 个 匹 配 输 出, 而 定 时 器 2 和 3 引 出 所 有 4 个 匹 配 输 出, 定 时 器 4 有 一 个 匹 配 输 出, 定 时 器 5 没 有 输 入 / 输 出 管 脚 ; * 1 个 32 位 的 毫 秒 定 时 器 由 RTC 时 钟 驱 动, 该 定 时 器 可 利 用 2 个 匹 配 寄 存 器 来 产 生 中 断 ; * 1 个 看 门 狗 定 时 器 该 定 时 器 通 过 PERIPH_CLK 计 时 ; * 1 个 电 机 控 制 PWM; * 2 个 额 外 的 单 输 出 PWM 模 块 ; * 键 盘 扫 描 仪 功 能 允 许 自 动 扫 描 多 达 8 8 的 键 矩 阵 ; * 高 达 18 个 外 部 中 断 ; * 标 准 ARM 测 试 / 调 试 接 口, 可 以 兼 容 现 有 的 工 具 ; * 具 有 2K 24 位 RAM 的 仿 真 跟 踪 缓 冲 区, 允 许 通 过 JTAG 接 口 进 行 跟 踪 ; * 当 允 许 通 过 其 它 外 设 功 能 来 重 新 启 动 CPU 时, 可 利 用 停 止 模 式 来 节 省 功 耗 ; * 片 内 晶 体 振 荡 器 ; * 片 内 PLL 允 许 CPU 在 最 高 的 CPU 速 率 下 操 作, 而 无 需 使 用 高 频 晶 体 另 一 个 PLL 允 许 在 32kHz 的 RTC 时 钟 下 操 作, 而 不 需 要 使 用 外 部 晶 体 ; * 边 界 扫 描 以 简 化 板 的 测 试 ; 62

* 296 脚 TFBGA 封 装 4.2.3 LPC32x0 系 列 MCU 方 框 图 我 们 以 LPC3250 组 成 来 说 LPC32x0 系 列 MCU 基 本 构 成, 如 下 图 4.6 所 示 图 4.6 LPC3250 方 框 图 4.3 恩 智 浦 LPC2000 系 列 MCU 恩 智 浦 LPC2000 系 列 采 用 ARM7TDMI-S 内 核, 工 作 频 率 84MHz, 功 能 强 大, 性 价 比 高 它 们 集 成 了 LCD 支 持 功 能, 并 提 供 大 量 的 外 设, 包 括 多 个 串 行 接 口 以 太 网 接 口 USB Host/OTG CAN 以 及 外 部 总 线 接 口, 主 要 瞄 准 工 业 控 制 医 疗 电 子 和 连 接 类 应 用 这 个 系 列 的 产 品 非 常 广 泛, 有 超 过 8 0 个 型 号, 具 体 又 可 分 为 LPC2100 系 列 LPC2200 系 列 LPC2300 系 列 LPC2400 系 列 LPC2800 系 列 和 LPC2900 系 列 等, 我 们 将 选 取 有 代 表 性 的 产 品 进 行 63

介 绍 4.3.1 LPC2100 系 列 MCU 介 绍 LPC210 0 系 列 M CU 基 于 一 个 支 持 实 时 仿 真 和 跟 踪 的 16 / 3 2 位 A R M7 TDMI - S CPU, 并 带 有 128/256k 字 节 (kb) 嵌 入 的 高 速 Flash 存 储 器 128 位 宽 度 的 存 储 器 接 口 和 独 特 的 加 速 结 构 使 32 位 代 码 能 够 在 最 大 时 钟 速 率 下 运 行 对 代 码 规 模 有 严 格 控 制 的 应 用 可 使 用 16 位 Thumb 模 式 将 代 码 规 模 降 低 超 过 30%, 而 性 能 的 损 失 却 很 小 由 于 LPC2100 系 列 采 用 非 常 小 的 64 脚 封 装 极 低 的 功 耗 多 个 32 位 定 时 器 4 路 10 位 ADC PWM 输 出 以 及 多 达 9 个 外 部 中 断, 这 使 它 们 特 别 适 用 于 工 业 控 制 医 疗 系 统 访 问 控 制 和 电 子 收 款 机 (POS) 等 应 用 领 域 由 于 内 置 了 宽 范 围 的 串 行 通 信 接 口, 它 们 也 非 常 适 合 于 通 信 网 关 协 议 转 换 器 嵌 入 式 软 件 调 制 解 调 器 以 及 其 它 各 种 类 型 的 应 用, 后 续 的 器 件 还 将 提 供 以 太 网 802.11 以 及 USB 功 能, 该 系 列 MCU 又 衍 生 出 很 多 型 号, 其 中 LPC2114/2124 还 是 全 球 第 一 个 实 现 可 加 密 的 ARM 微 控 制 器 1.LPC2100 系 列 MCU 主 要 特 点 * 16/32 位 ARM7TDMI-S 核, 超 小 LQFP 和 HVQFN 封 装 ; * 16/32/64kB 片 内 SRAM; * 128/256kB 片 内 Flash 程 序 存 储 器 ; * 128 位 宽 度 接 口 / 加 速 器 可 实 现 高 达 60MHz 工 作 频 率 ; * 通 过 片 内 boot 装 载 程 序 实 现 在 系 统 编 程 (ISP) 和 在 应 用 编 程 (IAP); * Embedded ICE 可 实 现 断 点 和 观 察 点 ; * 嵌 入 式 跟 踪 宏 单 元 (ETM) 支 持 对 执 行 代 码 进 行 无 干 扰 的 高 速 实 时 跟 踪 ; * 10 位 A/D 转 换 器, 转 换 时 间 低 至 2.44μs; * CAN 接 口, 带 有 先 进 的 验 收 滤 波 器 ; * 多 个 串 行 接 口, 包 括 2 个 16C550 工 业 标 准 UART 高 速 I 2 C 接 口 (400 khz) 和 2 个 SPI 接 口 2.LPC2100 系 列 MCU 参 数 配 置 如 下 所 示 : 64

表 4.4 LPC2100 系 列 MCU 参 数 规 格 表 器 件 型 号 存 贮 器 定 时 / 计 数 器 串 行 接 口 最 定 RTC/ 大 加 RAM Flash 时 PWM 系 统 WDT UART I 2 SSP USB C SPI 频 密 [2] 2.0 CAN 器 定 时 器 率 CPU 电 压 I/O 电 压 工 作 温 度 ( ) A/D D/A 封 装 LPC2101 2K 8K 2 2 1 1 70 1.8 3.3-40~85 8-ch/10-bit - LQFP48 LPC2102 4K 16K 2 2 1 1 70 1.8 3.3-40~85 8-ch/10-bit - LQFP48 LPC2103 8K 32K 2 2 1 1 70 1.8 3.3-40~85 8-ch/10-bit - LQFP48 LPC2104 16K 128K 2 1 1 1 60-1.8 3.3 0~70 - - LQFP48 LPC2106 64K 128K 2 1 1 1 60-1.8 3.3 0~70-40~85 - - LQFP48 HVQFN48 LPC2109 8k 64k 2 1 2 1 60 1.8V 3.3V -40~+85 4-ch/10-bit - LQFP64 LPC2114 16K 128K 2 1 2 60 1.8 3.3-40~85 4-ch/10-bit - LQFP64 LPC2124 16K 256K 2 1 2 60 1.8 3.3-40~85 4-ch/10-bit - LQFP64 LPC2119 16K 128K 2 1 2 2 60 1.8 3.3-40~85 4-ch/10-bit - LQFP64 LPC2129 16K 256K 2 1 2 2 60 1.8 3.3-40~85 4-ch/10-bit - LQFP64 LPC2131 8K 32K 2 2 1 1 60 3.3 3.3-40~85 8-ch/10-bit - LQFP64 LPC2132 16K 64K 2 2 1 1 60 3.3 3.3-40~85 8-ch/10-bit LPC2134 16K 128K 2 2 1 1 60 3.3 3.3-40~85 LPC2136 32K 256K 2 2 1 1 60 3.3 3.3-40~85 LPC2138 32K 512K 2 2 1 1 60 3.3 3.3-40~85 Dual 8-ch/10-bit Dual 8-ch1/0-bit Dual 8-ch/10-bit 1-ch 10-bit 1-ch 10-bit 1-ch 10-bit 1-ch 10-bit LQFP64 LQFP64 LQFP64 LQFP64 LPC2141 8K 32K 2 2 1 1 1 60 3.3 3.3-40~85 6-ch/10-bit - LQFP64 LPC2142 16K 64K 2 2 1 1 1 60 3.3 3.3-40~85 6-ch/10-bit LPC2144 16K 128K 2 2 1 1 1 60 3.3 3.3-40~85 LPC2146 LPC2148 32K +8K 32K +8K 8-ch+6-ch /10- bit 256K 2 2 1 1 1 60 3.3 3.3-40~85 8-ch+6-ch/10- bit 512K 2 2 1 1 1 60 3.3 3.3-40~85 8-ch+6-ch/10- bit 1-ch 10-bit 1-ch 10-bit LPC2157[1] 32 512 2 2 1 1 60 3.3V 3.3-40~85 Dual 8-ch/10-bit 1-ch 10-bit LPC2158[1] 40 512 2 2 1 1 1 60 3.3V 3.3-40~85 8-ch+6-ch/10- bit 1-ch 10-bit 1-ch 10-bit 1-ch 10-bit LQFP64 LQFP64 LQFP64 LQFP64 LQFP100 LQFP100 LPC2194 16K 256K 2 1 2 4 60 1.8 3.3-40~125 4-ch/10-bit - LQFP64 2.LPC2100 系 列 MCU 典 型 构 成 如 下 方 框 图 所 示 : 65

4.3.2 LPC2200 系 列 MCU 介 绍 图 4.7 LPC2131/2132/2138 方 框 图 LPC2200 系 列 MCU 基 于 一 个 支 持 实 时 仿 真 和 嵌 入 式 跟 踪 的 16/32 位 ARM7TDMI-S CPU, 处 理 器 时 钟 高 达 60M/75MHz, 片 内 集 成 8KB 16KB 32KB 64KB 128KB 256KB 和 512KB 的 高 速 Flash 存 储 器,128 位 宽 度 的 存 储 器 接 口 和 独 特 的 加 速 结 构 使 32 位 代 码 能 够 在 最 大 时 钟 速 率 下 运 行 此 外, 片 内 集 成 大 量 外 设 : 外 部 存 储 器 控 制 器 (EMC) UART 接 口 CAN-bus 接 口 SPI 接 口 SSP 接 口 I 2 C 接 口 ADC DAC USB 2.0 接 口 通 用 定 时 器 外 部 中 断 PWM 实 时 时 钟 LCD 驱 动 器 等 等 通 过 外 部 存 储 器 接 口 可 以 扩 展 64MB 的 异 步 静 态 存 储 器 设 备 1.LPC2200 系 列 MCU 主 要 特 性 : * 16/32 位 ARM7TDMI-S 微 控 制 器,LQFP144 和 TFBGA144 封 装 ; 66

* 16/64kB 片 内 静 态 RAM(LPC2210/LPC2220); * 串 行 boot 装 载 程 序 通 过 UART0 来 实 现 在 系 统 下 载 和 编 程 ; * EmbeddedICE-RT 和 嵌 入 式 跟 踪 接 口 使 用 片 内 RealMonitor 软 件 对 任 务 进 行 实 时 调 试 ; * 并 支 持 对 执 行 代 码 进 行 无 干 扰 的 高 速 实 时 跟 踪 ; * 8 路 10 位 A/D 转 换 器, 转 换 时 间 低 至 2.44μs; * 2 个 32 位 定 时 器 (LPC2220 也 具 有 外 部 事 件 计 数 器 ) 带 4 路 捕 获 和 4 路 比 较 通 道 ; * PWM 单 元 (6 路 输 出 ) 实 时 时 钟 (RTC) 和 看 门 狗 * 多 个 串 行 接 口, 包 括 2 个 16C550 工 业 标 准 UART 高 速 I 2 C 总 线 (400kbit/s) 和 2 个 SPI 接 口 ; * 在 LPC2220 上, 可 选 择 带 有 数 据 缓 冲 区 和 可 变 长 度 传 输 的 同 步 串 行 口 (SSP) 来 代 替 一 个 SPI; * 向 量 中 断 控 制 器 (VIC), 可 配 置 优 先 级 和 向 量 地 址 ; * 通 过 外 部 存 储 器 接 口 可 将 存 储 器 配 置 成 4 组, 每 组 的 容 量 高 达 16Mb, 数 据 宽 度 为 8/16/32 位 ; * 多 达 76 个 通 用 I/O 口 ( 可 承 受 5V 电 压 ) 可 使 用 9 个 边 沿 或 电 平 触 发 的 外 部 中 断 管 脚 ; * 通 过 可 编 程 的 片 内 锁 相 环 (PLL) 可 实 现 最 大 为 60/75MHz(LPC2210/2220) 的 CPU 操 作 频 率 ; * 设 置 时 间 为 100μs; * 带 外 部 晶 体 的 片 内 振 荡 器 频 率 范 围 :1~30MHz, 外 部 振 荡 器 的 频 率 高 达 50MHz; * 2 个 低 功 耗 模 式 : 空 闲 和 掉 电 ; * 通 过 外 部 中 断 将 处 理 器 从 掉 电 模 式 中 唤 醒 ; * 可 通 过 个 别 使 能 / 禁 止 外 部 功 能 来 优 化 功 耗 ; * 双 电 源 ; * CPU 操 作 电 压 范 围 :1.65V±1.95 V(1.8 V± 0.15 V); * I/O 操 作 电 压 范 围 :3.0±3.6 V(3.3V±10%),I/O 口 可 承 受 5V 电 压 2.LPC2200 系 列 MCU 产 品 参 数 规 格 表 : 表 4.5 LPC2200 系 列 MCU 参 数 规 格 表 器 件 存 贮 器 定 时 / 计 数 器 串 行 接 口 最 大 复 位 CPU I/O 工 作 温 度 型 号 RAM Flash 定 时 器 PWM RTC/ 系 WDT UART I 2 C SPI SSP CAN 频 率 加 密 电 平 电 压 电 压 ( ) A/D 封 装 统 定 时 器 LPC2210 16K - 2 1 2 60 - 低 1.8 3.3-40~85 8-ch/10-bit LQFP144 LQFP144 LPC2220 64K - 2 1 1 1 60 - 低 1.8 3.3-40~85 8-ch/10-bit TFBGA144 LPC2212 16K 128K 2 1 2 60 低 1.8 3.3-40~85 8-ch/10-bit LQFP144 LPC2214 16K 256K 2 1 2 60 低 1.8 3.3-40~85 8-ch/10-bit LQFP144 LPC2290 16K - 2 1 2 2 60 - 低 1.8 3.3-40~85 8-ch/10-bit LQFP144 LPC2292 16K 256K 2 1 2 2 60 低 1.8 3.3-40~5 8-ch/10-bit LQFP144 LPC2294 16K 256K 2 1 2 4 60 低 1.8 3.3-40~125 8-ch/10-bit LQFP144 67

3.LPC2200 系 列 MCU 典 型 方 框 图 如 下 所 示 : 图 4.8 LPC2210 方 框 图 4.3.3 LPC24XX 系 列 MCU 介 绍 恩 智 浦 LPC24x x 系 列 MCU 使 用 一 个 工 作 在 72MHz 的 高 性 能 32 位 ARM7 内 核 ; 每 个 器 件 含 有 512KB 的 片 内 Flash 和 98KB 的 片 内 SRAM 存 储 器 ; 在 系 统 编 程 (ISP) 和 在 应 用 编 程 (IAP) 软 件 将 编 程 时 间 缩 至 最 短 编 程 每 个 256 字 节 行 只 需 要 1ms 编 程 一 个 扇 区 或 擦 除 整 个 芯 片 只 需 要 400ms 128 位 宽 的 存 储 器 接 口 和 专 有 的 存 储 器 加 速 器 使 32 位 的 代 码 可 以 在 最 高 时 钟 速 率 下 执 行, 无 需 使 用 宝 贵 的 SRAM 对 代 码 大 小 有 严 格 要 求 的 应 用 选 择 使 用 16 位 Thumb 模 式 可 以 减 少 30% 的 代 码 规 模, 损 失 的 性 能 却 最 少 该 系 列 的 每 个 微 控 制 器 都 包 含 1 个 10/100 Ethernet MAC 接 口 1 个 支 持 OTG 主 机 (OHCI) 和 设 备 操 作 的 USB 2.0 全 速 (12Mbps) 设 备 2 个 CAN2.0B 通 道 1 个 通 用 DMA 控 制 器 1 个 10 位 的 A/D 转 换 器 和 1 个 10 位 的 D/A 转 换 器 Ethernet MAC 在 独 立 的 AHB 总 线 上 有 16KB 的 SRAM 和 一 个 相 关 的 DMA 控 制 器 它 还 有 一 个 媒 体 独 立 接 口 (MII) 和 简 化 的 MII(RMII) 接 口 USB 控 制 器 含 有 4KB 的 USB 68

SRAM 和 可 存 取 的 DMA, 支 持 32 个 端 点 的 控 制 中 断 批 量 和 同 步 数 据 传 输 模 式 多 个 串 行 通 信 接 口 和 巨 大 的 外 设 缓 冲 区 增 强 了 设 计 的 灵 活 性 LPC24xx 有 4 个 32 位 的 捕 获 / 比 较 定 时 器 用 于 三 相 电 机 控 制 ( 包 含 死 区 时 间 (dead time) ) 的 2 个 PWM 单 元 1 个 带 有 2KB 电 池 SRAM 的 低 功 耗 实 时 时 钟 1 个 看 门 狗 定 时 器 ( 有 多 种 时 钟 源 选 择 ) 和 1 个 可 用 作 主 系 统 时 钟 的 4MHz 内 部 RC 振 荡 器 LPC24xx 的 每 个 外 设 都 有 一 个 独 立 的 时 钟 分 频 器, 这 就 使 设 计 者 能 够 将 功 耗 降 至 最 低 而 且,P0 口 和 P2 口 的 每 个 管 脚 都 可 用 作 外 部 中 断 管 脚 该 系 列 的 微 控 制 器 有 160 个 以 高 达 18MHz 的 速 率 触 发 的 通 用 I/O 每 个 微 控 制 器 的 工 作 温 度 范 围 为 -40~85 外 部 存 储 器 控 制 器 (EMC) 支 持 异 步 静 态 存 储 器 器 件 ( 例 如 RAM ROM 和 Flash) 和 动 态 存 储 器 ( 例 如 SDRAM) 微 控 制 器 有 4 个 静 态 存 储 器 片 选 信 号 4 个 同 步 存 储 器 器 件 片 选 信 号 关 于 调 试, 每 个 器 件 都 支 持 实 时 仿 真 和 嵌 入 式 跟 踪 支 持, 都 有 一 个 集 成 的 向 量 中 断 控 制 器 (VIC) 而 且, 为 了 兼 容 现 有 的 工 具, 每 个 器 件 都 使 用 标 准 的 ARM 测 试 / 调 试 JTAG 接 口 这 些 微 控 制 器 专 为 设 备 的 连 接 而 设 计, 它 们 功 能 强 大 性 价 比 较 高 1.LPC24XX 系 列 MCU 特 性 : * 72MHz 32 位 的 ARM7TDMI-S, 带 双 AHB 总 线 ; * 512KB 的 ISP/IAP Flash 和 98KB 的 SRAM; * SDRAM SRAM 和 Flash 的 外 部 存 储 器 接 口 ; * Flash 编 程 极 快, 通 过 片 内 的 boot loader 软 件 实 现 ; * 10/100 Ethernet MAC 接 口, 带 DMA 和 MII/RMII 接 口 ; * USB2.0 全 速 OTG/ 设 备 /OHCI, 带 有 PHY 和 DMA; * 2 个 CAN2.0B 接 口 ; * 通 用 DMA 控 制 器 ; * 10 位 A/D 转 换 器 和 10 位 D/A 转 换 器 ; * 多 个 串 行 接 口 :3 个 I 2 C 1 个 I 2 S 4 个 UART 和 3 个 SPI/SSP; * 4 个 32 位 的 定 时 器 1 个 低 功 耗 的 实 时 时 钟 和 1 个 看 门 狗 定 时 器 ; * 4MHz 的 内 部 RC(IRC) 振 荡 器, 可 以 调 节 到 1% 的 精 度 ; * 160 个 通 用 快 速 I/O; * 单 个 3.3V 的 电 源 (3.0~3.6V); * 含 有 几 种 掉 电 模 式, 包 括 深 度 掉 电 ; * 封 装 : 69

TFBGA180(12 12 0.8mm) LQFP208(28 28 1.4mm) TFBGA208(15 15 0.8mm) 2.LPC24XX 系 列 MCU 方 框 图 如 下 所 示 : 图 4.9 LPC24XX 系 列 MCU 方 框 图 3.LPC24XX 系 列 MCU 参 数 规 格 如 下 表 所 示 : 表 4.6 LPC24xx 系 列 MCU 参 数 规 格 器 件 型 号 Flash (KB) 存 储 器 串 行 ADC/DAC 选 项 SRAM (KB) 外 部 接 口 10/100 Ethernet USB 2.0 (12Mbps) CAN UART I 2 C I 2 S LCD ADC 通 SD DAC 通 道 控 制 器 道 /MMC (10 位 ) (10 位 ) LPC2420-82 完 整 的 32 位 - D/H/O - 4 3 1 1/2 1 8 1 无 LQFP208 LPC2458 512 98 完 整 的 32 位 1 D/H/O 2 4 3 1 1/2 1 8 1 无 TFBGA180 SPI /SSP 封 装 LPC2460-98 完 整 的 32 位 1 D/H/O 2 4 3 1 1/2 1 8 1 无 T F B G A 2 0 8 / LQFP208 70

器 件 型 号 Flash (KB) 存 储 器 串 行 ADC/DAC 选 项 SRAM (KB) 外 部 接 口 10/100 Ethernet USB 2.0 (12Mbps) CAN UART I 2 C I 2 S SPI /SSP LCD ADC 通 SD DAC 通 道 控 制 器 道 /MMC (10 位 ) (10 位 ) LPC2468 512 98 完 整 的 32 位 1 D/H/O 2 4 3 1 1/2 1 8 1 无 LPC2470-98 完 整 的 32 位 1 D/H/O 2 4 3 1 1/2 1 8 1 有 LPC2478 512 98 完 整 的 32 位 1 D/H/O 2 4 3 1 1/2 1 8 1 有 封 装 T F B G A 2 0 8 / LQFP208 T F B G A 2 0 8 / LQFP208 T F B G A 2 0 8 / LQFP208 4.3.4 LPC2880/2888MCU 介 绍 LPC2880/2888 MCU 是 一 款 基 于 ARM7 的 微 控 制 器, 适 合 于 要 求 低 功 耗 和 高 性 能 的 便 携 式 应 用 它 包 含 一 个 USB2.0 高 速 设 备 接 口, 一 个 能 够 连 接 SDRAM 和 Flash 的 外 部 存 储 器 接 口, 一 个 MMC/SD 存 储 卡 接 口,A/D 和 D/A 转 换 器 以 及 包 含 UART I 2 C 总 线 和 I 2 S 总 线 在 内 的 串 行 接 口 在 结 构 上 增 加 了 多 通 道 DMA, 处 理 器 高 速 缓 存, 多 条 内 部 总 线 上 的 同 步 操 作 和 灵 活 的 时 钟 发 生 单 元, 它 们 有 助 于 确 保 LPC2880/2888 在 与 其 它 众 多 竞 争 产 品 相 比, 能 够 处 理 更 高 要 求 的 应 用 该 芯 片 能 够 采 用 单 电 池 USB 或 已 校 准 的 1.8V 和 3.3V 供 电 1.LPC2880/2888 MCU 特 性 : * ARM7TDMI 处 理 器, 带 8kB 高 速 缓 存, 工 作 频 率 可 高 达 60MHz; * 1MB 片 内 Flash 程 序 存 储 器, 可 实 现 128 位 高 性 能 访 问 ; * 64kB SRAM; * Boot ROM 允 许 执 行 Flash 代 码, 外 部 代 码 或 通 过 USB 进 行 Flash 编 程 ; * 片 内 DC/DC 转 换 器, 能 够 从 单 电 池 或 USB 电 源 产 生 所 有 必 需 的 电 压 ; * 多 条 内 部 总 线 允 许 在 没 有 竞 争 的 情 况 下, 实 现 同 步 的 简 单 DMA USB DMA 和 从 片 内 Flash 执 行 程 序 ; * 外 部 存 储 器 控 制 器 支 持 Flash SRAM ROM 和 SDRAM; * 高 级 向 量 中 断 控 制 器, 支 持 高 达 30 个 向 量 中 断 ; * 创 新 的 事 件 路 由 器 允 许 从 高 达 107 个 源 中 实 现 中 断 上 电 和 时 钟 启 动 功 能 ; * 多 通 道 GP DMA 控 制 器 能 够 与 大 多 数 片 内 外 设 一 起 使 用, 也 可 以 用 作 存 储 器 到 存 储 器 接 口 ; 串 行 接 口 * 带 片 内 物 理 层 的 高 速 USB2.0 设 备 (480Mb/s 或 12Mb/s); * 带 小 数 波 特 率 发 生 器 流 控 制 IrDA 支 持 和 FIFO 的 UART; * I 2 C 总 线 接 口 ; * I 2 S 总 线 ( 内 部 音 频 总 线 ) 接 口, 用 于 独 立 的 立 体 声 数 据 音 频 输 入 和 输 出 ; 71

* 安 全 数 字 (SD)/ 多 媒 体 卡 (MMC) 存 储 卡 接 口 ; * 带 5 通 道 多 路 输 入 的 10 位 A/D 转 换 器 ; * 带 放 大 和 增 益 控 制 的 16 位 立 体 声 A/D 和 D/A 转 换 器 ; * 高 级 时 钟 发 生 单 元 和 功 率 控 制 降 低 了 功 耗 ; * 2 个 带 可 选 预 分 频 器 的 32 位 定 时 器 ; * 8 位 /4 位 LCD 接 口 总 线 ; * 实 时 时 钟, 可 由 32kHz 振 荡 器 或 其 它 时 钟 源 提 供 ; * 具 有 中 断 和 / 或 复 位 功 能 的 看 门 狗 定 时 器 2.LPC2880/2888 MCU 方 框 图 如 下 所 示 图 4.10 LPC2880 方 框 图 3.LPC28XX MCU 参 数 规 格 如 下 表 所 示 72

表 4.7 LPC28XX 系 列 MCU 参 数 规 格 一 览 器 件 型 号 存 贮 器 RAM Flash 定 时 器 定 时 / 计 数 器 LPC2880 64K - 2 1 1 WDT RTC PWM USB UART I 2 C SPI 高 速 USB2.0 LPC2888 64K 1M 3 1 1 高 速 USB2.0 可 配 置 lrda 可 配 置 lrda I 2 C 和 I 2 S I 2 C 和 I 2 S - - ADC 5-ch/10- bit 5-ch/10- bit 外 部 总 线 接 口 最 大 频 率 复 位 电 平 C P U 电 压 I/O 电 压 工 作 温 度 ( ) 封 闭 其 它 特 性 多 媒 体 卡 60 低 1.8 3.3-40C~85 TFBGA180 接 口 L C D 接 口 逻 辑 多 媒 体 卡 60 低 1.8 3.3-40C~85 TFBGA180 接 口 L C D 接 口 逻 辑 4.3.5 LPC29XX 系 列 MCU 介 绍 恩 智 浦 LPC29XX 系 列 MCU 微 控 制 器 基 于 80MHz 的 ARM968E-SMCU, 有 两 个 CAN 控 制 器 和 两 个 LIN 控 制 器, 提 供 连 接 和 网 关 选 项, 非 常 适 用 于 包 括 工 业 自 动 化 和 车 内 网 络 在 内 的 应 用 LPC2900 针 对 提 升 的 性 能 进 行 了 优 化, 在 一 个 片 上 功 耗 管 理 单 元 (PMU) 的 帮 助 下, 能 够 满 足 更 低 功 耗 应 用 需 求 1.LPC29XX 系 列 MCU 关 键 特 性 * ARM968E-S 处 理 器, 最 大 工 作 频 率 为 125MHz; * 125MHz 频 率 下 多 层 AHB 系 统 总 线, 带 有 3 个 独 立 的 层 ; * 片 内 存 储 器 : * 2 个 紧 密 耦 合 的 存 储 器 (TCM),16KB 指 令 (ITCM),16KB 数 据 TCM(DTCM); * 2 个 独 立 的 内 部 静 态 RAM(SRAM):32KB SRAM 和 16KB SRAM; * 8KB ETB SRAM, 也 可 用 于 代 码 执 行 和 数 据 ; * 高 达 768KB 高 速 Flash 程 序 存 储 器 ; * 16KB EEPROM, 字 节 可 擦 除 / 可 编 程 ; * 双 主 机 8 通 道 GPDMA 控 制 器 在 AHB 多 层 矩 阵 上, 可 与 I 2 C 接 口 SPI 接 口 和 UART 一 起 使 用, 并 可 用 于 存 储 器 到 存 储 器 之 间 的 传 输 ( 包 括 TCM 存 储 器 ); * 外 部 静 态 存 储 器 控 制 器 (SMC), 带 8 个 存 储 区 ; 高 达 32 位 数 据 总 线 24 位 地 址 总 线 ; 串 行 接 口 * 2 通 道 的 CAN 控 制 器, 支 持 Full-CAN 和 大 量 消 息 的 过 滤 ; * 2 个 LIN 主 机 控 制 器 带 有 全 硬 件 支 持 LIN 通 信 LIN 接 口 可 配 置 为 UART 来 提 供 2 个 额 外 UART 接 口 ; * 2 个 550 UART, 带 16 字 节 的 Tx 和 Rx FIFO 深 度 DMA 支 持 和 RS485(9 位 ) 支 持 ; * 3 个 全 双 工 Q-SPI, 带 有 4 个 从 机 - 选 择 线 ;16 位 宽 ;8 个 单 元 的 深 度 ;Tx FIFO 和 Rx FIFO; * 2 个 I 2 C 总 线 接 口 ; 其 它 外 设 73

* 2 个 8 路 的 10 位 ADC, 带 3.3V 测 量 范 围, 每 个 通 道 的 转 换 时 间 低 至 2.44μs 每 个 通 道 提 供 一 个 比 较 功 能, 最 大 限 度 地 减 少 了 中 断 ; * 用 于 所 有 ADC 的 多 个 触 发 启 动 选 项 : 定 时 器 PWM 其 它 ADC 和 外 部 信 号 输 入 ; * 4 个 32 位 的 定 时 器, 每 个 定 时 器 都 包 含 4 个 链 接 到 I/O 的 捕 获 和 比 较 寄 存 器 ; * 4 个 6 通 道 PWM( 脉 宽 调 制 器 ), 带 捕 获 和 中 断 (trap) 功 能 ; * 2 个 特 定 的 32 位 定 时 器, 用 于 调 度 并 且 使 PWM 和 ADC 同 步 ; * 正 交 编 码 器 接 口 可 监 控 一 个 外 部 正 交 编 码 器 ; * 带 有 定 时 器 改 变 保 护 的 32 位 看 门 狗, 在 安 全 时 钟 下 运 行 ; * 多 达 108 个 通 用 I/O 管 脚, 带 可 编 程 的 上 拉 下 拉 或 总 线 保 持 器 (bus keeper); * 带 有 16 个 优 先 级 的 向 量 中 断 控 制 器 (VIC); * 多 达 19 个 电 平 检 测 的 外 部 中 断 管 脚, 包 括 CAN 和 LIN 唤 醒 特 性 ; * 可 配 置 时 钟 输 出 管 脚, 用 于 驱 动 外 部 系 统 时 钟 ; * 处 理 器 通 过 外 部 中 断 管 脚 从 掉 电 中 唤 醒 ;CAN 或 LIN 活 动 (activity); * 灵 活 的 复 位 发 生 器 单 元 (RGU) 可 以 控 制 各 个 模 块 的 复 位 ; * 灵 活 的 时 钟 产 生 单 元 (CGU0) 可 以 控 制 各 个 模 块 的 时 钟 频 率 : * 片 内 极 低 功 耗 的 环 形 振 荡 器,0.4MHz 的 固 定 频 率, 通 常 开 启 来 提 供 一 个 Safe_Clock 源 用 于 系 统 监 控 ; * 片 内 晶 体 振 荡 器, 建 议 的 工 作 频 率 范 围 从 10MHz 到 25MHz PLL 输 入 范 围 从 10MHz 到 25MHz; * 片 内 PLL 允 许 CPU 工 作 在 125MHz 的 最 大 频 率 下 ; * 产 生 多 达 11 个 基 本 时 钟 ; * 7 个 小 数 分 频 器 ; * 第 二 个 CGU(CGU1) 具 有 其 自 身 的 PLL, 能 够 产 生 可 配 置 的 时 钟 输 出 ; * 高 度 可 配 置 的 系 统 电 源 管 理 单 元 (PMU): 单 个 模 块 的 时 钟 控 制 ; 实 现 了 任 何 配 置 下 最 小 化 系 统 工 作 功 耗 ; * 标 准 的 ARM 测 试 和 调 试 接 口, 带 有 实 时 在 线 仿 真 器 ; * 支 持 边 界 扫 描 测 试 ; * ETM/ETB 调 试 功 能, 带 8KB 特 定 的 SRAM, 也 可 访 问 用 于 应 用 代 码 和 数 据 存 储 ; * 双 电 源 :CPU 工 作 电 压 :1.8V±5% I/O 工 作 电 压 :2.7V~3.6V; 输 入 最 大 可 承 受 5.5V 的 电 压 ; * 144 脚 LQFP 封 装 ; 74

* 环 境 工 作 温 度 范 围 :-40 ~+85 2.LPC29XX 系 列 MCU 方 框 图 如 下 图 所 示 : 16KB 指 令 紧 密 耦 合 存 储 器 (ITCM) 最 大 48KB 总 SRAM 16KB 数 据 紧 密 耦 合 存 储 器 (DTCM) 768KB 高 速 128 位 Flash JTAG 调 试 接 口 最 大 工 作 频 率 为 125MHz 的 带 AHB 和 APB 接 口 的 32 位 ARM968E-S 处 理 器 内 核 电 源 管 理, 看 门 狗 锁 相 环 32 位 外 部 存 储 器 控 制 器 (LPC2917 LPC2919) 向 量 中 断 控 制 器 2 个 550 UART 3 个 SPI 4 个 带 捕 获 / 比 较 通 道 32 位 定 时 器 4 个 6 通 道 PWM ( 脉 宽 调 制 器 ) 2 个 8 路 10 位 ADC 3.3V 2 个 CAN 主 控 制 器, 支 持 Full- CAN 和 大 量 消 息 的 过 滤 2 个 LIN 主 控 制 器 (LPC2917,LPC2919) 多 达 108 个 通 用 I/O 管 脚, 最 大 可 承 受 5V 电 压 图 4.11 LPC29XX 系 列 MCU 方 框 图 3..LPC29XX 系 列 MCU 参 数 规 格 如 下 图 所 示 : 75

表 4.8 LPC29XX 系 列 MCU 参 数 规 格 一 览 器 件 型 号 Flash (KB) SRAM (KB) 存 储 器 串 行 接 口 模 数 TCM(KB) I-/D- EEPROM (KB) CAN LIN UART SPI USB USB Device OTG USB Host ADC 最 高 频 率 (MHz) CPU 电 压 (V) I/O 电 压 (V) 温 度 范 围 选 择 封 装 LPC2917/01 512 56 16/16 16 2 2 2 3 - - - 2 125 1.8 3.3-40~85 LQFP144 LPC2919/01 768 56 16/16 16 2 2 2 3 - - - 2 125 1.8 3.3-40~85 LQFP144 LPC2921 128 24 16/16 16 2 2 4 3 - - 2 125 1.8 3.3-40~85 LQFP100 LPC2923 256 24 16/16 16 2 2 4 3 - - 2 125 1.8 3.3-40~85 LQFP100 LPC2925 512 40 16/16 16 2 2 4 3 - - 2 125 1.8 3.3-40~85 LQFP100 LPC2927 512 56 32/32 16 2 2 4 3-3 125 1.8 3.3-40~85 LQFP144 LPC2929 768 56 32/32 16 2 2 4 3-3 125 1.8 3.3-40~85 LQFP144 LPC2930 0 56 32/32 16 2 2 4 3 3 125 1.8 3.3-40~85 LQFP208 LPC2939 768 56 32/32 16 2 2 4 3 3 125 1.8 3.3-40~85 LQFP208 随 着 全 球 节 能 环 保 趋 势 日 益 明 显, 高 效 低 功 耗 MCU 将 不 断 面 市,MCU 供 应 商 将 会 不 断 推 出 更 多 功 能 强 大 效 率 更 高 的 MCU 76

第 5 章 MCU 软 硬 件 开 发 基 本 知 识 作 者 : 牛 晓 东 丰 宝 电 子 科 技 有 限 公 司 概 述 : 工 程 师 在 基 于 一 款 MCU 进 行 项 目 设 计 时, 一 般 会 先 进 行 以 下 3 步 进 行 设 计 前 的 准 备 : 1. 项 目 评 估 工 程 师 根 据 项 目 需 求, 确 定 MCU 片 上 需 要 集 成 的 功 能, 诸 如 Flash 和 RAM 的 大 小? 串 口 多 少 路 合 适? 需 要 CAN 总 线 么? 等 等, 对 如 一 些 特 殊 的 应 用 如 电 机 控 制 等, 就 要 考 虑 MCU 是 否 对 该 功 能 具 有 特 殊 的 设 计 MCU 片 上 集 成 的 功 能 越 多, 意 味 着 芯 片 的 成 本 越 高, 自 然 也 就 加 大 了 产 品 本 身 的 成 本 2. 芯 片 选 型 根 据 项 目 评 估 中 MCU 涉 及 的 功 能, 选 择 自 己 熟 悉 的 MCU 中 较 为 适 合 的 一 款 各 个 厂 商 生 产 的 MCU 可 能 是 以 一 个 系 列 或 者 一 个 家 族 来 分 类 的 不 同 型 号 的 MCU 对 应 需 求 不 同, 应 用 的 地 方 可 能 也 有 差 异, 而 且 不 同 厂 家 以 及 不 同 产 品 价 格 也 有 一 定 的 差 异 更 为 重 要 的 是, 选 定 的 MCU 是 否 存 在 BUG-- 一 些 MCU 可 能 由 于 自 身 设 计 的 问 题 难 免 会 有 一 些 这 样 或 者 那 样 的 问 题, 这 就 需 要 工 程 师 在 选 型 之 前 认 真 阅 读 目 标 MCU 的 勘 误 手 册, 看 看 是 否 有 些 问 题 是 自 己 项 目 中 无 法 接 受 的, 以 及 有 些 问 题 是 否 可 以 通 过 软 硬 件 得 以 避 免 此 外, 是 否 芯 片 具 有 一 定 量 的 应 用 资 料, 后 续 技 术 支 持 是 否 可 靠 也 是 一 个 相 当 重 要 的 条 件 选 型 工 作 是 一 个 严 谨 的 过 程, 需 要 工 程 师 在 性 能 和 价 格 以 及 可 能 存 在 的 风 险 之 间 做 出 一 个 正 确 选 择 的 过 程 3. 样 片 申 请 目 前 大 部 分 的 MCU 厂 商 的 MCU 样 片 都 需 要 通 过 其 代 理 商 处 获 得 同 时, 有 些 原 厂 代 理 商 以 及 开 发 工 具 提 供 商 也 会 提 供 一 些 基 于 MCU 的 开 发 板 或 者 方 案 供 客 户 参 考 使 用 工 程 师 在 设 计 时, 先 使 用 开 发 板 熟 悉 以 及 调 试 应 用, 可 以 达 到 事 半 功 倍 的 效 果 本 章 内 容 主 要 介 绍 LPC17xx 系 列 微 控 制 器 的 硬 件 和 软 件 设 计, 各 节 针 对 LPC17xx 一 个 功 能 每 节 针 对 相 应 的 功 能 对 寄 存 器 以 及 所 需 硬 件 设 计 进 行 了 简 述, 某 些 功 能 给 出 了 一 些 简 单 的 程 序 进 行 参 考 如 果 读 者 希 望 获 得 比 较 详 尽 的 功 能 测 试 代 码 程 序, 可 以 通 过 www.standardics.nxp.com 上 下 载 到 LPC17xx 的 Code Bundle 代 码 包, 该 代 码 包 中 包 含 有 各 个 功 能 比 较 相 近 的 应 用 程 序 限 于 编 者 的 个 人 能 力, 完 稿 稍 显 仓 促, 对 于 存 在 的 问 题, 希 望 大 家 不 吝 指 出, 谢 谢! 本 文 的 参 考 书 籍 一 为 LPC17xx User Manual 另 一 为 ARM 原 理 与 嵌 入 式 应 用 -- 基 于 LPC2400 系 列 处 理 器 和 IAR 开 发 环 境 5.1 LPC17xx 系 列 处 理 器 简 介 LPC17xx 系 列 是 基 于 ARM 公 司 的 Cortex-M3 内 核 的 微 控 制 器, 主 要 针 对 高 集 成 度 和 低 功 耗 的 嵌 入 式 应 用 LPC17xx 系 列 处 理 器 可 以 达 到 100MHz 的 CPU 主 频 ARM 的 Cortex-M3 系 列 CPU 带 有 3 级 77

流 水 线 (Pipeline) 并 且 使 用 哈 佛 结 构, 带 有 独 立 的 本 地 指 令 和 数 据 总 线 以 及 用 于 外 设 的 第 三 条 总 线 ARM Cortex-M3 CPU 还 包 括 一 个 内 部 预 取 单 元, 支 持 不 确 定 的 分 支 操 作 LPC176x 系 列 与 思 智 浦 公 司 基 于 ARM7-TDMI 内 核 LPC236x 系 列 微 控 制 器 的 管 脚 兼 容 关 于 LPC17xx 更 详 细 的 介 绍 请 参 看 本 书 第 四 章 内 容 5.2 LPC17xx 处 理 器 引 脚 配 置 5.2.1 引 脚 配 置 LPC17xx 系 列 处 理 器 共 有 100 个 引 脚, 提 供 LQFP100 封 装 形 式 的 IC, 其 引 脚 封 装 如 图 5.1 所 示 图 5.1 LPC176x 系 列 LQFP100 引 脚 封 装 图 从 功 能 上 将,LPC17xx 的 100 引 脚 分 为 P0 口 P1 口 P2 口 P3 口 P4 口, 以 及 电 源 复 位 晶 振 和 其 他 引 脚 部 分 关 于 引 脚 的 具 体 信 息, 读 者 可 以 参 考 LPC17xx 的 用 户 手 册 中 第 七 章 LPC17xx pin configuration 中 的 内 容 5.2.2 引 脚 连 接 模 块 LPC17xx 芯 片 的 绝 大 部 分 引 脚 是 功 能 复 用 的, 每 个 引 脚 都 有 可 能 用 于 不 同 的 外 设 功 能, 引 脚 具 体 用 于 什 么 外 设 功 能 是 由 引 脚 连 接 模 块 进 行 配 置 来 实 现 的, 当 引 脚 选 择 了 一 个 功 能 时, 其 它 功 能 无 效 引 脚 连 接 模 块 共 有 27 个 寄 存 器, 包 括 11 个 引 脚 功 能 选 择 寄 存 器 15 个 引 脚 功 能 模 式 寄 存 器 和 一 个 I 2 C 管 脚 配 置 寄 存 器 组 成 引 脚 功 能 选 择 寄 存 器 (PINSEL0~PINSEL10) 引 脚 功 能 选 择 寄 存 器 用 于 控 制 每 个 引 脚 的 功 能, 每 个 寄 存 器 32 位, 每 2 个 比 特 用 于 控 制 1 个 引 脚 功 能 选 择 每 一 对 比 特 设 置 引 脚 功 能 的 定 义 如 表 5.1 所 示 78

表 5.1 引 脚 功 能 选 择 寄 存 器 位 的 定 义 PINSEL0~PINSEL10 值 功 能 复 位 值 00 主 功 能 ( 默 认 ), 一 般 为 GPIO 口 01 第 一 备 用 功 能 10 第 二 备 用 功 能 00 11 第 三 备 用 功 能 每 个 引 脚 默 认 为 GPIO 口, 通 过 设 置 PINSEL 的 值 来 定 义 其 引 脚 功 能 对 于 引 脚 选 择 为 GPIO 时, 引 脚 的 方 向 控 制 由 GPIO 方 向 寄 存 器 FIODIR 控 制, 对 于 其 他 功 能, 引 脚 的 方 向 是 由 引 脚 功 能 控 制 的 5.2.3 引 脚 模 式 寄 存 器 (PINMODED PINMODE9) 引 脚 模 式 寄 存 器 PINMODE 为 所 有 的 GPIO 端 口 控 制 片 内 上 拉 / 下 拉 电 阻 特 性 当 使 用 片 内 上 拉 或 下 拉 电 阻 时, 若 引 脚 信 号 不 确 定, 则 使 用 上 拉 时 为 高 电 平, 使 用 下 拉 时 拉 低 为 低 电 平 与 PINSEL 寄 存 器 一 样,PINMODE 寄 存 器 每 2 个 位 控 制 1 个 引 脚 每 两 个 寄 存 器 控 制 一 个 端 口 组 PINMODE 寄 存 器 取 值 定 义 如 表 5.2 所 示 表 5.2 引 脚 模 式 寄 存 器 位 的 定 义 PINSEL0~PINSEL10 值 功 能 复 位 值 00 使 能 引 脚 片 内 上 拉 电 阻 01 保 留 10 既 不 使 用 上 拉 也 不 使 用 下 拉 00 11 使 能 引 脚 片 下 拉 电 阻 PINMODE_OD 寄 存 器 控 制 端 口 的 开 漏 模 式 开 漏 模 式 的 配 置 可 以 使 得 管 脚 在 配 置 为 输 出 模 式 并 且 配 置 数 据 为 1 时 正 常 的 被 拉 低, 当 配 置 数 据 为 0 时, 管 脚 的 输 出 驱 动 被 关 闭, 相 当 于 改 变 了 端 口 的 方 向, 这 样 可 以 模 拟 出 开 漏 输 出 模 式 具 体 见 表 5.3 所 示 表 5.3 管 脚 开 漏 模 式 寄 存 器 位 的 定 义 PINMODE_OD0~PINMODE_OD4 值 功 能 复 位 值 00 管 脚 处 于 正 常 模 式, 非 开 漏 模 式 01 管 脚 处 于 开 漏 模 式 00 引 脚 连 接 模 块 的 寄 存 器 总 表 如 表 5.4 所 示 79

表 5.4 引 脚 连 接 模 块 的 寄 存 器 总 表 寄 存 器 名 称 描 述 访 问 复 位 值 地 址 PINSEL0 引 脚 功 能 选 择 寄 存 器 0 读 / 写 0 0x4002 C000 PINSEL1 引 脚 功 能 选 择 寄 存 器 1 读 / 写 0 0x4002 C004 PINSEL2 引 脚 功 能 选 择 寄 存 器 2 读 / 写 0 0x4002 C008 PINSEL3 引 脚 功 能 选 择 寄 存 器 3 读 / 写 0 0x4002 C00C PINSEL4 引 脚 功 能 选 择 寄 存 器 4 读 / 写 0 0x4002 C010 PINSEL5 引 脚 功 能 选 择 寄 存 器 5 读 / 写 0 0x4002 C014 PINSEL6 引 脚 功 能 选 择 寄 存 器 6 读 / 写 0 0x4002 C018 PINSEL7 引 脚 功 能 选 择 寄 存 器 7 读 / 写 0 0x4002 C01C PINSEL8 引 脚 功 能 选 择 寄 存 器 8 读 / 写 0 0x4002 C020 PINSEL9 引 脚 功 能 选 择 寄 存 器 9 读 / 写 0 0x4002 C024 PINSEL10 引 脚 功 能 选 择 寄 存 器 10 读 / 写 0 0x4002 C028 PINMODE0 引 脚 模 式 寄 存 器 0 读 / 写 0 0x4002 C040 PINMODE1 引 脚 模 式 寄 存 器 1 读 / 写 0 0x4002 C044 PINMODE2 引 脚 模 式 寄 存 器 2 读 / 写 0 0x4002 C048 PINMODE3 引 脚 模 式 寄 存 器 3 读 / 写 0 0x4002 C04C PINMODE4 引 脚 模 式 寄 存 器 4 读 / 写 0 0x4002 C050 PINMODE5 引 脚 模 式 寄 存 器 5 读 / 写 0 0x4002 C054 PINMODE6 引 脚 模 式 寄 存 器 6 读 / 写 0 0x4002 C058 PINMODE7 引 脚 模 式 寄 存 器 7 读 / 写 0 0x4002 C05C PINMODE8 引 脚 模 式 寄 存 器 8 读 / 写 0 0x4002 C060 PINMODE9 引 脚 模 式 寄 存 器 9 读 / 写 0 0x4002 C064 PINMODE_OD0 开 漏 模 式 控 制 寄 存 器 0 读 / 写 0 0x4002 C068 PINMODE_OD1 开 漏 模 式 控 制 寄 存 器 1 读 / 写 0 0x4002 C06C PINMODE_OD2 开 漏 模 式 控 制 寄 存 器 2 读 / 写 0 0x4002 C070 PINMODE_OD3 开 漏 模 式 控 制 寄 存 器 3 读 / 写 0 0x4002 C074 PINMODE_OD4 开 漏 模 式 控 制 寄 存 器 4 读 / 写 0 0x4002 C078 I2CPADCFG I 2 C 管 脚 配 置 寄 存 器 读 / 写 0 0x4002 C07C 5.3 存 储 器 管 理 LPC17xx 系 列 微 处 理 器 片 上 最 大 集 成 了 512KB 的 片 内 Flash 存 储 器 和 64KB 的 片 内 SRAM, 对 Flash 存 储 器 的 编 程 可 以 通 过 以 下 几 种 方 式 实 现 : 通 过 串 口 0 进 行 在 系 统 编 程 (ISP) 通 过 调 用 嵌 入 片 内 的 固 件 程 序 进 行 在 应 用 中 编 程 (IAP) 以 及 通 过 内 置 的 JTAG 或 者 SWD 接 口 编 程 LPC17xx 的 SRAM 存 储 器, 包 括 了 主 32KB 的 SRAM( 可 以 被 CPU 和 三 个 DMA 控 制 器 通 过 Higher- Speed 总 线 访 问 ) 2 个 附 加 的 SRAM 各 16KB 位 于 AHB 矩 阵 总 线 上 的 独 立 从 属 端 口 上 这 样 的 设 计 架 构 可 以 允 许 CPU 和 DMA 独 立 的 访 问, 并 且 对 总 线 主 机 来 说 几 乎 没 有 延 时 80

5.3.1 存 储 器 映 射 ARM 公 司 的 Cortex-M3 内 核 共 有 4GB 的 地 址 空 间, 表 5.5 展 现 了 LPC17xx 是 怎 样 分 配 这 些 空 间 的 表 5.5 LPC17xx 存 储 空 间 使 用 和 细 节 地 址 范 围 用 途 地 址 访 问 细 节 和 描 述 0x0000 0000-0x0003 FFFF 片 内 非 易 失 存 储 器 Flash 存 储 器 (512kB) 0x1000 0000-0x1000 7FFF 片 内 SRAM SRAM-bank0(32kB) 0x2007 C000-0x2007 FFFF 片 内 SRAM, 用 于 外 设 数 据 AHB SRAM-bank0(16kB) 0x2008 0000-0x2008 3FFF 片 内 SRAM, 用 于 外 设 数 据 AHB SRAM-bank1(16kB) 0x2009 C000-0x2009 FFFF 通 用 I/O 口 0x4000 0000-0x4007 FFFF APB0 外 设 可 达 32 个 外 设 模 块, 每 个 16kB 0x4008 0000-0x400F FFFF APB1 外 设 可 达 32 个 外 设 模 块, 每 个 16kB 0x5000 0000-0x501F FFFF AHB 外 设 DMA 控 制 器, 以 太 网 接 口 和 USB 接 口 0xE000 0000-0xE00F FFFF Cortex-M3 相 关 功 能 包 括 NVIC 和 系 统 节 拍 定 时 器 LPC17xx 结 合 有 一 些 独 特 的 存 储 空 间, 如 表 5.5 所 示 图 5.2 展 现 了 LPC17xx 的 复 位 后 从 编 程 用 户 的 角 度 所 见 的 完 整 地 址 空 间 的 映 射 图, 中 断 向 量 空 间 支 持 地 址 重 映 射 AHB 外 设 区 域 是 一 个 2MB 大 小, 允 许 分 配 128 个 外 设 的 空 间 每 个 外 设 分 配 有 16kB 的 空 间 所 有 外 设 寄 存 器 不 管 规 格 大 小, 都 按 照 字 地 址 进 行 分 配 (32 位 边 界 ), 并 且 不 管 字 寄 存 器 还 是 半 字 寄 存 器, 他 们 都 是 一 次 性 访 问 的 例 如, 不 可 能 对 一 个 字 寄 存 器 的 最 高 字 节 执 行 单 独 的 读 或 者 写 操 作 5.3.2 存 储 器 重 映 射 Cortex-M3 带 有 允 许 中 断 向 量 表 重 映 射 到 存 储 空 间 中 备 用 区 间 该 功 能 可 以 通 过 NVIC 中 的 向 量 表 设 置 寄 存 器 实 现 向 量 表 可 以 设 置 在 Cortex-M3 地 址 空 间 低 端 1GB 的 空 间 中 向 量 表 必 须 以 128 字 (512 字 节 ) 为 边 界 定 位, 具 体 可 以 参 考 Cortex-M3 Technical Reference Manual 81

图 5.2 LPC17xx 系 统 存 储 空 间 映 射 图 5.3.3 Flash 存 储 器 加 速 器 当 L P C17x x 在 Flash 存 储 器 中 运 行 代 码 时, 器 件 内 部 的 存 储 器 加 速 模 块 最 大 限 度 的 提 高 了 Cortex-M3 内 核 的 处 理 性 能, 同 时 也 可 以 降 低 MCU 的 功 耗 Flash 存 储 器 加 速 模 块 不 但 提 高 了 MCU 的 执 行 速 度 而 且 改 良 了 访 问 Flash 存 储 器 中 数 据 时 的 功 耗 1. 操 作 存 储 器 加 速 器 可 以 将 需 要 的 下 一 个 Cortex-M3 指 令 锁 存, 以 防 止 CPU 取 指 暂 停 LPC17xx 仅 适 用 一 组 Flash 存 储 器, 这 个 Flash 存 储 器 加 速 模 块 包 括 一 个 8 个 128 位 的 缓 冲 区 用 于 存 储 指 令 和 数 据 Cortex-M3 内 核 为 指 令 访 问 (ICode) 和 数 据 访 问 (DCode) 在 代 码 空 间 内 提 供 独 立 的 总 线 这 些 总 线 还 有 通 用 DMA 控 制 器 的 主 端 口 是 由 AHB 多 层 矩 阵 进 行 仲 裁 的, 任 何 访 问 Flash 存 储 器 空 间 的 操 作 82

都 将 提 交 到 Flash 加 速 模 块 中 进 行 处 理 当 预 取 指 令 和 分 支 缓 冲 区 不 能 满 足 一 次 指 令 取 值 的 需 要, 并 且 预 取 指 还 没 有 启 动 时,CPU 在 启 动 128 位 的 指 令 行 取 指 时 暂 停 如 果 预 取 指 已 经 启 动 但 还 未 完 成, 则 CPU 暂 停 的 时 间 会 更 短 一 些, 预 取 指 在 Flash 结 束 前 面 的 访 问 后 立 即 启 动, 除 非 被 数 据 访 问 中 止 预 取 指 行 被 Flash 模 块 锁 存, 但 Flash 加 速 模 块 不 能 在 预 取 指 缓 冲 区 中 捕 获 该 行, 直 到 CPU 内 核 给 出 预 取 指 开 始 的 地 址, 如 果 内 核 给 出 的 地 址 与 预 取 指 地 址 不 同, 则 预 取 指 行 丢 弃 2.Flash 加 速 器 结 构 存 储 器 加 速 器 分 成 以 下 几 个 功 能 模 块 : * AHB-Lite 总 线 接 口, 可 由 Cortex-m3 的 ICode 和 DCode 总 线 访 问, 当 然 通 用 DMA 控 制 器 也 可 以 访 问 ; * 一 个 8 组 128 位 缓 冲 区 构 成 的 矩 阵 ; * Flash 加 速 控 制 逻 辑, 包 括 地 址 比 较 和 Flash 控 制 ; * 一 个 Flash 存 储 器 接 口 ; 图 5.3 简 单 的 描 述 了 Flash 存 储 器 加 速 模 块 和 数 据 路 径 图 5.3 LPC17xx 的 Flash 存 储 器 加 速 模 块 结 构 示 意 图 Flash 编 程 操 作 并 不 是 由 Flash 加 速 器 控 制, 而 是 一 个 独 立 的 功 能 启 动 ROM(Boot ROM) 中 含 有 可 被 应 用 程 序 调 用 的 Flash 的 编 程 算 法 (IAP 代 码 ), 以 及 一 个 可 对 Flash 存 储 器 进 行 编 程 的 装 载 程 序 (ISP 代 码 ) 3.Flash 加 速 器 配 置 在 复 位 后 Flash 加 速 器 默 认 为 使 能 模 式, 软 件 可 以 在 任 何 时 间 打 开 或 者 关 闭 Flash 加 速 器, 或 者 改 变 加 速 器 的 配 置,Flash 加 速 器 只 有 一 个 Flash 加 速 器 配 置 寄 存 器, 如 表 5.6 所 示 FLASHCFG 具 体 的 设 置 用 户 可 以 参 考 LPC17xx 的 用 户 手 册 获 取 更 为 详 尽 的 信 息 83

表 5.6 Flash 加 速 器 配 置 寄 存 器 名 称 描 述 访 问 复 位 值 地 址 Flash 加 速 器 配 置 寄 存 器 可 以 FLASHCFG 控 制 Flash 加 速 器 所 使 用 的 缓 冲 读 / 写 0x507A 0x400F C000 区 以 及 Flash 访 问 的 时 间 5.4 中 断 向 量 控 制 器 5.4.1 控 制 器 简 述 嵌 套 向 量 中 断 控 制 器 (NVIC) 是 Cortex-M3 内 核 的 一 部 分, 详 细 信 息 用 户 可 以 参 考 Cortex-M3 Technical Reference Manual, 其 具 有 以 下 特 点 : * 紧 密 耦 合 中 断 控 制 器 可 以 提 供 较 短 的 中 断 等 待 时 间 ; * 控 制 系 统 异 常 和 外 设 中 断 ; * LPC17xx 的 NVIC 支 持 33 个 向 量 中 断 源 ; * 32 个 可 编 程 中 断 优 先 等 级, 可 硬 件 屏 蔽 优 先 等 级 ; * 可 重 定 位 向 量 表 ; * Non-Maskable 中 断 ; * 可 以 产 生 软 件 中 断 5.4.2 中 断 源 表 5.7 展 示 了 每 个 外 设 功 能 的 中 断 源 每 个 外 设 在 向 量 中 断 控 制 器 中 有 一 条 或 者 多 条 中 断 线 连 接, 而 且 每 根 中 断 线 可 能 代 表 不 止 一 种 中 断 源, 除 了 标 准 的 ARM 内 核, 中 断 线 本 身 没 有 标 志 或 者 优 先 级 表 5.7 连 接 VIC 通 道 的 中 断 源 异 常 标 号 Vector Offset 功 能 标 志 16 0x40 WDT 看 门 狗 看 门 狗 中 断 (WDINT) 17 0x44 定 时 器 0 匹 配 0-1(MR0,MR1) 捕 捉 0-1(CR0,CR1) 18 0x48 定 时 器 1 匹 配 0-2(MR0,MR1,MR2) 捕 捉 0-1(CR0,CR1) 19 0x4C 定 时 器 2 匹 配 0-3 捕 捉 0-1 20 0x50 定 时 器 3 匹 配 0-3 捕 捉 0-1 21 0x54 串 口 0 Rx 线 状 态 (RLS) 发 送 保 持 寄 存 器 空 (THRE) Rx 数 据 可 借 用 (RDA) 字 符 超 时 指 示 (CTI) 自 动 波 特 率 结 束 (ABEO) 自 动 波 特 率 超 时 (ABTO) 84

异 常 标 号 Vector Offset 功 能 标 志 22 0x58 串 口 1 Rx 线 状 态 (RLS) 发 送 保 持 寄 存 器 空 (THRE) Rx 数 据 可 借 用 (RDA) 字 符 超 时 指 示 (CTI) 自 动 波 特 率 结 束 (ABEO) 自 动 波 特 率 超 时 (ABTO) 23 0x5C 串 口 2 Rx 线 状 态 (RLS) 发 送 保 持 寄 存 器 空 (THRE) Rx 数 据 可 借 用 (RDA) 字 符 超 时 指 示 (CTI) 自 动 波 特 率 结 束 (ABEO) 自 动 波 特 率 超 时 (ABTO) 24 0x60 串 口 3 Rx 线 状 态 (RLS) 发 送 保 持 寄 存 器 空 (THRE) Rx 数 据 可 借 用 (RDA) 字 符 超 时 指 示 (CTI) 自 动 波 特 率 结 束 (ABEO) 自 动 波 特 率 超 时 (ABTO) 25 0x64 PWM1 PWM1 的 匹 配 0-6 PWM1 的 捕 获 0-1 26 0x68 I 2 C0 SI( 状 态 改 变 ) 27 0x6C I 2 C1 SI( 状 态 改 变 ) 28 0x70 I 2 C2 SI( 状 态 改 变 ) 29 0x74 SPI SPI 中 断 标 志 (SPIF) 模 式 错 误 (MODF) 30 0x78 SSP0 SSP0 的 Tx FIFO 半 空 SSP0 的 Rx FIFO 半 满 SSP0 的 Rx 超 时 SSP0 的 Tx 溢 出 31 0x7C SSP1 SSP1 的 Tx FIFO 半 空 SSP1 的 Rx FIFO 半 满 SSP1 的 Rx 超 时 SSP1 的 Tx 溢 出 32 0x80 PLL0( 主 PLL) PLL0 锁 定 (PLOCK0) 33 0x84 RTC 计 数 器 自 增 (RTCCIF) 报 警 (RTCALF) 34 0x88 外 部 中 断 外 部 中 断 0(EINT0) 35 0x8C 外 部 中 断 外 部 中 断 1(EINT1) 36 0x90 外 部 中 断 外 部 中 断 2(EINT2) 37 0x94 外 部 中 断 外 部 中 断 3(EINT3) 注 意 :EINT3 通 道 与 GPIO 中 断 共 享 38 0x98 ADC 模 数 转 换 器 转 换 结 束 39 0x9C BOD 掉 电 检 测 40 0xA0 USB USB_INT_REQ_LP USB_INT_REQ_HP USB_INT_REQ_DMA 41 0xA4 CAN CAN Common CAN 0 Tx CAN 0 Rx CAN 1 Tx CAN 1 Rx 42 0xA8 通 用 DMA DMA 通 道 0 中 断 状 态 DAM 通 道 1 中 断 状 态 85

异 常 标 号 Vector Offset 功 能 标 志 43 0xAC I 2 S IRQ DMAREQ1 DMAREQ2 44 0xB0 以 太 网 WakeupInt SoftInt TxDoneInt TxFinishedInt TxErrorInt TxUnderrunInt RxDoneInt RxFinishedIn RxErrorInt RxOverrunInt 45 0xB4 重 复 中 断 定 时 器 RITINT 46 0xB8 电 机 控 制 PWM IPER[2:0] IPW[2:0] ICAP[2:0] FES 47 0xBC 正 交 编 码 器 INX_Int TIM_Int VELC_Int DIR_Int ERR_Int ENCLK_Int POS0_Int POS1_Int POS2_Int REV_Int POS0REV_Int POS1REV_Int POS2REV_Int 48 0xC0 PLL1(USB PLL) PLL1 锁 定 (PLOCK1) 49 0xC4 USB 激 活 中 断 USB_NEED_CLK 50 0xC8 CAN 激 活 中 断 5.5 电 源 电 路 LPC17xx 系 列 微 控 制 器 在 电 源 部 分 需 要 五 种 电 压 源 对 其 供 电, 分 别 为 : 1. 内 核 和 外 部 通 路 所 需 的 3.3V 电 压 源 VDD(3V3); 2. 内 部 稳 压 器 所 需 的 3.3V 电 压 源 VDD(REG)(3V3); 3. 模 拟 部 分 ( 诸 如 片 上 ADC 以 及 DAC) 所 需 的 3.3V 电 压 源 VDDA; 4. 模 数 转 换 器 ADC 所 需 的 参 考 电 压 源 VREFP; 5. 实 时 时 钟 RTC 所 需 的 3.3V 电 压 源 VBAT 由 上 述 分 析 可 见, 如 果 用 户 对 ADC 参 考 电 压 源 无 特 殊 要 求,LPC17xx 系 列 微 控 制 器 可 以 统 一 由 3.3V 电 平 的 电 压 源 供 电, 降 低 了 用 户 在 设 计 硬 件 时 电 源 部 分 的 复 杂 度, 需 要 注 意 的 是, 模 拟 部 分 电 压 源 VDDA 可 以 与 VDD(3V3) 由 相 同 的 电 压 源 提 供, 但 最 好 隔 离 开 来 以 减 小 电 源 噪 声 除 此 之 外, 用 户 的 86

设 计 中 不 使 用 ADC 或 者 DAC, 关 于 模 拟 部 分 电 压 源 的 管 脚 仍 需 要 连 接 到 电 压 源 上 现 以 Linpo-PS-LPC1760 开 发 板 为 例, 简 单 介 绍 一 下 LPC17xx 系 列 微 控 制 器 电 源 部 分 的 实 现 如 图 5.4 所 示, 开 发 板 使 用 常 用 的 1117 系 列 LDO 低 压 差 线 性 稳 压 器 将 外 部 5V 电 压 源 降 压 产 生 LPC17xx 所 需 的 3.3V 的 电 压,EC301 和 C302 用 于 对 5V 输 入 电 源 的 滤 波,EC302 和 C303 用 于 对 3.3V 输 出 电 流 的 滤 波 图 5.4 LPC17xx 系 列 微 控 制 器 3.3V 电 压 源 原 理 图 LPC17xx 的 RTC 部 分 电 路 可 参 看 图 5.5, 通 过 两 个 二 极 管 D101 和 D102 实 现 板 上 3.3V 电 源 或 者 是 3.3V 电 池 对 RTC 供 电, 且 电 池 电 源 不 会 与 板 上 3.3V 电 源 产 生 影 响 5.6 复 位 电 路 图 5.5 LPC17xx 系 列 微 控 制 器 RTC 供 电 部 分 原 理 图 LPC17xx 系 列 微 控 制 器 拥 有 4 个 复 位 源, 分 别 是 外 部 RESET 复 位, 看 门 狗 复 位, 上 电 复 位 (POR) 以 及 掉 电 检 测 复 位 (BOD),LPC17xx 系 列 微 处 理 器 的 复 位 逻 辑 图 如 图 5.6 所 示 87

图 5.6 LPC17xx 系 列 微 控 制 器 复 位 逻 辑 图 一 旦 LPC17xx 的 Cortex-M3 内 核 侦 测 到 外 部 复 位 信 号 源 (POR,BOD 复 位, 外 部 复 位 和 看 门 狗 复 位 ) 出 现, 内 部 RC 振 荡 器 (IRC) 启 动 在 内 部 RC 振 荡 建 立 时 间 (IRC-start-time, 上 电 后 最 多 60uS) 并 且 IRC 可 以 提 供 稳 定 的 时 钟 输 出 后, 复 位 信 号 将 被 锁 存 并 且 与 IRC 时 钟 同 步 以 下 的 两 步 将 会 并 发 : * 当 同 步 复 位 信 号 断 定 后,2 位 IRC 唤 醒 定 时 器 开 始 计 数, 在 2 位 IRC 唤 醒 定 时 超 时 后 LPC17xx 内 部 ROM 的 启 动 代 码 开 始 执 行, 启 动 代 码 完 成 启 动 所 需 的 任 务 以 及 实 现 跳 转 到 Flash 的 功 能, 如 果 Flash 没 有 准 备 好 被 访 问,MAM 将 插 入 等 待 周 期 直 到 Flash 准 备 好 了 * 当 同 步 复 位 信 号 断 定 后,Flash 唤 醒 定 时 器 (9 位 ) 开 始 计 数 Flash 唤 醒 定 时 器 将 对 Flash 的 启 动 时 间 产 生 100uS 的 定 时, 一 旦 超 时 则 Flash 初 始 化 顺 序 将 会 启 动, 这 个 初 始 化 任 务 将 会 持 续 大 约 250 个 时 钟 周 期 当 初 始 化 顺 序 完 成,MAM 就 可 以 准 许 访 问 MAM 了 当 内 部 复 位 信 号 撤 销 后, 处 理 器 将 在 地 址 0 开 始 执 行 程 序 因 此, 所 有 的 与 处 理 器 和 外 设 相 关 的 寄 存 器 将 以 预 定 值 被 初 始 化 图 5.7 描 述 了 当 LPC17xx 复 位 后 启 动 时 RESET, 内 部 IRC 以 及 处 理 器 状 态 的 关 系 88

图 5.7 复 位 后 系 统 系 统 示 意 图 1. 外 部 RESET 复 位 外 部 RESET 复 位 是 通 过 外 部 电 路 将 LPC17xx 的 RESET 管 脚 拉 低 实 现 复 位 外 部 RESET 复 位 信 号 不 能 立 即 清 除, 需 在 振 荡 电 路 稳 定 工 作 后 及 LPC17xx 系 列 微 处 理 器 的 X1 管 脚 上 出 现 符 合 要 求 的 时 钟 信 号 方 可 清 除 复 位 信 号 在 用 户 实 际 应 用 中, 用 户 须 按 照 芯 片 厂 商 提 供 的 复 位 参 数 正 确 选 择 复 位 器 件 以 及 合 理 的 复 位 电 路 LPC17xx 系 列 微 控 制 器 的 RESET 管 脚 为 施 密 特 触 发 输 入 管 脚, 常 见 的 外 部 复 位 电 路 有 两 种, 一 种 为 阻 容 复 位 电 路, 另 一 种 为 专 用 复 位 IC 电 路 阻 容 复 位 电 路 是 利 用 上 电 时 电 容 两 端 的 电 压 不 能 突 变 因 此 Vc 为 0V 随 着 对 电 容 的 不 断 充 电,Vc 逐 渐 上 升 直 至 稳 定 的 电 源 电 压, 于 是 在 芯 片 RESET 管 脚 上 形 成 了 一 定 的 低 电 平 脉 冲 当 电 源 电 压 消 失 时, 二 极 管 D1 为 电 容 C1 提 供 了 一 个 快 速 放 电 回 路, 从 而 使 RESET 管 脚 端 的 电 压 迅 速 回 零, 以 便 下 次 上 电 时 系 统 能 及 时 可 靠 的 复 位 虽 然 阻 容 复 位 电 路 简 单 而 且 成 本 低 廉, 但 并 不 能 完 全 保 证 在 任 何 情 况 下 都 能 够 产 生 可 靠 稳 定 的 复 位 信 号, 在 实 际 应 用 中, 应 当 选 用 可 靠 稳 定 的 专 用 复 位 芯 片 图 5.8 为 阻 容 复 位 的 电 路 原 理 图 图 5.8 阻 容 复 位 电 路 原 理 专 用 复 位 芯 片 也 可 理 解 为 电 压 监 控 芯 片, 其 选 型 时 主 要 注 意 硬 件 系 统 是 否 需 要 手 动 复 位 以 及 复 位 89

电 压 阈 值 的 选 择 随 着 半 导 体 厂 商 技 术 的 创 新, 有 些 厂 商 将 专 用 复 位 IC 和 E2PROM 看 门 狗 或 者 RTC 等 结 合 到 一 颗 芯 片 上, 提 供 更 为 简 便 的 电 路 设 计 以 及 减 小 PCB 的 面 积 Linpo-PS-LPC176X 开 发 板 选 取 的 是 圣 邦 微 电 子 设 计 的 带 有 手 动 复 位 的 复 位 阈 值 为 2.95V 的 SGM811, 如 果 用 户 的 设 计 并 不 需 要 手 动 复 位 功 能, 也 可 选 取 SGM809 复 位 阈 值 的 选 择 是 根 据 LPC17xx 微 控 制 器 的 工 作 电 压 范 围 来 选 定 的,LPC17xx 的 工 作 电 压 范 围 为 2.4~3.6V 之 间, 推 荐 工 作 电 压 为 3.3V, 处 于 对 电 路 工 作 更 加 稳 定 的 考 虑 选 取 2.95V 作 为 复 位 阈 值 比 较 合 理, 用 户 也 可 以 根 据 自 己 的 实 际 需 求 定 制 复 位 阈 值, 根 据 复 位 阈 值 选 取 合 适 自 己 的 复 位 IC 图 5.9 为 SGM811 专 用 复 位 IC 的 电 路 原 理 图 实 际 应 用 中 需 要 对 LPC17xx 的 复 位 RESET 脚 加 上 10K 的 上 拉 电 阻, 以 保 证 复 位 的 可 靠 性 图 5.9 SGM811 专 用 复 位 IC 电 路 原 理 图 2. 看 门 狗 复 位 看 门 狗 实 际 为 一 个 独 立 的 计 数 器 电 路, 对 内 部 的 独 立 时 钟 进 行 计 数 计 数 器 的 一 处 输 出 连 接 到 系 统 电 路 的 复 位 端, 程 序 在 一 定 时 间 范 围 内 对 计 数 器 清 零 或 者 重 新 装 载 (" 喂 狗 "), 以 使 程 序 正 常 工 作 即 计 数 器 不 溢 出, 也 就 无 法 产 生 复 位 信 号, 如 果 程 序 执 行 时 出 现 问 题 无 法 再 规 定 的 时 间 内 复 位 看 门 狗 计 数 器, 则 看 门 狗 计 数 器 就 会 溢 出 产 生 复 位 信 号 LPC17xx 系 列 微 控 制 器 内 部 集 成 了 看 门 狗 的 功 能, 对 于 要 求 不 苛 刻 的 应 用, 可 以 使 用 LPC17xx 内 部 看 门 狗 完 成 监 控 系 统 运 行 的 任 务 这 样 可 以 减 少 硬 件 成 本 并 减 少 电 路 板 的 面 积 和 走 线 看 门 狗 初 始 化 代 码 如 程 序 清 单 5.1 所 示 程 序 清 单 5.1 LPC17xx 看 门 狗 初 始 化 代 码 WDCLKSEL = 0x00; //bit1:0 WDSEL 00: 选 择 内 部 RC 振 荡 器 为 看 门 狗 时 钟 源 WDTC = 0x003FFFFF; // 设 置 看 门 狗 定 时 器 参 数 WDMOD = 0x03; // 设 置 看 门 狗 模 式 : 中 断 且 复 位 3. 上 电 复 位 LPC17x x 系 列 微 控 制 器 具 有 上 电 复 位 功 能, 当 VDD 管 脚 电 平 超 过 门 限 值 时,POR 信 号 有 效, Cortex-M3 内 核 还 是 进 入 复 位 状 态 90

4. 掉 电 检 测 LPC17xx 的 VDD 管 脚 带 有 2 级 电 压 检 测, 如 果 VDD 电 压 低 于 2.95V, 则 掉 电 检 测 器 (BOD) 向 中 断 向 量 控 制 器 发 出 中 断 信 号, 使 能 该 信 号 可 以 通 过 使 能 NVIC 中 的 中 断 使 能 寄 存 器, 即 可 产 生 CPU 所 需 的 中 断 ; 如 果 没 有 使 能 NVIC 中 的 中 断 使 能 寄 存 器, 软 件 也 可 以 通 过 读 取 Raw Interrupt Status Register 中 的 内 容 实 现 监 控 当 VDD 管 脚 的 电 压 降 到 低 于 2.65V 时, 第 2 级 的 低 压 检 测 将 产 生 复 位 信 号 该 复 位 可 以 防 止 Flash 的 内 容 发 生 改 变, 因 为 在 低 电 压 下 各 个 功 能 部 件 的 操 作 都 将 变 得 不 再 可 靠,LPC17xx 的 BOD 电 路 可 以 在 电 源 电 压 为 1V 及 其 以 上 时 保 持 复 位 信 号 2.95V 和 2.65V 阈 值 都 存 在 一 些 滞 后 正 常 工 作 时, 滞 后 使 得 2.95V 的 检 测 电 路 能 够 产 生 可 靠 的 中 断 信 号, 掉 电 检 测 中 断 信 号 能 够 唤 醒 处 于 掉 电 模 式 下 的 CPU, 使 CPU 退 出 掉 电 模 式, 但 是, 如 果 电 源 电 压 在 唤 醒 定 时 器 完 成 延 时 前 恢 复 为 正 常 电 平, 那 么 此 时 BOD 产 生 的 结 果 是 :CPU 被 唤 醒, 但 不 会 产 生 任 何 中 断,RSID 寄 存 器 中 的 BODR 位 清 零, 此 时 可 以 确 认 掉 电 唤 醒 操 作 完 成 5.7 时 钟 电 路 LPC17xx 包 括 3 个 独 立 的 时 钟 源, 分 别 为 主 时 钟 振 荡 器 RTC 时 钟 振 荡 器 和 内 部 RC 振 荡 器, 在 LPC17xx 复 位 后,LPC17xx 将 由 内 部 RC 振 荡 器 提 供 时 钟 直 至 由 软 件 切 换 到 另 外 的 时 钟 振 荡 源 为 止, 这 使 得 系 统 可 以 不 依 赖 于 外 部 时 钟 进 行 操 作, 而 且 使 引 导 加 载 程 序 可 以 在 一 个 确 定 的 频 率 下 进 行 操 作 图 5.10 为 LPC17xx 的 时 钟 系 统 发 生 示 意 图 图 5.10 LPC17xx 的 时 钟 系 统 发 生 示 意 图 1. 内 部 RC 振 荡 器 (Internal RC Oscillator,IRC) 内 部 RC 振 荡 器 (IRC) 可 以 作 为 看 门 狗 的 时 钟 源, 也 可 以 作 为 时 钟, 驱 动 锁 相 环 (PLL) 提 供 给 CPU 91

IRC 的 精 度 不 足, 因 此 不 能 用 于 USB 接 口, 通 常 IRC 频 率 是 4MHz, 在 开 机 或 者 芯 片 复 位 时,LPC17xx 使 用 IRC 作 为 时 钟 源, 之 后 可 以 通 过 软 件 切 换 使 用 其 他 时 钟 源 2. 主 晶 振 (Main Oscillator) 主 晶 振 可 用 于 使 用 或 不 使 用 PLL0 为 CPU 提 供 时 钟, 其 频 率 范 围 为 1~24MHz, 这 个 频 率 可 以 通 过 主 PLL(PLL0) 倍 频 至 更 高 的 频 率 直 至 CPU 操 作 的 最 大 频 率 通 常 把 主 晶 振 输 出 的 时 钟 称 为 OSC_ CLK,PLL0 输 入 引 脚 上 的 时 钟 称 为 PLLCLKIN,ARM 处 理 器 时 钟 频 率 称 为 CCLK 当 使 用 主 晶 振 提 供 时 钟 并 不 激 活 PLL 时,PLLCLKIN 和 CCLK 的 值 是 相 等 的 LPC17xx 的 板 上 晶 振 源 可 以 工 作 在 两 种 模 式 下 : 从 属 模 式 和 振 荡 模 式, 在 从 属 模 式 下, 输 入 时 钟 信 号 (XTAL1 引 脚 ) 与 一 个 100pF 电 容 相 连, 其 幅 值 不 少 于 200mV,XTAL2 引 脚 不 连 接 在 振 荡 模 式 下, 由 于 片 内 集 成 了 反 馈 电 阻, 所 以 只 需 要 在 外 部 链 接 一 个 晶 体 和 电 容 CX1 和 CX2 就 可 以 形 成 基 本 模 式 振 荡 两 种 振 荡 器 模 式 的 示 意 图 如 图 5.11 所 示 图 5.11 振 荡 器 的 模 式 示 意 图 3.RTC 晶 振 (RTC Oscillator) RTC 晶 振 的 频 率 为 32.768KHz, 一 般 用 于 给 RTC 实 时 时 钟 提 供 时 钟 源,RTC 时 钟 源 可 以 提 供 1Hz 的 时 钟 频 率 给 RTC 并 且 可 以 输 出 32kHz 的 时 钟 频 率, 作 为 PLL0 和 CPU 或 者 看 门 狗 定 时 器 使 用 时 钟 源 4, 时 钟 源 选 择 主 晶 振 RTC 晶 振 以 及 内 部 IRC 三 个 时 钟 源 均 有 可 能 用 来 驱 动 PLL0 从 而 给 CPU 和 片 内 外 设 提 供 时 钟, 当 PLL0 未 连 接 时, 系 统 才 可 以 安 全 的 切 换 时 钟 源 92

表 5.8 时 钟 源 选 择 寄 存 器 (CLKSRCSEL,0x400FC10C) CLKSRCSEL 功 能 值 描 述 复 位 值 00 选 择 IRC 晶 振 为 PLL0 的 时 钟 源 1:0 CLKSRC 01 选 择 主 晶 振 作 为 PLL0 的 时 钟 源 10 选 择 RTC 晶 振 为 PLL 时 钟 源 11 保 留 00 7:4 0 保 留 0 5.8 锁 相 环 PLL0(Phase Locked Loop 0) PLL0 接 受 输 入 的 时 钟 频 率 范 围 为 32kHz~50MHz 时 钟 源 由 CLKSRCSEL 寄 存 器 ( 见 表 5.9) 选 择 输 入 频 率 可 以 被 倍 频 到 一 个 较 高 的 频 率 上, 之 后 可 以 通 过 分 频 为 CPU 外 设 以 及 可 选 的 USB 子 系 统 提 供 精 确 的 时 钟 值 得 注 意 的 是 USB 子 系 统 拥 有 自 己 专 用 的 PLL PLL0 可 以 产 生 最 高 至 CPU 允 许 的 最 大 100MHz 的 频 率 PLL0 的 输 入 频 率 通 过 一 个 预 分 频 器 分 频 成 为 PLL 内 部 频 率, 预 分 频 的 值 用 变 量 N 表 示, 范 围 1 到 256 之 间 然 后 再 通 过 一 个 电 流 控 制 振 荡 器 (CCO,Curren Controlled Oscillator) 倍 频 增 到 范 围 275~550MHz 之 间, 倍 频 器 的 值 用 变 量 M 表 示 CCO 频 率 再 通 过 CPU 频 率 设 置 寄 存 器 分 频 成 为 提 供 给 CPU 的 CCLK 时 钟 PLL 的 使 能 是 由 PLL0CON 寄 存 器 控 制,PLL0 倍 频 器 和 分 频 器 的 值 都 是 由 PLL0CFG 寄 存 器 控 制 为 了 防 止 PLL0 参 数 发 生 意 外 改 变 或 PLL0 失 效, 对 这 两 个 寄 存 器 进 行 了 保 护 当 PLL0 提 供 芯 片 时 钟 时, 由 于 芯 片 的 所 有 操 作, 包 括 看 门 狗 定 时 器 在 内 都 依 赖 于 它, 因 此 PLL0 的 设 置 的 意 外 改 变 将 导 致 CPU 执 行 不 期 望 的 操 作 在 芯 片 复 位 或 者 进 入 掉 电 模 式 后,PLL0 将 被 关 闭 或 者 屏 蔽,PLL0 必 须 由 软 件 配 置 使 能 连 接 到 系 统 中 PLL0 接 口 框 图 如 图 5.12 所 示 图 5.12 PLL0 结 构 框 图 以 下 将 描 述 PLL0 涉 及 的 寄 存 器 及 其 功 能 描 述 93

1.PLL0 控 制 寄 存 器 PLL0 Control register(pll0con,0x400f C080) PLL0CON 寄 存 器 可 以 用 于 使 能 和 连 接 PLL0, 使 能 PLL0 锁 定 到 当 前 倍 频 器 和 分 频 器 值 设 定 的 频 率 上, 连 接 PLL0 将 使 处 理 器 和 大 多 数 片 内 功 能 都 根 据 PLL0 的 输 出 时 钟 来 工 作 对 PLL0CON 的 更 改 只 有 在 对 PLL0CON 寄 存 器 执 行 了 正 确 的 PLL 馈 送 序 列 后 才 生 效 表 5.9 PLL0 控 制 寄 存 器 PLL0CON 功 能 描 述 复 位 值 0 PLLE0 1 PLLC0 PLL0 使 能 当 该 位 为 1 并 且 在 有 效 的 PLL 馈 送 后, 该 位 将 激 活 PLL0 并 允 许 其 锁 定 到 指 定 的 频 率 PLL0 连 接 当 PLLC0 位 和 PLLE0 位 都 为 1 并 且 在 有 效 的 PLL0 馈 送 后, 将 PLL0 作 为 时 钟 源 连 接 到 LPC17xx 如 果 PLL0 输 出 为 48MHz, 那 么 PLL0 就 可 以 成 为 USB 子 系 统 的 时 钟 源, 否 则 不 行 可 以 参 见 PLL0STAT 0 0 7:2 保 留 保 留 NA PLL0 在 作 为 时 钟 源 之 前 必 须 进 行 设 置 使 能 并 锁 定 将 振 荡 器 时 钟 切 换 到 PLL0 输 出 或 者 翻 过 来 操 作 时, 内 部 电 路 对 操 作 进 行 同 步 以 确 保 不 会 产 生 干 扰, 硬 件 不 能 确 保 PLL 在 连 接 之 前 锁 定 或 在 PLL0 在 失 去 锁 定 时 自 动 断 开 连 接 在 PLL0 失 去 锁 定 的 情 况 下, 振 荡 器 很 可 能 已 经 变 的 不 稳 定, 这 样 即 使 断 开 PLL0 也 挽 救 不 了 这 种 情 况 2.PLL0 配 置 寄 存 器 PLL Configuration register(pll0cfg, 0x400F C084) PLL0CFG 寄 存 器 是 最 新 的 PLL0 配 置 值 的 保 存 寄 存 器, 包 含 PLL 倍 频 器 和 分 频 器 的 值 在 执 行 正 确 的 PLL0 馈 送 序 列 之 前 改 变 PLL0CFG 寄 存 器 的 值 不 会 生 效 表 5.10 PLL0 配 置 寄 存 器 PLL0CFG 功 能 描 述 复 位 值 14:0 MSEL0 PLL0 倍 频 器 值, 在 PLL 频 率 计 算 中 其 值 为 M-1 0 15 保 留 保 留 NA 23:16 NSEL0 PLL0 预 分 频 器 值, 在 PLL0 频 率 计 算 中 其 值 为 N-1 0 31:24 保 留 保 留 NA 3.PLL0 状 态 寄 存 器 PLL0 Status Register(PLL0STAT, 0x400F C088) PLL0STAT 为 只 读 寄 存 器, 它 是 PLL0 控 制 和 配 置 信 息 的 回 读 寄 存 器, 反 映 了 正 在 使 用 的 真 实 PLL0 的 参 数 和 状 态 PLL0STAT 可 能 和 PLL0CON 和 PLL0CFG 中 的 值 不 同, 这 是 因 为 没 有 执 行 正 确 的 PLL0 馈 送 序 列, 这 两 个 寄 存 器 中 的 值 并 未 生 效 94

表 5.11 PLL0 状 态 寄 存 器 PLL0STAT 功 能 描 述 复 位 值 14:0 MSEL0 读 出 的 PLL0 倍 频 器 值, 这 是 PLL 当 前 使 用 的 值 0 15 保 留 保 留 NA 23:16 NSEL0 读 出 的 PLL0 预 分 频 器 值, 这 是 PLL 当 前 使 用 的 值 0 24 PLLE0_STAT 25 PLLC0_STAT 26 PLOCK0 读 出 的 PLL0 使 能 位, 该 位 为 1 时,PLL0 处 于 激 活 状 态 ; 为 0 时, PLL0 关 闭 ; 进 入 掉 电 模 式 时, 该 位 自 动 清 零 读 出 的 PLL0 连 接 位, 当 PLLC0 和 PLLE0 位 都 为 1 时,PLL0 作 为 时 钟 源 连 接 到 LPC17xx; 当 PLLC0 和 PLLE0 位 为 0 时,PLL0 被 旁 路, LPC17xx 直 接 使 用 振 荡 器 时 钟 ; 进 入 掉 电 模 式 时, 该 位 自 动 清 零 反 映 PLL0 的 锁 定 状 态 ; 为 0 时,PLL0 未 锁 定 ; 为 1 时,PLL0 锁 定 到 指 定 的 频 率 0 0 0 31:27 保 留 保 留 NA PLL0STAT 寄 存 器 中 的 PLOCK0 位 连 接 到 中 断 控 制 器, 这 样 可 以 使 用 软 件 打 开 PLL0 并 连 接 到 其 他 功 能, 不 需 要 等 待 PLL0 锁 定 当 发 生 中 断 时 (PLOCK0=1), 可 以 连 接 PLL0 并 禁 止 中 断 只 能 通 过 禁 止 PLL0 中 断 的 方 式 返 回 PLL0 有 3 种 可 能 的 工 作 方 式, 由 PLLE0 和 PLLC0 位 组 合 获 得 表 5.12 PLL0 的 工 作 模 式 PLLC0 PLLE0 PLL 功 能 0 0 PLL0 被 关 闭 并 断 开 连 接, 系 统 使 用 未 更 改 的 时 钟 输 入 0 1 PLL0 被 激 活 但 是 尚 未 连 接,PLL0 可 在 PLCOK0 置 位 后 连 续 1 0 与 00 组 合 相 同, 这 样 消 除 了 PLL0 已 连 接 但 没 有 使 能 的 可 能 性 1 1 PLL0 已 使 能 并 连 接 到 处 理 器 作 为 系 统 时 钟 源 4.PLL0 馈 送 寄 存 器 PLL0 Feed register(pll0feed,0x400f C08C) 必 须 将 正 确 的 馈 送 序 列 写 入 PLL0FEED 寄 存 器 才 能 使 PLL0CON 和 PLL0CFG 寄 存 器 的 更 改 生 效, 馈 送 序 列 如 下 : 将 值 0xAA 写 入 PLL0FEED 将 值 0x55 写 入 PLL0FEED 这 两 个 写 操 作 的 顺 序 必 须 正 确, 而 且 在 两 次 操 作 之 间 必 须 没 有 其 他 的 寄 存 器 访 问 相 同 的 地 址 空 间 ( 从 0x400F C000 到 0x400F FFFF), 这 就 意 味 着 尽 量 在 执 行 PLL0 馈 送 操 作 的 时 候 禁 止 中 断, 不 管 写 入 的 值 不 正 确 还 是 没 有 满 足 前 两 个 条 件, 对 PLL0CON 或 者 PLL0CFG 寄 存 器 的 更 改 都 不 会 生 效 表 5.13 PLL0 馈 送 寄 存 器 PLL0FEED 功 能 描 述 复 位 值 7:0 PLL0FEED PLL0 馈 送 序 列 必 须 写 入 该 寄 存 器 才 能 使 PLL0 配 置 和 控 制 寄 存 器 的 更 改 生 效 0x00 95

5.PLL0 和 掉 电 模 式 掉 电 模 式 会 自 动 关 闭 并 断 开 PLL0, 从 掉 电 模 式 唤 醒 不 会 自 动 恢 复 PLL0 的 设 置,PLL0 的 恢 复 必 须 由 软 件 来 完 成 通 常, 一 个 将 PLL0 激 活 并 等 待 锁 定, 然 后 将 PLL0 连 接 的 子 程 序 可 以 在 任 何 中 断 服 务 程 序 的 开 始 调 用, 有 一 点 非 常 重 要, 那 就 是 不 要 试 图 在 掉 电 唤 醒 后 简 单 的 执 行 馈 送 序 列 来 重 新 启 动 PLL0, 这 会 出 现 在 PLL0 锁 定 建 立 之 前 同 时 使 能 并 连 接 PLL0 的 危 险 6.PLL0 频 率 计 算 表 5.14 PLL0 所 需 变 量 表 变 量 描 述 F IN F CCO PLLCLKIN 的 频 率 PLLCK 的 频 率 N PLL0 预 分 频 值 (PLL0CFG NSEL0 + 1) M PLL0 倍 频 值 (PLL0CFG MSEL0 + 1) F REF PLL 内 部 参 考 频 率,F IN 除 以 N 当 LPC17xxx 微 处 理 器 系 统 需 要 使 用 PLL0 时, 应 当 按 照 以 下 原 则 进 行 计 算 配 置 * 确 定 应 用 是 否 需 要 USB 接 口, 并 且 USB 是 否 由 PLL0 提 供 时 钟,USB 需 要 一 个 准 确 的 50% 占 空 比 48MHz 时 钟 信 号, 这 就 意 味 着 FCCO 必 须 为 48MHz 的 整 数 倍 ( 如 96MHz) 并 且 FCCO 要 相 当 准 确 ; * 确 定 处 理 器 的 时 钟 频 率 CCLK 这 可 以 根 据 对 处 理 器 的 整 体 要 求 来 决 定, 外 围 器 件 的 时 钟 频 率 可 以 低 于 处 理 器 的 频 率 ; * 选 择 PLL 输 入 频 率 FIN 的 值 ; * 计 算 M 和 N 的 值, 以 产 生 一 个 有 效 且 精 确 的 FCCO 的 频 率 PLL0 的 输 出 频 率 公 式 为 :FCCO=(2 M FIN)/N 例 如, 系 统 不 需 要 USB 接 口, 目 标 CPU 速 率 为 72MHz,32.768kHz 的 RTC 时 钟 作 为 系 统 的 时 钟 源 M=(FCCO N)/(2 FIN), 可 以 产 生 CPU 需 求 频 率 并 且 PLL0 可 以 正 常 操 作 范 围 内 的 最 小 FCCO 频 率 是 288MHz(4 72MHz) 由 N=1 开 始 计 算, 所 以 M=288 106/(2 32,768)=4,394.53125 计 算 所 得 并 不 是 一 个 整 数, 所 以 CPU 的 频 率 不 是 精 确 的 288MHz 5.9 锁 相 环 PLL1(Phase Locked Loop 1) PLL1 仅 从 主 晶 振 获 得 自 己 的 时 钟 频 率, 并 且 可 以 用 于 仅 为 USB 子 系 统 提 供 混 合 48MHz 的 时 钟 频 率, 这 可 以 看 作 由 PLL0 提 供 USB 时 钟 源 以 外 的 另 一 个 选 择 PLL1 在 复 位 后 是 禁 用 并 且 处 于 关 闭 状 态, 如 果 PLL1 被 停 用,USB 的 时 钟 可 以 由 完 成 提 供 48MHz 信 号 状 态 设 定 后 的 PLL0 提 供, 如 果 PLL1 通 过 PLL1CON 寄 存 器 使 能 并 且 连 接, 那 么 PLL1 将 自 动 的 作 为 96

USB 子 系 统 的 时 钟 源 PLL1 的 激 活 由 PLL1CON 寄 存 器 控 制, 它 的 倍 频 和 分 频 值 由 PLL1CFG 寄 存 器 控 制, 为 了 防 止 PLL1 参 数 发 生 意 外 改 变 或 者 PLL1 失 效, 对 这 两 个 寄 存 器 进 行 了 保 护, 完 成 保 护 的 馈 送 顺 序 类 似 于 看 门 口 定 时 器 图 5.13 为 LPC17xx 的 PLL1 的 结 构 框 图 图 5.13 PLL1 结 构 框 图 以 下 将 描 述 PLL1 涉 及 的 寄 存 器 及 其 功 能 描 述 1.PLL1 控 制 寄 存 器 PLL1 Control register(pll1con,0x400f C0A0) PLL1CON 寄 存 器 可 以 用 于 使 能 和 连 接 PLL1, 使 能 PLL1 锁 定 到 当 前 倍 频 器 和 分 频 器 值 设 定 的 频 率 上, 连 接 PLL1 将 使 USB 子 系 统 功 能 根 据 PLL1 的 输 出 时 钟 来 工 作, 对 PLL1CON 的 更 改 只 有 在 对 PLL1FEED 寄 存 器 执 行 了 正 确 的 PLL 馈 送 序 列 后 才 生 效 表 5.15 PLL1 控 制 寄 存 器 PLL1CON 功 能 描 述 复 位 值 0 PLLE1 PLL1 使 能 当 该 位 为 1 并 且 在 有 效 的 PLL1 馈 送 后, 该 位 将 激 活 PLL1 并 允 许 其 锁 定 到 指 定 的 频 率 0 1 PLLC1 PLL1 连 接 当 PLLC1 位 和 PLLE1 位 都 为 1 并 且 在 有 效 的 PLL1 馈 送 后, 将 PLL1 作 为 时 钟 源 做 为 USB 子 系 统 的 时 钟 源, 否 则 不 行 可 以 参 见 0 PLL1STAT 7:2 保 留 保 留 NA PLL1 在 作 为 USB 子 系 统 时 钟 源 之 前 必 须 进 行 设 置 使 能 并 锁 定 97

2.PLL1 配 置 寄 存 器 PLL1 Configuration register(pll1cfg,0x400f C0A4) PLL1CFG 寄 存 器 是 最 新 的 PLL1 配 置 值 的 保 存 寄 存 器, 包 含 PLL 倍 频 器 和 分 频 器 的 值 在 执 行 正 确 的 PLL1 馈 送 序 列 之 前 改 变 PLL1CFG 寄 存 器 的 值 不 会 生 效 表 5.16 PLL1 配 置 寄 存 器 PLL1CFG 功 能 描 述 复 位 值 4:0 MSEL1 PLL1 倍 频 器 值, 在 PLL1 频 率 计 算 中 其 值 为 M 0 6:5 PSEL1 PLL1 分 频 值 在 PLL1 频 率 计 算 中 其 值 为 P 0 7 保 留 保 留 NA 3.PLL1 状 态 寄 存 器 PLL1 Status Register(PLL1STAT,0x400F C0A8) PLL1STAT 为 只 读 寄 存 器, 它 是 PLL1 控 制 和 配 置 信 息 的 回 读 寄 存 器, 反 映 了 正 在 使 用 的 真 实 PLL1 的 参 数 和 状 态 PLL1STAT 可 能 和 PLL1CON 和 PLL1CFG 中 的 值 不 同, 这 是 因 为 没 有 执 行 正 确 的 PLL1 馈 送 序 列, 这 两 个 寄 存 器 中 的 值 并 未 生 效 表 5.17 PLL1 状 态 寄 存 器 PLL1STAT 功 能 描 述 复 位 值 4:0 MSEL1 读 出 的 PLL1 倍 频 器 值, 这 是 PLL1 当 前 使 用 的 值 0 6:5 PSEL1 读 出 的 PLL1 预 分 频 器 值, 这 是 PLL1 当 前 使 用 的 值 0 7 保 留 保 留 NA PLLE1_ 8 STAT PLLC1_ 9 STAT 10 PLOCK1 读 出 的 PLL1 使 能 位, 该 位 为 1 时,PLL1 处 于 激 活 状 态 ; 为 0 时, PLL1 关 闭 ; 进 入 掉 电 模 式 时, 该 位 自 动 清 零 读 出 的 PLL1 连 接 位, 当 PLLC1 和 PLLE0 位 都 为 1 时,PLL1 作 为 时 钟 源 连 接 到 LPC17xx; 当 PLLC1 和 PLLE1 位 为 0 时,PLL1 被 旁 路, LPC17xx 直 接 使 用 振 荡 器 时 钟 ; 进 入 掉 电 模 式 时, 该 位 自 动 清 零 反 映 PLL1 的 锁 定 状 态 ; 为 0 时,PLL1 未 锁 定 ; 为 1 时,PLL1 锁 定 到 指 定 的 频 率 0 0 0 15:11 保 留 保 留 NA PLL1STAT 寄 存 器 中 的 PLOCK1 位 连 接 到 中 断 控 制 器, 这 样 可 以 使 用 软 件 打 开 PLL1 并 连 接 到 其 他 功 能, 不 需 要 等 待 PLL1 锁 定, 当 发 生 中 断 时 (PLOCK1=1), 可 以 连 接 PLL1 并 禁 止 中 断 PLL1 有 3 种 可 能 的 工 作 方 式, 由 PLLE1 和 PLLC1 位 组 合 获 得 表 5.18 PLL1 的 工 作 模 式 PLLC0 PLLE0 PLL 功 能 0 0 PLL1 被 关 闭 并 断 开 连 接 0 1 PLL1 被 激 活 但 是 尚 未 连 接,PLL1 可 在 PLCOK1 置 位 后 连 接 1 0 与 00 组 合 相 同, 这 样 消 除 了 PLL1 已 连 接 但 没 有 使 能 的 可 能 性 1 1 PLL1 已 使 能 并 连 接 到 处 理 器 作 为 USB 子 系 统 的 时 钟 源 98

4.PLL1 馈 送 寄 存 器 PLL1Feed register(pll1feed,0x400f C0AC) 必 须 将 正 确 的 馈 送 序 列 写 入 PLL1FEED 寄 存 器 才 能 使 PLL1CON 和 PLL1CFG 寄 存 器 的 更 改 生 效 馈 送 序 列 如 下 : 将 值 0xAA 写 入 PLL1FEED 将 值 0x55 写 入 PLL1FEED 这 两 个 写 操 作 的 顺 序 必 须 正 确, 而 且 在 两 次 操 作 之 间 必 须 没 有 其 他 的 寄 存 器 访 问 相 同 的 地 址 空 间 ( 从 0x400F C000 到 0x400F FFFF), 这 就 意 味 着 尽 量 在 执 行 PLL1 馈 送 的 操 作 的 时 候 禁 止 中 断 不 管 写 入 的 值 不 正 确 还 是 没 有 满 足 前 两 个 条 件, 对 PLL1CON 或 者 PLL1CFG 寄 存 器 的 更 改 都 不 会 生 效 表 5.19 PLL1 馈 送 寄 存 器 PLL0FEED 功 能 描 述 复 位 值 PLL1 馈 送 序 列 必 须 写 入 该 寄 存 器 才 能 使 PLL1 配 置 和 控 制 7:0 PLL1FEED 0x00 寄 存 器 的 更 改 生 效 5.PLL1 和 掉 电 模 式 掉 电 模 式 会 自 动 关 闭 并 断 开 PLL1, 从 掉 电 模 式 唤 醒 不 会 自 动 恢 复 PLL1 的 设 置,PLL1 的 恢 复 必 须 由 软 件 来 完 成 通 常, 一 个 将 PLL1 激 活 并 等 待 锁 定, 然 后 将 PLL1 连 接 的 子 程 序 可 以 在 任 何 中 断 服 务 程 序 的 开 始 调 用, 有 一 点 非 常 重 要, 那 就 是 不 要 试 图 在 掉 电 唤 醒 后 简 单 的 执 行 馈 送 序 列 来 重 新 启 动 PLL1, 这 会 出 现 在 PLL1 锁 定 建 立 之 前 同 时 使 能 并 连 接 PLL1 的 危 险 6.PLL1 频 率 计 算 表 5.20 PLL1 所 需 变 量 表 变 量 描 述 F OSC F CCO 晶 振 振 荡 源 的 频 率 PLL1 当 前 控 制 的 晶 振 的 频 率 USBCLK PLL1 输 出 频 率 ( 针 对 USB 的 48MHz 信 号 ) M P PLL1 倍 频 值 PLL1CFG 寄 存 器 中 的 MSEL1 PLL1 分 频 值 PLL1CFG 寄 存 器 中 的 PSEL1 PLL1 的 输 出 频 率 公 式 为 :USBCLK=M FOSC 或 者 USBCLK=FCCO/(2 P) 确 定 PLL1 为 USB 提 供 时 钟 配 置 的 方 法 如 下 : * PLL1 需 要 输 出 的 时 钟 频 率 是 USBCLK=48MHz; * 选 择 时 钟 频 率 (FOSC) FOSC 可 以 是 12MHz,16MHz 以 及 24MHz; * 计 算 配 置 MSEL1 的 M 值 ; * 计 算 配 置 PSEL1 的 P 值 99

5.10 时 钟 分 频 PLL0 的 输 出 必 须 向 下 分 频 为 更 低 频 率 的 信 号 才 能 用 于 CPU 和 USB 模 块 ( 如 果 USB 的 时 钟 信 号 源 是 PLL0 提 供 ) 提 供 给 USB 模 块 的 分 频 器 是 独 立 的, 因 为 USB 的 时 钟 要 求 必 须 是 准 确 的 48MHz 而 且 有 50% 的 占 空 比 分 频 给 CPU 的 信 号 成 为 CCLK 时 钟, 并 且 再 分 频 成 为 各 个 片 内 外 设 的 驱 动 时 钟 图 5.14 给 出 了 LPC17xx 的 PLL0 和 时 钟 分 频 的 结 构 框 图 图 5.14 PLL0 和 时 钟 分 频 的 结 构 框 图 1.CPU 时 钟 配 置 寄 存 器 CPU Clock Configuration register(cclkcfg 0x400F C104) CCLKCFG 寄 存 器 控 制 PLL0 的 分 频 输 出 提 供 给 CPU 如 果 不 使 用 PLL0, 则 分 频 值 为 1 提 示 : 当 应 用 使 用 USB 接 口 时,CCLK 必 须 至 少 是 18MHz 以 保 证 支 持 USB 模 块 的 内 部 操 作 表 5.21 CPU 时 钟 配 置 寄 存 器 CCCLKCFG 功 能 描 述 复 位 值 7:0 CCLKSEL 分 频 器 值, 用 于 生 成 CPU 时 钟 (CCLK) 本 值 只 能 为 0 或 计 数 值 (1,3,5,...,255) 0x00 CCLK 的 值 为 PLL 的 输 出 频 率 除 以 CCLKSEL+1 当 CCLKSEL 的 值 为 1 时,CCLK 的 值 为 PLL 输 出 频 率 的 一 半 2.USB 时 钟 配 置 寄 存 器 USB Clock Configuration register(usbclkcfg 0x400F C108) 提 示 : 该 寄 存 器 只 有 在 PLL1 禁 用 时 才 有 效 如 果 PLL1 使 能,PLL1 的 输 出 将 自 动 用 于 USB 的 时 钟 源, 并 且 PLL1 必 须 配 置 为 适 合 USB 模 组 的 48MHz 信 号 输 出 USBCLKCFG 寄 存 器 控 制 PLL0 的 分 频 输 出 提 供 给 USB 模 块 PLL0 输 出 必 须 在 PLL 可 操 作 范 围 内 被 分 频 出 适 合 USB 时 钟 频 率 的 48MHz 并 且 有 50% 占 空 比 的 信 号 提 示 : 内 部 RC 时 钟 不 能 用 于 为 USB 提 供 时 钟 信 号, 因 为 USB 的 应 用 需 要 更 高 的 精 度 100

表 5.22 USB 时 钟 配 置 寄 存 器 USBCLKCFG 功 能 描 述 复 位 值 3:0 USBSEL 分 频 器 值, 用 于 生 成 USB 时 钟 0x00 7:4 保 留 保 留 NA 3.IRC 整 理 寄 存 器 IRC Trim Register(IRCTRIM 0x400F C1A4) 该 寄 存 器 用 于 整 理 片 内 4MHz 的 晶 振 表 5.23 IRC 整 理 寄 存 器 IRCTrim 功 能 描 述 复 位 值 7:0 IRCTrim IRC 整 理 值, 用 于 控 制 片 内 4MHz 的 IRC 晶 振 频 率 0xA0 15:8 保 留 保 留 NA 4. 外 设 时 钟 选 择 寄 存 器 0 和 1 Peripheral Clock Selection registers 0 and 1 (PCLKSEL0 0x400F C1A8 和 PCLKSEL1 0x400F C1AC) 这 一 对 寄 存 器 中 的 每 两 位 控 制 一 个 外 设 的 时 钟, 其 取 值 意 义 如 表 5.24 和 表 5.25 所 示 表 5.24 外 设 时 钟 选 择 寄 存 器 0 PCLKSEL0 功 能 描 述 复 位 值 1:0 PCLK_WDT 看 门 狗 外 设 时 钟 选 择 00 3:2 PCLK-TIMER0 定 时 器 0 外 设 时 钟 选 择 00 5:4 PLCK-TIMER1 定 时 器 1 外 设 时 钟 选 择 00 7:6 PCLK-UART0 串 口 0 外 设 时 钟 选 择 00 9:8 PCLK-UART1 串 口 1 外 设 时 钟 选 择 00 11:10 保 留 保 留 NA 13:12 PCLK-PWM1 脉 宽 调 制 器 1 外 设 时 钟 选 择 00 15:14 PCLK-I2C0 I 2 C0 外 设 时 钟 选 择 00 17:16 PCLK-SPI SPI 外 设 时 钟 选 择 00 19:18 保 留 保 留 NA 21:20 PCLK-SSP1 SSP1 外 设 时 钟 选 择 00 23:22 PCLK-DAC 数 模 转 换 DAC 外 设 时 钟 选 择 00 25:24 PCLK-ADC 模 数 转 换 ADC 外 设 时 钟 选 择 00 27:26 PCLK-CAN1 CAN1 外 设 时 钟 选 择 00 29:28 PCLK-CAN2 CAN2 外 设 时 钟 选 择 00 31:30 PCLK-ACF CAN 滤 波 器 外 设 时 钟 选 择 00 表 5.25 外 设 时 钟 选 择 寄 存 器 1 PCLKSEL0 功 能 描 述 复 位 值 1:0 PCLK-QEI 正 交 编 码 器 接 口 外 设 时 钟 选 择 00 3:2 PCLK_ GPIOINT GPIO 中 断 外 设 时 钟 选 择 00 101

PCLKSEL0 功 能 描 述 复 位 值 5:4 PCLK_PCB 管 脚 连 接 模 块 外 设 时 钟 选 择 00 7:6 PCLK_I2C1 I 2 C1 外 设 时 钟 选 择 00 9:8 保 留 保 留 NA 11:10 PCLK_SSP0 SSP0 外 设 时 钟 选 择 00 13:12 PCLK_TIMER2 定 时 器 2 外 设 时 钟 选 择 00 15:14 PCLK_TIMER3 定 时 器 3 外 设 时 钟 选 择 00 17:16 PCLK_UART2 串 口 2 外 设 时 钟 选 择 00 19:18 PCLK_UART3 串 口 3 外 设 时 钟 选 择 NA 21:20 PCLK_I2C2 I 2 C2 外 设 时 钟 选 择 00 23:22 PCLK_I2S I 2 S 外 设 时 钟 选 择 00 25:24 保 留 保 留 NA 27:26 PCLK_RIT 重 复 中 断 定 时 器 外 设 时 钟 选 择 00 29:28 PCLK_ SYSCON 系 统 控 制 模 块 外 设 时 钟 选 择 00 31:30 PCLK_MC 电 机 控 制 PWM 外 设 时 钟 选 择 00 表 5.26 外 设 时 钟 选 择 寄 存 器 位 置 位 功 能 描 述 复 位 值 00 PCLK_XXX = CCLK/4 00 01 PCLK_XXX = CCLK 00 10 PCLK_XXX = CCLK/2 00 11 在 CAN1 CAN2 和 CAN 滤 波 器 件 中,PCLK_XXX = CCLK/6, 其 余 部 件 中 PCLK_XXX = CCLK/8 00 5.11 功 率 控 制 : 低 功 耗 模 式 5.11.1 功 耗 模 式 LPC17xx 微 处 理 提 供 了 多 种 电 源 控 制 的 特 性 : 睡 眠 模 式 深 度 睡 眠 模 式, 掉 电 模 式 和 深 度 掉 电 模 式 CPU 时 钟 频 率 也 可 以 根 据 需 要 改 变 时 钟 源 重 新 配 置 PLL 值 或 者 改 变 CPU 时 钟 分 频 值 另 外, 也 可 以 通 过 停 止 片 内 外 设 时 钟 的 方 法 来 关 闭 不 使 用 的 片 内 外 设, 以 进 一 步 降 低 系 统 的 功 耗 进 入 任 何 一 种 功 耗 模 式 前 先 要 执 行 Cortex-M3 内 核 的 WFI( 等 待 中 断 Wait for interrupt) 指 令 或 者 WFE( 等 待 意 外 Wait for Exception) 指 令 Cortex-M3 内 部 支 持 两 种 功 耗 模 式 : 睡 眠 模 式 和 深 度 睡 眠 模 式 这 两 种 模 式 由 Cortex-M3 系 统 控 制 器 的 SLEEP DEEP 位 控 制, 掉 电 模 式 和 深 度 睡 眠 模 式 由 PCON 寄 存 器 的 相 应 位 选 择, 相 同 的 寄 存 器 中 包 含 有 是 否 进 入 功 耗 模 式 的 标 志 位 LPC17xx 有 一 个 独 立 的 功 率 控 制 单 元 用 来 给 RTC 供 电, 这 个 特 性 使 得 LPC17xx 可 以 将 片 内 其 他 大 部 分 设 备 全 部 关 闭 运 行 1. 睡 眠 模 式 102

提 示 :L P C17x x 睡 眠 模 式 对 应 于 LPC2x x x 系 列 的 空 闲 模 式 ( I dle M o de), 由 于 A R M 对 Cortex-M3 内 核 加 入 了 降 低 功 耗 控 制 的 部 分 所 以 改 变 了 名 称 当 MCU 进 入 睡 眠 模 式 时, 内 核 的 时 钟 将 会 停 止 工 作 并 且 PCON 寄 存 器 中 的 SMFLAG 位 将 置 位 为 1, 从 睡 眠 模 式 唤 醒, 仅 仅 重 新 使 能 内 核 的 时 钟 即 可, 不 需 要 任 何 特 殊 的 步 骤 在 睡 眠 模 式 下, 指 令 的 执 行 被 挂 起, 直 到 复 位 或 者 一 个 中 断 的 产 生, 在 睡 眠 模 式 下, 外 设 功 能 依 然 继 续 工 作 也 可 产 生 中 断 使 处 理 器 重 新 执 行 指 令, 睡 眠 模 式 仅 降 低 了 内 核 本 身 存 储 系 统 和 相 关 控 制 器 以 及 内 部 总 线 上 的 动 态 功 耗 任 何 已 使 能 的 中 断 发 生 都 可 以 将 MCU 从 睡 眠 模 式 中 唤 醒 2. 深 度 睡 眠 模 式 提 示 :LPC17xx 的 深 度 睡 眠 模 式 对 应 于 LPC23xx 和 LPC24xx 系 列 的 睡 眠 模 式 当 芯 片 进 入 深 度 睡 眠 模 式 时, 主 时 钟 晶 振 处 于 掉 电 状 态, 相 邻 的 所 有 时 钟 停 止 并 且 PCON 寄 存 器 的 DSFLAG 位 将 置 位 为 1,IRC 依 旧 可 以 运 行 并 且 可 以 配 置 为 看 门 狗 提 供 时 钟, 这 就 允 许 利 用 看 门 狗 唤 醒 CPU, 此 时 32kHz 的 RTC 时 钟 源 依 旧 运 行 并 且 RTC 中 断 可 以 作 为 MCU 的 唤 醒 源 Flash 存 储 器 进 入 待 机 状 态 并 且 允 许 快 速 唤 醒,PLL 将 自 动 关 闭 并 且 断 开 连 接 CCLK 和 USBCLK 时 钟 分 频 器 自 动 复 位 为 0 深 度 睡 眠 模 式 下 将 保 持 处 理 器 的 状 态 和 寄 存 器 外 设 寄 存 器 以 及 内 部 SRAM 的 值 不 变, 并 且 芯 片 各 个 I/O 口 的 电 平 保 持 静 态, 深 度 睡 眠 模 式 可 以 通 过 复 位 或 者 特 定 的 无 需 时 钟 源 仍 能 工 作 的 中 断 唤 醒, 并 使 芯 片 恢 复 正 常 运 行 由 于 深 度 睡 眠 模 式 使 芯 片 所 有 的 动 态 操 作 都 被 挂 起, 因 此 深 度 睡 眠 模 式 下 的 功 耗 将 会 非 常 低 在 深 度 睡 眠 唤 醒 时, 如 果 IRC 在 进 入 深 度 睡 眠 前 被 使 用, 则 一 个 2 位 的 IRC 定 时 器 将 启 动 计 数, 且 执 行 的 代 码 和 外 设 激 活 均 在 超 时 后 (4 个 时 钟 周 期 ) 后 恢 复, 如 果 使 用 系 统 的 外 部 主 时 钟 晶 振, 则 一 个 12 位 的 主 时 钟 定 时 器 启 动 计 数, 且 执 行 的 代 码 和 外 设 激 活 聚 在 超 时 后 (4096 个 时 钟 周 期 ) 后 恢 复 用 户 需 要 谨 记 的 是 在 唤 醒 后 重 新 配 置 需 要 的 PLL 和 时 钟 分 频 值 通 过 NMI 外 部 中 断 EINT0 和 EINT3 GPIO 中 断 以 太 网 WOL 中 断 掉 电 检 测 RTC 报 警 中 断 看 门 狗 溢 出 中 断 USB 输 入 脚 传 输 数 据 或 者 CAN 输 入 脚 传 输 数 据 的 中 断 均 可 从 深 度 睡 眠 模 式 中 唤 醒 MCU 3. 掉 电 模 式 (Power-down mode) 掉 电 模 式 与 睡 眠 模 式 类 似, 不 同 的 是 掉 电 模 式 会 将 Flash 存 储 器 关 闭 进 入 掉 电 模 式 后 PCON 寄 存 器 的 PDFLAG 位 将 被 置 位 为 1 掉 电 模 式 将 大 幅 度 降 低 功 耗, 但 是 在 进 入 该 模 式 前 需 要 等 待 Flash 存 储 器 完 成 相 应 代 码 和 数 据 的 操 作 103

进 入 掉 电 模 式 后,IRC 主 时 钟 以 及 所 有 的 时 钟 都 将 停 止 如 果 RTC 使 能 则 RTC 依 旧 运 行, 并 且 可 以 通 过 RTC 中 断 唤 醒 CPU,Flash 强 制 进 入 掉 电 模 式,PLL 则 自 动 关 闭 并 断 开 连 接,CCLK 和 USBCLK 时 钟 分 频 器 自 动 复 位 为 0 在 进 入 掉 电 模 式 前, 如 果 IRC 被 使 用 则 在 IRC 启 动 建 立 时 间 (IRC-Start-up time) 后 ( 大 约 60uS) 一 个 2 位 的 IRC 定 时 器 开 始 计 数 并 且 在 4 个 时 钟 周 期 后 超 时 如 果 代 码 在 SRAM 中 执 行, 则 在 IRC 定 时 器 超 时 后 执 行 的 代 码 将 会 被 立 即 恢 复 此 外,Flash 唤 醒 定 时 器 将 为 flash 启 动 建 立 时 间 (flash start-up time) 计 时 100uS, 超 时 后 Flash 可 以 被 访 问 用 户 必 须 谨 记 在 唤 醒 后 重 新 根 据 需 要 配 置 PLL 和 时 钟 分 频 值 如 果 相 关 的 中 断 被 使 能,MCU 可 以 从 以 下 中 断 中 被 唤 醒 :NMI 外 部 中 断 EINT0 到 EINT3 GPIO 中 断 以 太 网 WOL 中 断 掉 电 检 测 RTC 报 警 中 断 USB 输 入 管 脚 传 输 数 据 中 断 和 CAN 输 入 引 脚 传 输 数 据 中 断 4. 深 度 掉 电 模 式 在 深 度 掉 电 模 式 下, 除 了 RTC 复 位 管 脚 WIC 和 RTC 备 份 寄 存 器 外 片 上 所 有 的 设 备 都 将 被 关 闭, 进 入 深 度 掉 电 模 式 后 PCON 寄 存 器 的 DPDFLAG 位 将 被 置 位 为 1 只 有 外 部 复 位 信 号 产 生 或 者 RTC 中 断 使 能 且 发 生 RTC 中 断 时,MCU 才 能 够 从 深 度 掉 电 模 式 下 唤 醒 5.11.2 寄 存 器 描 述 外 设 的 功 率 控 制 特 性 允 许 独 立 关 闭 应 用 中 不 需 要 的 外 设, 这 样 可 以 进 一 步 降 低 功 耗 功 率 控 制 寄 存 器 功 能 包 含 两 个 寄 存 器, 分 别 是 PCON 和 PCONP 1. 功 率 模 式 控 制 寄 存 器 Power Mode Control regisger(pcon 0x400F C0C0) PCON 寄 存 器 各 位 的 功 能 如 表 5.27 所 示 表 5.27 功 率 模 式 控 制 寄 存 器 PCON 功 能 描 述 复 位 值 0 PM0 功 耗 模 式 控 制 位 0 0 1 PM1 功 耗 模 式 控 制 位 1 0 低 电 压 掉 电 模 式 当 该 位 为 1 时, 在 掉 电 模 式 或 者 深 度 睡 眠 模 式 下 掉 2 BODRPM 电 检 测 功 能 被 关 闭 当 0 时, 掉 电 检 测 功 能 在 掉 电 模 式 和 深 度 睡 眠 模 0 式 下 保 持 激 活 状 态 3 BOGD 低 电 压 全 局 无 效 为 1 时, 低 电 压 检 测 功 能 无 效 ; 为 0 时, 点 电 压 检 测 功 能 使 能 0 4 BORD 低 电 压 复 位 无 效 为 1 时, 低 电 压 检 测 (2.6V) 不 会 导 致 芯 片 复 位 ; 为 0 时, 低 电 压 检 测 (2.9V) 使 芯 片 复 位 0 7:3 保 留 保 留 NA 8 SMFLAG 睡 眠 模 式 标 志 位 进 入 睡 眠 模 式 后 标 志 位 置 1, 通 过 软 件 写 入 清 零 0 9 DSFLAG 深 度 睡 眠 模 式 标 志 位 进 入 深 度 睡 眠 模 式 后 标 志 位 置 1, 通 过 软 件 写 入 清 零 0 10 PDFLAG 掉 电 模 式 标 志 位 进 入 掉 电 模 式 后 标 志 位 置 1, 通 过 软 件 写 入 清 零 0 11 DPDFLAG 深 度 掉 电 模 式 标 志 位 进 入 深 度 掉 电 模 式 后 标 志 位 置 1, 通 过 软 件 写 入 清 零 0 104

PCON 功 能 描 述 复 位 值 31:12 保 留 保 留 NA PM1 PM0 描 述 00 根 据 Cortex-M3 系 统 控 制 寄 存 器 中 SLEEPDEEP 位, 执 行 WFI 或 者 WFE 进 入 睡 眠 或 者 深 度 睡 眠 模 式 01 如 果 Cortex-M3 系 统 控 制 寄 存 器 中 SLEEPDEEP 位 为 1, 执 行 WFI 或 者 WFE 进 入 掉 电 模 式 10 保 留 11 如 果 Cortex-M3 系 统 控 制 寄 存 器 中 SLEEPDEEP 位 为 1, 执 行 WFI 或 者 WFE 进 入 深 度 掉 电 模 式 2. 外 设 功 率 控 制 寄 存 器 Power Control for Peripherals register(pconp 0x400F C0C4) PCONP 寄 存 器 允 许 将 所 有 外 设 功 能 关 闭 以 实 现 节 电 的 目 的, 通 过 关 断 特 定 外 围 模 块 的 时 钟 源 来 实 现, 有 少 数 外 设 功 能 不 能 被 关 闭, 如 看 门 狗 GPIO 引 脚 连 接 模 块 和 系 统 控 制 模 块 等 某 些 外 设, 特 别 是 包 含 模 拟 功 能 的 外 设, 它 们 的 操 作 无 须 时 钟, 但 会 消 耗 功 耗, 这 些 外 设 包 含 对 应 的 禁 用 控 制 位, 可 以 通 过 他 们 来 关 闭 电 路 以 降 低 功 耗 PCONP 中 的 每 个 位 都 控 制 一 个 外 设, 每 个 位 对 应 的 外 设 编 号 见 表 5.28, 当 值 为 1 时 该 外 设 启 动, 当 为 0 时 该 外 设 时 钟 关 闭, 外 设 在 外 设 功 率 控 制 寄 存 器 中 的 对 应 位 如 表 5.28 所 示 表 5.28 外 设 功 率 控 制 寄 存 器 PCONP 功 能 描 述 复 位 值 0 保 留 保 留 NA 1 PCTIM0 定 时 / 计 数 器 0 电 源 / 时 钟 控 制 位 1 2 PCTIM1 定 时 / 计 数 器 1 电 源 / 时 钟 控 制 位 1 3 PCUART0 串 口 0 功 率 时 钟 控 制 位 1 4 PCUART1 串 口 1 功 率 时 钟 控 制 位 1 5 保 留 保 留 NA 6 PWM1 脉 宽 调 制 器 1 功 率 时 钟 控 制 位 1 7 PCI2C0 I 2 C0 接 口 功 率 时 钟 控 制 位 1 8 PCSPI SPI 接 口 功 率 时 钟 控 制 位 1 9 PCRTC RTC 功 率 时 钟 控 制 位 1 10 PCSSP1 SSP1 接 口 功 率 时 钟 控 制 位 1 11 保 留 保 留 NA 12 PCAD 模 数 转 换 器 功 率 时 钟 控 制 位 0 13 PCCAN1 CAN 控 制 器 1 功 率 时 钟 控 制 位 0 14 PCCAN2 CAN 控 制 器 2 功 率 时 钟 控 制 位 0 15 PCGPIO GPIO 1 16 PCRIT 重 复 中 断 定 时 器 功 率 时 钟 控 制 位 0 17 PCMC 电 机 控 制 器 PWM 控 制 位 0 18 PCQEI 正 交 编 码 器 接 口 功 率 时 钟 控 制 位 0 19 PCI2C1 I 2 C1 接 口 功 率 时 钟 控 制 位 1 105

PCONP 功 能 描 述 复 位 值 20 保 留 保 留 NA 21 PCSSP0 SSP0 接 口 功 率 时 钟 控 制 位 1 22 PCTIM2 定 时 器 2 功 率 时 钟 控 制 位 0 23 PCTIM3 定 时 器 3 功 率 时 钟 控 制 位 0 24 PCUART2 串 口 2 功 率 时 钟 控 制 位 0 25 PCUART3 串 口 3 功 率 时 钟 控 制 位 0 26 PCI2C2 I 2 C 接 口 2 功 率 时 钟 控 制 位 1 27 PCI2S I 2 S 接 口 功 率 时 钟 控 制 位 0 28 保 留 保 留 NA 29 PCGPDMA 通 用 DMA 功 能 功 率 时 钟 控 制 位 0 30 PCENET 以 太 网 功 率 时 钟 控 制 位 0 31 PCUSB USB 接 口 功 率 时 钟 控 制 位 0 5.12 通 用 输 入 / 输 出 接 口 GPIO 5.12.1 LPC17xx GPIO 口 简 介 LPC17xx 的 GPIO 口 均 为 快 速 I/O 口 ( 相 对 于 LPC2000 的 GPIO 口,LPC23xx 和 LPC24xx 也 集 成 有 快 速 GPIO 功 能 ) GPIO 寄 存 器 被 设 计 到 外 设 AHB 总 线 上, 这 样 可 以 以 最 快 速 度 访 问 GPIO 寄 存 器 组, 通 过 设 置 屏 蔽 寄 存 器, 允 许 对 端 口 引 脚 成 组 操 作, 保 留 其 它 引 脚 状 态 不 变 所 有 GPIO 寄 存 器 可 以 以 字 节 半 字 和 字 的 方 式 访 问, 所 有 端 口 值 可 以 在 单 指 令 周 期 内 完 成 操 作,GPIO 寄 存 器 也 可 以 通 过 GP DMA 方 式 访 问 复 位 后 所 有 的 I/O 口 默 认 为 带 有 内 部 上 拉 的 输 入 引 脚 LPC17xx 的 端 口 0 和 端 口 2 的 每 根 引 脚 都 可 以 产 生 中 断 信 号 每 个 中 断 信 号 可 编 程 设 置 为 上 升 沿 触 发 下 降 沿 触 发 或 者 脉 冲 触 发, 每 个 使 能 的 中 断 可 作 为 唤 醒 信 号, 用 于 将 MCU 从 掉 电 模 式 中 唤 醒 用 户 软 件 通 过 操 作 GPIO 寄 存 器 可 以 挂 起 上 升 沿 中 断 下 降 沿 中 断 和 GPIO 总 中 断, 端 口 GPIO0 和 端 口 GPIO2 与 外 部 中 断 EINT3 在 NVIC 中 共 享 同 一 个 中 断 通 道 表 5.29 对 GPIO 管 脚 进 行 了 简 单 的 描 述 表 5.29 GPIO 管 脚 描 述 管 脚 名 称 类 型 描 述 P0[31:0] P1[31:0] P2[13:0] P3[26:25] P4[29:28] 输 入 / 输 出 通 用 输 入 / 输 出 口 通 常 这 些 管 脚 会 和 其 他 外 设 功 能 复 用, 因 此 可 能 在 应 用 中 无 法 使 用 特 殊 的 MCU 型 号 由 于 封 装 的 不 同, 使 得 一 些 GPIO 口 不 能 存 在 一 些 IO 口 可 能 根 据 复 用 外 设 功 能 而 被 削 减 了 一 些 功 能 例 如, 含 有 I 2 C0 功 能 的 管 脚 必 须 是 开 漏 输 出 的 5.12.2 GPIO 寄 存 器 简 介 为 了 与 LPC23xx 系 列 ARM7 控 制 器 做 到 兼 容 的 需 求,LPC17xx 加 入 了 5 组 32 位 通 用 I/O 口 模 组 所 106

有 的 GPIO 口 都 具 有 增 强 型 GPIO 的 特 性 详 细 的 GPIO 寄 存 器 设 置 用 户 可 参 阅 LPC17xx 的 用 户 手 册, 此 处 仅 对 GPIO 涉 及 的 主 要 寄 存 器 做 简 要 介 绍 LPC17xx 的 GPIO 寄 存 器 映 射 表 如 表 5.30 所 示 表 5.30 GPIO 寄 存 器 映 射 表 ( 局 部 总 线 可 访 问 寄 存 器, 增 强 的 GPIO 特 性 ) 通 用 名 称 描 述 访 问 复 位 值 PORTn 名 称 和 地 址 FIO0DIR - 0x2009 C000 FIODIR 快 速 GPIO 方 向 控 制 寄 存 器, 该 寄 存 器 单 独 控 制 每 个 I/O 口 的 方 向 读 / 写 0x0 FIO1DIR - 0x2009 C020 FIO2DIR - 0x2009 C040 FIO3DIR - 0x2009 C060 FIO4DIR - 0x2009 C080 FIO0MASK - 0x2009 C010 FIOMASK 快 速 GPIO 屏 蔽 寄 存 器 对 快 速 GPIO 引 脚 的 写 置 位 清 除 和 读 操 作, 只 有 在 该 寄 存 器 对 应 位 为 0 时 才 能 有 效 读 / 写 0x0 FIO1MASK - 0x2009 C030 FIO2MASK - 0x2009 C050 FIO3MASK - 0x2009 C070 FIO4MASK - 0x2009 C090 使 用 FIOMASK 的 快 速 端 口 引 脚 值 寄 存 器 FIOPIN 不 管 引 脚 方 向 和 模 式 如 何 设 定, 引 脚 的 当 前 状 态 都 可 从 该 寄 存 器 中 读 出 当 对 该 寄 存 器 执 行 写 操 作, 并 且 设 置 FIOMASK 对 应 位 为 0 时, 可 立 即 改 变 端 口 引 脚 电 平 注 意 : 对 于 在 FIOMASK 寄 存 器 中 为 1 的 位, 在 FIOPIN 寄 存 器 中 读 出 值 为 0, 不 管 对 应 引 脚 的 物 理 状 态 如 何 读 / 写 0x0 FIO0PIN - 0x2009 C014 FIO1PIN - 0x2009 C034 FIO2PIN - 0x2009 C054 FIO3PIN - 0x2009 C074 FIO4PIN - 0x2009 C094 FIOSET 使 用 FIOMASK 的 快 速 端 口 输 出 置 位 寄 存 器 改 寄 存 器 控 制 输 出 引 脚 状 态 写 1 则 引 脚 输 出 高 电 平, 写 0 无 效 读 操 作 返 回 该 寄 存 器 当 前 端 口 输 出 状 态, 只 有 在 FIOMASK 寄 存 器 对 应 位 为 0 时 才 能 改 变 该 引 脚 状 态 读 / 写 0x0 FIO0SET - 0x2009 C018 FIO1SET - 0x2009 C038 FIO2SET - 0x2009 C058 FIO3SET - 0x2009 C078 FIO4SET - 0x2009 C098 FIOCLR 使 用 FIOMASK 的 快 速 端 口 清 除 寄 存 器 该 寄 存 器 控 制 输 出 引 脚 状 态 写 1 则 引 脚 输 出 低 电 平, 写 0 无 效 只 有 在 FIOMASK 寄 存 器 对 应 位 为 0 时 才 能 改 变 该 引 脚 状 态 只 写 0x0 FIO0CLR - 0x2009 C01C FIO1CLR - 0x2009 C03C FIO2CLR - 0x2009 C05C FIO3CLR - 0x2009 C07C FIO4CLR - 0x2009 C09C LPC17xx 系 列 控 制 器 中 的 GPIO 中 断 寄 存 器 映 射 如 表 5.31 所 示 表 5.31 GPIO 中 断 寄 存 器 映 射 表 通 用 名 称 描 述 访 问 复 位 值 PORTn 名 称 和 地 址 IntEnR GPIO 上 升 沿 中 断 使 能 寄 存 器 读 / 写 0x0 IntEnF GPIO 下 降 沿 中 断 使 能 寄 存 器 读 / 写 0x0 IntStatR GPIO 上 升 沿 中 断 状 态 寄 存 器 只 读 0x0 IntStatF GPIO 下 降 沿 中 断 状 态 寄 存 器 只 读 0x0 IntClr GPIO 中 断 清 除 寄 存 器 只 写 0x0 IO0IntEnR - 0x4002 8090 IO2IntEnR - 0x4002 80B0 IO0IntEnR - 0x4002 8094 IO2IntEnR - 0x4002 80B4 IO0IntStatR - 0x4002 8084 IO2IntStatR- 0x4002 80A4 IO0IntStatF - 0x4002 8088 IO2IntStatF - 0x4002 80A8 IO0IntClr - 0x4002 808C IO2IntClr - 0x4002 80AC IntStatus GPIO 总 中 断 状 态 寄 存 器 只 读 0x0 IOIntStatus - 0x4002 8080 5.12.3 使 用 注 意 事 项 107

从 端 口 同 时 输 出 0 和 1 状 态 方 法 1: 使 用 32 位 (1 个 字 ) 快 速 GPIO 寄 存 器, 见 程 序 清 单 5.2 程 序 清 单 5.2 FIO0MASK = 0xFFFF00FF; FIO0PIN = 0x0000A500; 方 法 2: 使 用 16 位 (1 个 半 字 ) 快 速 GPIO 寄 存 器, 见 程 序 清 单 5.3 程 序 清 单 5.3 FIO0MASKL = 0x00FF; FIO0PINL = 0xA500; 方 法 3: 使 用 8 位 (1 个 字 节 ) 快 速 GPIO 寄 存 器, 见 程 序 清 单 5.4 程 序 清 单 5.4 FIO0PIN1 = 0xA5; 5.12.4 应 用 举 例 本 例 使 用 端 口 2 的 P2.2 P2.3 P2.4 和 P2.5 的 四 个 IO 口 控 制 四 盏 LED 灯, 当 引 脚 输 出 高 时 电 平 点 亮 LED 灯, 输 出 低 电 平 时 熄 灭 LED 灯 图 5.15 示 IO 口 点 亮 LED 的 原 理 图,IO 口 通 过 74LVC244 与 4 个 LED 相 连 图 5.15 GPIO 驱 动 LED 原 理 图 如 程 序 清 单 5.5 所 示, 主 函 数 在 初 始 化 完 系 统 后, 将 端 口 GPIO2 的 相 应 口 置 位 输 出 状 态, 通 过 GPIO2->FIOPIN 来 改 变 相 应 管 脚 上 的 输 出 电 平 程 序 清 单 5.5 GPIO 驱 动 LED 程 序 清 单 const unsigned long led_mask[] = { 1<<2, 1<<3, 1<<4, 1<<5 }; // 定 义 IO 口 108

int main (void) { int num = -1; int dir = 1; SystemInit();// 系 统 初 始 化 函 数 SysTick_Config(SystemFrequency/1000-1); /* 系 统 定 时 器, 每 1ms 产 生 一 次 中 断 */ FIO2DIR = 0x0000003C; /* 设 置 LED 占 用 的 IO 口 状 态 为 输 出 */ for (;;) { /* 死 循 环 */ /* 计 算 'num': 0,1,...,LED_NUM-1,LED_NUM-1,...,1,0,0,... */ num += dir; if (num == LED_NUM) { dir = -1; num = LED_NUM-1; } /* 此 处 LED_NUM 为 4 */ else if (num < 0) { dir = 1; num = 0; } FIO2PIN = led_mask[num]; // 点 亮 相 应 LED Delay(500); /* 延 时 500ms */ FIO2PIN &= ~led_mask[num]; // 熄 灭 相 应 LED Delay(500); /* 延 时 500ms */ } } 5.13 定 时 器 Timer0/1/2/3 5.13.1 特 性 LPC17xx 系 列 微 控 制 器 带 有 4 个 32 位 可 编 程 定 时 / 计 数 器 每 个 定 时 / 计 数 器 最 少 有 两 路 捕 捉 2 路 比 较 匹 配 输 出 电 路, 定 时 器 2 带 有 4 路 匹 配 输 出 LPC17xx 芯 片 的 定 时 具 有 以 下 特 点 : * 带 有 可 编 程 32 位 预 分 频 器 的 32 位 定 时 器 / 计 数 器 ; 109

* 支 持 计 数 或 者 定 时 操 作 ; * 每 个 定 时 器 具 有 2 路 32 位 的 捕 捉 通 道, 当 输 入 信 号 跳 变 时 可 取 得 定 时 器 的 瞬 时 值, 也 可 以 选 择 使 捕 获 事 件 产 生 中 断 ; * 4 个 32 位 匹 配 寄 存 器 : 匹 配 时 定 时 器 继 续 工 作, 可 选 择 产 生 中 断 ; 匹 配 时 停 止 定 时 器, 可 选 择 产 生 中 断 ; 匹 配 时 复 位 定 时 器, 可 选 择 产 生 中 断 ; * 多 达 4 个 对 应 于 匹 配 寄 存 器 的 外 部 输 出, 具 有 以 下 特 性 : 匹 配 时 设 置 为 低 电 平 ; 匹 配 时 设 置 为 高 电 平 ; 匹 配 时 反 转 ; 匹 配 时 无 动 作 ; 5.13.2 应 用 场 合 * 作 为 对 内 部 事 件 计 数 的 内 部 计 数 器 ; * 通 过 捕 获 输 入 实 现 脉 冲 宽 度 调 制 器 ; * 作 为 普 通 的 定 时 器 5.13.3 引 脚 功 能 描 述 定 时 / 计 数 器 相 关 引 脚 描 述 如 表 5.32 所 示 表 5.32 定 时 / 计 数 器 引 脚 描 述 引 脚 类 型 功 能 描 述 CAP0[1:0] CAP1[1:0] CAP2[1:0] CAP3[1:0] MAT0[1:0] MAT1[1:0] MAT2[3:0] MAT3[1:0] 输 入 输 出 捕 获 信 号 捕 获 引 脚 的 跳 变 可 配 置 为 将 定 时 器 值 装 入 一 个 捕 获 寄 存 器, 并 可 选 择 产 生 一 个 中 断 可 选 择 多 个 引 脚 用 做 捕 获 功 能, 当 有 多 个 引 脚 被 选 择 用 做 一 个 TIMER0/1 通 道 的 捕 获 输 入 时, 使 用 编 号 最 小 的 引 脚 外 部 匹 配 输 出 当 匹 配 寄 存 器 (MR3:0) 等 于 定 时 器 计 数 器 (TC) 时, 该 输 出 可 翻 转, 变 为 低 电 平 变 为 高 电 平 或 不 变 外 部 匹 配 寄 存 器 (EMR) 控 制 该 输 出 的 功 能, 可 选 择 多 个 引 脚 并 行 用 作 匹 配 输 出 功 能 5.13.4 寄 存 器 功 能 简 要 描 述 本 节 内 容 简 单 介 绍 定 时 / 计 数 器 涉 及 的 所 有 寄 存 器, 用 户 如 需 详 细 资 料 可 参 考 LPC17xx 的 用 户 手 册, 表 5.33 所 示 为 定 时 / 计 数 器 所 有 寄 存 器, 寄 存 器 详 细 功 能 描 述 在 本 节 后 面 给 出 110

表 5.33 定 时 / 计 数 器 寄 存 器 列 表 通 用 名 称 功 能 描 述 访 问 复 位 值 名 称 和 地 址 IR 中 断 寄 存 器 读 IR 可 识 别 中 断 源, 向 对 应 位 写 1 将 清 除 相 应 中 断 源 读 该 寄 存 器 可 以 识 别 8 个 中 断 源 哪 个 被 挂 起 读 / 写 0 TCR 定 时 器 控 制 寄 存 器 TCR 用 于 控 制 定 时 器 功 能, 通 过 该 寄 存 器 可 以 禁 用 或 复 位 定 时 器 读 / 写 0 TC 定 时 器 计 数 器 32 位 TC 在 每 PR+1 个 PCLK 周 期 后 增 加 1, 该 寄 存 器 通 过 TCR 控 制 读 / 写 0 预 分 频 寄 存 器 当 预 分 频 计 数 器 PC 的 内 容 与 该 PR 寄 存 器 数 值 相 同 时 下 个 时 钟 周 期 TC 增 加 1 并 读 / 写 0 且 PC 被 清 零 预 分 频 计 数 器 该 寄 存 器 是 一 个 自 增 计 数 器, PC 数 值 计 到 与 PR 内 容 相 同 为 止 当 达 到 PR 的 数 值 时 TC 增 1 并 且 PC 被 清 除 PC 内 容 可 通 过 总 线 读 / 写 0 接 口 观 察 或 控 制 MCR 匹 配 控 制 寄 存 器 该 寄 存 器 用 于 控 制 当 匹 配 时 间 发 生 后 是 否 产 生 中 断 或 复 位 TC 读 / 写 0 匹 配 寄 存 器 0. 该 寄 存 器 通 过 MCR 控 制 通 过 设 MR0 置 在 MR0 匹 配 TC 时 复 位 TC, 或 同 时 停 止 TC 和 读 / 写 0 PC, 并 且 产 生 中 断 MR1 匹 配 寄 存 器 1 功 能 同 MR0 读 / 写 0 MR2 匹 配 寄 存 器 2 功 能 同 MR0 读 / 写 0 MR3 匹 配 寄 存 器 3 功 能 同 MR0 读 / 写 0 捕 获 控 制 寄 存 器 该 寄 存 器 控 制 用 于 装 载 捕 获 寄 存 CCR 器 CRx 的 捕 获 输 入 边 沿 以 及 在 发 生 捕 获 时 是 否 产 生 读 / 写 0 中 断 CR0 捕 获 寄 存 器 0 当 CAPn.0 上 有 事 件 发 生 时 CR0 与 TC 的 值 一 起 被 加 载 只 读 0 CR1 捕 获 寄 存 器 1 功 能 同 CR0 只 读 0 外 部 匹 配 寄 存 器 E M R 控 制 外 部 匹 配 引 EMR 脚 M AT n. 0 ~ M AT n. 3 ( M AT 0. 0 ~ M AT 0. 3 和 读 / 写 0 MAT1.0~MAT1.3) T0IR - 0x4000 4000 T1IR - 0x4000 8000 T2IR - 0x4009 0000 T3IR - 0x4009 4000 T0TCR - 0x4000 4004 T1TCR - 0x4000 8004 T2TCR - 0x4009 0004 T3TCR - 0x4009 4004 T0TC - 0x4000 4008 T1TC - 0x4000 8008 T2TC - 0x4009 0008 T3TC - 0x4009 4008 T0PR - 0x4000 400C T1PR - 0x4000 800C T2PR - 0x4009 000C T3PR - 0x4009 400C T0PC - 0x4000 4010 T1PC - 0x4000 8010 T2PC - 0x4009 0010 T3PC - 0x4009 4010 T0MCR- 0x4000 4014 T1MCR- 0x4000 8014 T2MCR- 0x4009 0014 T3MCR- 0x4009 4014 T0MR0-0x4000 4018 T1MR0-0x4000 8018 T2MR0-0x4009 0018 T3MR0-0x4009 4018 T0MR1-0x4000 401C T1MR1-0x4000 801C T2MR1-0x4009 001C T3MR1-0x4009 401C T0MR2-0x4000 4020 T1MR2-0x4000 8020 T2MR2-0x4009 0020 T3MR2-0x4009 4020 T0MR3-0x4000 4024 T1MR3-0x4000 8024 T2MR3-0x4009 0024 T3MR3-0x4009 4024 T0CCR- 0x4000 4028 T1CCR- 0x4000 8028 T2CCR- 0x4009 0028 T3CCR- 0x4009 4028 T0CR0-0x4000 402C T1CR0-0x4000 802C T2CR0-0x4009 002C T3CR0-0x4009 402C T0CR1-0x4000 4030 T1CR1-0x4000 8030 T2CR1-0x4009 0030 T3CR1-0x4009 4030 T0EMR-0x4000 403C T1EMR- 0x4000 803C T2EMR-0x4009 003C T3EMR-0x4009 403C 111

通 用 名 称 功 能 描 述 访 问 复 位 值 名 称 和 地 址 T0CTCR-0x40004070 CTCR 计 数 器 控 制 寄 存 器 选 择 定 时 器 或 计 数 器 模 式, 计 数 器 模 式 下 选 择 计 数 的 引 脚 和 边 沿 读 / 写 0 T1CTCR-0x40008070 T2CTCR-0x40090070 T3CTCR-0x40094070 5.13.5 应 用 举 例 -- 产 生 中 断 的 定 时 器 在 实 际 应 用 中, 一 般 要 求 处 理 器 间 隔 固 定 时 间 做 相 应 处 理, 如 定 时 读 取 外 部 数 据 或 刷 新 数 码 管 显 示 等, 这 时 使 用 定 时 器 中 断 功 能 就 非 常 有 必 要, 而 且 在 这 种 方 式 下, 定 时 器 与 处 理 器 可 以 并 行 工 作, 等 到 定 时 器 完 成, 通 过 中 断 打 断 处 理 器 转 而 执 行 中 断 服 务 程 序, 这 样 的 定 时 器 方 式 可 以 提 高 处 理 器 的 使 用 效 率 程 序 首 先 要 初 始 化 使 用 的 定 时 器,init_timer() 函 数 执 行 的 内 容 包 括 设 置 定 时 器 的 匹 配 寄 存 器 MR 和 匹 配 控 制 寄 存 器 MCR, 还 有 安 装 定 时 器 中 断 服 务 函 数 等 该 函 数 有 两 个 参 数 :timer_num 为 初 始 化 定 时 器 序 号,TimerInterval 为 时 钟 周 期 个 数, 即 定 时 器 中 断 间 隔, 具 体 代 码 如 程 序 清 单 5.6 所 示 程 序 清 单 5.6 DWORD init_timer ( BYTE timer_num, DWORD TimerInterval ) { NVIC_InitTypeDef NVIC_InitStructure; if ( timer_num == 0 ) { timer0_counter = 0; T0MR0 = TimerInterval;/* 设 置 计 时 初 值 */ T0MCR = 3;/* 计 数 器 的 值 与 MR 值 匹 配 时 的 动 作 : 发 生 中 断 TC 复 位 */ NVIC_InitStructure.NVIC_IRQChannel = TIMER0_IRQChannel;/* NVIC 设 置 */ NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); return (TRUE); }... return (FALSE); 112

} 随 后, 程 序 使 能 计 数 器 这 时 定 时 器 开 始 计 数, 直 到 TC 与 MR 匹 配 产 生 中 断, 同 时 复 位 TC 开 始 下 一 轮 计 数 定 时 器 使 能 函 数 如 程 序 清 单 5.7 所 示, 定 时 器 中 断 服 务 函 数 如 程 序 清 单 5.8 所 示 程 序 清 单 5.7 定 时 器 使 能 函 数 void enable_timer( BYTE timer_num ) { if ( timer_num == 0 ) { T0TCR = 1;/* 计 数 器 使 能 */ } else { T1TCR = 1;/* 计 数 器 使 能 */ } return; } 程 序 清 单 5.8 定 时 器 中 断 服 务 函 数 void TIMER0_IRQHandler (void) irq { T0IR = 1; /* 清 除 中 断 标 志 位 */ timer0_counter++; /* 进 行 中 断 处 理 */ } 5.14 系 统 节 拍 定 时 器 System Tick Timer Cortex-M3 内 核 集 成 了 一 个 系 统 节 拍 定 时 器 它 可 以 被 操 作 系 统 或 者 系 统 管 理 软 件 用 来 每 隔 固 定 的 10ms 产 生 一 次 中 断 具 体 可 以 参 考 Cortex-M3 Technical Reference Manual 5.14.1 特 性 LPC17xx 微 控 制 器 集 成 有 系 统 节 拍 定 时 器, 它 可 以 以 10ms 为 间 隔 定 时, 此 时 钟 可 以 由 内 部 CPU 时 钟 源 提 供, 也 可 以 由 一 个 时 钟 输 入 引 脚 (STCLK) 提 供 113

5.14.2 操 作 方 法 系 统 节 拍 定 时 器 是 一 个 24 位 定 时 器, 其 向 下 计 数 直 到 减 到 0 并 产 生 中 断, 系 统 节 拍 定 时 器 是 为 了 在 中 断 之 间 产 生 固 定 的 10ms 定 时,STCLK 功 能 与 P3.26 上 其 他 功 能 复 用 为 了 在 一 定 时 间 间 隔 内 发 生 多 次 中 断,STRELOAD 寄 存 器 必 须 以 正 确 的 值 初 始 化,STCALIB 寄 存 器 中 提 供 了 默 认 值, 当 然 这 个 值 也 可 以 被 软 件 修 改, 默 认 值 为 CPU 时 钟 为 100MHz 时 10ms 中 断 间 隔 时 间, 系 统 节 拍 定 时 器 的 结 构 框 图 如 图 5.16 所 示 图 5.16 系 统 节 拍 定 时 器 结 构 框 图 5.14.3 系 统 节 拍 定 时 器 寄 存 器 描 述 本 节 简 要 描 述 系 统 节 拍 定 时 器 寄 存 器 的 情 况, 用 户 可 参 阅 LPC17xx 的 用 户 手 册 获 得 更 加 详 细 的 信 息 表 5.34 所 示 为 系 统 节 拍 定 时 器 涉 及 的 所 有 寄 存 器 表 5.34 系 统 节 拍 定 时 器 寄 存 器 名 称 描 述 访 问 复 位 值 地 址 STCTRL 系 统 定 时 器 控 制 和 状 态 寄 存 器 读 / 写 0x4 0xE000 E010 STRELOAD 系 统 定 时 器 重 新 加 载 数 据 寄 存 器 读 / 写 0 0xE000 E014 STCURR 系 统 定 时 器 当 前 数 据 寄 存 器 读 / 写 0 0xE000 E018 STCALIB 系 统 定 时 器 计 算 数 据 寄 存 器 读 / 写 0x000F 423F 0xE000 E01C 5.14.4 程 序 举 例 程 序 清 单 5.9 为 系 统 节 拍 定 时 器 初 始 化 相 关 软 件 操 作 ; 程 序 清 单 5.10 为 系 统 节 拍 定 时 器 中 断 处 理 函 数 ; 程 序 清 单 5.11 为 利 用 系 统 节 拍 定 时 器 产 生 延 时 的 应 用 函 数 程 序 清 单 5.9 DWORD SysTick_Config(DWORD ticks) { if (ticks > SYSTICK_MAXCOUNT) return (1); 114

NVIC_ST_RELOAD = (ticks & SYSTICK_MAXCOUNT) - 1; NVIC_SYS_H_PRI15 = 0x48; NVIC_ST_CURRENT = 0x00; N V I C _ S T_ C T R L = (1<< SYS T I C K _ C L K S O U R C E ) (1<< SYS T I C K _ E N A B L E ) (1<<SYSTICK_TICKINT); return 0; } 程 序 清 单 5.10 系 统 节 拍 定 时 器 中 断 处 理 函 数 void SysTick_Handler(void) { TimeTick++; } 程 序 清 单 5.11 系 统 节 拍 定 时 器 产 生 延 时 函 数 void Delay (DWORD tick) { DWORD systickcnt; systickcnt = TimeTick; while ((TimeTick - systickcnt) < tick); } 5.15 看 门 狗 (Watch dog) 5.15.1 功 能 描 述 使 用 看 门 狗 (Watch Dog, WD) 是 指 在 系 统 进 入 错 误 状 态 后, 为 了 防 止 系 统 死 机, 在 一 段 合 理 时 间 内 复 位 系 统 看 门 狗 包 括 一 个 4 分 频 的 预 分 频 器 和 一 个 32 位 计 数 器, 时 钟 通 过 预 分 频 器 输 入 定 时 器, 定 时 器 进 行 递 减 计 数, 定 时 器 递 减 的 最 小 值 为 0xFF, 如 果 设 置 一 个 小 于 0xFF 的 值, 系 统 会 将 0xFF 装 入 计 数 器, 因 此 最 小 看 门 狗 间 隔 时 间 为 WDCLK 256 4, 最 大 时 间 间 隔 为 WDCLK 232 4, 两 者 都 是 WDCLK 4 的 倍 数 看 门 狗 应 该 按 照 以 下 顺 序 使 用 : 设 置 WDTC 寄 存 器 设 定 看 门 狗 重 装 常 数 ; 通 过 WDMOD 寄 存 器 设 定 工 作 模 式 ; 通 过 向 WDFEED 寄 存 器 先 写 0xAA 后 写 0x55 序 列 使 能 看 门 狗 ; 看 门 狗 应 该 在 计 数 器 下 溢 出 前 重 新 装 入 常 数, 避 免 复 位 或 中 断 发 生 看 门 狗 时 钟 WDCLK 可 以 选 择 RTC 时 钟 内 部 RC 晶 振 或 者 APB 总 线 设 备 时 钟 PCLK 115

5.15.2 看 门 狗 结 构 描 述 看 门 狗 的 逻 辑 结 构 框 图 如 图 5.17 所 示 图 5.17 看 门 狗 逻 辑 结 构 框 图 5.15.3 看 门 狗 寄 存 器 描 述 本 节 简 单 介 绍 看 门 狗 相 关 寄 存 器 的 内 容, 用 户 可 以 通 过 LPC17xx 的 用 户 手 册 深 入 了 解 LPC17xx 的 看 门 狗 的 寄 存 器 情 况 表 5.35 所 示 为 看 门 狗 寄 存 器 列 表 表 5.35 看 门 狗 寄 存 器 列 表 名 称 描 述 访 问 复 位 值 地 址 WDMOD 看 门 狗 模 式 寄 存 器 该 寄 存 器 包 含 看 门 狗 定 时 的 基 本 模 式 和 状 态 读 / 写 0 0xE000 0000 WDTC 看 门 狗 定 时 器 常 数 寄 存 器 该 寄 存 器 决 定 超 时 值 读 / 写 0xFF 0xE000 0004 WDFEED 看 门 狗 喂 狗 寄 存 器 向 该 寄 存 器 顺 序 写 入 0xAA 和 0x55 使 看 门 狗 定 时 器 重 新 装 入 预 设 值 只 写 NA 0xE000 0008 WDTV 看 门 狗 定 时 器 值 寄 存 器 从 该 寄 存 器 读 出 看 门 狗 定 时 器 的 当 前 值 只 读 0xFF 0xE000 000C WDCLKSEL 看 门 狗 时 钟 源 选 择 寄 存 器 读 / 写 0 0xE000 0010 5.15.4 应 用 举 例 程 序 清 单 5.12 是 一 个 使 用 看 门 狗 产 生 普 通 中 断 的 例 子, 产 生 系 统 复 位 中 断 只 需 要 再 多 设 置 WDRESET 位 即 可 函 数 首 先 要 安 装 看 门 狗 中 断 服 务 函 数, 然 后 设 置 WDCLKSEL 寄 存 器, 选 择 内 部 RC 晶 振 为 时 钟 源, 由 于 内 部 RC 晶 振 为 4MHz, 因 此 设 置 WDTC 的 值 为 4M-1 而 看 门 狗 时 钟 电 路 把 时 钟 源 4 分 频, 这 样 看 门 狗 超 时 时 间 设 置 为 4 秒, 接 着 再 设 置 WDMOD 寄 存 器 的 WDEN 位, 最 后 完 成 一 个 喂 狗 序 列, 使 能 看 门 狗 定 时 器 程 序 清 单 5.12 看 门 狗 初 始 化 函 数 DWORD WDTInit( void ) 116

{ NVIC_InitTypeDef NVIC_InitStructure; wdt_counter = 0; NVIC_InitStructure.NVIC_IRQChannel = WDT_IRQChannel; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); WDCLKSEL = 0; /* 选 择 内 部 RC 晶 振 为 时 钟 源 */ WDTC = WDT_FEED_VALUE;/* 一 旦 WDEN 设 置, 看 门 狗 在 喂 狗 后 将 会 启 动 */ WDMOD = WDEN; WDFEED = 0xAA; /* 按 顺 序 喂 狗 */ WDFEED = 0x55; return( TRUE ); } 5.16 实 时 时 钟 5.16.1 功 能 描 述 实 时 时 钟 (Real Time Clock, RTC) 提 供 一 套 计 数 器, 可 以 在 系 统 上 电 和 关 闭 操 作 时 对 时 间 进 行 测 量,RTC 在 低 功 耗 模 式 下 功 耗 非 常 低 LPC17xx 处 理 器 的 RTC 时 钟 可 以 由 独 立 的 32.768kHz 振 荡 器 产 生 1Hz 的 内 部 时 间 参 考,RTC 具 有 专 用 的 电 源 引 脚 VBAT, 可 连 接 到 电 池 或 其 他 器 件 使 用 的 相 同 的 3.3V 电 压 上 LPC17xx 的 实 时 时 钟 RTC 具 有 如 下 特 点 : * 测 量 保 持 日 历 或 时 钟 的 时 间 通 路 ; * 超 低 功 耗 设 计, 支 持 电 池 供 电 系 统 ; * 20 字 节 的 电 池 备 份 存 储 空 间 可 供 CPU 无 电 源 供 给 时 由 RTC 操 作 ; * 专 用 32kHz 超 低 功 耗 时 钟 源 ; * 专 用 电 池 供 电 管 脚 ; * RTC 供 电 部 分 独 立 于 芯 片 上 其 他 部 分 117

5.16.2 实 时 时 钟 的 结 构 RTC 的 功 能 接 口 框 图 如 图 5.18 所 示 图 5.18 RTC 的 功 能 结 构 框 图 5.16.3 寄 存 器 功 能 描 述 本 节 简 单 介 绍 RTC 部 分 的 寄 存 器 功 能, 用 户 可 参 阅 LPC17xx 的 用 户 手 册 获 取 更 详 细 的 信 息 RTC 包 含 了 许 多 寄 存 器, 具 体 如 表 5.36 所 示 表 5.36 RTC 寄 存 器 列 表 组 别 名 称 寄 存 器 位 数 描 述 访 问 复 位 值 地 址 ILR 2 中 断 位 置 寄 存 器 读 / 写 0 0x4002 4000 CCR 3 时 钟 控 制 寄 存 器 读 / 写 NC 0x4002 4008 混 合 寄 存 器 组 CIIR 8 计 数 器 增 量 中 断 寄 存 器 读 / 写 0 0x4002 400C AMR 8 报 警 屏 蔽 寄 存 器 读 / 写 0 0x4002 4010 RTC_AUX 1 RTC 辅 助 控 制 寄 存 器 读 / 写 0x8 0x4002 405C RTC-AUXEN 1 RTC 辅 助 使 能 寄 存 器 读 / 写 0 0x4002 4058 完 整 时 间 寄 存 器 组 CTIME0 32 完 整 时 间 寄 存 器 0 只 读 NC 0x4002 4014 CTIME1 32 完 整 时 间 寄 存 器 1 只 读 NC 0x4002 4018 CTIME2 32 完 整 时 间 寄 存 器 2 只 读 NC 0x4002 401C SEC 6 秒 寄 存 器 读 / 写 NC 0x4002 4020 MIN 6 分 寄 存 器 读 / 写 NC 0x4002 4024 时 钟 计 数 寄 存 器 组 HOUR 5 小 时 寄 存 器 读 / 写 NC 0x4002 4028 DOM 5 日 期 ( 月 ) 寄 存 器 读 / 写 NC 0x4002 402C DOW 3 星 期 寄 存 器 读 / 写 NC 0x4002 4030 DOY 9 日 期 ( 年 ) 寄 存 器 读 / 写 NC 0x4002 4034 MONTH 4 月 寄 存 器 读 / 写 NC 0x4002 4038 YEAR 12 年 寄 存 器 读 / 写 NC 0x4002 403C CALIBRATION 18 计 算 值 寄 存 器 读 / 写 NC 0x4002 4040 118

组 别 名 称 寄 存 器 位 数 描 述 访 问 复 位 值 地 址 通 用 寄 存 器 组 报 警 寄 存 器 组 GPREG0 32 通 用 寄 存 器 0 读 / 写 NC 0x4002 4044 GPREG1 32 通 用 寄 存 器 1 读 / 写 NC 0x4002 4048 GPREG2 32 通 用 寄 存 器 2 读 / 写 NC 0x4002 404C GPREG3 32 通 用 寄 存 器 3 读 / 写 NC 0x4002 4050 GPREG4 32 通 用 寄 存 器 4 读 / 写 NC 0x4002 4054 ALSEC 6 秒 报 警 值 读 / 写 NC 0x4002 4060 ALMIN 6 分 报 警 值 读 / 写 NC 0x4002 4064 ALHOUR 5 小 时 报 警 值 读 / 写 NC 0x4002 4068 ALDOM 5 日 期 ( 月 ) 报 警 值 读 / 写 NC 0x4002 406C ALDOW 3 星 期 报 警 值 读 / 写 NC 0x4002 4070 ALDOY 9 日 期 ( 年 ) 报 警 值 读 / 写 NC 0x4002 4074 ALMON 4 月 报 警 值 读 / 写 NC 0x4002 4078 ALYEAR 12 年 报 警 值 读 / 写 NC 0x4002 407C 5.16.4 使 用 注 意 事 项 如 果 使 用 RTC,VBAT 必 须 连 接 到 一 个 独 立 的 电 源 ( 通 常 是 外 部 的 电 池 ) 或 者 悬 空 在 VDD(3V3) 供 电 的 情 况 下,RTC 区 域 可 以 由 芯 片 内 部 电 源 供 电, 甚 至 VBAT 不 需 连 接 外 部 电 源 如 果 VDD(3V3) 或 者 VBAT 的 电 源 不 符 合 要 求,RTC 丢 失 自 己 的 时 间 数 据 和 备 份 寄 存 器 中 的 数 据, 如 果 时 钟 源 丢 失, 中 断 或 者 改 变, 那 么 RTC 也 无 法 维 持 时 间 计 数 5.16.5 应 用 举 例 本 例 只 适 用 了 RTC 的 基 本 计 时 功 能 程 序 通 过 设 置 基 本 年 月 日 和 时 间 后, 每 间 隔 1 秒 读 取 RTC 的 实 施 时 间 和 日 期, 并 通 过 串 口 打 印 在 此 只 给 出 对 RTC 操 作 的 几 个 函 数 的 代 码 RTCInit() 函 数 只 初 始 化 RTC 的 时 钟 频 率, 没 有 使 能 任 何 报 警 中 断, 具 体 代 码 如 程 序 清 单 5.13 所 示 程 序 清 单 5.13 RTC 初 始 化 函 数 void RTCInit( void ) { alarm_on = 0; /* 初 始 化 RTC 寄 存 器 */ AMR = 0; /* 报 警 屏 蔽 */ CIIR = 0; /* 不 产 生 中 断 */ CCR = 0; /* 使 能 复 位 */ return; } 119

RTCSetTime() 函 数 用 于 设 置 RTC 的 日 期 和 时 间, 主 要 对 RTC 模 块 的 时 间 按 计 数 器 进 行 设 置 该 函 数 参 数 为 一 个 时 间 结 构 体 RTCTime 结 构 体 及 函 数 定 义 见 程 序 清 单 5.14 和 程 序 清 单 5.15 程 序 清 单 5.14 RTCTimer 结 构 typedef struct { DWORD RTC_Sec; /* Second value - [0,59] */ DWORD RTC_Min; /* Minute value - [0,59] */ DWORD RTC_Hour; /* Hour value - [0,23] */ DWORD RTC_Mday; /* Day of the month value - [1,31] */ DWORD RTC_Mon; /* Month value - [1,12] */ DWORD RTC_Year; /* Year value - [0,4095] */ DWORD RTC_Wday; /* Day of week value - [0,6] */ DWORD RTC_Yday; /* Day of year value - [1,365] */ } RTCTime; 程 序 清 单 5.15 RTC 时 间 设 置 函 数 RTCSetTime() void RTCSetTime( RTCTime Time ) { SEC = Time.RTC_Sec; MIN = Time.RTC_Min; HOUR = Time.RTC_Hour; DOM = Time.RTC_Mday; DOW = Time.RTC_Wday; DOY = Time.RTC_Yday; MONTH = Time.RTC_Mon; YEAR = Time.RTC_Year; return; } 在 设 置 完 时 间 和 日 期 后, 调 用 RTCStart() 函 数 开 始 RTC 计 时, 具 体 代 码 见 程 序 清 单 5.16 程 序 清 单 5.16 RTC 启 动 函 数 void RTCStart( void ) { 120

/* 启 动 RTC 计 数 器 */ CCR = CCR_CLKEN; ILR = ILR_RTCCIF; return; } RTCGetTime() 函 数 读 取 RTC 的 时 间 计 数 器 寄 存 器 的 内 容, 并 返 回 一 个 时 间 给 结 构 体 RTCTime, 具 体 见 代 码 清 单 5.17 程 序 清 单 5.17 RTCTime RTCGetTime( void ) { RTCTime LocalTime; LocalTime.RTC_Sec = SEC; LocalTime.RTC_Min = MIN; LocalTime.RTC_Hour = HOUR; LocalTime.RTC_Mday = DOM; LocalTime.RTC_Wday = DOW; LocalTime.RTC_Yday = DOY; LocalTime.RTC_Mon = MONTH; LocalTime.RTC_Year = YEAR; return ( LocalTime ); } 5.17 UART 串 口 通 信 5.17.1 概 述 LPC17xx 处 理 器 具 有 4 个 符 合 16C550 工 业 标 准 的 异 步 串 口 (UART)UART0 UART1 UART2 和 UART3, 其 中 UART1 具 有 标 准 的 MODEM 接 口 和 具 有 RS-485/EIA-485 模 式, 但 是 UART1 不 支 持 IrDA 功 能 UART1 的 485 模 式 以 及 MODEM 功 能 请 参 阅 LPC17xx 的 用 户 手 册 LPC17xx 处 理 器 的 4 个 串 口 具 有 以 下 特 性 * 每 个 UART 具 有 独 立 的 16 字 节 收 发 FIFO; * 寄 存 器 位 置 符 合 16C550 工 业 标 准 ; 121

* 接 收 器 FIFO 触 发 点 可 为 1 4 8 和 14 字 节 ; * 内 置 波 特 率 发 生 器 ; * 包 含 实 现 软 件 流 控 制 的 机 制 ; * UART3 包 含 了 一 个 支 持 红 外 通 信 的 IrDA 模 式 5.17.2 寄 存 器 功 能 描 述 每 个 UART 包 含 的 寄 存 器 如 表 5.37 所 示, 分 频 器 锁 存 访 问 位 (DLAB) 包 含 在 UnLCR7 中, 用 于 使 能 访 问 分 频 锁 存 表 5.37 UART 寄 存 器 列 表 名 称 描 述 访 问 复 位 值 地 址 RBR (DLAB=0) THR (DLAB=0) DLL (DLAB=1) DLM (DLAB=0) IER (DLAB=0) 接 收 缓 冲 寄 存 器 包 含 即 将 读 取 的 接 收 数 据 只 读 NA 发 送 保 持 寄 存 器 写 入 发 送 的 数 据 只 写 NA 分 频 锁 存 低 位 读 / 写 0x01 分 频 锁 存 高 位 读 / 写 0x00 中 断 使 能 寄 存 器 读 / 写 0x00 IIR 中 断 标 志 寄 存 器 只 读 0x01 FCR FIFO 控 制 寄 存 器 只 写 0x00 LCR 线 控 制 寄 存 器 读 / 写 0x00 LSR 线 状 态 寄 存 器 只 读 0x60 SCR 缓 存 寄 存 器 读 / 写 0x00 ACR 自 动 波 特 率 控 制 寄 存 器 读 / 写 0x00 ICR IrDA 控 制 寄 存 器 读 / 写 0 FDR 小 数 分 频 寄 存 器 读 / 写 0x10 TER 传 输 使 能 寄 存 器 读 / 写 0x80 FIFOLVL FIFO 等 级 寄 存 器 只 读 0x00 U0RBR - 0x4000 C000 U2RBR - 0x4009 8000 U3RBR - 0x4009 C000 U0THR - 0x4000 C000 U2THR - 0x4009 8000 U3THR - 0x4009 C000 U0DLL - 0x4000 C000 U2DLL - 0x4009 8000 U3DLL - 0x4009 C000 U0DLM - 0x4000 C004 U2DLM - 0x4009 8004 U3DLM - 0x4009 C004 U0IER - 0x4000 C004 U2IER - 0x4009 8004 U3IER - 0x4009 C004 U0IIR - 0x4000 C008 U2IIR - 0x4009 8008 U3IIR - 0x4009 C008 U0FCR - 0x4000 C008 U2FCR - 0x4009 8008 U3FCR - 0x4009 C008 U0LCR - 0x4000 C00C U2LCR - 0x4009 800C U3LCR - 0x4009 C00C U0LSR - 0x4000 C014 U2LSR - 0x4009 8014 U3LSR - 0x4009 C014 U0SCR - 0x4000 C01C U2SCR - 0x4009 801C U3SCR - 0x4009 C01C U0ACR - 0x4000 C020 U2ACR - 0x4009 8020 U3ACR - 0x4009 C020 U3ICR - 0x4009 C024 (UART3 only) U0FDR - 0x4000 C028 U2FDR - 0x4009 8028 U3FDR - 0x4009 C028 U0TER - 0x4000 C030 U2TER - 0x4009 8030 U3TER - 0x4009 C030 U0FIFOLVL - 0x4000 C058 U2FIFOLVL - 0x4009 8058 U3FIFOLVL - 0x4009 C058 122

5.17.3 硬 件 设 计 图 5.19 所 示 为 LPC17xx 的 串 口 电 路 图 5.19 串 口 电 路 原 理 图 5.17.4 应 用 举 例 查 询 方 式 本 例 使 用 查 询 方 式 对 UART0 进 行 数 据 传 输, 所 以 在 初 始 化 UART0 时 不 需 要 使 能 任 何 中 断 位 UART0 初 始 化 函 数 如 程 序 清 单 5.18 所 示 程 序 清 单 5.18 串 口 UART0 初 始 化 函 数 DWORD UART0Init(DWORD baudrate) { DWORD Fdiv; PINSEL0 = 0x00000050; /* 设 置 IO 管 脚 为 RxD0 和 TxD0 */ U0LCR = 0x83; /* 设 置 数 据 格 式 为 8 位, 无 校 验 位,1 位 停 止 位 */ Fdiv = ( Fpclk / 16 ) / baudrate ; /* 计 算 波 特 率 */ U0DLM = Fdiv / 256; U0DLL = Fdiv % 256; U0LCR = 0x03; /* DLAB = 0, 禁 止 访 问 DL 寄 存 器 */ U0FCR = 0x07; /* 使 能 并 复 位 发 送 和 接 收 FIFO. */ return (TRUE); } 当 使 用 查 询 方 式 进 行 串 口 数 据 传 输 时, 用 户 程 序 主 要 读 取 U0LSR 线 状 态 寄 存 器, 通 过 读 出 的 对 应 位 是 否 置 位 来 判 断 操 作 是 否 完 成, 如 程 序 清 单 5.19 和 程 序 清 单 5.20 所 示 程 序 清 单 5.19 123

void UART0SendByte(BYTE *BufferPtr) { U0THR = *BufferPtr; While((U0LSR & 0x40) == 0); /* 检 测 THR 是 否 为 空, 数 据 发 送 是 否 完 毕 */ } 程 序 清 单 5.20 void UART0RecieveByte(BYTE *BufferPtr) { While((U0LSR & 0x01) == 0); /* 等 待 接 受 数 据 到 达 RBR */ *BufferPtr = U0RBR; return; } 中 断 方 式 用 中 断 方 式 使 用 串 口 更 符 合 实 际 应 用 要 求 当 串 口 有 接 收 发 送 操 作 完 成 或 者 操 作 错 误 时 产 生 中 断,CPU 被 中 断 后 中 断 服 务 程 序 根 据 UnIIR 中 断 标 志 寄 存 器 的 标 志 位 来 判 断 发 生 中 断 的 类 型, 从 而 执 行 相 应 的 处 理 我 们 只 给 出 UART0 初 始 化 函 数 和 中 断 服 务 程 序, 见 程 序 清 单 5.21 和 程 序 清 单 5.22 在 初 始 化 函 数 中 必 须 使 能 中 断 和 挂 载 中 断 服 务 函 数 其 他 串 口 操 作 函 数 与 查 询 方 式 下 的 一 样 程 序 清 单 5.21 DWORD UART0Init( DWORD baudrate) { DWORD Fdiv; NVIC_InitTypeDef NVIC_InitStructure; PINSEL0 = 0x00000050; /* 设 置 IO 管 脚 为 RxD0 和 TxD0 * U0LCR = 0x83; /* 设 置 数 据 格 式 为 8 位, 无 校 验 位,1 位 停 止 位 */ Fdiv = ( Fpclk / 16 ) / baudrate ; /* 计 算 波 特 率 */ U0DLM = Fdiv / 256; U0DLL = Fdiv % 256; U0LCR = 0x03; /* DLAB = 0, 禁 止 访 问 DL 寄 存 器 */ U0FCR = 0x07; /* 使 能 并 复 位 发 送 和 接 收 FIFO. */ /* 初 始 化 中 断 控 制 器 NVIC 使 能 UART0 中 断 */ 124

NVIC_InitStructure.NVIC_IRQChannel = UART0_IRQChannel; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); U0IER = IER_RBR IER_THRE IER_RLS; /* 使 能 UART0 的 相 关 中 断 方 式 */ return (TRUE); } 程 序 清 单 5.22 void UART0_IRQHandler(void) { BYTE IIRValue, LSRValue; BYTE Dummy = Dummy; IIRValue = U0IIR; IIRValue >>= 1;/* 跳 过 IIR 中 的 中 断 挂 起 位 */ IIRValue &= 0x07;/* 与 上 0x07 得 到 中 断 标 志 位 */ if (IIRValue == IIR_RLS)/* 判 断 是 否 为 一 个 线 状 态 中 断 */ { LSRValue = U0LSR;/* 读 出 线 状 态 寄 存 器 的 内 容, 判 断 具 体 状 态 */ if (LSRValue & (LSR_OE LSR_PE LSR_FE LSR_RXFE LSR_BI)) { UART0Status = LSRValue;/* 读 取 LSR 将 清 除 该 中 断 */ Dummy = U0RBR;/* 读 取 一 个 无 效 数 据, 清 除 中 断 */ return; } if (LSRValue & LSR_RDR) /* LSR 的 数 据 就 绪 标 志 */ { UART0Buffer[UART0Count] = U0RBR;/* 读 取 一 个 有 效 数 据 到 接 收 缓 冲 区 */ UART0Count++; if (UART0Count == BUFSIZE) { 125

UART0Count = 0; /* 缓 冲 区 溢 出 复 位 */ } } } else if (IIRValue == IIR_RDA) /* 接 收 数 据 有 效 中 断 标 志 位 */ { UART0Buffer[UART0Count] = U0RBR;/* 读 取 一 个 有 效 数 据 到 接 收 缓 冲 区 */ UART0Count++; if (UART0Count == BUFSIZE) { UART0Count = 0; /* 缓 冲 区 溢 出 复 位 */ } } else if (IIRValue == IIR_CTI) /* 字 符 超 时 指 示 中 断 标 志 位 */ { UART0Status = 0x100; } else if (IIRValue == IIR_THRE) /* 发 送 保 持 寄 存 器 空 中 断 标 志 位 */ { LSRValue = U0LSR;/* 读 取 U0LSR 判 断,THRE 位 是 否 为 1 */ if (LSRValue & LSR_THRE) { UART0TxEmpty = 1; } else { UART0TxEmpty = 0; } } } 126

5.18 I 2 C 接 口 5.18.1 I 2 C 总 线 简 介 I 2 C(Inter-Intergrated Circuit) 总 线 是 一 种 由 飞 利 浦 (Philips) 公 司 开 发 的 两 线 制 串 行 总 线, 通 过 SDA( 串 行 数 据 线 ) 和 SCL( 串 行 时 钟 线 ) 两 根 线 在 连 到 总 线 上 的 器 件 之 间 传 送 数 据, 并 根 据 地 址 识 别 每 个 器 件, 用 于 连 接 微 控 制 器 及 其 外 围 设 备 I 2 C 总 线 支 持 任 何 一 种 IC 制 造 工 艺, 并 且 恩 智 浦 和 其 他 厂 商 提 供 了 种 类 丰 富 的 I 2 C 兼 容 芯 片 每 个 I 2 C 总 线 器 件 都 有 唯 一 的 地 址, 是 一 个 一 主 多 从 式 总 线 I 2 C 总 线 上 器 件 的 角 色 有 两 类 : 主 机 (Master) 和 从 机 (Slave) 主 机 负 责 启 动 总 线, 产 生 时 钟, 开 放 传 送 器 件, 此 时 任 何 被 寻 址 的 器 件 均 被 认 为 是 从 机, 且 I 2 C 总 线 的 控 制 完 全 由 挂 接 在 总 线 上 的 主 机 送 出 的 地 址 和 数 据 决 定 总 线 上 主 机 和 从 机 角 色 的 分 配 不 是 一 成 不 变 的, 根 据 器 件 的 功 能 可 以 通 过 软 件 程 序 使 其 工 作 于 主 机 从 机 或 者 是 主 / 从 机 角 色 5.18.2 I 2 C 接 口 寄 存 器 简 述 LPC17xx 系 列 微 处 理 的 每 一 个 I 2 C 接 口 都 包 含 7 个 寄 存 器, 如 表 5.38 所 示 表 5.38 I 2 C 接 口 寄 存 器 总 表 名 称 描 述 访 问 复 位 值 寄 存 器 名 称 和 地 址 I 2 CONSET I 2 C 控 制 置 位 寄 存 器 将 1 写 入 该 寄 存 器 的 某 个 位 时,I 2 C 控 制 寄 存 器 的 相 应 位 会 被 置 位 写 入 0 对 I2C 控 制 寄 存 器 的 相 应 位 没 有 影 响 读 / 写 0x00 I 2 C0CONSET 0x4001 C000 I 2 C1CONSET 0x4005 C000 I 2 C2CONSET 0400A 0000 I 2 CSTAT I 2 C 状 态 寄 存 器 在 I 2 C 操 作 期 间, 该 寄 存 器 提 供 详 细 的 状 态 代 码, 允 许 软 件 决 定 下 一 步 所 需 的 操 作 只 读 0xF8 I 2 C0STAT 0x4001 C004 I 2 C1STAT 0x4005 C004 I 2 C2STAT 0x400A 0004 I2DAT I 2 C 数 据 寄 存 器 在 主 机 发 送 或 从 机 发 送 模 式 下, 要 发 送 的 数 据 写 入 寄 存 器 在 主 机 接 受 或 从 机 接 受 模 式 下, 接 收 到 的 数 据 可 以 从 该 寄 存 器 中 读 取 读 / 写 0x00 I2C0DAT 0x4001 C008 I2C1DAT 0x4005 C008 I2C2DAT 0x400A 0008 I2ADR0 I 2 C 从 机 地 址 寄 存 器 0 包 含 从 机 模 式 下 I 2 C 接 口 操 作 的 7 位 从 机 地 址, 在 主 机 模 式 下 并 没 有 用 最 低 位 决 定 从 机 是 否 响 应 通 用 呼 叫 地 址 读 / 写 0x00 I2C0ADR0 0x4001 C00C I2C1ADR0 0x4005 C00C I2C2ADR0 0x400A 000C I2SCLH SCH 占 空 比 寄 存 器 低 电 平 计 数 值 决 定 I 2 C 时 钟 的 高 电 平 时 间 读 / 写 0x04 I2C0SCLH 0x400 C010 I2C1SCLH 0x4005 C010 I2C2SCLH 0x400A 0010 I2SCLL SCH 占 空 比 寄 存 器 高 低 平 计 数 值 决 定 I 2 C 时 钟 的 低 电 平 时 间 I2nSCLL 和 I2CnSCLH 一 起 决 定 由 I 2 C 产 生 的 时 钟 频 率, 以 及 从 机 模 式 下 使 用 的 某 些 事 件 读 / 写 0x04 I2C0SCLL 0x400 C014 I2C1SCLL 0x4005 C014 I2C2SCLL 0x400A 0014 I2CONCLR I 2 C 控 制 清 除 寄 存 器 将 1 写 入 该 寄 存 器 的 某 个 位 时,I 2 C 控 制 寄 存 器 的 相 应 位 会 被 复 位 写 入 0 对 I 2 C 控 制 寄 存 器 的 相 应 位 没 有 影 响 只 写 NA I2C0CONCLR 0x400 C018 I2C1CONCLR 0x4005 C018 I2C2CONCLR 0x400A 0018 MMCTRL 监 控 模 式 控 制 寄 存 器 读 / 写 0x00 I2C0MMCTRL 0x400 C01C I2C1MMCTRL 0x4005 C01C I2C2MMCTRL 0x400A 001C 127

名 称 描 述 访 问 复 位 值 寄 存 器 名 称 和 地 址 I2ADR1 I 2 C 从 机 地 址 寄 存 器 1 包 含 从 机 模 式 下 I 2 C 接 口 操 作 的 7 位 从 机 地 址, 在 主 机 模 式 下 并 没 有 用 最 低 位 决 定 从 机 是 否 响 应 通 用 呼 叫 地 址 读 / 写 0x00 I2C0ADR1 0x4001 C020 I2C1ADR1 0x4005 C020 I2C2ADR1 0x400A 0020 I2ADR2 I 2 C 从 机 地 址 寄 存 器 2 包 含 从 机 模 式 下 I 2 C 接 口 操 作 的 7 位 从 机 地 址, 在 主 机 模 式 下 并 没 有 用 最 低 位 决 定 从 机 是 否 响 应 通 用 呼 叫 地 址 读 / 写 0x00 I 2 C 从 机 地 址 寄 存 器 3 包 含 从 机 模 式 下 I 2 C 接 I2ADR3 口 操 作 的 7 位 从 机 地 址, 在 主 机 模 式 下 并 没 有 读 / 写 0x00 用 最 低 位 决 定 从 机 是 否 响 应 通 用 呼 叫 地 址 I 2 D A T A _ BUFFER 数 据 缓 冲 寄 存 器 只 读 0x00 I2MASK0 I 2 C 从 机 地 址 屏 蔽 寄 存 器 0 读 / 写 0x00 I2MASK1 I 2 C 从 机 地 址 屏 蔽 寄 存 器 1 读 / 写 0x00 I2MASK2 I 2 C 从 机 地 址 屏 蔽 寄 存 器 2 读 / 写 0x00 I2MASK3 I 2 C 从 机 地 址 屏 蔽 寄 存 器 3 读 / 写 0x00 I2C0ADR2 0x4001 C024 I2C1ADR2 0x4005 C024 I2C2ADR2 0x400A 0024 I2C0ADR3 0x4001 C028 I2C1ADR3 0x4005 C028 I2C2ADR3 0x400A 0028 I2C0DATA_BUFFER 0x4001 C02C I2C1DATA_BUFFER 0x4005 C02C I2C2DATA_BUFFER 0x400A 002C I2C0MASK0 0x4001 C030 I2C1MASK0 0x4005 C030 I2C2MASK0 0x400A 0030 I2C0MASK1 0x4001 C034 I2C1MASK1 0x4005 C034 I2C2MASK1 0x400A 0034 I2C0MASK2 0x4001 C038 I2C1MASK2 0x4005 C038 I2C2MASK2 0x400A 0038 I2C0MASK3 0x4001 C03C I2C1MASK3 0x4005 C03C I2C2MASK3 0x400A 003C 5.18.3 应 用 举 例 本 节 以 I 2 C 接 口 查 询 方 式 读 取 温 度 传 感 器 LM75 为 例, 介 绍 I 2 C 接 口 的 编 程 方 法 本 例 将 I 2 C 接 口 设 置 成 主 机 模 式 1. 电 路 原 理 图 LPC17xx 与 LM75 连 接 方 式 如 图 5.20 所 示 图 5.20 I 2 C 连 接 LM75 电 路 原 理 图 2. 头 文 件 中 相 关 定 义 128

程 序 清 单 5.23 头 文 件 定 义 /* I 2 C 控 制 器 设 置 寄 存 器 I 2 CONSET 的 各 位 定 义 */ #define I2CONSET_I2EN 0x00000040 #define I2CONSET_ AA #define I2CONSET_SI 0x00000004 0x00000008 #define I2CONSET_STO 0x00000010 #define I2CONSET_STA 0x00000020 /* I2C 控 制 器 清 除 寄 存 器 I2CCONCLR 的 各 位 定 义 */ #define I2CONCLR_AAC #define I2CONCLR_SIC 0x00000004 0x00000008 #define I2CONCLR_STAC 0x00000020 #define I2CONCLR_I2ENC 0x00000040 /* I2C 控 制 器 其 他 设 置 定 义 */ #define I2DAT_I2C 0x00000000 /* I2C 数 据 地 址 寄 存 器 */ #define I2ADR_I2C 0x00000000 /* I2C 从 机 地 址 寄 存 器 */ #define I2SCLH_SCLH 0x00000080 /* I2C SCL 占 空 比 高 电 平 寄 存 器 */ #define I2SCLL_SCLL 0x00000080 /* I2C SCL 占 空 比 低 电 平 寄 存 器 */ 3.I 2 C 接 口 初 始 化 函 数 I 2 CInit() 函 数 初 始 化 处 理 器 I 2 C 模 块, 包 括 选 择 处 理 器 引 脚 功 能, 设 置 I 2 C 总 线 工 作 频 率, 设 置 处 理 器 为 I 2 C 总 线 主 设 备, 并 使 能 I 2 C 总 线 模 块 具 体 代 码 程 序 清 单 5.24 所 示 程 序 清 单 5.24 void I2CInit(void) { long fi2c = 400000; PINSEL0 = 0x00A00000; // 选 择 SDA0,SCL0 管 脚 功 能 I2C2SCLH = (Fpclk/fi2c + 1) / 2; // 设 置 时 钟 频 率 I2C2SCLL = (Fpclk/fi2c) / 2; I2C2CONCLR = (I2CONCLR_STAC I2CONCLR_SIC I2CONCLR_ AAC); I2C2CONSET = I2CONSET_I2EN; // 使 能 I2C 主 机 模 式 129

//setup interrupt... } 4.I 2 C 接 口 读 LM75 函 数 I 2 CReadLM75Byte() 函 数 实 现 从 器 件 LM75 的 温 度 数 据 读 出 具 体 代 码 见 程 序 清 单 5.25 程 序 清 单 5.25 DWORD I2CReadLM75Byte( void) { DWORD data; DWORD data1,data2; data = 0; I2C2CONCLR = (I2CONCLR_STAC I2CONCLR_SIC I2CONCLR_ AAC); I2C2CONSET = I2CONSET_I2EN;// 使 能 I2C 作 为 主 机 I2C2CONSET = I2CONSET_STA;// 发 送 一 个 起 始 状 态 位 I2C2CONSET = I2CONSET_STA;//test restart!! while(i2c2stat!= 0x8);// 起 始 字 必 须 为 0x8 I2C2DAT = 0x91;// 设 置 SLA+W I2C2CONCLR = 0x8 0x20;// 清 零 SI 位, 以 传 输 SLA+W while(i2c2stat!= 0x40);// 起 始 字 0x40 I2C2CONCLR = I2CONCLR_SIC;// 清 零 SI 位, 以 读 取 EEPROM while(i2c2stat!= 0x58);// 接 受 数 据, 无 ACK data1 = I2C2DAT;// 读 数 据 while(i2c2stat!= 0x58);// 起 始 字 0x40 I2C2CONCLR = I2CONCLR_SIC;// 清 零 SI 位, 以 读 取 EEPROM while(i2c2stat!= 0x58);// 接 受 数 据, 无 ACK data2 = I2C2DAT;// 读 数 据 I2C2CONCLR = (I2CONCLR_SIC I2CONCLR_AAC); I2C2CONSET = I2CONSET_STO;// 设 置 ST0 位 为 1, 以 停 止 传 输 data = data1 << 8 data2; return data; } 130

5.19 SPI 接 口 5.19.1 接 口 概 述 串 行 外 设 接 口 (SPI) 是 一 个 同 步 全 双 工 串 行 接 口 在 同 一 总 线 上 可 以 连 接 多 个 主 机 或 从 机, 但 同 一 次 传 输 过 程 中 只 能 有 一 个 主 机 和 一 个 从 机 能 够 通 信 在 一 次 数 据 传 输 过 程 中, 主 机 通 常 向 从 机 发 送 8 位 或 16 位 数 据, 从 机 通 常 向 主 机 返 回 1 字 节 数 据 LPC17xx 系 列 处 理 器 具 有 1 个 SPI 接 口, 遵 循 SPI 规 范, 支 持 同 步 串 行 全 双 工 通 信, 支 持 SPI 主 机 和 从 机, 最 大 数 据 位 速 率 为 输 入 时 钟 速 率 的 1/8, 每 次 传 输 可 以 是 8 位 或 16 位 数 据 LPC17xx 系 列 处 理 器 的 SPI 接 口 模 块 的 结 构 框 图 如 图 5.21 图 5.21 SPI 接 口 模 块 结 构 框 图 LPC17xx 系 列 处 理 器 的 SPI 接 口 占 用 4 条 引 脚, 分 别 是 SCK SSEL MISO 和 MOSI, 其 具 体 描 述 如 表 5.39 示 表 5.39 SPI 接 口 引 脚 描 述 名 称 类 型 引 脚 描 述 SCK 输 入 / 输 出 串 行 时 钟 SSEL 输 入 从 机 选 择 MISO 输 入 / 输 出 主 机 输 入, 从 机 输 出 MOSI 输 入 / 输 出 主 机 输 出, 从 机 输 入 5.19.2 SPI 的 数 据 传 输 LPC17xx 系 列 处 理 器 的 SPI 有 4 种 不 同 的 数 据 传 输 格 式, 其 时 序 图 如 下 图 5.22 所 示 图 5.22 描 述 的 是 8 位 数 据 的 传 输, 需 要 注 意 的 是, 该 时 序 图 分 成 了 3 个 水 平 的 部 分 第 一 部 分 描 述 SCK 和 SSEL 信 号, 第 二 部 分 描 述 了 时 钟 相 位 CPHA=0 时 的 MOSI 和 MISO 信 号, 第 三 部 分 描 述 了 131

CPHA=1 时 的 MOSI 和 MISO 信 号 在 时 序 图 的 第 一 部 分 中 要 注 意 两 点 : 时 序 图 包 含 了 时 钟 极 性 CPOL 设 置 为 0 和 1 的 情 况,SSEL 信 号 的 激 活 和 未 激 活, 当 CPHA=1 时,SSEL 信 号 在 数 据 传 输 之 间 时 总 是 保 持 未 激 活 状 态, 当 CPHA=0 时 则 不 能 保 证 这 一 点 图 5.22 SPI 传 输 格 式 的 时 序 图 数 据 和 时 钟 的 相 位 关 系 如 表 5.40 所 示 该 表 针 对 CPOL 和 CPHA 的 每 一 种 设 定 值 和 以 下 三 种 情 况 进 行 了 总 结 : * 当 驱 动 第 一 个 数 据 位 时 ; * 当 驱 动 所 有 其 他 数 据 位 时 ; * 当 采 样 数 据 时 表 5.40 SPI 数 据 与 时 钟 的 相 位 关 系 CPOL 和 CPHA 的 设 定 驱 动 第 一 个 数 据 位 驱 动 所 有 其 他 数 据 位 采 样 数 据 CPOL=0,CPHA=0 第 一 个 SCK 上 升 沿 之 前 SCK 下 降 沿 SCK 上 升 沿 CPOL=0,CPHA=1 第 一 个 SCK 上 升 沿 SCK 上 升 沿 SCK 下 降 沿 CPOL=1,CPHA=0 第 一 个 SCK 下 降 沿 之 前 SCK 上 升 沿 SCK 下 降 沿 CPOL=1,CPHA=1 第 一 个 SCK 下 降 沿 SCK 下 降 沿 SCK 上 升 沿 8 位 传 输 开 始 和 停 止 时 间 的 定 义 依 赖 于 器 件 是 主 机 还 是 从 机, 以 及 CPHA 变 量 的 设 置 当 器 件 为 主 机 时, 传 输 的 开 始 由 准 备 好 要 发 送 数 据 字 节 的 主 机 来 指 示, 此 时, 主 机 可 激 活 时 钟 并 开 始 传 输, 当 传 输 的 最 后 一 个 时 钟 周 期 结 束 时, 传 输 结 束 当 器 件 为 从 机 并 且 CPHA=0 时, 传 输 从 SSEL 信 号 变 成 激 活 时 开 始, 并 在 SSEL 变 为 不 活 动 时 结 束 当 器 件 为 从 机 并 且 CPHA=1 时, 传 输 从 从 机 被 选 中 后 的 第 一 个 时 钟 沿 开 始, 并 在 数 据 采 样 的 最 后 一 132

个 时 钟 沿 结 束 5.19.3 SPI 接 口 寄 存 器 描 述 LPC17xx 系 列 处 理 器 SPI 接 口 共 有 5 个 寄 存 器, 所 有 寄 存 器 都 可 以 以 8 位 16 位 和 32 位 访 问, 详 细 如 表 5.41 所 示 表 5.41 SPI 寄 存 器 映 射 表 名 称 描 述 访 问 复 位 值 地 址 S0SPCR SPI 控 制 寄 存 器 该 寄 存 器 控 制 SPI 接 口 的 操 作 读 / 写 0x00 0x4002 0000 S0SPSR SPI 状 态 寄 存 器 该 寄 存 器 显 示 SPI 接 口 的 状 态 只 读 0x00 0x4002 0004 S0SPDR SPI 数 据 寄 存 器 该 双 向 寄 存 器 为 SPI 接 口 提 供 发 送 和 接 收 数 据 读 / 写 0x00 0x4002 0008 S0SPCCR SPI 时 钟 计 数 寄 存 器 该 寄 存 器 控 制 注 意 SCK 的 频 率 读 / 写 0x00 0x4002 000C S0SPINT SPI 中 断 标 志 该 寄 存 器 包 含 SPI 接 口 的 中 断 标 志 读 / 写 0x00 0x4002 001C 5.20 CAN 控 制 器 5.20.1 CAN 接 口 描 述 CAN(Controller Area NetWork 控 制 器 局 域 网 络 ) 是 一 种 为 串 行 数 据 通 信 定 义 的 高 性 能 通 信 协 议, 由 于 具 有 片 上 CAN 控 制 器,LPC17xx 系 列 处 理 器 可 以 构 建 提 供 分 布 式 实 时 控 制 具 有 极 高 安 全 性 功 能 强 大 的 局 域 网 络 CAN 总 线 常 应 用 于 工 业 环 境 中, 实 现 低 成 本 高 速 网 络 多 元 化 接 线, 减 少 了 成 行 导 线 并 且 提 高 了 诊 断 和 监 督 能 力,CAN 模 块 主 要 支 持 多 重 CAN 总 线, 在 各 种 应 用 中 许 多 CAN 总 线 允 许 作 为 网 关 开 关 或 者 路 由 器 等 装 置 来 使 用 LPC17xx 系 列 处 理 器 拥 有 两 个 CAN 控 制 器, 分 别 命 名 为 CAN1 和 CAN2, 都 完 全 实 现 CAN 规 范 版 本 2.0B 中 CAN 协 议 LPC17xx 系 列 处 理 器 的 CAN 模 块 包 括 两 个 组 成 部 分 : 控 制 器 和 接 收 滤 波 器, 所 有 寄 存 器 和 RAM 要 以 32 位 来 访 问,CAN 控 制 器 模 块 的 结 构 框 图 如 图 5.23 所 示 133

图 5.23 CAN 控 制 器 结 构 框 图 LPC17xx 系 列 处 理 器 的 CAN 控 制 器 各 占 用 2 条 引 脚, 分 别 是 TD 和 RD, 其 具 体 描 述 如 表 5.42 所 示 表 5.42 CAN 控 制 器 引 脚 描 述 名 称 类 型 描 述 RD1 RD2 输 入 串 行 输 入, 来 自 CAN 收 发 器 TD1 TD2 输 出 串 行 输 出, 输 出 到 CAN 收 发 器 5.20.2 CAN 模 块 内 存 映 射 表 CAN 控 制 器 和 滤 波 器 占 用 了 一 部 分 APB, 详 见 表 5.43 表 5.43 CAN 模 块 内 存 映 射 表 地 址 范 围 0x4003 8000~0x4003 87FF 0x4003 C000~0x4003 C017 0x4004 0000~0x4004 0000B 0x4004 4000~0x4004 405F 0x4004 8000~0x4004 805F 0x400F C110~0x400F C114 用 途 接 收 滤 波 器 RAM 接 收 滤 波 器 寄 存 器 核 心 CAN 寄 存 器 CAN 控 制 器 1 寄 存 器 CAN 控 制 器 2 寄 存 器 CAN 唤 醒 和 睡 眠 寄 存 器 5.20.3 CAN 控 制 器 寄 存 器 描 述 CAN 模 块 包 括 的 寄 存 器 如 表 5.44 和 表 5.45 所 示 表 5.44 CAN 接 收 滤 波 器 和 核 心 CAN 寄 存 器 名 称 描 述 访 问 复 位 值 地 址 AFMR 接 收 滤 波 器 寄 存 器 读 / 写 1 0x4003 C000 SFF_sa 标 准 帧 独 立 起 始 地 址 寄 存 器 读 / 写 0 0x4003 C004 SFF_GRP_sa 标 准 帧 群 组 起 始 地 址 寄 存 器 读 / 写 0 0x4003 C008 EFF_sa 扩 展 帧 独 立 起 始 地 址 寄 存 器 读 / 写 0 0x4003 C00C EFF_GRP_sa 扩 展 帧 群 组 起 始 地 址 寄 存 器 读 / 写 0 0x4003 C010 ENDofTable AF 表 结 束 寄 存 器 读 / 写 0 0x4003 C014 LUTerrAd LUT 错 误 地 址 寄 存 器 只 读 0 0x4003 C018 LUTerr LUT 错 误 寄 存 器 只 读 0 0x4003 C01C CANTxSR CAN 核 心 发 送 状 态 寄 存 器 只 读 0x0003 0300 0x4004 0000 CANRxSR CAN 核 心 接 收 状 态 寄 存 器 只 读 0 0x4004 0004 CANMSR CAN 核 心 杂 项 状 态 寄 存 器 只 读 0 0x4004 0008 134

表 5.45 CAN1 和 CAN2 控 制 寄 存 器 映 射 表 名 称 描 述 访 问 MOD 控 制 CAN 控 制 器 的 操 作 模 式 读 / 写 CMR 影 响 CAN 控 制 器 状 态 的 命 令 位 只 写 GSR 全 局 控 制 状 态 和 错 误 计 数 器 只 读 ICR 中 断 状 态, 仲 裁 失 败 捕 获 错 误 代 码 捕 获 只 读 IER 中 断 使 能 读 / 写 BTR 总 线 定 时 读 / 写 EWL 错 误 警 告 限 制 读 / 写 SR 状 态 寄 存 器 只 读 RFS 接 受 帧 状 态 读 / 写 RID 接 收 的 识 别 标 识 符 读 / 写 RDA 接 收 数 据 字 节 1~4 读 / 写 RDB 接 收 数 据 字 节 5~8 读 / 写 TFI1 发 送 帧 信 息 (Tx 缓 冲 区 1) 读 / 写 TID1 发 送 标 识 符 (Tx 缓 冲 区 1) 读 / 写 TDA1 发 送 数 据 字 节 1~4(Tx 缓 冲 区 1) 读 / 写 TDB1 发 送 数 据 字 节 5~8(Tx 缓 冲 区 1) 读 / 写 TFI2 发 送 帧 信 息 (Tx 缓 冲 区 2) 读 / 写 TID2 发 送 标 识 符 (Tx 缓 冲 区 2) 读 / 写 TDA2 发 送 数 据 字 节 1~4(Tx 缓 冲 区 2) 读 / 写 TDB2 发 送 数 据 字 节 5~8(Tx 缓 冲 区 2) 读 / 写 TFI3 发 送 帧 信 息 (Tx 缓 冲 区 3) 读 / 写 TID3 发 送 标 识 符 (Tx 缓 冲 区 3) 读 / 写 TDA3 发 送 数 据 字 节 1~4(Tx 缓 冲 区 31) 读 / 写 TDB3 发 送 数 据 字 节 5~8(Tx 缓 冲 区 3) 读 / 写 CAN1 寄 存 器 名 称 和 地 址 CAN2 寄 存 器 名 称 和 地 址 CAN1MOD 0x4004 4000 CAN2MOD 0x4004 8000 CAN1CMR 0x4004 4004 CAN2CMR 0x4004 8004 CAN1GSR 0x4004 4008 CAN2GSR 0x4004 8008 CAN1ICR 0x4004 400C CAN2ICR 0x4004 800C CAN1IER 0x4004 4010 CAN2IRE 0x4004 8010 CAN1BTR 0x4004 4014 CAN2BTR 0x4004 8014 CAN1IER 0x4004 4018 CAN2IER 0x4004 8018 CAN1SR 0x4004 401C CAN2SR 0x4004 801C CAN1RFS 0x4004 4020 CAN2RFS 0x4004 8020 CAN1RID 0x4004 4024 CAN2RID 0x4004 8024 CAN1RDA 0x4004 4028 CAN2RDA 0x4004 8028 CAN1RDB 0x4004 402C CAN2RDB 0x4004 802C CAN1TFI1 0x4004 4030 CAN2TFI1 0x4004 8030 CAN1TID1 0x4004 4034 CAN2TID1 0x4004 8034 CAN1TDA1 0x4004 4038 CAN2TDA1 0x4004 8038 CAN1TDB1 0x4004 403C CAN2TDB1 0x4004 803C CAN1TFI2 0x4004 4040 CAN2TFI2 0x4004 8040 CAN1TID2 0x4004 4044 CAN2TID2 0x4004 8044 CAN1TDA2 0x4004 4048 CAN2TDA2 0x4004 8048 CAN1TDB2 0x4004 404C CAN2TDB2 0x4004 804C CAN1TFI3 0x4004 4050 CAN2TFI3 0x4004 8050 CAN1TID3 0x4004 4054 CAN2TID3 0x4004 8054 CAN1TDA3 0x4004 4058 CAN2TDA3 0x4004 8058 CAN1TDB3 0x4004 405C CAN2TDB3 0x4004 805C 5.20.4 CAN 控 制 器 应 用 电 路 简 介 图 5.24 所 示 为 LPC17xx 微 控 制 器 的 CAN 电 路 原 理 图,LPC17xx 和 SJA1040CAN 收 发 器 组 成 CAN 通 讯 电 路 135

5.21 USB 接 口 5.21.1 USB 接 口 概 述 图 5.24 CAN 电 路 原 理 图 LPC17xx 系 列 处 理 器 具 有 一 个 USB 接 口, 可 以 配 置 成 为 设 备 / 主 机 /OTG(On the Go) 通 用 串 行 总 线 (USB) 是 一 种 四 线 总 线, 可 以 支 持 主 机 与 一 个 或 者 多 个 ( 最 多 可 达 127 个 ) 外 设 之 间 进 行 通 信 5.21.2 USB 设 备 接 口 LPC17xx 系 列 微 处 理 器 的 USB 设 备 控 制 器 允 许 与 USB 主 机 进 行 全 速 的 数 据 交 换, 具 有 以 下 特 性 : * 完 全 遵 守 USB2.0 规 范 ( 全 速 ); * 支 持 32 个 物 理 (16 个 逻 辑 ) 端 点 ; * 支 持 控 制 块 中 断 和 同 步 端 点 ; * 运 行 时 端 点 伸 缩 实 现 ; * 运 行 软 件 能 够 选 择 端 点 最 大 包 尺 寸 ; * 支 持 SoftConnect 和 GoodLink; * 对 于 所 有 非 控 制 端 点 都 支 持 DMA 传 输 ; * 允 许 CPU 控 制 和 DMA 模 式 之 间 动 态 切 换 ; * 块 端 点 和 同 步 端 点 采 用 双 缓 冲 实 现 其 结 构 框 图 如 图 5.25 所 示 136

图 5.25 USB 设 备 接 口 结 构 框 图 设 备 控 制 器 可 以 访 问 USB 端 口, 其 引 脚 描 述 如 表 5.46 所 示 USB 设 备 控 制 器 可 以 通 过 CPU 直 接 访 问, 而 且 串 行 接 口 引 擎 (SIE) 还 有 一 些 其 他 的 寄 存 器 可 以 通 过 SIE 命 令 寄 存 器 间 接 访 问 其 寄 存 器 描 述 如 表 5.47 所 示 表 5.46 USB 设 备 引 脚 描 述 名 称 方 向 描 述 V BUS 输 出 V BUS 状 态 输 入 当 通 过 相 关 PINSEL 寄 存 器 禁 止 该 功 能 时, 该 信 号 在 内 部 被 置 为 高 USB_CONNECT 输 出 软 连 接 控 制 信 号 USB_UP_LED 输 出 GoodLink LED 控 制 信 号 USB_D+ 输 入 / 输 出 正 向 差 分 数 据 USB_D- 输 入 / 输 出 负 向 差 分 数 据 表 5.47 USB 设 备 寄 存 器 映 射 表 名 称 描 述 访 问 复 位 值 地 址 时 钟 控 制 寄 存 器 USBClkCtrl USB 时 钟 控 制 读 / 写 0x0000 0000 0x5000 CFF4 USBClkSt USB 时 钟 状 态 只 读 0x0000 0000 0x5000 CFF8 设 备 中 断 寄 存 器 USBIntSt USB 中 断 状 态 读 / 写 0x8000 0000 0x400F C1C0 USBDevIntSt USB 设 备 中 断 状 态 只 读 0x0000 0010 0x5000 C200 USBDevIntEn USB 设 备 中 断 使 能 读 写 0x0000 0000 0x5000 C204 USBDevIntClr USB 设 备 中 断 清 除 只 写 0x0000 0000 0x5000 C208 USBDevIntSet USB 设 备 中 断 设 置 只 写 0x0000 0000 0x5000 C20C USBDevIntPri USB 设 备 中 断 优 先 级 只 写 0x00 0x5000 C22C 端 点 中 断 寄 存 器 137

名 称 描 述 访 问 复 位 值 地 址 USBEpIntSt USB 端 点 中 断 状 态 只 读 0x0000 0000 0x5000 C230 USBEpIntEn USB 端 点 中 断 使 能 读 写 0x0000 0000 0x5000 C234 USBEpInClr USB 端 点 中 断 清 除 只 写 0x0000 0000 0x5000 C238 USBEpInSet USB 端 点 中 断 设 置 只 写 0x0000 0000 0x5000 C23C USBEpIntPri USB 端 点 中 断 优 先 级 只 写 0x0000 0000 0x5000 C240 端 点 实 现 寄 存 器 USBReEp USB 实 现 端 点 读 写 0x0000 0003 0x5000 C244 USBEpInd USB 端 点 索 引 只 写 0x0000 0000 0x5000 C248 USBMaxPSize USB 最 大 包 尺 寸 读 写 0x0000 0008 0x5000 C24C USB 传 输 寄 存 器 USBRxData USB 接 收 数 据 只 读 0x0000 0000 0x5000 C218 USBRxPLen USB 接 收 包 长 度 只 读 0x0000 0000 0x5000 C220 USBTxData USB 发 送 数 据 只 写 0x0000 0000 0x5000 C21C USBTxPLen USB 发 送 包 长 度 只 写 0x0000 0000 0x5000 C224 USBCtrl USB 控 制 读 写 0x0000 0000 0x5000 C228 SIE 命 令 寄 存 器 USBCmdCode USB 命 令 代 码 只 读 0x0000 0000 0x5000 C210 USBCmdData USB 命 令 数 据 只 读 0x0000 0000 0x5000 C214 DMA 寄 存 器 USBDMARSt USB DMA 请 求 状 态 只 读 0x0000 0000 0x5000 C250 USBDMARClr USB DMA 请 求 清 除 只 写 0x0000 0000 0x5000 C254 USBDMARSet USB DMA 请 求 设 置 只 写 0x0000 0000 0x5000 C258 USBUDCAH USB UDCA 头 读 写 0x0000 0000 0x5000 C280 USBEpDMASt USB 端 点 DMA 状 态 只 读 0x0000 0000 0x5000 C284 USBEpDMAEn USB 端 点 DMA 使 能 只 写 0x0000 0000 0x5000 C288 USBEpDMADis USB 端 点 DMA 禁 用 只 写 0x0000 0000 0x5000 C28C USBDMAIntSt USB DMA 中 断 状 态 只 读 0x0000 0000 0x5000 C290 USBDMAIntEn USB DMA 中 断 使 能 读 写 0x0000 0000 0x5000 C294 USBEoTIntSt USB 传 输 结 束 中 断 状 态 只 读 0x0000 0000 0x5000 C2A0 USBToTIntClr USB 传 输 结 束 中 断 清 除 只 写 0x0000 0000 0x5000 C2A4 USBToTIntSet USB 传 输 结 束 中 断 设 置 只 写 0x0000 0000 0x5000 C2A8 USBNDDRIntSt USB 新 DD 请 求 中 断 状 态 只 读 0x0000 0000 0x5000 C2AC USBNDDRIntClr USB 新 DD 请 求 中 断 清 除 只 写 0x0000 0000 0x5000 C2B0 USBNDDRIntSet USB 新 DD 请 求 中 断 设 置 只 写 0x0000 0000 0x5000 C2B4 USBSysErrIntSt USB 系 统 错 误 中 断 状 态 只 读 0x0000 0000 0x5000 C2B8 USBSysErrIntClr USB 系 统 错 误 中 断 清 除 只 写 0x0000 0000 0x5000 C2BC USBSysErrIntSet USB 系 统 错 误 中 断 设 置 只 写 0x0000 0000 0x5000 C2C0 5.21.3 USB 主 机 接 口 138

LPC17xx 系 列 处 理 器 的 USB 主 机 接 口 是 USB 2.0 OTG 双 角 色 核 的 一 部 分, 该 核 集 成 了 主 机 控 制 器 设 备 控 制 器 和 I 2 C 接 口 I 2 C 接 口 控 制 着 外 部 OTG 的 模 拟 收 发 器 主 机 控 制 器 通 过 基 于 令 牌 的 协 议 来 分 配 USB 带 宽 连 接 设 备 所 有 交 易 都 由 主 机 发 起 主 机 控 制 器 使 能 连 接 在 总 线 上 的 设 备 进 行 数 据 交 换 它 由 寄 存 器 接 口 总 线 主 机 接 口 主 机 控 制 器 和 收 发 器 控 制 逻 辑 组 成 其 接 口 框 图 如 图 5.26 所 示 USB 主 机 引 脚 如 表 5.48 所 示 端 口 配 置 成 主 机 模 式 时,USB 主 机 寄 存 器 映 射 表 如 表 5.49 所 示 表 5.48 USB 主 机 端 口 引 脚 描 述 图 5.26 USB 主 机 接 口 框 图 管 脚 名 称 方 向 描 述 引 脚 归 类 USB_D+ 输 入 / 输 出 正 向 差 分 数 据 USB 连 接 器 USB_D- 输 入 / 输 出 负 向 差 分 数 据 USB 连 接 器 USB_UP_LED 输 出 GoodLink LED 控 制 器 信 号 控 制 USB _ PPWR 输 出 端 口 电 源 使 能 主 机 电 源 开 关 USB_PWRD 输 入 端 口 电 源 状 态 主 机 电 源 开 关 USB _ OVRCR 输 入 过 流 状 态 监 测 主 机 电 源 开 关 表 5.49 USB 主 机 寄 存 器 映 射 表 名 称 描 述 访 问 复 位 值 地 址 HcRevision BCD 码 表 示 的 主 机 控 制 器 实 现 的 HCI 规 范 的 版 本 号 只 读 0x10 0x5000 C000 HcControl 定 义 HC 的 操 作 模 式 读 写 0x00 0x5000 C004 HcCommandStatus HcInterruptStatus HcInterruptEnable HcInterrptDisable 该 寄 存 器 用 于 接 收 来 自 主 机 控 制 驱 动 器 的 命 令, 也 可 以 表 示 HC 的 状 态 通 过 设 置 相 应 位 来 表 示 导 致 硬 件 中 断 的 不 同 事 件 的 状 态 控 制 HcInterruptStatus 寄 存 器 中 的 位, 并 表 示 哪 个 时 间 将 产 生 硬 件 中 断 该 寄 存 器 中 的 位 用 于 禁 止 HcInterruptStatus 寄 存 器 中 的 相 应 位, 并 禁 止 该 事 件 产 生 硬 件 中 断 读 写 0x00 0x5000 C008 读 写 0x00 0 x 5 0 0 0 C00C 读 写 0x00 0x5000 C010 读 写 0x00 0x5000 C014 HcHCCA 包 含 主 机 控 制 器 通 信 区 域 的 物 理 地 址 读 写 0x00 0x5000 C018 HcPeriodCurrentED 包 含 当 前 同 步 或 中 断 端 点 描 述 器 的 物 理 地 址 只 读 0x00 0 x 5 0 0 0 C01C 139

名 称 描 述 访 问 复 位 值 地 址 HcControlHeadED 包 含 控 制 列 表 中 当 前 端 点 描 述 器 的 物 理 地 址 读 写 0x00 0x5000 C020 HcControlCurrentED 包 含 控 制 列 表 中 当 前 端 点 描 述 器 的 物 理 地 址 读 写 0x00 0x5000 C024 HcBulkHeadED 包 含 块 列 表 中 第 一 个 端 点 描 述 器 的 物 理 地 址 读 写 0x00 0x5000 C028 HcBulkCurrentED 包 含 块 列 表 中 当 前 端 点 描 述 器 的 物 理 地 址 读 写 0x00 0 x 5 0 0 0 C02C HcDoneHead 包 含 块 列 表 中 当 前 端 点 描 述 器 的 物 理 地 址 只 读 0x00 0x5000 C030 HcFmInterval 定 义 一 帧 中 位 时 间 间 隔 和 不 会 发 生 超 界 全 速 最 大 包 尺 寸 读 写 0x2EDF 0x5000 C034 HcFmRemaining 表 示 当 前 帧 剩 余 位 时 间 的 14 位 计 数 器 只 读 0x00 0x5000 C038 HcFmNumber 包 含 一 个 16 位 计 数 器, 并 未 HC 和 HCD 中 发 生 的 事 件 0 x 5 0 0 0 只 读 0x00 提 供 时 间 参 考 C03C HcPeriodicStart 包 含 决 定 HC 可 以 启 动 处 理 一 个 周 期 列 表 的 可 编 程 14 位 值 读 写 0x00 0x5000 C040 HcLSThreshold 包 含 被 HC 用 来 决 定 是 否 在 EOF 之 前 要 发 送 一 个 最 大 8 字 节 LS 包 读 写 0x628 0x5000 C044 HcRhDescriptorA 描 述 根 集 线 器 特 征 两 寄 存 器 中 的 第 一 个 读 写 0xFF000902 0x5000 C048 HcRhDescriptorB 描 述 根 集 线 器 特 征 两 寄 存 器 中 的 第 二 个 读 写 0x60000 该 寄 存 器 分 为 两 个 部 分 低 字 表 示 集 线 器 状 态 域, 而 HcRhStatus 高 字 表 示 集 线 器 状 态 变 化 域 0 x 5 0 0 0 C04C 读 写 0x00 0x5000 C050 HcRhPortStatus[1] 控 制 和 报 告 每 端 中 的 端 口 事 件 读 写 0x00 0x5000 C054 HcRhPortStatus[2] 控 制 和 报 告 每 端 中 的 端 口 事 件 读 写 0x00 0x5000 C058 M o d u l e _ I D / Ve r _ IP 号, 其 中 yy(0x00) 是 唯 一 版 本 号,zz(0x00) 是 Rev_ID 唯 一 的 修 订 版 本 号 只 读 0x3505yyzz 0x5000C0FC 5.21.4 USB OTG 接 口 USB OTG(On-The-Go) 是 USB2.0 规 范 的 补 充, 通 过 为 现 有 移 动 设 备 和 USB 外 设 增 加 主 机 功 能 来 加 强 它 们 的 能 力, 其 接 口 结 构 框 图 如 图 5.27 所 示 图 5.27 USB OTG 接 口 结 构 框 图 主 机 设 备 OTG 和 I 2 C 控 制 器 可 以 通 过 寄 存 器 接 口 编 程 OTG 控 制 器 允 许 主 机 和 设 备 角 色 之 间 利 用 主 机 协 商 协 议 (HNP) 进 行 动 态 切 换, 一 个 端 口 可 以 连 接 到 外 部 OTG 收 发 器 以 支 持 OTG 连 接, 寄 存 器 接 口 和 外 部 OTG 接 收 器 之 间 的 通 信 是 通 过 I 2 C 接 口 和 外 部 OTG 收 发 器 中 断 信 号 来 处 理 的 140

USB OTG 引 脚 描 述 如 表 5.50 所 示 表 5.50 USB OTG 端 口 引 脚 描 述 管 脚 名 称 方 向 描 述 引 脚 归 类 USB_D+ 输 入 / 输 出 正 向 差 分 数 据 USB 连 接 器 USB_D- 输 入 / 输 出 负 向 差 分 数 据 USB 连 接 器 USB_UP_LED 输 出 GoodLink LED 控 制 信 号 控 制 USB_SCL 输 入 / 输 出 I 2 C 串 行 时 钟 外 部 OTG 收 发 器 USB_SDA 输 入 / 输 出 I 2 C 串 行 数 据 外 部 OTG 收 发 器 LPC17xx 系 列 微 控 制 器 的 USB OTG 及 相 关 I 2 C 寄 存 器 映 射 表 如 表 5.51 所 示 表 5.51 USB OTG 和 I 2 C 寄 存 器 映 射 表 名 称 功 能 访 问 地 址 中 断 寄 存 器 USBIntSr USB 中 断 状 态 读 写 0x400F C1C0 OTG 寄 存 器 OTGIntSt OTG 中 断 状 态 只 读 0x5000 C100 OTGIntEn OTG 中 断 使 能 读 写 0x5000 C104 OTGIntSet OTG 中 断 设 置 只 写 0x5000 C108 OTGIntClr OTG 中 断 清 除 只 写 0x5000 C10C OTGStCtrl OTG 状 态 和 控 制 读 写 0x5000 C110 OTGTmr OTG 定 时 器 读 写 0x5000 C114 I 2 C 寄 存 器 I 2 C_RX I 2 C 接 收 只 读 0x5000 C300 I 2 C_TX I 2 C 发 送 只 写 0x5000 C300 I 2 C_STS I 2 C 状 态 只 读 0x5000 C304 I 2 C_CTL I 2 C 控 制 读 写 0x5000 C308 I 2 C_CLKHI I 2 C 时 钟 高 位 读 写 0x5000 C30C I 2 C_CLKLO I 2 C 时 钟 低 位 只 写 0x5000 C310 时 钟 控 制 寄 存 器 OTGClkCtrl OTG 时 钟 控 制 器 读 写 0x5000 CFF4 5.22 以 太 网 接 口 5.22.1 以 太 网 接 口 概 述 LPC17xx 系 列 处 理 器 的 以 太 网 模 块 包 含 一 个 全 特 性 的 10Mbps 和 100Mbps 以 太 网 介 质 访 问 控 制 器 (MAC), 采 用 DMA 硬 件 加 速 器 可 以 提 供 最 优 化 的 性 能 其 特 性 包 括 : 提 供 一 组 丰 富 的 控 制 寄 存 器, 支 持 半 双 工 或 全 双 工 操 作 流 量 控 制 控 制 帧, 具 有 发 送 重 试 的 硬 件 加 速 器 接 受 包 过 滤 器 和 支 持 局 域 网 活 动 唤 醒 功 能 等 利 用 Scatter-Gather DMA 自 动 发 送 和 接 收 数 据 帧 可 以 大 大 减 轻 CPU 的 负 担 141

以 太 网 模 块 与 片 外 以 太 网 物 理 层 (PHY) 接 口 采 用 RMII( 简 化 的 MII) 协 议, 并 采 用 片 上 MIIM(MII 管 理 ) 串 行 总 线 5.22.2 结 构 和 引 脚 描 述 LPC17xx 系 列 处 理 器 的 以 太 网 模 块 结 构 框 图 如 图 5.28 所 示 图 5.28 以 太 网 模 块 结 构 框 图 以 太 网 模 块 由 以 下 几 个 部 分 组 成 * 主 机 寄 存 器 模 块 : 包 含 软 件 使 用 的 寄 存 器 组, 并 处 理 AHB 对 以 太 网 模 块 的 访 问 主 机 寄 存 器 连 接 发 送 和 接 受 数 据 通 路 以 及 MAC; * DMA 到 AHB 接 口 : 提 供 AHB 主 设 备 的 连 接, 允 许 以 太 网 模 块 访 问 以 太 网 SRAM 读 描 述 字 写 状 态 和 读 / 写 数 据 缓 冲 器 ; * 以 太 网 MAC 和 相 连 的 RMII 适 配 器 : 这 是 MAC 到 片 外 物 理 层 的 接 口 ; * 发 送 数 据 通 路 ; * 接 受 数 据 通 路 LPC17xx 系 列 处 理 器 的 以 太 网 模 块 可 以 将 MII 或 RMII 连 接 到 外 部 的 物 理 层, 其 中 连 接 RMII 的 引 脚 描 述 如 表 5.52 所 示, 而 MIIM 使 用 的 引 脚 如 表 5.53 所 示 表 5.52 以 太 网 RMII 引 脚 描 述 引 脚 名 称 类 型 引 脚 描 述 ENET_TX_EN 输 出 发 送 数 据 使 能 ENET_TXD[1:0] 输 出 发 送 数 据,2 位 ENET_RXD[1:0] 输 入 接 收 数 据,2 位 ENET_RX_ER 输 入 接 收 错 误 ENET_CRS 输 入 载 波 侦 听 / 数 据 有 效 142

引 脚 名 称 类 型 引 脚 描 述 ENET_REF_CLK/ ENET_RX_CLK 输 入 参 考 时 钟 / 接 收 时 钟 表 5.53 以 太 网 MIIM 引 脚 描 述 引 脚 名 称 类 型 引 脚 描 述 ENET_MDC 输 出 MIIM 时 钟 ENET_MDIO 输 入 / 输 出 MI 数 据 输 入 和 输 出 5.22.3 寄 存 器 描 述 LPC17xx 系 列 微 控 制 器 以 太 网 的 寄 存 器 分 为 4 大 类, 包 括 MAC 寄 存 器 类 控 制 寄 存 器 类 接 收 滤 波 器 类 以 及 模 块 控 制 寄 存 器 类, 表 5.54 所 示 为 寄 存 器 的 地 址 等 基 本 信 息 表 5.54 以 太 网 寄 存 器 定 义 符 号 地 址 读 / 写 描 述 MAC 寄 存 器 MAC1 0x5000 0000 读 写 MAC 配 置 寄 存 器 1 MAC2 0x5000 0004 读 写 MAC 配 置 寄 存 器 2 IPGT 0x5000 0008 读 写 Back-to-Back 空 闲 帧 寄 存 器 IPGR 0x5000 000C 读 写 非 Back-to-Back 空 闲 帧 寄 存 器 CLRT 0x5000 0010 读 写 冲 突 窗 口 / 重 传 寄 存 器 MAXF 0x5000 0014 读 写 最 大 帧 寄 存 器 SUPP 0x5000 0018 读 写 物 理 链 路 (PHY) 支 持 寄 存 器 TEST 0x5000 001C 读 写 测 试 寄 存 器 MCFG 0x5000 0020 读 写 MII( 介 质 独 立 接 口 ) 管 理 设 置 寄 存 器 MCMD 0x5000 0024 读 写 MII 管 理 命 令 寄 存 器 MADR 0x5000 0028 读 写 MII 管 理 地 址 寄 存 器 MWTD 0x5000 002C 只 写 MII 管 理 写 数 据 寄 存 器 MRDD 0x5000 0030 只 读 MII 管 理 读 数 据 寄 存 器 MIND 0x5000 0034 只 读 MII 管 理 指 示 寄 存 器 -- 0x5000 0038~0x5000 00FC - 保 留 SA0 0x5000 0040 读 写 站 地 址 寄 存 器 0 SA1 0x5000 0044 读 写 站 地 址 寄 存 器 1 SA2 0x5000 0048 读 写 站 地 址 寄 存 器 2 -- 0x5000 004C~0x5000 00FC -- 保 留 控 制 寄 存 器 Command 0x5000 0100 读 写 命 令 寄 存 器 Status 0x5000 0104 只 读 状 态 寄 存 器 RxDescriptor 0x5000 0108 读 写 接 收 描 述 符 基 址 寄 存 器 RxStatus 0x5000 010C 读 写 接 收 状 态 基 址 寄 存 器 143

符 号 地 址 读 / 写 描 述 RxDescriptorNumber 0x5000 0110 读 写 接 收 描 述 符 数 量 寄 存 器 RxProduceIndex 0x5000 0114 只 读 接 收 产 生 索 引 寄 存 器 RxConsumeIndex 0x5000 0118 读 写 接 收 消 耗 索 引 寄 存 器 TxDescriptor 0x5000 011C 读 写 发 送 描 述 符 基 址 寄 存 器 TxStatus 0x5000 0120 读 写 发 送 状 态 基 址 寄 存 器 TxDescriptorNumber 0x5000 0124 读 写 发 送 描 述 符 数 量 寄 存 器 TxProduceIndex 0x5000 0128 读 写 发 送 产 生 索 引 寄 存 器 TxConsumeIndex 0x5000 012C 读 写 发 送 消 耗 索 引 寄 存 器 -- 0x5000 0130~0x5000 0154 -- 保 留 TSV0 0x5000 0158 只 读 发 送 状 态 向 量 0 寄 存 器 TSV1 0x5000 015C 只 读 发 送 状 态 向 量 1 寄 存 器 RSV 0x5000 0160 只 读 接 收 状 态 向 量 寄 存 器 -- 0x5000 0164~0x5000 01FC -- 保 留 Rx 滤 波 器 寄 存 器 RxFilterCtrl 0x5000 0200 接 收 滤 波 器 控 制 寄 存 器 RxFilterWolStatus 0x5000 0204 接 收 滤 波 器 WoL 状 态 寄 存 器 RxFilterWolClear 0x5000 0208 接 收 滤 波 器 WOL 清 除 寄 存 器 -- 0x5000 020C -- 保 留 HashFilterL 0x5000 0210 哈 希 过 滤 器 表 低 位 寄 存 器 HashFilterH 0x5000 0214 哈 希 过 滤 器 表 高 位 寄 存 器 -- 0x5000 0218~0x5000 0FDC -- 保 留 模 块 控 制 寄 存 器 IntStatus 0x5000 0FE0 只 读 中 断 状 态 寄 存 器 IntEnable 0x5000 0FE4 读 写 中 断 使 能 寄 存 器 IntClear 0x5000 0FE8 只 写 中 断 清 除 寄 存 器 IntSet 0x5000 0FEC 只 写 中 断 设 置 寄 存 器 -- 0x5000 0FF0 -- 保 留 PowerDown 0x5000 0FF4 读 写 掉 电 寄 存 器 -- 0x5000 0FF8 -- 保 留 5.22.4 应 用 举 例 RMII 图 5.29 所 示 为 LPC17xx 微 控 制 器 以 太 网 部 分 的 电 路 原 理 图,PHY 选 择 的 是 DP83848, 接 口 方 式 为 144

图 5.29 LPC17xx 微 控 制 器 以 太 网 原 理 图 以 太 网 MAC 接 口 编 程, 其 中 主 要 包 括 11 个 调 用 函 数, 集 中 在 实 验 EasyWeb 历 程 的 EMAC.c 文 件 中 这 些 函 数 的 描 述 如 表 5.55 所 示 表 5.55 EMAC.c 文 件 中 的 调 用 函 数 函 数 原 型 功 能 void Init_EMAC(void) unsigned short ReadFrameBE_EMAC(void) void CopyFromFrame_EMAC(void *Dest, unsigned int Size) void WriteFrame_EMAC(unsigned short Data) void CopyToFrame_EMAC(void *Source, unsigned int Size) void DummyFrame_EMAC(unsigned short Size) unsigned short StartReadFrame(void) void EndReadFrame(void) unsigned int CheckFrameReceived(void) void RequestSend(unsigned short FrameSize) unsigned int Rdy4Tx(void) 初 始 化 EMAC 从 帧 端 口 读 一 个 字 从 帧 端 口 复 制 数 据 到 MCU 的 存 储 器 将 一 个 字 写 入 帧 端 口 从 MCU 的 存 储 器 复 制 数 据 到 帧 端 口 在 帧 端 口 做 一 次 读 动 作, 但 不 读 实 际 内 容 开 始 读 帧 端 口 结 束 读 帧 端 口 检 测 是 否 接 收 帧 在 EMAC 存 储 器 中 申 请 空 间 以 存 储 发 送 的 帧 检 测 以 太 网 控 制 器 是 否 准 备 接 收 要 发 送 的 帧 MAC 初 始 化 Init_EMAC() 函 数 完 成 以 太 网 MAC 的 初 始 化 工 作, 主 要 包 括 为 以 太 网 控 制 器 配 置 引 脚 端 口 复 位 控 制 器, 并 启 动 控 制 器 的 配 置 过 程 具 体 代 码 如 程 序 清 单 5.26 所 示 145

程 序 清 单 5.26 void Init_EMAC(void) { // Keil: function modified to access the EMAC // 初 始 化 以 太 网 MAC unsigned int regv,tout,id1,id2; /* 使 能 EMAC 控 制 器 */ PCONP = 0x40000000; /* 使 能 P1 以 太 网 管 脚 */ PINSEL2 = 0x50150105; PINSEL3 = (PINSEL3 & ~0x0000000F) 0x00000005; /* 复 位 所 有 的 EMAC 内 部 模 块 */ EMAC_MAC1 = MAC1_RES_TX MAC1_RES_MCS_TX MAC1_RES_RX MAC1_ RES_MCS_RX MAC1_SIM_RES MAC1_SOFT_RES; EMAC_Command = CR_REG_RES CR_TX_RES CR_RX_RES CR_PASS_RUNT_ FRM; /* 复 位 后 等 待 一 段 时 间 */ for (tout = 100; tout; tout--); /* 初 始 化 以 太 网 控 制 器 寄 存 器 */ EMAC_MAC1 = MAC1_PASS_ ALL; EMAC_MAC2 = MAC2_CRC_EN MAC2_PAD_EN; EMAC_MAXF = ETH_MAX_FLEN; EMAC_CLRT = CLRT_DEF; EMAC_IPGR = IPGR_DEF; /* 使 能 RMII 接 口 */ EMAC_Command = CR_RMII CR_PASS_RUNT_FRM; /* 设 置 DP83848C 复 位 模 式 */ write_phy (PHY_REG_BMCR, 0x8000); /* 等 待 硬 件 复 位 结 束 */ for (tout = 0; tout < 0x100000; tout++) { regv = read_phy (PHY_REG_BMCR); 146

if (!(regv & 0x8000)) { /* 复 位 完 成 */ break; } } /* 检 查 是 否 是 DP83848C */ id1 = read_phy (PHY_REG_IDR1); id2 = read_phy (PHY_REG_IDR2); if (((id1 << 16) (id2 & 0xFFF0)) == DP83848C_ID) { /* 配 置 PHY, 使 用 自 动 协 商 方 法 确 定 链 接 速 率 */ write_phy (PHY_REG_BMCR, PHY_ AUTO_NEG); /* 等 待 自 动 协 商 结 束 */ for (tout = 0; tout < 0x100000; tout++) { regv = read_phy (PHY_REG_BMSR); if (regv & 0x0020) { /* 自 动 协 商 结 束 */ break; } } } /* 检 查 连 接 状 态. */ for (tout = 0; tout < 0x10000; tout++) { regv = read_phy (PHY_REG_STS); if (regv & 0x0001) { /* 连 接 好 */ break; } } /* 配 置 全 / 半 双 工 模 式 */ if (regv & 0x0004) { /* 全 双 工 使 能 */ 147

EMAC_MAC2 = MAC2_FULL_DUP; EMAC_Command = CR_FULL_DUP; EMAC_IPGT = IPGT_FULL_DUP; } else { /* 半 双 工 模 式 */ EMAC_IPGT = IPGT_HALF_DUP; } /* 配 置 100Mbit/10Mbit 模 式 */ if (regv & 0x0002) { /* 10MBit 模 式 */ EMAC_SUPP = 0; } else { /* 100MBit 模 式. */ EMAC_SUPP = SUPP_SPEED; } /* 设 置 以 太 网 MAC 地 址 寄 存 器 */ EMAC_SA0 = (MYMAC_1 << 8) MYMAC_2; EMAC_SA1 = (MYMAC_3 << 8) MYMAC_4; EMAC_SA2 = (MYMAC_5 << 8) MYMAC_6; /* 初 始 化 Tx 和 Rx DMA 描 述 符 */ rx_descr_init (); tx_descr_init (); /* 接 收 广 播 包 和 完 美 匹 配 包 */ EMAC_RxFilterCtrl = RFC_BCAST_EN RFC_PERFECT_EN; /* 使 能 EMAC 中 断 */ EMAC_IntEnable = INT_RX_DONE INT_TX_DONE; /* 复 位 所 有 中 断 */ EMAC_IntClear = 0xFFFF; /* 使 能 MAC 接 收 和 发 送 模 式 */ 148

EMAC_Command = (CR_RX_EN CR_TX_EN); EMAC_MAC1 = MAC1_REC_EN; } 从 MCU 存 储 器 复 制 字 节 到 帧 端 口 CopyToFrame_EMAC() 函 数 负 责 将 数 据 从 MCU 的 存 储 器 复 制 到 帧 端 口 以 便 发 送 需 要 注 意 的 是,MCU 的 存 储 器 必 须 是 字 对 齐 的, 当 帧 写 完 时 也 有 可 能 只 发 送 了 奇 数 字 节 具 体 代 码 如 程 序 清 单 5.27 所 示 程 序 清 单 5.27 void CopyToFrame_EMAC(void *Source, unsigned int Size) { unsigned short * pisource; unsigned int idx; pisource = Source; Size = (Size + 1) & 0xFFFE; // 循 环 大 小 为 满 足 字 节 数 要 求 的 最 小 偶 数 while (Size > 0) { WriteFrame_EMAC(*piSource++); // 写 帧 数 据 Size -= 2; } idx = EMAC_TxProduceIndex; if (++idx == NUM_TX_FRAG) idx = 0; EMAC_TxProduceIndex = idx; } 从 帧 端 口 复 制 字 节 到 MCU 存 储 器 CopyFromFrame_EMAC() 函 数 负 责 将 数 据 从 帧 端 口 复 制 到 MCU 的 存 储 器, 以 实 现 接 收, 需 要 注 意 的 是,MCU 的 存 储 器 同 样 必 须 是 字 对 齐 的, 当 帧 读 完 时 也 能 是 只 接 收 到 奇 数 字 节 具 体 代 码 如 程 序 清 单 5.28 所 示 程 序 清 单 5.28 void CopyFromFrame_EMAC(void *Dest, unsigned short Size) { unsigned short * pidest; 149

pidest = Dest; while (Size > 1) { *pidest++ = ReadFrame_EMAC(); // 读 帧 数 据 Size -= 2; } if (Size) { *(unsigned char *)pidest = (char)readframe_emac(); } } 5.23 数 模 转 换 器 和 模 数 转 换 器 5.23.1 数 模 转 换 器 DAC 的 特 性 LPC17xx 系 列 微 控 制 器 中 的 数 模 转 换 器 DAC 的 特 性 有 : * 10 位 数 模 转 换 器 ; * 电 阻 线 结 构 ; * 缓 冲 输 出 ; * 具 有 掉 电 模 式 ; * 转 换 速 度 及 功 耗 可 选 5.23.2 DAC 引 脚 和 寄 存 器 描 述 表 5.56 所 示 为 DAC 的 主 要 相 关 引 脚 表 5.56 DAC 引 脚 描 述 引 脚 名 称 类 型 功 能 描 述 AOUT 输 出 模 拟 输 出 在 向 DACR 寄 存 器 写 入 一 个 新 数 值 后, 该 引 脚 输 出 电 压 值 为 VALUE/1024 VREF VREF 参 考 电 压 参 考 电 压 该 引 脚 想 DAC 提 供 参 考 电 压 值 V DDA V SSA 电 源 模 拟 电 源 及 地 应 与 数 字 地 和 电 源 隔 离 DAC 寄 存 器 (DACR 0x4008 C0000) 可 为 读 / 写 寄 存 器, 包 括 了 数 模 转 换 数 值 性 能 功 耗 选 择 位, 如 表 5.57 所 示 寄 存 器 的 0~5 位 为 保 留 位, 以 适 应 将 来 更 高 位 数 的 数 模 转 换 器 使 用 表 5.57 DAC 寄 存 器 位 描 述 位 名 称 功 能 描 述 复 位 值 5:0 -- 保 留 位 NA 15:6 VALUE 向 该 位 段 写 入 经 过 设 定 的 转 换 时 间 后, 在 引 脚 A O U T 上 输 出 电 压 值 为 VALUE/1024 VREF 150 0

16 BIAS 0: 设 置 DAC 的 最 大 转 换 时 间 为 1uS, 最 大 电 流 为 700uA 1: 设 置 DAC 的 最 大 转 换 时 间 为 2.5uS, 最 大 电 流 为 350uA 31:17 -- 保 留 位 NA 0 5.23.3 DAC 基 本 操 作 寄 存 器 PINSEL1 的 位 21 和 位 20 用 于 控 制 DAC 是 否 使 能 以 及 引 脚 P0.26 的 状 态 当 这 两 位 的 值 为 10 时,DAC 供 电 并 被 使 能 所 以 DAC 的 基 本 操 作 顺 序 为 : * 设 置 PINSEL1 寄 存 器, 使 能 DAC; * 设 置 DAC 寄 存 器 的 BIAS 位, 选 择 DAC 的 转 换 时 间 ; * 在 程 序 中 向 DAC 寄 存 器 的 VALUE 位 写 入 需 要 转 换 的 数 字 值 5.23.4 ADC 的 特 性 LPC17xx 微 控 制 器 中 的 模 数 转 换 器 (ADC) 的 特 性 如 下 : * 12 位 逐 次 逼 近 式 模 数 转 换 器 ; * 8 个 引 脚 复 用 为 输 入 引 脚 ; * 支 持 掉 电 模 式 ; * 测 量 范 围 :0~VREFP( 典 型 值 为 3V); * 200kHz 的 12 位 转 换 频 率 ; * 一 个 或 者 多 个 输 入 的 突 发 转 换 模 式 ; * 可 选 择 由 输 入 跳 变 或 者 定 时 器 匹 配 信 号 触 发 转 换 ADC 的 基 本 时 钟 由 APB 时 钟 提 供 每 个 转 换 器 包 含 一 个 可 编 程 分 频 器, 将 时 钟 调 整 至 逐 步 逼 近 转 换 所 需 的 时 钟 ( 最 大 13Mhz), 完 全 满 足 精 度 要 求 的 转 换 需 要 11 个 转 换 时 钟 5.23.5 ADC 引 脚 描 述 表 5.58 所 示 为 ADC 的 主 要 引 脚 表 5.58 ADC 引 脚 描 述 引 脚 名 称 类 型 功 能 描 述 AD0[7:0] 输 入 模 拟 输 入 A/D 转 换 单 元 可 测 量 输 入 信 号 的 电 压 注 意, 即 使 引 脚 复 用 寄 存 器 将 他 们 设 定 为 端 口 引 脚, 这 些 模 拟 输 入 还 是 连 接 在 引 脚 上 通 过 将 这 些 引 脚 驱 动 成 端 口 输 出 来 实 现 A/D 转 换 器 的 简 单 自 测 注 意 : 当 使 用 A/D 转 换 器 时, 模 拟 输 入 引 脚 的 信 号 电 平 在 任 何 时 候 都 不 能 大 于 VDDA, 否 则, 读 出 的 A/D 值 无 效 如 果 应 用 中 未 使 用 A/D 转 换 器, 则 A/D 输 入 引 脚 用 作 可 承 受 5V 电 压 的 数 字 I/O 口 VREF 参 考 电 压 参 考 电 压 该 引 脚 向 DAC 提 供 参 考 电 压 值 V DDA V SSA 电 源 模 拟 电 源 及 地 应 与 数 字 地 和 电 源 隔 离 151

5.23.6 ADC 寄 存 器 描 述 ADC 寄 存 器 整 体 描 述 如 表 5.59 所 示 表 5.59 ADC 寄 存 器 列 表 引 脚 名 称 功 能 描 述 访 问 复 位 值 地 址 ADCR ADC 控 制 寄 存 器 在 使 用 ADC 之 前 必 须 初 始 化 以 选 择 操 作 模 式 读 写 0x0000 0001 0x4003 4000 ADGDR ADC 全 局 数 据 寄 存 器 包 含 了 最 新 的 ADC 转 换 结 构 读 写 NA 0x4003 4004 ADINTEN ADC 中 断 使 能 寄 存 器 使 能 ADC 各 个 通 道 的 中 断 读 写 0x0000 0100 0x4003 400C ADDR0 ADC 通 道 0 数 据 寄 存 器 该 寄 存 器 包 含 了 通 道 0 最 新 的 转 换 结 果 读 写 NA 0x4003 4010 ADDR1 ADC 通 道 1 数 据 寄 存 器 该 寄 存 器 包 含 了 通 道 1 最 新 的 转 换 结 果 读 写 NA 0x4003 4014 ADDR2 ADC 通 道 2 数 据 寄 存 器 该 寄 存 器 包 含 了 通 道 2 最 新 的 转 换 结 果 读 写 NA 0x4003 4018 ADDR3 ADC 通 道 3 数 据 寄 存 器 该 寄 存 器 包 含 了 通 道 3 最 新 的 转 换 结 果 读 写 NA 0x4003 401C ADDR4 ADC 通 道 4 数 据 寄 存 器 该 寄 存 器 包 含 了 通 道 4 最 新 的 转 换 结 果 读 写 NA 0x4003 4020 ADDR5 ADC 通 道 5 数 据 寄 存 器 该 寄 存 器 包 含 了 通 道 5 最 新 的 转 换 结 果 读 写 NA 0x4003 4024 ADDR6 ADC 通 道 6 数 据 寄 存 器 该 寄 存 器 包 含 了 通 道 6 最 新 的 转 换 结 果 读 写 NA 0x4003 4028 ADDR7 ADC 通 道 7 数 据 寄 存 器 该 寄 存 器 包 含 了 通 道 7 最 新 的 转 换 结 果 读 写 NA 0x4003 402C ADSTAT ADC 状 态 寄 存 器 该 寄 存 器 包 含 了 ADC 完 成, 溢 出 和 中 断 等 标 志 位 只 读 0x0000 0000 0x4003 4030 ADRTM ADC 修 正 寄 存 器 读 写 0x00 0x4003 4034 5.23.7 ADC 基 本 操 作 1. 硬 件 触 发 转 换 如 果 ADCR 的 突 发 位 为 0 且 开 始 字 段 的 值 包 含 在 010~111 之 内, 那 么 当 所 选 引 脚 或 定 时 器 匹 配 信 号 发 生 跳 变 时 A/D 转 换 器 启 动 一 次 转 换 也 可 选 择 在 4 个 匹 配 信 号 中 任 何 一 个 指 定 边 沿 转 换, 或 者 在 2 个 捕 获 / 匹 配 引 脚 中 任 何 一 个 的 指 定 边 沿 转 换 将 所 选 端 口 的 引 脚 状 态 或 者 所 选 的 匹 配 信 号 与 ADCR 的 位 27 相 异 或 所 得 的 结 果 用 做 边 沿 检 测 逻 辑 2. 中 断 当 完 成 位 为 1 时,ADC 转 换 模 块 向 NVIC 发 出 中 断 请 求, 如 果 使 能 NVIC 中 的 A/D 转 换 中 断 使 能 位, 则 会 产 生 中 断, 读 取 ADDR 将 清 零 完 成 位 3. 精 度 和 数 字 接 收 器 ADC 转 换 器 用 来 测 量 Ain 引 脚 的 电 压 时, 可 以 不 理 会 引 脚 在 引 脚 选 择 寄 存 器 中 的 设 置, 但 是 通 过 禁 止 引 脚 的 数 字 接 收 器 来 选 择 Ain 功 能 可 以 提 高 转 换 精 度 5.24 电 机 控 制 PWM 电 机 控 制 PWM(MCPWM) 适 合 3 相 AC 和 DC 电 机 的 控 制 应 用, 同 样 也 适 合 用 于 需 要 定 时, 计 数, 捕 获 以 及 比 较 的 应 用 中 152

5.24.1 电 机 控 制 PWM 简 述 MCPWM 包 含 3 个 独 立 的 通 道, 每 个 通 道 包 括 : * 一 个 32 位 的 定 时 / 计 数 器 (TC); * 一 个 32 位 的 限 制 寄 存 器 (LIM); * 一 个 32 位 的 匹 配 寄 存 器 (MAT); * 一 个 10 位 死 区 寄 存 器 (DT) 和 一 个 相 关 的 10 位 死 区 计 数 器 ; * 一 个 32 位 捕 获 寄 存 器 (CAP); * 两 个 调 制 输 出 端 口 (MCOA 和 MCOB) 带 有 对 立 的 极 性 ; * 一 个 周 期 中 断, 一 个 脉 冲 宽 度 中 断 和 一 个 捕 获 中 断 5.24.2 电 机 控 制 PWM 引 脚 简 述 表 5.60 电 机 控 制 PWM 引 脚 列 表 管 脚 名 称 类 型 描 述 MCOA0-2 输 出 输 出 A 的 通 道 0-2 MCOB0-2 输 出 输 出 B 的 通 道 0-2 MCABORT 输 入 低 电 平 激 活 快 速 MCI0-2 输 出 输 入 口 0-2 5.24.3 电 机 控 制 PWM 寄 存 器 简 述 电 机 控 制 PWM 寄 存 器 如 表 5.61 所 示 表 5.61 电 机 控 制 PWM 寄 存 器 列 表 名 称 描 述 访 问 复 位 值 地 址 MCCON PWM 控 制 读 地 址 只 读 0 0x400B 8000 MCCON_SET PWM 控 制 设 置 地 址 只 写 - 0x400B 8004 MCCON_CLR PWM 控 制 清 除 地 址 只 写 - 0x400B 8008 MCCAPCON 捕 捉 控 制 读 地 址 只 读 0 0x400B 800C MCCAPCON_SET 捕 捉 控 制 设 置 地 址 只 写 - 0x400B 8010 MCCAPCON_CLR 捕 获 控 制 清 除 地 址 只 写 - 0x400B 8014 MCTC0 定 时 器 寄 存 器 寄 存 器, 通 道 0 读 写 0 0x400B 8018 MCTC1 定 时 器 寄 存 器 寄 存 器, 通 道 1 读 写 0 0x400B 801C MCTC2 定 时 器 寄 存 器 寄 存 器, 通 道 2 读 写 0 0x400B 8020 MCLIM0 限 制 寄 存 器, 通 道 0 读 写 0xFFFF FFFF 0x400B 8024 MCLIM1 限 制 寄 存 器, 通 道 1 读 写 0xFFFF FFFF 0x400B 8028 MCLIM2 限 制 寄 存 器, 通 道 2 读 写 0xFFFF FFFF 0x400B 802C MCMAT0 匹 配 寄 存 器, 通 道 0 读 写 0xFFFF FFFF 0x400B 8030 MCMAT1 匹 配 寄 存 器, 通 道 1 读 写 0xFFFF FFFF 0x400B 8034 MCMAT2 匹 配 寄 存 器, 通 道 2 读 写 0xFFFF FFFF 0x400B 8038 153

名 称 描 述 访 问 复 位 值 地 址 MCDT 死 区 寄 存 器 读 写 0x3FFF FFFF 0x400B 803C MCCP 通 信 模 式 寄 存 器 读 写 0 0x400B 8040 MCCAP0 捕 获 寄 存 器, 通 道 0 只 读 0 0x400B 8044 MCCAP1 捕 获 寄 存 器, 通 道 1 只 读 0 0x400B 8048 MCCAP2 捕 获 寄 存 器, 通 道 2 只 读 0 0x400B 804C MCINTEN 中 断 使 能 读 地 址 只 读 0 0x400B 8050 MCINTEN_SET 中 断 使 能 设 置 地 址 只 写 - 0x400B 8054 MCINTEN_CLR 中 断 使 能 清 除 地 址 只 写 - 0x400B 8058 MCCNTCON 计 数 控 制 读 地 址 只 读 0 0x400B 805C MCCNTCON_SET 计 数 控 制 设 置 地 址 只 写 - 0x400B 8060 MCCNTCON_CLR 计 数 控 制 清 除 地 址 只 写 - 0x400B 8064 MCINTF 中 断 标 志 读 地 址 只 读 0 0x400B 8068 MCINTF_SET 中 断 标 志 设 置 地 址 只 写 - 0x400B 806C MCINTF_CLR 中 断 标 志 清 除 地 址 只 写 - 0x400B 8070 MCCAP_CLR 捕 获 清 除 地 址 只 写 - 0x400B 8074 5.25 LPC17xx 的 调 试 手 段 5.25.1 简 介 LPC17xx 系 列 微 控 制 器 支 持 标 准 的 JTAG 以 及 ARM Serial Wire Debug(SWD) 模 式, 可 以 直 接 调 试 所 有 的 存 储 器 件, 寄 存 器 和 外 设 具 有 8 个 断 点 (6 个 指 令 断 点,2 个 数 据 比 较 器 ), 支 持 4 个 观 测 点 LPC17xx 系 列 默 认 使 用 JTAG 作 为 调 试 手 段 一 旦 进 入 JTAG 调 试 模 式, 调 试 工 具 可 以 切 换 到 SWD 模 式 下 5.25.2 管 脚 描 述 一 些 管 脚 的 功 能 可 能 是 复 用 的, 所 以 不 能 在 同 一 时 刻 使 用 除 仿 真 调 试 功 能 外 的 其 他 的 功 能 使 用 JTAG 端 口 也 就 包 括 使 用 串 行 线 路 调 试 和 串 行 线 路 输 出 的 端 口 使 用 并 行 跟 踪 需 要 5 个 管 脚, 这 5 个 管 脚 可 能 用 于 其 他 的 用 户 功 能 使 用 串 行 线 路 输 出 跟 踪 并 没 有 这 个 限 制, 但 是 在 带 宽 上 有 所 限 制 表 5.62 表 5.63 和 表 5.64 分 别 描 述 了 JTAG SWD 和 并 行 跟 踪 器 所 涉 及 的 管 脚 表 5.62 JTAG 管 脚 描 述 管 脚 名 称 类 型 描 述 TCK 输 入 JTAG 测 试 时 钟 在 JTAG 调 试 模 式 下, 该 管 脚 提 供 调 试 逻 辑 所 需 时 钟 TMS 输 入 JTAG 测 试 模 式 选 择 该 管 脚 选 择 在 TAP 状 态 机 中 的 下 一 个 状 态 TDI 输 入 JTAG 测 试 数 据 输 入 该 管 脚 为 移 位 寄 存 器 输 入 串 行 数 据 TDO 输 出 JTAG 测 试 数 据 输 出 该 管 脚 从 移 位 寄 存 器 输 出 串 行 数 据 TRSTn 输 入 JTAG 测 试 复 位 该 管 脚 可 以 用 来 复 位 被 测 试 的 逻 辑 器 件 以 及 调 试 逻 辑 器 件 154

管 脚 名 称 类 型 描 述 RTCK 输 出 JTAG 反 馈 测 试 时 钟 表 5.63 串 行 调 试 SWD 管 脚 描 述 管 脚 名 称 类 型 描 述 SWDCLK 输 入 串 行 线 路 时 钟 该 管 脚 为 SWD 模 式 下 的 调 试 逻 辑 提 供 时 钟 SWDIO 输 入 / 输 出 串 行 调 试 SWD 数 据 输 入 / 输 出 该 管 脚 被 外 部 调 试 器 件 用 来 和 Cortex-M3 处 理 器 通 信 以 及 控 制 SWO 输 出 串 行 线 路 输 出 该 管 脚 可 被 选 择 用 来 从 ITM 或 者 ETM 中 给 外 部 调 试 器 件 提 供 数 据 表 5.64 并 行 跟 踪 管 脚 描 述 管 脚 名 称 类 型 描 述 TRACECLK 输 入 跟 踪 时 钟 该 管 脚 提 供 跟 踪 数 据 的 采 样 时 钟 TRACEDATA[3:0] 输 出 跟 踪 数 据 位 3 到 0 这 些 管 脚 被 外 部 调 试 工 具 用 来 在 跟 踪 时 传 递 跟 踪 数 据 5.25.3 应 用 电 路 图 5.30 图 5.31 图 5.32 和 分 别 展 示 了 ETM(Embedded Trace Macrocell) JTAG SWD 和 的 基 本 电 路 原 理 图 图 5.30 并 行 跟 踪 调 试 ETM 接 口 电 路 原 理 图 图 5.31 JTAG 接 口 电 路 原 理 图 155