首页资源分类嵌入式处理器MSP430 > MSP430F5529中文版用户手册

MSP430F5529中文版用户手册

已有 445117个资源

下载专区

文档信息举报收藏

标    签:MSP430F5529中文版用户手册

分    享:

文档简介

MSP430F5529中文版用户手册,真的很给力的手册,完整版

文档预览

LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM MSP430F5XX 系列用户指南 利尔达 策划 嵌入式研发中心 编著 免责声明: 本书是在 MSP430F5XX 系列用户指南的基础上翻译而成,目前仍为草稿状态,仅限于公司内部的学习 交流使用,仅供参考,不承担任何可能发生错误和误解的后果。本资料的版权归利尔达科技有限公司嵌入 式研发中心所有,我们将在不通知任何人的前提下拥有进一步修改的权利,任何个人和组织在未获得我们 书面同意的前提下,均不的散布、转载、抄袭本书的内容。 由于时间紧迫及技术能力的限制,文中的错误会很多,甚至有时候还会存在这样写对不对的疑问,在 读者学习和阅读的过程中,如发现错误,请不吝赐教。 最后,谢谢大家的支持! 作者 利尔达科技有限公司 2010 年 9 月于杭州 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–1–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 第1章 系统复位、中断、工作模 式和系统控制模块(SYS) 每个芯片中都有系统控制模块(SYS),下面概括了 SYS 的一些基本特征: l 掉电/上电复位(BOR/POR)处理 l 上电清除(PUC)处理 l 不可屏蔽中断(系统不可屏蔽中断/用户不可屏蔽中断)源的选择和管理 l 地址译码 l 提供通过 JMB 用户数据交换机制 l Bootstrap 装载器(BSL)入口机制 l 配置管理(芯片描述符) l 提供复位和不可屏蔽中断的中断向量发生器 1.1 系统控制模块介绍 1.2 系统复位和初始化 1.3 中断系统 1.4 工作模式 1.5 低功耗系统应用原理 1.6 未使用引脚的配置 1.7 复位引脚(/RST/NIM)配置 1.8 JTAG 引脚配置 1.9 引导代码 1.10 Bootstrap 装载器 1.11 存储器映射——用法和功能 1.12 JTAG 邮箱系统(JMB) 1.13 芯片描述符表 1.14 特殊功能寄存器(SFR) 1.15 系统控制模块配置寄存器 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–2–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 1.1 系统控制模块介绍 SYS 模块负责处理系统中各个模块之间的相互作用关系。SYS 模块本身所提供的功能并不是固定的。 地址译码、总线仲裁、中断冲突和复位等仅仅是 SYS 所能提供众多功能中的一部分。 1.2 系统复位和初始化 系统复位电路如图 1-1 所示,复位源有掉电复位(BOR)、上电复位(POR)及上电清除(PUC)。复位 可能是由不同的事件触而发产生的,而这些事件则又是由不同的信号触发而产生的,这种事件会影响到各 种初始化状态。 BOR 是一个芯片复位信号,下面的事件可以触发 BOR 信号: l 芯片上电 l /RST/NMI 脚配置为复位模式时出现低电平信号 l 从低功耗 LPMx.5(LPM3.5 或 LPM4.5)模式唤醒 l 软件 BOR 当 BOR 复位时总是能产生上电复位(POR),但 BOR 复位并不是上电复位(POR)产生的唯一条件。下 面的情况也可以触发上电复位(POR): l BOR 复位 l 当信号允许时,SVSH 或 SVSM 低电平(具体信息参考 PMM 模块章节) l 当信号允许时,SVSL 或 SVSL 低电平(具体信息参考 PMM 模块章节) l 软件上电复位 当 POR 复位时总能产生上电清零(PUC),同样 POR 并不是 PUC 产生的唯一条件。下列情形也可以产生 PUC: l 上电复位信号 l 看门狗定时器在看门狗模式时溢出(具体信息参考看门狗定时器章节) l 看门狗定时器写密码错误 l FLASH 控制寄存器写密码错误 l 电源管理模块寄存器写密码错误 l 外围地址区域取指令错误 注:这些复位的数量和类型会依芯片的不同而不同,所有复位源信息请参阅芯片的数据手册。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–3–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图 1-1 BOR/POR/PUC 复位电路 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–4–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 1.2.1 系统复位后的初始状态 BOR 复位后,芯片的初始状态是: l /RST/NIM 引脚为复位模式,参考 1.7 章节有关/RST/NIM 脚的配置 l I/O 口切换为输入模式,参考数字 IO 章节 l 其他外围模块寄存器按照手册中相关章节描述进行初始化 l 状态寄存器(SR)复位 l 看门狗定时器工作在看门狗模式下 l 程序计数器(PC)装入引导代码地址并从这个地址开始执行引导代码,在 1.9 章中有关于引 导代码更详细的信息。一旦引导代码执行完毕,PC 将载入在 SYSRSTIV 复位位置(0xFFFE) 的地址。 系统复位后,用户应根据实际应用需要来进行芯片初始化设置,主要包括: l 初始化堆栈指针(SP),典型值是定位到 RAM 区顶部 l 根据实际应用需要初始化看门狗定时器 l 根据实际应用需要配置相关外围模块 1.3.中断 中断的优先级是固定不变的,是根据图 1-2 所示连接链中模块的排列顺序来定义。其中断优先级决定 了当系统同时有多个中断发生时,哪一个中断优先执行。 有三种类型的中断: 1、系统复位 2、不可屏蔽中断(NMI) 3、可屏蔽中断 图 1-2 中断优先级 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–5–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 注:不同型号芯片的中断类型和优先级可能会有些区别,具体请参考相关数据手册。 1.3.1 不可屏蔽中断(NMI) 一般来说,不可屏蔽中断不能被中断标志允许位(GIE)所屏蔽。该系列有两种级别的不可屏蔽中断 (NMI)——系统不可屏蔽中断(SNMI)和用户不可屏蔽中断(UNMI)。不可屏蔽中断通过单独的中断 使能位来控制。当一个不可屏蔽中断响应后,为了避免同一优先级的不可屏蔽中断发生嵌套,处于同一优 先级的其他不可屏蔽中断将自动被禁止。程序从表1-1中的不可屏蔽中断向量地址处开始执行指令。为了兼 容早期的MSP430产品,允许软件可以再次使能不可屏蔽中断,但一般情况下没必要这么做。不可屏蔽中 断源的框图如图1-3所示。 用户不可屏蔽中断的中断源有: 4、/RST/NMI 脚为 NMI 模式时的边沿信号 5、晶振失效 6、非法的 Flash 存储器存取 系统不可屏蔽中断的中断源有: 7、PMM 模块 SVML/SVMH 供电故障 8、PMM 初级和次级超时 9、访问存储器的非法地址 10、JTAG 邮箱事件 注:在不同芯片中,不可屏蔽中断的类型和数量可能有些不同,具体信息请参考数据手册中的 NMI 部 分。 1.3.2 SNMI时序 如果系统不可屏蔽中断发生的频率高于它们处理的速度时称为中断风暴,这时系统会允许在系统不可 屏蔽中断以RETI指令完成后及下一次系统中断处理程序开始前执行一条指令。此时用户不可屏蔽中断是不 会打断系统不可屏蔽中断的。这样可以避免在高速率系统中发生不可屏蔽中断阻塞。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–6–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图1-3 可重入保护的不可屏蔽中断 1.3.3 可屏蔽中断 可屏蔽中断是由具有中断能力的外围模块产生的。每一个可屏蔽中断源可以通过单独的中断使能位控 制,也可以通过状态寄存器(SR)中的总中断使能位(GIE)来控制。 外围模块的中断将在相关模块章节中讨论。 1.3.4 中断处理 外设产生中断请求,且外设中断使能位和中断总使能位(GIE)置位的情况下,才会调用中断服务处 理程序,而对于不可屏蔽中断来说只需使能相应允许位就可以了。 1.3.4.1 中断响应 从响应中断请求到中断服务子程序的第一条指令开始执行,这一过程需要花费6个时钟周期,图如1-4 所示。中断的执行过程如下: 1.完成当前正在执行的指令 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–7–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 2.PC 将指向下一条指令,并且将 PC 指针压入堆栈; 3.状态寄存器(SR)压入堆栈; 4.如果在最后一条指令执行期间有多个中断等待响应时,则选择执行高优先级的中断 5.单中断源的中断标志位自动复位。多中断源的中断标志位保留,需要软件处理; 6.清除状态寄存器(SR),终止任何形式的低功耗状态。由于 GIE 位处于清零状态,所以其它的中 断也被禁止。注意:不同系列对 SCG0 位的处理是有一些区别的,具体请查看相关数据手册; 7.中断向量里的值载入到程序计数器,程序从中断服务程序入口地址开始执行中断服务程序。 图1-4 中断处理 1.3.4.2 中断返回 中断处理程序由下列指令终止: RETI // 从一个中断服务程序中返回 中断返回的过程,将执行下面的操作,这个过程占用了5个时钟周期,如图1-5所示。 1.从堆栈中弹出包含中断前状态参数的状态寄存器SR,中断前SR中的GIE和CPUOFF等各种设置开始 重新生效,而不管在中断服务程序中SR是什么值; 2.PC从堆栈中弹出,从断点处开始执行程序。 图1-5 中断返回 1.3.5 中断嵌套 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–8–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 如果在中断服务程序中GIE位置位,就会允许中断嵌套。当允许中断嵌套时,中断服务程序会被另外 一个中断打断,而不管新中断的优先级如何。 1.3.6 中断向量 中断向量地址范围在0xFFFFh到0xFF80h,最多可达64个中断源。中断向量指向各中断服务程序的起始 位置,这个是由用户编程的。表1-1列出了一些中断向量,可以参考芯片的数据手册来获得完整的中断向 量表。 表1-1 中断源,标志位和向量 Interrupt Source Interrupt Flag System Interrupt Word Address Priority 复位:上电复位、外部复位、看 门狗复位、FLASH 密钥错误 WDTIFG、KEYV Reset 0FFFEh 最高 系统不可屏蔽中断:PMM (Non)maskable 0FFFCh ... (Non)maskable 用户不可屏蔽中断:NMI 引脚事 NMIIFG、OFIFG、 (Non)maskable 0FFFAh ... 件、晶振失效、FLASH 非法访问 ACCVIFG (Non)maskable 芯片外围模块 0FFF8h ... ... ... ... 看门狗定时器 WDTIFG Maskable ... ... ... ... ... 保留 Maskable … 最低 一些中断使能位、中断标志位和RST/NMI引脚的控制位在特殊功能寄存器(SFR)中定义。SFR定位在 外设地址范围内,并可以通过字节或字指令来访问它。SFR的配置可以参阅具体芯片的数据手册。 1.3.6.1 备用中断向量 RAM 可以作为中断向量的备用地址空间。设置 SYSCTL 寄存器中的 SYSRIVECT 位可以将中断向量 重新映射到 RAM 区顶部。该位一旦置位,中断向量将放在 RAM 的备用位置区中。由于低电压复位后 SYSRIVECT 位自动清 0,所以 0xFFFEh 地址的复位向量仍然是有效的,此时,在软件处理时就需要注意。 1.3.7 SYS 中断向量发生 SYS模块集中了系统不可屏蔽中断(SNMI)、用户不可屏蔽中断(UNMI)及其他外围模块的 BOR/POR/PUC复位源。它们合并成了三个中断向量。中断向量寄存器SYSRSTIV、SYSSNIV、SYSUNIV 来确定到底是哪个标志位事件产生或者哪个复位事件产生的中断请求信号。当一组中断中优先级最高的中 断允许时,则会在相应的寄存器SYSRSTIV、SYSSNIV、SYSUNIV产生一个偏移量。这个偏移量直接加到 程序计数器(PC)上,此时程序会自动执行到中断处理程序中相关的分支处理部分。禁止中断不会影响 SYSRSTIV、SYSSNIV、SYSUNIV寄存器的值。读取SYSRSTIV、SYSSNIV、SYSUNIV的值时,系统会 自动复位这些寄存器中最高优先级的中断标志。如果还有中断标志位处于置位状态,则在响应完最初的中 断后会立即产生新的中断。对寄存器SYSRSTIV、SYSSNIV、SYSUNIV写操作时则会自动复位该组中所有 的中断标志位。 1.3.7.1 SYSSNIV 软件示例 下面的例程说明了寄存器SYSSNIV的推荐使用方法。SYSSNIV的值加到PC上,程序自动跳转到相应的中 断分支服务程序中。对于SYSRSTIV和 SYSUNIV也可以采用类似的方法。下面是芯片的应用例程。中断向量 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–9–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 的优先级在具体器件中可能不一样,其地址需要具体参考芯片的数据手册。代码中所有的向量最好都符号 化,这样可以很方便移植。 SNI_ISR: ADD RETI JMP JMP JMP JMP JMP JMP JMBO_ISR: ... RETI SVML_ISR: ... RETI SVMH_ISR: ... RETI DELL_ISR: ... RETI DELH_ISR: ... RETI VMA_ISR: ... RETI JMBI_ISR: ... RETI &SYSSNIV,PC SVML_ISR SVMH_ISR DLYL_ISR DLYH_ISR VMA_ISR JMBI_ISR ;Add offset to jump table ;Vector 0: No interrupt ;Vector 2: SVMLIFG ;Vector 4: SVMHIFG ;Vector 6: DLYLIFG ;Vector 8: DLYHIFG ;Vector 10: VMAIFG ;Vector 12: JMBINIFG ;Vector 14: JMBOUTIFG ;Task_E starts here ;Return ;Vector 2 ;Task_2 starts here ;Return ;Vector 4 ;Task_4 starts here ;Return ;Vector 6 ;Task_6 starts here ;Return ;Vector 8 ;Task_8 starts here ;Return ;Vector A ;Task_A starts here ;Return ;Vector C ;Task_C starts here ;Return 1.3.7.2 SYSBERRIV 总线错误中断向量发生器 对某些器件,如具有 USB 模块的器件,增加了一个系统中断向量发生器 SYSBERRIV。一般来说,任 何与系统总线或超时相关的错误相关都会产生一个用户不可屏蔽中断。此时,SYSUNIV 中将有一个与总 线错误(BUSIFG)相对应的偏移量,这个偏移量可以加到程序计数器上实现自动跳转到相应的不可屏蔽 中断分支程序中。同样,SYSBERRIV 包含一个总线错误具体事件的偏移量,在不可屏蔽中断服务程序中 SYSBERRIV 可 以 做 为 偏移 量加 到程 序计 数器 上实 现自 动跳 转到 相应 的分 支处 理程 序中 。这 样, SYSBERRIV 就可以认为是一个扩展的用户不可屏蔽中断向量。 1.4 工作模式 MSP430系列是为超低功耗的应用而设计,具有如图1-6所示的不同工作模式。 工作模式的选择主要考虑以下三方面的要求: 11、超低功耗 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–10–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 12、强大的数据处理能力 13、外围模块功耗最小 低功耗模式LPM0到LPM4可通过设置状态寄存器SR中的CPUOFF、OSCOFF、SCG0和SCG1位来实现。 把这些控制位放置在状态寄存器中的好处是在中断服务程序处理时能够把当前的操作模式保存到堆栈中。 如果在压入堆栈后被保护起来的SR值在中断服务程序处理过程中没有改变,那么当程序退出中断服务程序 时将返回到先前的操作模式。如果在中断过程中修改了压入堆栈中的SR寄存器的值,退出中断时将返回到 另一个不同的工作模式。一旦设置了不同的模式控制位,所选择的操作模式将立即生效。任何采用停止的 时钟作为时钟源的外设,其操作也将会停止,直到时钟重新激活。外设也可以通过相关寄存器设置而禁止。 在低功耗模式下,所有的I/O引脚和RAM寄存器将保持不变。可以通过开中断后用中断事件来唤醒LMP0 到LMP4。 当进入LPMx.5(LPM3.5和LPM4.5)模式时,PMM的电压调节器也停止工作。所有的RAM、寄存器 及IO口的配置数据都将丢失。LMP4.5可以通过电源序列、复位或具体的IO口来唤醒。LMP3.5可以通过电 源、RST/NMI、RTC或具体IO口来唤醒。 注:并不是所有的芯片中都有LPM3.5和LPM4.5的低功耗模式,请参阅芯片数据手册看是否存在 LPMx.5低功耗模式。 注:TEST/SBWTCK引脚是做为SBW和JTAG的开发工具接口,当TEST/SBWTCK为高电平时,从LPM2、 LPM3及LPM4模式下的唤醒时间是与TEST/SBWTCK为低时有区别的。特别注意的时,当使用开发工具 (如:MSP-FET430UIF),从LPM2、LPM3及LPM4模式退出时的一些区别,具体可以参考PMM模块。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–11–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图1-6 操作模式 SCG1 SCG0 OSCOFF CPUOFF 模式 0 0 0 0 活动模式 0 0 0 1 LPM0 0 1 0 1 LPM1 CPU和时钟状态 CPU、MCLK活动模式。ACLK活动。SMCLK选择性活动 (SMCLKOFF=0)。 DCO如果作为ACLK、SMCLK的时钟源则允许 如果DCO允许则FLL也允许 CPU、MCLK禁止 ACLK活动,SMCLK有选择的活动(SMCLKOFF=0) DCO如果作为ACLK、SMCLK的时钟源则允许 如果DCO允许或作为MCLK、SMCLK的时钟源则DCO偏置允许 如果DCO允许则FLL也允许 CPU、MCLK禁止 ACLK活动,SMCLK有选择的活动(SMCLKOFF=0) DCO如果作为ACLK、SMCLK的时钟源则允许 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–12–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 如果DCO允许或作为MCLK、SMCLK的时钟源则DCO偏置允许 FLL也禁止 1 0 0 1 1 0 1 1 1 1 LPM2 1 LMP3 1 LPM4 CPU、MCLK禁止 ACLK活动,SMCLK禁止 如果DCO作为ACLK的时钟源则允许 FLL禁止 CPU、MCLK禁止 ACLK活动,SMCLK禁止 如果DCO作为ACLK的时钟源则允许 FLL禁止 CPU和所有的时钟都禁止 1 1 1 1 LPM3.5 当PMMREGOFF=1是,调制器禁止,存储器不保持,此时如果 配置了RTC则RTC操作允许,可以参考RTC模块中的相关描述 1 1 1 1 LPM4.5 当PMMREGOFF=1时,调制器禁止,存储器不保持,此时所有 的时钟禁止,RTC也禁止 注:1)低功耗模式影响了对时钟有需求的系统,请参考统一时钟系统模块 2)LPM3.5与LPM4.5并不是在所有的器件中都有,请参考相应的数据手册。 1.4.1 进入和退出低功耗模式(LPM0~LPM4) 任何使能的中断事件都可以把MSP430从低功耗模式(LPM0到LPM4)中唤醒。退出低功耗模式 (LPM0~LPM4)的流程如下: 14、进入中断服务程序: —PC 和 SR 被压入堆栈 —CPUOFF、SCG1 和 OSCOFF 自动复位 15、从中断服务程序中返回的设置: —最初的SR从堆栈中弹出,恢复之前的操作模式。 —如果在中断服务程序中修改了存储在堆栈中的状态寄存器(SR),则在执行完RETI指令后将 返回到另一个不同的工作模式。 ;Enter LPM0 Example BIS #GIE+CPUOFF,SR ; ... ; ;Exit LPM0 Interrupt Service Routine BIC #CPUOFF,0(SP) RETI ;Enter LPM0 ;Program stops here ;Exit LPM0 on RETI ;Enter LPM3 Example BIS #GIE+CPUOFF+SCG1+SCG0,SR ; ... ; ;Exit LPM3 Interrupt Service Routine BIC #CPUOFF+SCG1+SCG0,0(SP) RETI ;Enter LPM3 ;Program stops here ;Exit LPM3 on RETI 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–13–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM ;Enter LPM4 Example BIS #GIE+CPUOFF+OSCOFF+SCG1+SCG0,SR ; ... ; ;Enter LPM4 ;Program stops here ;Exit LPM4 Interrupt Service Routine BIC #CPUOFF+OSCOFF+SCG1+SCG0,0(SP) ;Exit LPM4 on RETI RETI 1.4.2 进入和退出低功耗模式(LPMx.5) 低功耗模式LPMx.5的进入和退出与其他低功耗模式不同。恰当的使用LPMx.5模式,可以获得更低的 功耗。为了实现这点,进入LPMx.5模式后将禁止PMM模块中的LDO,也就停止了芯片内核供电。由于停 止了内核供电,所有的寄存器、SRAM的内容都将丢失。退出LPMx.5模式时将产生一个BOR事件,会导致 系统完全复位。因此在退出LPMx.5模式后,用户应根据需要重新配置芯片。 从LPMx.5模式下唤醒的时间要大于其他低功耗模式的唤醒时间(具体参考数据手册)。这主要是在 LPMx.5退出后内核供电的产生是需要花费一些时间的,而且在其他应用程序执行前需要重新执行引导代 码。因此,LPMx.5只适合在工作周期非常短的场合应用。 LPMx.5有两种模式,LPM3.5和LPM4.5。并不是所有器件都支持这两个模式,可参考数据手册获得详 细信息。LPM4.5保证了最低系统功耗,此模式下没有任何处于活动模式的时钟。LPM3.5与LPM4.5类似, 但还有一个RTC模式有效。除了LPM4.5模式下的唤醒事件外,在LPM3.5模式下也可用RTC唤醒事件来唤 醒。 进入LPMx.5的流程: 16、适当配置 IO 口。请参阅数字输入/输出章节获取 IO 口设置信息; —将所有的端口设置为通用 IO 口,实际应用的每一个端口保证没有悬空输入管脚。 —如果希望通过 IO 口唤醒,请恰当配置具有中断能力的相关 IO 口。 17、在 LPM3.5 模式下如果希望通过 RTC 来唤醒时,则需要配置 RTC 的中断; 18、进入 LPMx.5。下面的例程说明了如何进入 LPMx.5 模式,也可在 PMM 章节中得到更详细的 信息。 ; enter LPM5 example MOV.B #PMMPW, &PMMCTL0_H ; open PMM registers for write BIS #PMMREGOFF, &PMMCTL0 ; BIS #GIE+CPUOFF+OSCOFF+SCG1+SCG0,SR ;enter LPM5 when PMMREGOFF is set LPM5模式可以通过复位事件、上电或通过具体的IO口来退出,从LPMx.5模式下退出都会产生一次 BOR事件。程序将在执行完引导代码后重新从0xFFFEh处的复位向量处执继续行。唤醒后,在PMM模块中 PMMLPM5IFG将被置位,该位置位的作用是用于提示唤醒之前芯片是处在LPMx.5模式的。另外, SYSRSTIV=08h,会产生有效复位。在LPMx.5模式下,所有的IO口被锁定在当前状态。退出LPM5模式后, IO口的状态将一直保持锁定状态直到应用程序解除锁定。具体信息可参考数字IO章节部分。如果是在 LPM3.5模式下,持续工作的RTC也会不断唤醒LPM3.5模式。下面是从LPMx.5的退出流程: 19、进入系统复位程序 —根据实际应用需要重新配置系统 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–14–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM —根据实际需要重新配置相关 IO 口 1.4.3 低功耗模式下的延长时间 当通过禁止DCO来延长低功耗模式的时间时,就必须要考虑DCO的温度系数。如果温度变化较大,在 唤醒时的DCO频率可能和与进入低功耗模式前的频率不同,也可能会超出其操作范围。为了避免这种情况, 可以在进入低功耗模式前,将DCO设置成当前温度下可以工作的最低值。 ;Enter LPM4 Example with lowest DCO Setting BIC #SCG0, SR ;Disable FLL MOV #0100h, &UCSCTL0 ;Set DCO tap to first tap, clear modulation. BIC #DCORSEL2+DCORSEL1+DCORSEL0,&UCSCTL1 ;Lowest DCORSEL BIS #GIE+CPUOFF+OSCOFF+SCG1+SCG0,SR ;... ;Enter LPM4 ;Program stops ; ;Interrupt Service Routine BIC #CPUOFF+OSCOFF+SCG1+SCG0,0(SR) ;Exit LPM4 on RETI RETI 1.5 低功耗应用的原则 通常,降低功耗最重要是使用系统时钟,以延长其在LPM3或LPM4模式下的时间。 20、使用中断唤醒处理器来控制程序流程 21、只有在需要时才打开外设 22、使用低功耗的集成外设模块取代软件处理功能。例如 Timer_A 和 Timer_B 可以自动产生 PWM 和捕获外部时序,而不占用 CPU 资源。 23、使用分支程序和快速查表的方法来替代查询标志位和长时间的软件计算。 24、避免频繁的子程序和函数调用。 25、在较长的软件程序中尽量使用单周期 CPU 寄存器。 如果在应用中有短暂性的周期工作并对反应速度不敏感的场合,可以最大化的利用 LPMx.5 模式来降 低功耗。 1.6 未使用引脚的连接 对未使用的引脚其正确使用如表1-2所示。 引脚 电平 说明 AVcc DVcc AVss DVss Px.0~Px.7 开路 切换到IO功能,输出方向 /RST/NMI DVcc或Vcc 47KΩ上拉10nF(2.2nF)下拉 TDO/TDI/TMS/TCK 开路 TEST 开路 表1-2 未使用引脚的接法 注:当使用具有SBW接口的芯片在SBW或JTAG模式下仿真或编程时,复位下拉电容不应该超过2.2nF,特别 是使用FET工具或编程器时。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–15–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 1.7 /RST/NMI引脚配置 复位引脚可以配置成复位功能(默认)或通过设置 SFR 寄存器的 SFRRPCR 位来配置成 NMI 功能。 SYSNMI 置位,可以把/RST/NMI 引脚配置成外部 NMI 信号的输入源。外部不可屏蔽中断是边沿有效且可 以通过 SYSNMIIES 位来设定有效沿。NMIIE 置位,则允许外部 NMI 中断,一旦发生外部不可屏蔽中断, NMIIFG 将置位。 /RST/NMI 引脚可以配置成上拉、下拉或什么都不选择,SYSRSTUP 选择上拉或下拉,SYSTSTRE 用 于选择上/下拉允许还是禁止。如果/RST/NMI 引脚未使用,必须注意要允许内部上/下拉电阻的使能,或按 照表 1-2 的参数选择使用外部电阻。 注:除了 543x(非 A)之外的所有器件都允许内部上拉,此时可不再需要外部上拉电阻。 1.8 配置JTAG引脚 JTAG 引脚与通用 IO 口复用,有几种软件方法用来选择 JTAG 的 4 线制功能。通常,BOR 后, SYSJTAGPIN 是清零的,由于该位为 0,所以 JTAG 设置为通用 IO 口,具体参考数字 IO 章节,此时 JTAG 引脚是作为通用 IO 口使用的。如果 SYSJTAG=1,JTAG 引脚将配置成 4 线 JTAG 模式并且将一直保持到 下一个低电压复位产生。因此,SYSJTAGPIN 只能进行一次性的写操作。如果想使器件从 4 线 JTAG 模式 切换到通用 IO 模式,是不能通过软件清除该位的。 1.9 启动代码 启动代码总是在低电压复位之后执行。启动代码装载出厂默认的振荡器和参考电压的校准值。另外, 它还检查 BSL 的入口时序,同时还检查是否有用户自定义的 BSL。 1.10 Bootstrap装载区(BSL) BSL 是上电后出现特定的 BSL 入口时序时才执行的一段代码。它允许用户在样机、最终产品、售后服 务阶段与微控制器中的嵌入存储器进行通信。所有被映射的存储器资源,包括可编程存储器(Flash 存储 器)、数据存储器(RAM)和外设,均可根据需要通过 BSL 进行修改。用户也可以根据具体的需要定义自 己的 BSL 代码(特定的 Flash 类型芯片),来防止 Flash 被无意擦除或未经授权的存取访问。 TI 提供了一个基本 BSL 程序。它支持通常的带有 RS232 接口的 UART,允许用户免费使用其软、硬件。 为启用 BSL,需要在具体的管脚上加载特定的 BSL 时序。正确的入口时序可以使 SYSBSLIND 置位。如果需 要响应特定的功能则需要增加一些特定的命令序列。 用户通过对一个自定义地址的编程操作或执行标准复位就可以退出 BSL。由于用户自定义口令从而防 止了误操作,这种方式保护了通过 BSL 方式对内存的访问。更多具体信息可参考 www.ti.com/msp430 网站 上 MSP430 Memory Programming User’s Guide(slau265)。 BSL 存储器的地址可以参考数据手册,其存储器大小可以通过设置 SYSBSLSIZE 位来配置。也可以将 BSL 存储器定位到 RAM 中,设置 SYSBSLR 位可以将 BSL 定位到 RAM 的最低 16 个字节中。BSL 存储器 是受保护的,外部是不可能从受保护的存储器中读取数据。 在某些 BSL 应用中,可以根据需要改变 PMM 的配置来保护 BSL 段存储器,此时可以通过 SYSPMMPE 位来实现。通常来说,这个位清零时,是允许从任何存储器中访问 PMM 控制寄存器。当 SYSPMMPE 位 置位时,只允许在 BSL 存储器中访问 PMM 寄存器。一旦该位置位,只能通过 BOR 事件来清除 SYSPMMPE 位。 1.11 存储器映射-用法和功能 下图是 MSP430F5438 的内存映射图。尽管不同芯片的地址范围不同,但整体上是相同的。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–16–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM (1)对 SYS 和 PMM 来说,访问权限可以单独编程; (2)所有 MSP430 都有固定 ID,参考 1.13.1 章节; (3)在保留内存地址中,数据总线的数据是 03FFFh。 1.11.1 空存储器空间 空存储器是指不存在的存储器空间,当VMAIE=1,对空存储器空间的访问将产生一个系统不可屏蔽中 断(SNMI)。从空白地址读将得到0x3FFFh。在CPU取指令过程中,它就相当于JMP $。从外围设备的空存 储器空间取指令将产生一次PUC。启动代码执行之后,访问空白外设空间就和访问空内存地址一样,也将 会产生一次不可屏蔽中断。 1.11.2 具有保密熔丝的JTAG锁定机制 通过禁止 JTAG 或 SBW 接口,可以禁止未授权的访问。这点可以通过编程保密熔丝位来实现。保密 熔丝编程后,则完全禁止了与 JTAG 或 SBW 接口相关的调试或访问功能,而且这点是不可逆的。对 JTAG 功能的锁定是通过在芯片的特定地址内对确定的信号编程实现的。JTAG 密码的存储地址是 17FCh~17FFh, 其位于 BSL 存储器的末尾地址。在该地址内写入任何的非 0H 或 FFFFFFFFH 数据都将会禁止 JTAG 功能 接口,而且是不可恢复的。 所有的 F5xx 芯片都有可编程的 BSL 代码,这些代码在默认情况下可防止误擦除或写存储器操作,这 点可以通过设置 SYSBSLC 寄存器中的 SYSBSLPE 位来完成。由于 JTAG 的密码存放在 BSL 存储区地址中, 所以在对保护密码编程之前需要对不受保护的 BSL 存储器区域采取一些必要的措施。具体信息可参阅 www.ti.com/msp430 网站 MSP430 Memory Programming User’s Guide(slau265)。 芯片加密后,起始仍会有一些 JTAG 命令可以使用,包括 BYPASS 命令(见 IEEE1149-2001 标准)和访 问 JTAG 邮箱系统的 JMB_EXCHANGE 命令。(具体信息见表 7-2) 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–17–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 1.12 JTAG邮箱系统(JMB) SYS 模块具有可以通过标准 JTAG 调试/测试接口与用户交换数据的功能。JMB 的意思就是在对芯片进 行调试、编程和测试时能够与 CPU 有一个直接的通讯接口,对所有 430 系列芯片来说,该接口基本上都是 相似的,并且它很少或几乎不占用用户的应用资源。选用 JTAG 接口的原因是所有 430 芯片都有 JTAG 接口, 并且该接口是专门用于调试、编程和测试的。 JMB 的应用实例: 26、提供芯片锁定/解锁保护的入口口令 27、实时的数据交换(RTDX) 1.12.1 JMB 配置 JMB 支持 16 位和 32 位两种传输模式,JMBMODE 置位时为 32 位传输模式,清零为 16 位传输模式。 1.12.2 JMBOUT0 及 JMBOUT1 输出邮箱 有两个16位的寄存器可用于JTAG端口输出消息。16位模式下只使用JMBOUT0(JMBMODE=0) ,32位模 式下除了JMBOUT0外还有JMBOUT1(JMBMODE=1)。当应用程序要发送信息给JTAG端口时,在16位传输模式下 将数据写到JMBOUT0寄存器,32位模式下写到JMBOUT0、JMBOUT1寄存器。 JMBOUT0FG和JMBOUT1FG是分别代表JMBOUT0和JMBOUT1状态的只读标志。JMBOUT0FG置位,表示JMBOUT0 数据已经被JTAG端口读出,准备接收新数据。JMBOUT0FG清零,表示JMBOUT0还没有准备好接收新数据。 JMBOUT1FG也同理。 1.12.3 JMBIN0及JMBIN1输入邮箱 有两个16位的寄存器用于JTAG端口的输入消息。16位模式下使用JMBIN0(JMBMODE=0) ,32位模式下 除了JMBIN0外还有JMBIN1(JMBMODE=1)。当JTAG端口要发送信息到给应用程序时,在16位传输模式下将数 据写到JMBIN0寄存器,32位模式下写到JMBIN0、JMBIN1寄存器。 JMBIN0FG和JMBIN1FG是分别代表MBIN0和JMBIN1状态的只读标志。JMBIN0FG置位,表示JMBIN0已经有 有效数据了。JMBIN0FG清零,表示JMBIN0还没有有效的新数据。JMBIN1FG也同理。 JMBIN0FG和JMBIN1FG可以通过清除JMBCLR0OFF和JMBCLR1OFF位来配置成自动清除,否则该标志就必须 通过软件来清除。 1.12.4 JMB的NMI使用 可以将JMB的握手机制配置成中断模式从而避免不必要的查询。在16位模式下,当JMBOUT0已从JTAG 端口获取数据并准备接收新数据时,JMBOUTIFG置位。在32位模式下,当JMBOUT0、JMPOUT1都从JTAG 端口获取数据并准备接收新数据时,JMBOUTIFG才置位。如果JMBOUTIE置位,将会产生不可屏蔽中断。 在16位传输模式下,将数据写到JMBOUT0后,JMBOUTIFG自动清除。在32位模式下,数据写到JMBOUT0 和JMBOUT1后,JMBOUTIFG才自动清除。此外,读SYSSNIV寄存器值,JMBOUTIFG也会清除。清除 JMBOUTIE将禁止产生不可屏蔽中断。 在16位传输模式下,JMBIN0有有效数据时,JMBINIFG置位。在32位模式下,JMBIN0、JMBIN1同时 有有效数据时,JMBINIFG才置位。此时如果JMBINIE置位,还将会产生系统不可屏蔽中断。在16位传输 模式下,从JMBIN0读取数据后,JMBINIFG将自动清除。在32位模式下,只有当JMBIN0和JMBIN1数据均 被读取后,JMBINIFG才自动清除。此外,读SYSSNIV寄存器值,JMBINIFG也将清零。清除JMBINIE将禁 止不可屏蔽中断。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–18–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 1.13 设备描述符表 每款芯片的存储器内都有一种数据结构,通过该数据结构可以明确识别芯片类型,同时对于给定的芯 片中,还有一些更详细的关于模块的描述信息。SYS 可以提供这些信息,还可被 SW 工具及用于识别芯片型 号和内部模块的功能库使用。芯片描述表的合法性可以通过 CRC(循环冗余校验)来检验。图 1-7 描述了 芯片描述表的逻辑及结构,完整的芯片描述表及内容可以在芯片的数据手册中找到。 图 1-7 设备描述表 1.13.1 识别芯片类型 存放在地址 00FF0h 中的值用来表示芯片所属系列。80h 表示帧头,该帧由信息块和一个包括各种描述 符的 TLV(标记长度值)结构组成。在地址 00FF0h 读出非 80h 值则表示该芯片为早期的版本系列。如图 1-7 所示,该信息块包含了芯片 ID 号、晶圆版本号、固件版本号以及一些其他的厂商信息和相关工具信息。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–19–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 该描述表还包括了可用的外设、子类型和地址等相关信息,以及为操作系统建立匹配的 HW 驱动所需的信 息。 用信息长度表示描述符长度的计算公式如下: Length = 2info_length, 32 位的长度 例如:当 info_length =5 时,描述符的长度为 25×32 = 1024 位 = 128 个字节 1.13.2 TLV描述符 TLV 描述符在信息块之后,由于信息块长度固定,所以对具体系列的芯片来说,TLV 描述符的起始地 址也是固定的。对于 MSP430F5xx 系列来说,地址为 01A08h,可在芯片的数据手册中获得完整的 TLV 结 构和及描述符信息。 TLV 描述符对 TLV 块来说是唯一的,并且它后面是描述块的长度,然后是 TLV 描述符内容。每一个 TLV 描述符都包括标识描述类型的标签字段。表 1-3 所示为目前支持的标记符。 表 1-3 标记值 简称 值 描述 LDTAG 01h 向上兼容符(1xx, 2xx, 4xx 系列) PDTAG 02h 外围模块描述符 Reserved 03h 保留将来使用 Reserved 04h 保留将来使用 BLANK 05h 空描述符 Reserved 06h 保留将来使用 ADCCAL 11h ADC 校准字 REFCAL 12h REF 校准字 Reserved 13h-FDh 保留将来使用 TAGEXT FEh 扩展标签 每一个标签字段相对各自的描述符来说都是唯一的,且其后总是跟着长度字段。如果标签值为 01~0FDH 且用字节表示的话,则长度字段是一个字节。如果标签值为 0FE(TAGEXT),那么下一个字节 是扩展标签值,且此后的两个字节表示描述符的字节长度。这样,用户可以采用与下面伪代码类似的程序, 通过搜索 TLV 描述符表确定标签值。 // Indentifiy the descriptor ID (d_ID_value) for the TLV descripotor if interest: Descriptor_address = TLV_START_address; While( value at descriptor_address != d_ID_value && descriptor_address != TLV_TAGEND && descriptor_address < TLV_END) { // point to nex descriptor Descriptor_address = descriptor_address + (length of the current TLV block) +2; } If(value_at_descriptor_address == d_ID_value) { // appropriate TLV descriptor has been found! Return length_of_descripotr & descriptor_address as the location of the TLV descriptor } Else { 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–20–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM // NO TLV descriptor found with a matching d_ID value Return a failing condition } 1.13.3 外围模块描述符 此类描述符类型可描述连续或分散存储器和外围模块的地址映射,也包括中断向量的数量和它们的顺 序。外围模块描述符的标签值为02H(PDTAG)。表1-4所示为外围设备描述符: 表1-4 外围模块描述符 元素 长度(字节) 注释 存储器1 2 可选 存储器2 2 可选 … 2 可选 分隔符(00H) 1 强制 外围模块个数 1 强制 外围模块1 2 可选 外围模块2 2 可选 … 2 可选 中断优先级N-3 1 可选 中断优先级N-4 1 可选 … 1 可选 分隔符(00H) 1 强制 存储器及外围模块入口结构如下所示,存储器入口包含两个字节(一个字),表1-5所示为存储器入口 字的每一位及它们的意义。同样,外围模块入口也包含两个字节(一个字),表1-6所示为外围模块入口字 的每一位及它们的意义。 表1-5 存储器入口值 Bit fields [15:13] [12:9] [8] [7] [6:0] Memory type Size More Unit Size Address value 000: None 0000: 0 B 0: End Entry 0: 0200h 0000000 001: RAM 0001: 128 B 1: More Entries 0: 010000h 0000001 010: EEPROM 0010: 256 B 0000010 011: Reserved 0011: 512 B 0000011 100: FLASH 0100: 1 KB 0000100 101: ROM 0101: 2KB 0000101 110: MemType appended 0110: 4 KB 0000110 111: Undefined 0111: 8 KB 0000111 1000: 16 KB 0001000 1001: 32 KB 0001001 1010: 64 KB 0001010 1011: 128 KB 0001011 1100: 256 KB 0001100 1101: 512 KB ... 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–21–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 1110: Size appended 1111: Undefined 表1-6 外围入口值 Bit fields ... 1111111 [15:8] [7] [6:0] Peripheral ID (PID) Any PID UnitSize 0: 010h AdrVal 0000000 Any PID Any PID 1: 0800h 0000001 0000010 Any PID Any PID 0000011 0000100 Any PID 0000101 Any PID ... Any PID ... Any PID 1111111 表1-7外围IDs 外围模块 PID No Module 00h WDT 01h SFR 02h UCS 03h SYS 04h PMM 05h Flash Controller 08h CRC16 09h Port 1, 2 51h Port 3, 4 52h Port 5, 6 53h Port 7, 8 54h Port 9, 10 55h Port J 5Fh Timer A0 81h Timer A1 82h Special info appended FEh Undefined module FFh 注:上述列表并未完全列出所有的相关设备,这里仅是个例子。 表1-8为一个设定外围设备描述符的简单例子: 表1-8采样外围设备描述 十六进制 二进制 类型 描述 030h,0Eh 001_1000_ 0_0_0001110 存储器 RAM 16 KB; 起始地址 = 01C00h (0Eh × 0200h) 09Bh,02Eh 100_1011_0_0_0101110 存储器 FLASH 128 KB; 起始地址 = 05C00h (2Eh × 0200h) 00h 0000_0000_0000_0000 分割符 存储器结束 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–22–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 0Fh 0000_1111 外围模块的 外围模块的数量 = 15 数量 02h,10h 01h,01h 00000010_0_0010000 00000001_0_0000001 外围模块 外围模块 SFR 的地址= 0100h (10h × 10h) WDT 的地址 = 0110h (0100h + 10h) 05h,01h 03h,01h 00000101_0_0000001 00000011_0_0000001 外围模块 外围模块 PMM 的地址 = 0120h (0110h + 10h) UCS 的地址= 0130h (0120h + 10h) 08h,01h 00001000_0_0000001 外围模块 FLCTL 的地址= 0140h (0130h + 10h) 09h,01h 04h,01h 00001001_0_0000001 00000100_0_0000001 外围模块 外围模块 CRC16 的地址= 0150h (0140h + 10h) SYS 的地址= 0160h (0150h + 10h) 51h,0Ah 01010001_0_0001010 外围模块 Port 1, 2的地址= 0200h (0160h + 10h × 10h) 52h,02h 01010010_0_0000010 外围模块 Port 3, 4的地址= 0220h (0200h + 02h × 10h) 53h,02h 54h,02h 01010011_0_0000010 01010100_0_0000010 外围模块 外围模块 Port 5, 6 的地址= 0240h (0220h + 02h × 10h) Port 7, 8的地址= 0260h (0240h + 02h × 10h) 55h,02h 01010101_0_0000010 外围模块 Port 9, 10 地址 = 0280h (0260h + 02h × 10h) 5Fh,0Ah 01011111_0_0001010 外围模块 Port J 的地址= 0320h (0280h + 0Ah × 10h) 81h,02h 10000001_0_0000010 外围模块 Timer A0 地址= 0340h (0320h + 02h × 0h) 82h,04h – 10000010_0_0000100 外围模块 Timer A1的地址= 0380h (0340h + 04h × 10h) 模块结束 SYSRSTIV @ 0FFFEh SYSSNIV @0FFFCh SYSUNIV @ 0FFFAh 81h 1000_0001 中断 TA0 CCR0 @ 0FFF8h 81h 1000_0001 中断 TA0 CCR1, CCR1, TA0IFG @ 0FFF6h 51h 0101_0001 82h 1000_0010 中断 中断 Port 1 @ 0FFF4h TA1CCR0 @ 0FFF2h 51h 0101_0001 81h 1000_0010 中断 中断 Port 2 @ 0FFF0h TA1 CCR1, CCR1, TA1IFG@ 0FFEEh 00h 0000_0000 分隔符 中断结束 在这个例子中,存储器类型为RAM(bits[15:13] = 001),其大小为16KB(bits[12:9] = 1000),起始 地址为01C00h。起始地址是通过描述域bits[7]来定义的,这里为0200h,在乘上地址值(bits[6:0] = 0001110)。这样,可以得到0200h × 00Eh = 01C00h。 注意:中断顺序有些默认的规则: l 对于定时器来说,CCR0中断比其他的CCRn中断优先级高。 l 对于通信端口来说,RX比TX优先级高。 l 对于端口对来说,PORT1比PORT2优先级高,PORT3比PORT4优先级高等等 1.13.4 校准值 TLV结构中还包含提高各功能测量能力的校准值。具体的校准值可在芯片数据手册的TLV结构中查找 到。 1.13.4.1 REF校准 REF模块的校准值由三个字组成,每一个字对应一个参考电压(1.5、2.0、2.5V)。参考电压是在室温 环境下测量的。这些测量值在存入TLV结构前进行了标准化处理。如下所示: 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–23–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 这样,转换的结果可以通过乘以这些校准因子,再除以 2 的 15 次方来进行校正,相对不同的参考电 压的表达式如下。 如:转换中的参考电压是 1.5V。 转换结果:0x100 = 256(十进制) 参考电压校正因子(CAL_15VREF_FACTOR):0x7BBBh 下面将描述如何对 AD 转换结果进行校正: 将转换结果乘以 2(该步骤简化了最后的除法):0x100 × 0x0002 = 0x0200 结果乘以 CAL_15VREF_FACTOR:0x200 × 0x7BBB = 0x00F7 7600 结果除以 216:0x00F7 7600/0x00010000 = 0x0000 00F7 = 247(十进制) 1.13.4.2 ADC偏置及增益校正 ADC 的 偏 置 是 按 照 二 进 制 补 码 的 形 式 存 放 在 TLV 结 构 中 的 。 在 ADC 转 换 结 果 上 加 上 CAL_ADC_OFFSET 值完成偏移误差校正。 ADC12 的增益按照如下公式来计算: 转换的结果通过乘以 CAL_ADC_GAIN_FACTOR 后再除以 215 得到正确的增益值: 如果增益和偏置都需要校正,则首先需要校正增益值: 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–24–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 1.13.4.2 温度传感器校正 温度传感器的校正使用了内部的参考电压,每个参考电压(1.5/2.0/2.5V)包含对应两个温度值(30℃ ±3℃、80℃±3℃)的一个测量值,并存放在 TLV 结构中。温度传感器的电压的特征方程如下,用 mv 单 位: 温度系数 TCsensor,单位为 mv/℃,为方程的斜率,Vsensor 单位为 mv,为 Y 轴截距。Temp 单位为℃,这 个是重点要关注的。 采用不同参考电压的 ADC 测量中的温度值按照如下的公式来计算: 1.14 特殊功能寄存器 表1-10为特殊功能寄存器(SFR)列表,特殊功能寄存器的基地址如表1-9所列。特殊功能寄存器里很 多位在用户指南的其他章节里都有描述。这里仅对这些位作了一些标注和参考说明,具体信息可以参考各 个模块的章节。 模块 SFR 表1-9 SFR基地址 基址 00100H 寄存器 中断使能 中断标志 复位引脚控制 缩写 SFRIE1 SFRIE1_L(IE1) SFRIE1_H(IE2) SFRIFG1 SFRIFG1_L(IFG1) SFRIFG1_H(IFG2) SFRRPCR 表1-10 特殊功能寄存器 寄存器类型 访问形式 读/写 字 读/写 字节 读/写 字节 读/写 字 读/写 字节 读/写 字节 读/写 字 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 初始状态 0000h 00h 00h 0082h 82h 00h 0000h 第–25–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM SFRRPCR_L SFRRPCR_H 读/写 读/写 字节 00h 字节 00h 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–26–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM SFRIFG1 15 14 13 12 11 10 9 8 保留 7 6 JMBOUTIFG JMBINIFG 5 保留 4 3 2 1 0 NMIIFG VMAIFG 保留 OFIFG WDTIFG JMBOUTIFG Bit7 JTAG 邮箱输出中断标志 0 没有中断产生。在16位模式(JMBMODE=0)下,JMBO0被 CPU写入时,该位会自动复位。在32位模式(JMBMODE=1),JMBO0 和JMBO1均被写时,该位自动复位。SYSUBIV内的相关中断向量 被读时,该位也会复位。 1 中断产生。JMBO寄存器已经准备好接收新数据。在16位模式 下(JMBMODE=0),JMBO0已经被JTAG接收。在32位模式 (JMBMODEl=1),JMBO0和JMBO0都被JTAG接收。 JMBINIFG Bit6 JTAG 邮箱输入中断标志 0 没有中断产生。在16位模式(JMBMODE=0)下,JMBI0被CPU 读时,该位会自动复位。在32位模式(JMBMODE=1),JMBI0和 JMBI1均被读时,该位自动复位。当在SYSUBIV内的相关中断向量 被读时,该位也会复位。 1 中断产生。JMBIN寄存器有新数据。在16位模式 (JMBMODE=0),JMBO0已经被JTAG写入。在32位模式 (JMBMODEl=1),JMBO0和JMBO0都被JTAG写入。 NMIIFG Bit4 不可屏蔽中断引脚中断标志 0 没有中断产生 1 有中断产生 VMAIFG Bit3 空白内存访问中断标志 0 没有中断产生 1 有中断产生 OFIFG Bit1 晶振故障中断标志 0 没有中断产生 1 有中断产生 WDTIFG Bit0 看门狗中断标志。看门狗模式下,WDTIFG位一直为1,直到由用户 软件复位。在间隔模式,通过响应中断服务程序复位或用户软件复 位。由于~IFG1中的其他位可能用于其他的模块,建议使用BIS.B或 BIC.B指令来清除WDTIFG,而不是MOV B 或 CLR B指令。 0 没有中断产生 1 有中断产生 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–27–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM SFRIE1 中断使能寄存器 15 7 JMBOUTIE 14 6 JMBINIE 13 5 ACCVIE 12 11 保留 4 3 NMIIE VMAIE 10 2 保留 9 1 OFIE 8 0 WDTIE JMBOUTIE Bit7 JTAG邮箱输出中断使能 0 中断禁止 1 中断允许 JMBINIE Bit6 JTAG邮箱输入中断使能 0 中断禁止 1 中断允许 ACCVIE Bit5 FLASH控制器非法访问中断使能 0 中断禁止 1 中断允许 NMIIE Bit4 不可屏蔽中断引脚中断使能 0 中断禁止 1 中断允许 VMAIE Bit3 空白内存访问中断使能 0 中断禁止 1 中断允许 OFIE Bit1 晶振失效中断使能 0 中断禁止 1 中断允许 WDTIE Bit0 看门狗定时器中断使能。该位使看门狗工作在间隔定时器模式下, 如果设置在看门狗模式,无需将该位置位。由于~IE1可能用于其他 模块,建议使用BIS B 或BIC B 来置位或清零,而不是 MOV B 或CLR B指令。 0 中断禁止 1 中断允许 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–28–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM SFRRPCR 复位引脚控制寄存器 15 14 13 12 11 10 9 8 保留 7 6 5 4 3 2 1 0 保留 SYSRSTRE SYSRSTUP SYSNMIIES SYSNMI SYSRSTRE Bit3 SYSRSTUP Bit2 SYSNMIIES Bit1 SYSNMI Bit0 复位引脚的电阻使能 0 禁止RST/NMI引脚的上拉/下拉电阻 1 允许RST/NMI引脚的上拉/下拉电阻 复位引脚的电阻上拉/下拉 0 选择下拉 1 选择上拉 NMI沿选择。SYSNMI=1时,选择不可屏蔽中断的有效跳变沿。修改 该位值会触发不可屏蔽中断。在SYSNMI为0时,修改该值可以避免 偶然的不可屏蔽中断。 NMI选择。该位是选择RST/NMI引脚的功能。 0 复位功能 1 NMI功能 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–29–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 1.15 SYS设置寄存器 SYS配置寄存器及基址在表1-11中列出,同时对寄存器的详细信息和每一位也有描述。每个寄存器地 址在存储器中是遵循字的存储原则。字或字节数据都可以写入SYS设置寄存器。 注:所有的寄存器都可字或字节访问。对通用寄存器ANYNEG,后缀“_L”(ANYNEG_L)涉及到寄存 器的低字节(0~7位),后缀“_H”(ANYNEG_H)涉及到寄存器的低字节(8~15位)。 表1-11 SYS基地址 ———————————————————— 模块 基址 ———————————————————— SYS 00180H _______________________________________ 表1-12 SYS配置寄存器 寄存器 缩写 寄存器类型 访问形式 初始状态 系统控制器 JTAG邮箱控制 JTAG邮箱输入0 JTAG邮箱输入1 JTAG邮箱输出0 JTAG邮箱输出1 总线错误向量发生器 用户NMI向量发生器 系统NMI向量发生器 复位向量发生器 SYSCTL SYSCTL_L SYSCTL_H SYSBSLC SYSBSLC_L SYSBSLC_H SYSJMBC SYSJMBC_L SYSJMBC_H SYSJBMI0 SYSJBMI0_L SYSJBMI0_H SYSJBMI1 SYSJBMI1_L SYSJBMI1_H SYSJBMO0 SYSJBMO0_L SYSJBMO0_H SYSJBMO1 SYSJBMO1_L SYSJBMO1_H SYSBERRIV SYSUNIV SYSSNIV SYSRSTIV 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读 读 读 读 字 字节 字节 字 字节 字节 字 字节 字节 字 字节 字节 字 字节 字节 字 字节 字节 字 字节 字节 字 字 字 字 0000h 00h 00h 0003h 03h 00h 0000h 00h 00h 0000h 00h 00h 0000h 00h 00h 0000h 00h 00h 0000h 00h 00h 0000h 0000h 0000h 0002h 控制寄存器(SYSCTL) 15 14 13 12 11 10 9 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 8 第–30–页 共 423 页 7 6 保留 保留 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 保留 5 SYSJTAG PIN 4 SYSBSLIND 3 保留 2 SYSPMM PE 1 保留 0 SVSRI VECT SYSJTAGPIN Bit5 SYSBSLIND Bit4 SYSPMMPE Bit2 SYSRIVECT Bit0 专用 JTAG 脚使能。该位置位,禁止 JTAG 引脚的复用功能,并 永久打开 JTAG 功能。该位只能设置一次。一旦它置位,将保持 直到产生掉电复位。 0 JTAG引脚可复用。 1 专门的JTAG功能。 BSL入口指示。该位指示在SBW脚检测到的BSL入口序列。 0 没有检测到BSL入口序列 1 检测到BSL入口序列 PMM 访问保护。控制 PMM 控制寄存器的访问。一旦置位,将 保持直到产生掉电复位。 0 从内存中的任何地址访问 1 只从被保护的BSL段(01B00h-01BFFh)访问 基于RAM的中断向量 0 中断向量在64KFLASH的顶部(0xFFFFh) 1 中断向量RAM的顶部 SYSBSLC BSL装载器配置寄存器 15 14 13 12 SYSBSLPE SYSBSLOFF 7 6 5 4 保留 11 10 9 8 保留 3 2 1 0 SYSBSLR SYSBSLSIZE SYSBSLPE Bits15-7 SYSBSLOFF Bits14-6 SYSBSLR Bit2 SYSBSLSIZE Bits1-0 SYSBSLSIZE设定大小的BSL内存保护允许。芯片由TI进行BSL 编程及保护,所以该位默认是1。 0 该存储区不被保护,对BSL区域进行读、编程、擦除操作 都有可能。 1 该存储区被保护。 SYSBSLSIZE大小范围内的BSL内存禁止。 0 读此区域时,BSL被寻址。 1 与空白存储器类似。读操作引起3FFFh被读,取指令导致 JMP$指令执行。 RAM分配到BSL区域 0 没有RAM分配到BSL区域 1 RAM的低16位分配到BSL区域 程序引导区大小。定义Flash存储器为BSL保留的地址空间和大 小。 00 大小:512B BSL_SEG_3 01 大小:1024B BSL_SEG_2,3 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–31–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 10 大小:1536B BSL_SEG_1,2,3 11 大小:2048B BSL_SEG_0,1,2,3 SYSJMBC JTAG邮箱控制寄存器 15 14 13 12 7 JMB CLR1OFF 6 JMB CLR0OFF 5 保留 4 JMB MODE 11 保留 3 JMB OUT1FG 10 9 8 2 1 0 JMBOUT0FG JMBIN1FG JMBIN0FG Bit7 JMBCLR1OFF JMBCLR0OFF Bit6 Bit4 JMBMODE JMBOUT1FG Bit3 JMBOUT0FG Bit2 JMBIN1FG Bit1 JMBIN0FG Bit0 输入到JTAG邮箱1标志自动清零禁止。 0 JMBIN1FG在读JMB1IN寄存器之后清零 1 JMBIN1FG 由软件清零 输入到JTAG邮箱0标志自动清零禁止。 0 JMBIN0FG在读JMB0IN寄存器之后清零 1 JMBIN0FG 由软件清零。 该位定义JMBI0/1或者JMBO0/1中JMB的操作模式。在切换该模式 之前,一定要注意保护好数据内容以避免在切换后数据丢失。 0 16位数据传输模式,仅用JMBO0或者JMBI0。 1 32位数据传输模式,用JMBO0/1或者JMBI0/1。 输出JTAG邮箱1标志。当一个数据被写入到JMBO1的高字节,或 者以字形式被访问(由CPU、DMA.....),那么该位会自动复位。 当该数据通过JTAG端口被读时,就会置位。 0 JMBO1没有准备好接收新的数据 1 JMBO1准备好接收新的数据 输出JTAG邮箱0标志。当一个数据被写入到JMBO0的高字节,或 者以字形式被访问(由CPU、DMA....),那么该位会自动复位。 当该数据通过JTAG被读时,就会置位。 0 JMBO0没有准备好接收新的数据 1 JMBO0准备好接收新的数据 输入JTAG邮箱1标志。当JMBI1接收到新数据(通过JTAG端口) 时该位置位。当JMBCLR1OFF为0(自动清零模式)时,该标志 位在读了JMBI1后会自动复位。在JMBCLR1OFF为1时, JMBIN1FG需要软件复位。 0 JMBI1没有接收到新数据。 1 JMBI1接收到新数据。 输入JTAG邮箱0标志。当JMBI1接收到新数据(通过JTAG端口) 时该位置位。当JMBCLR0OFF为0(自动清零模式)时,该标志 位在读了JMBI0后会自动复位。在JMBCLR0OFF为1时, JMBIN0FG需要软件复位。 0 JMBI0没有接收到新数据。 1 JMBI0接收到新数据。 SYS JMB I0 JTA G邮 箱输 入寄 存器 0 SYS JMB I1 JTA G邮 箱输 入寄 存器 1 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–32–页 共 423 页 15 14 7 6 MSGHI BIT15-8 MSGHO BIT7-0 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 13 12 11 10 9 8 MSGH1 5 4 3 2 1 0 MSGL0 JTAG邮箱输入数据的高字节 JTAG邮箱输入数据的低字节 SYSJMBO0 JTAG邮箱输出寄存器0 SYSJMBO0 JTAG邮箱输出寄存器1 15 14 13 12 11 10 9 8 MSGH1 7 6 5 4 3 2 1 0 MSGHI BIT15-8 MSGHO BIT7-0 MSGL0 JTAG邮箱输出数据的高字节 JTAG邮箱输出数据的低字节 SYSUNIV 用户不可屏蔽中断寄存器 15 14 13 12 11 10 9 8 0 0 0 0 0 0 0 0 7 6 5 4 3 2 1 0 0 0 0 SYSUNVEC SYSUNVEC Bits15-0 用户不可屏蔽中断向量。产生一个快速进入中断服务程序的地址 偏移量。对这个寄存器进行写操作将复位所有的用户不可屏蔽中 断标志位。 SYSUNVEC的值 中断类型 0000h 没有中断产生 0002h 0004h NMIIFG中请求 OFIFG中断请求 SYSSNIV 0006h 0008h 系统不可屏蔽中断寄存器 ACCVIFG中断请求 为以后的功能扩展预留 15 14 13 12 11 10 9 8 0 0 0 0 0 0 0 0 7 6 5 4 3 2 1 0 0 0 0 SYSSNVEC SYSSNIV Bits15--0 系统不可屏蔽中断。产生一个可快速进入中断服务程序的 地址偏移量。对这个寄存器进行写操作将复位所有的系统 不可屏蔽中断标志位。 SYSSNIV的值 中断类型 0000h 没有中断产生 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–33–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 0002h 0004h 0006h 0008h 000Ah 000Ch 000Eh 0010h 0012h 0014h SVNMLIFG中请求 SVNMHIFG中请求 DLYLIFG中断请求 DLYHIFG中断请求 VMAIFG中断请求 JMBINIFG中断请求 JMBOUTIFG中断请求 VLRLIFG中断请求 VLRHIFG中断请求 为以后的功能扩展预留 SYSRSTVEC 复位向量寄存器 15 14 13 12 11 10 9 8 0 0 0 0 0 0 0 0 7 6 5 4 3 2 1 0 0 0 SYSRSTVEC SYSRSTIV Bit15--0 复位中断向量。产生一个可快速进入辨别上一次复位原因的 中断服务程序的地址偏移量(上电复位、掉电复位、上电清 零)。对这个寄存器进行写操作将复位所有的复位中断标志 位。 SYSRSTIV的值 0000h 中断类型 没有中断产生 0002h BOR 0004h RST/NMI(BOR) 0006h 0008h DoBOR 从低功耗5中唤醒(BOR) 000Ah 非法访问(BOR) 000Ch SVSL(POR) 000Eh SVSH(POR) 0010h SVML_OVP(POR) 0012h SVMH_OVP(POR) 0014h 0016h 0018h 001Ah DoPOR(POR) 看门狗复位(PUC) 看门狗密钥错误(PUC) FLASH密钥错误 001Ch 001Eh 锁相环解锁(PUC) PERF 从外围模块地址取值 0020h 0022h PMM密钥错误 为以后的功能扩展预留 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–34–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 第2章 电源管理模块和供电电压监视器 本章主要讲述的是电源管理模块 PMM 和供电电压监视器 SVS。 2.1 PMM 模块介绍 2.2 PMM 操作 2.3 PMM 寄存器 2.1 PMM介绍 PMM 的基本特性包括: l 供电电压范围较大:1.8V-3.6V l 产生四个编程级别的核电压(VCORE) l 具有对 DVcc和VCORE可编程电平检测的供电电压管理器 l 具有对 DVcc和VCORE可编程电平检测的供电电压监视器 l 低电压复位(BOR) l 软件可访问掉电状态指示 l 掉电条件下的I/O保护 l 可软件选择各种状态输出(可选) PMM负责管理所有与芯片供电及监控相关的功能,它的主要功能首先是为内核逻辑提供电压,其次, 为实际应用中芯片的供电电压DVcc及内核电压VCORE提供几种电压管理和监测机制。 PMM模块内部集成了低压差线性稳压器(LDO),通过芯片的供电电压DVcc产生逻辑电路所需要的VCORE。 一般来说,VCORE给CPU、存储器及数字模块来供电,DVcc给IO、模拟部分(包括晶振部分)供电。VCORE通 过固定的参考电压来保持。为了适应CPU不同速度需要的电压,VCORE有4个可编程电压等级输出。这提高 了系统的供电效率。本章中,我们把线性稳压器的输入称为初级或高边,输出称为次级或低边。 内核需要的最小电压值取决于所选择的MCLK频率,图2-1显示了内核电压与芯片系统频率之间的关 系。图2-1只是一个例子,应当参考芯片的数据手册来确定芯片支持多大的内核电压及系统时钟频率。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–35–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 区域内的数字表示 PMMCOREVx 的设定值 图2-1 系统频率和核心电压的关系——参考数据手册 PMM模块提供一种对DVcc和VCORE管理、监测的方法。当电压降到特定的电压门限值时,启动管理及监 测。一般来说,两者的区别在于SVS会引起上电复位(POR),而SVM则产生中断标志,中断标志事件可以 通过软件来处理。同样,DVcc由SVSH和SVMH分别对其进行管理和监测,VCORE则是由SVSL和SVML分别对其进 行管理和监测。因此,在任意给定时间,有4个独立的管理/监测模块可以工作。这些模块门限值来自稳 压器产生VCORE的参考电压。 另外,除了SVSH/SVMH/SVSL/SVML外,VCORE电压也由BOR模块电路监测。当DVCC开始上电,BOR将保持芯 片一直处于复位状态,直到VCORE达到当前默认MCLK振荡所需要的电压及激活SVSH/SVSL机制。在这个过程 中,如果VCORE低于目前的门限值,BOR将产生复位。如果不需要SVSL,也可以用BOR模块作为一种更低功耗 的电压监测方法。 电源管理模块框图如图2-2所示。 2.2 电源管理模块操作 图2-2 电源管理模块框图 2.2.1 VCORE和稳压器 DVcc容许有一个较宽范围的输入电压,但是Vcore的电压值必须要低于该电压值。因此,在PMM模块内部 加入集成稳压器,用于从DVcc得到必要的Vcore。 更高的MCLK工作频率需要更高的内核电压,但是更高的内核电压将增大系统功耗,所以设定核电压为 4个可编程电平,用于提供给MCLK所需要的电源。电源的电平值由PMMCOREV寄存器控制。在默认情况下, PMMVOREV最小值是允许MCLK工作在一个较大范围的工作频率中。其实对大多数应用而言,是不需要改变PMM 值的,具体性能参数及支持的电压可以参考相应的数据手册。 在将MCLK调到更高速之前,应当保证当前的VCORE电压值必须适应所选择的高系统频率,这点对软件来 说是必要的。如果做不到这点,可能会导致CPU在电压不足情况下进行操作,这会产生一些不可预期的错 误。2.2.4部分介绍了如何提高VCORE来适应更高MCLK频率。 稳压器支持两种装载设置模式,以优化系统功耗。以下情况需要稳压器工作在大电流模式: l CPU处于活动模式、LPM0及LPM1模式 l 为驱动其他模块使用的大于32kHz时钟源 l 执行中断处理 l JTAG处于活动模式 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–36–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 除以上情况外,系统可以工作在小电流模式下。硬件会按照上述标准自动配置装载模式。 2.2.2 电压管理和监视 初级管理、监视器SVSH和SVMH、次级管理、监视器SVSL和SVML分别监视和管理DVcc、VCORE。默认情况下, 这些模块都是处于活动模式的,为了进一步降低系统功耗,可以分别通过SVSHE/SVMHE/SVSLE/SVMLE位来禁 止这些功能。 2.2.2.1 SVS/SVM电压门限值 SVS/SVM可以选择电压门限值,表2-1所示为SVS/SVM门限值寄存器、控制的门限电压及门限值选择的 级数。 表2-1 SVS/SVM阀值 寄存器 描述 阀值 有效级 SVSHRVL SVSH复位电压值 SVSH_IT- 4 SVSMHRRL SVSH/SVMH复位释放电压值 SVSH_IT+,SVMH 8 SVSLRVL SVSL复位电压值 SVSL_IT- 4 SVSMLRRL SVSL/SVML释放复位电压值 SVSL_IT+,SVML 4 对于内核电压来说,有两个供电电压监测电平。SVSLRVL位定义了复位功能的低门限电压值,SVSMLRRL 位定义释放复位信号电压门限值。尽管有多种可选的配置,但对PMMCOREV选择的内核电压来说,SVSLRVL 和SVSMLRRL只有一种配置可以很好的与之匹配,表2-2列出了一些常用推荐的配置值。 表2-2 推荐的SVSL设置值 PMMCOREV[1:0] DVcc(V) SVSLRVL[1:0] SVSMLRRL[2:0] 设置SVSl_it- 设置SVSL_it+及SVML 00 ≥1.8 00 000 01 ≥2.0 01 001 10 ≥2.2 10 010 11 ≥2.4 11 011 对于初级电压来说,也有两个电压监测值。SVSMHRRL位定义了释放复位信号电压门限电压值,SVSHRVL 位定义了复位门限电压值。这个些设置应该按照芯片在给定应用中所需最小电压及供电电源特性来设置。 在数据手册中可以得到与这里所示设置相应的门限值。尽管有多种配置选择,大多数情况下,我们尽量选 择系统最大频率所需要并决定DVcc监测最小电压的监测值。表2-3列出了一些常用推荐的配置值。 表2-3 推荐的SVSH值 系统最大频率 Mhz DVcc(V) SVSHRVL[1:0] SVSMHRRL[2:0] PMMCOREV[1:0] 8 ≥1.8 00 000 00 12 ≥2.0 01 001 01 20 ≥2.2 10 010 10 25 ≥2.4 11 011 11 图形最能反映SVS/SVM与这些门限电压值的关系。图2-3显示了电压管理/监测器与各种供电故障之间 的关系。从图中可以看出,SVS的门限值有滞后性,因此这个门限值取决于电压上升或下降,而SVM则没有 滞后。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–37–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图2-3 初级和次级电压失效及PMM活动 2.2.2.2初级电源电压管理与监控(SVSH/SVMH) SVSH和SVMH默认情况下是允许的,可以分别通过清除SVSHE及SVMHE位来禁止,框图如图2-4所示。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–38–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图2-4 初级电压管理和监控 当DVcc下降到低于SVSH时,SVSHIFG(SVSH中断标志)将置位,如果DVcc持续低于SVSH并且软件尝试 清除SVSHIFG标志时,它会被硬件再次置位。SVSHPE(SVSH POR允许位)置位时,SVSHIFG的置位将会产 生POR信号。 当DVcc下降到低于SVMH时,SVMHIFG(SVSH中断标志)将置位,如果DVcc持续低于SVMH并且软件尝试 清除SVMHIFG标志时,它会被硬件再次置位。SVMHIE(SVMH中断允许位)置位时,SVMHIFG的置位将会产 生中断请 求信 号。如 果希望 SVMHIFG置位的 时候 ,能够产 生POR信号 ,可以 清除SVMHOVPE位的同 时把 SVMHVLRPE位置位。 当DVcc上升到SVMH以上时,SVMHVLRIFG(SVMH电压)中断标志置位,如果此时SVMHVLRIE(SVMH电压 中断允许)置位,将产生中断请求。 SVMH模块也可以用于过压检测,可以通过设置SVMHOVPE(SVMH 超压POR允许)位及SVMHVLRPE位完成。 在这种情况下,如果DVcc超出了芯片的安全操作电压,将会产生POR。 SVMH/SVSH可以配置成低功耗模式(参考2.2.8章节),如果SVMH/SVSH的功耗模式改变了或电压级别发生了 改变,会自动屏蔽中断和POR源,直到新的SVSH/SVMH电路建立。当SVSMHDLYST为0,延时结束。另外,SVSMHDLYIFG (SVSH/SVMH延迟)中断标志将置位。如果在这个过程中SVSMHDLYIE(SVSH/SVMH延迟中断允许)置位,也将 产生中断。 一旦发生掉电情况,在LPM2、LPM3和LPM4模式下SVSHMD置位将使SVSH中断标志置位。如果SVSHMD没有置 位,SVSH中断标志不会置位。另外,所有的SVSH和SVMH事件可以通过置位SVSMHEVM来屏蔽。大多数应用情况 下,SVSMHEVM应该清除。 SVSH/SVMH事件发生后,所有的中断标志将保持置位,直到通过BOR或软件清除。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–39–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 2.2.2.3 次级的电源电压管理与监控 SVSL和SVML在默认情况下是允许的,它们可以分别通过清除SVSLE及SVMLE位来禁止,图2-5为其框图。 图2-5 次级的电压管理和监控 当VCORE下降到低于SVSL时,SVSLIFG(SVSL中断标志)将置位,如果VCORE持续低于SVSL并且软件尝试清 除SVSLIFG标志时,它又会被硬件自动置位。SVSLPE(SVSL POR允许位)置位时,SVSLIFG的置位将会产 生POR信号。 当VCORE下降到低于SVML时,SVMLIFG(SVSL中断标志)将置位,如果VCORE持续低于SVML并且软件尝试清 除SVMLIFG标志时,它又会被硬件自动置位。SVMLIE(SVML 中断允许位)置位时,SVMLIFG的置位将会产 生中断请求信号。如果希望SVMLIFG置位的时候,能够产生POR信号,那么可以清除SVMLOVPE位的同时把 SVMLVLRPE位置位。 当 VCORE上 升 到 高 于 SV ML时 ,SV MLV LRI FG( SVMH 电 压 )中 断 标 志 置 位 ,如 果 此 时 S VML VLR IE( SVML 电 压 中 断允许)置位,将有产生中断请求事件。 SVML模块可以用作过压检测,可以通过设置SVMLOVPE(SVML 超压POR允许)位及SVMLVLRPE位完成, 在这种情况下,如果VCORE超出了芯片的安全操作电压,将会产生POR。 SVML/SVSL可以配置成低功耗模式(参考2.2.8章节),如果SVML/SVSL的功耗模式改变或电压级别发生了改 变,会自动屏蔽中断和POR源,直到新的SVSL/SVML电路建立。当SVSMLDLYST为0,延时结束。另外,SVSMLDLYIFG (SVSL/SVML延迟)中断标志将置位。如果在这个屏蔽过程过程中SVSMLDLYIE(SVSL/SVML延迟中断允许)置位, 也将产生中断事件。 一旦发生掉电情况,LPM2、LPM3和LPM4模式下SVSHMD置位将使SVSL中断标志置位。如果SVSHMD没有置位, SVSL中断标志不会置位。另外,SVSL和SVML可以通过置位SVSMLEVM位来屏蔽.大多数应用情况下,SVSMLEVM 应该清除。 SVSL/SVML事件发生后,所有的中断标志将保持置位,直到通过BOR或软件清除。 2.2.3 电源电压管理与监测-上电 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–40–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 上电时,SVSH和SVSL默认是允许的。开始时,DVcc为低,所以PMM模块使芯片处于POR状态,一旦到达 SVSH和SVSL电平,则复位过程停止,图2-6表示了上述过程。 图2-6 芯片上电后PMM功能 在此之后,SVS和SVM将被相应的模块来管理与监测。 2.2.4 提高VCORE满足更高MCLK频率 复位后,所有的VCORE和PMM的门限电压默认是其最小值。这些默认设置值允许的MCLK工作频率范围比较 大,在大多数应用中不需要改变这些参数。但是在某些应用情况需要使用更高的MCLK频率,此时应保证在 改变MCLK之前能够提供足够的核电压,因为CPU在供电不足的情况下,会产生一些不可预料的结果。我们 在程序中必须要考虑这个问题。对芯片来说,系统最大工作频率所需要的工作电压是固定的。(具体数据 可以参考数据手册) 为提高VCORE电压置位PMMCOREV后,需要一段延迟时间使新电压达到稳定状态。在新的电压稳定之前, 应禁止调整MCLK的频率。SVML可以在提高MCLK频率前,检验VCORE是否达到了MCLK工作频率所需要的最小电压。 图2-7显示了该过程。 图2-7 VCORE、SVML、SVSL调整图 VCORE每一次只上升一个电压级别,这是很关键的。下面的例程说明了从一到四逐级上调 VCORE的四个必 要步骤。如果需要可以重复调整 VCORE,直到得到理想的电压值。 1.将SVMH和SVSH编程调整到下一级电压等级,使DVcc对下一级VCORE来说足够大; 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–41–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 对SVML门限值编程等待SVSMLDLYIFG置位; 2.将PMMCOREV编程调整到下一级VCORE电压; 3.等待SVMLVLRIFG标志置位; 4.将SVSL编程调整到下一级电压。 下面是用C语言调整VCORE过程的参考例程。这个例程库里提供了上调和下调VCORE的例程,可供调用。 ;C Code Example for increasing core voltage. ;Note: change core voltage on level at a time. Void SetVCoreUp(unsigned int level) { // open pmm regisgers for write access PMMCTL0_H = 0xa5; // set SVS/SVM high side new level SVSMHCTL = SVSHE + SVSHRVL0 + level + SVMHE + SVSMHRRL0 + level; // Set SVM low side to new level SVSMLCTL = SVSLE + SVMLE + SVSMLRRL0 + level; // wait till SVM is settled While(( PMMIFG & SVSMLDLYIFG ) == 0); // Clear already set flags PMMIFG &= ~( SVMLVLRIFG + SVMLIFG ); // Set VCORE to new level PMMVTL0_L = PMMCOREV0 + level; // wait till new level reached If(( PMMIFG & SVMLIFG )) While(( PMMIFG & SVMLVLRIFG ) == 0); // Set SVS/SVM low side to new level SVSMLCTL = SVSLE + SVSLRVL0 + level + SVMLE + SVSMLRRL0 + level; // lock PMM registers for write access PMMCTL0_H = 0x00; } 2.2.5 降低VCORE电压以减少系统功耗 从当前或更高VCORE设置情况下,降低MCLK工作频率,此时不存在改变MCLK频率而带来的风险,因为较 高的VCORE仍然支持较低的MCLK频率。但在一些对电源功耗非常敏感的场合可以调整到较低的VCORE。VCORE每一 次调整只能下降一个电压级别,这是很关键的。下面说明了如何逐级降低核电压的三个步骤。可以重复此 过程调整VCORE直到得到目标电压。 1.将SVML编程调整到新的电压值,并等待SVSMLDLYIFG置位 2.将PMMCOREV编程调整到新的VCORE 3.等待电压降低直到发生SVMLVLRIFG中断 降低核电压的过程中,新VCORE电压必须适合MCLK最高频率所需要的电压值(参考数据手册)。 2.2.6 LPM3.5 ,LPM4.5 LPM3.5 和LPM4.5不同于一般的低功耗模式,在这两种模式下,PMM模块稳压器将完全停止工作,这可 以使系统功耗更低。但并不是所有的芯片都支持LPMx.5模式,可以参考数据手册来获得更详细的信息。 在LPMx.5模式下,没有电源提供给VCORE,所以CPU、包括RAM在内的数字模块都处在掉电状态,这就从 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–42–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 根本上禁止了整个芯片工作,结果就是寄存器和RAM的数据丢失。所以在进入LPMx.5模式之前,应将重要 的数据保存到FLASH中。PMMREGOFF位是用来禁止稳压器的。可参考SYS模块得到LPMx.5完整的信息和使用 方法。 由于进入LPMx.5后,PMM的稳压器会处于禁止状态,所有的IO寄存器配置也将丢失。由于IO寄存器配 置的丢失,所以需要对IO口寄存器分别处理,以保证实际使用的IO脚在进入或退出LPMx.5时仍然处于可控 状态。为保证在该模式下的最低功耗而又不希望IO口处于不可控状态,所以恰当的设置IO口是很关键的。 应用程序对IO口有完全的控制能力,防止进入不想要的进入或退出低LPMx.5模式的伪操作。IO状态由进入 LPMx.5模式前的设置保持或锁定。一旦进入LPMx.5模式,在PMM模块PM5CTL0寄存器中的PLOCKLPM5位将自 动置位。注意:在这种情况下只有IO口的状态会保持,相关端口配置寄存器设置还是会丢失的,请参考数 字IO模块部分获取更多信息。 2.2.7 BOR,软件BOR及软件POR 器件上电过程中,BOR电路开始工作,它从上电开始初期起作用,产生系统初始化所需要的POR信号。 在SVS没有工作及掉电状态存在时,同样起作用。它保持复位,直到输入的电压足够BOR逻辑开始工作及适 当的复位。 在实际应用中,我们有时希望能够通过软件产生BOR信号,将PMMSWBOR位置位,就会产生一个软件BOR 信号,相应的PMMBORIFG也会置位。注意这个BOR同样对POR和PUC初始化。PMMBORIFG可以通过软件清除或 读SYSRSTIV寄存器后自动清除。同样,设置PMMSWPOR位也会产生一个软件POR,相应的PMMPORIFG位置位, POR也会初始化PUC,PMMPORIFG可以软件清除或读SYSRSTIV护自动清除。请参考SYS模块获得关于BOR、POR 及PUC更为详细的描述。 2.2.8 SVS/SVM性能模式(正常和高性能模式) 电源电压管理器和监测器有两种功耗模式:正常模式和高性能模式。它们在对电源功耗及响应时间上 有一些区别:高性能模式有快速的响应,但功耗要比正常模式高一些。在外部电源的退耦能力不足以消除 DVcc上的电源尖波或不允许电源出现故障的场合下,使用高性能模式可以为系统提供额外保护。 有两种方法可以设置性能模式:手动或自动。手动模式时,除了LPMx.5模式外(SVS/SVM在LPMx.5是 禁止的),其他模式的选择都是相同的。此时,可以通过各自模块中SVSHFP/SVMHFP/SVSLFP/SVMLFP位来选 择工作模式。 自动模式时,硬件会根据实际操作情况来选择不同的性能模式,比如通过 SVSHFP/SVMHFP/SVSLFP/SVMLFP位来自动选择使用何种性能模式。 可以通过设置SVSMHACE/SVSLACE位来选择自动或手动模式,将分别应用在初级和次级情况下。表2-4 和表2-5所示为SVSL和SVML工作模式工作模式选择。从表中看出,SVSL和SVML的性能模式选择也影响到低功 耗模式的唤醒。表2-6和表2-7所示为SVSH和SVMH的工作模式,同样从低功耗模式唤醒也受到SVSH及SVMH的性 能模式影响。 注意当从LPMx.5模式下唤醒时,其唤醒时间是由数据手册的TWAKE-UP-LPM5参数定义,而不用关心SVSL和SVML 性能模式如何,因为这些在LPMx.5模式下是禁止的。 表2-4 SVSL性能控制模式 SVSLE SVSLMD SVSLFP AM,LPM0, 手动模式 自动模式 唤醒时间 LPM1 SVSMLACE=0 SVSMLACE=1 LPM2,LPM3, SVSL状态 LPM2,LPM3,LPM4 LPM2,LPM3,LPM4 LPM4 SVSL状态 SVSL状态 0 X 1 0 1 0 X 关闭 关闭 0 正常模式 关闭 1 高性能模式 关闭 关闭 关闭 关闭 TWAKE-UP-FAST TWAKE-UP-SLOW TWAKE-UP-FAST 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–43–页 共 423 页 1 1 1 1 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 0 正常模式 正常模式 1 高性能模式 高性能模式 关闭 正常模式 TWAKE-UP-SLOW TWAKE-UP-FAST SVMLE SVMLFP AM,LPM0,LPM1 SVSL状态 0 X 关闭 1 0 正常模式 1 1 高性能模式 表2-5 SVML性能控制模式 手动模式 自动模式 SVSMLACE=0 SVSMLACE=1 LPM2,LPM3,LPM4 LPM2,LPM3,LPM4 SVSL状态 SVSL状态 关闭 关闭 正常模式 关闭 高性能模式 正常模式 唤醒时间 LPM2,LPM3, LPM4 TWAKE-UP-FAST TWAKE-UP-SLOW TWAKE-UP-FAST SVSHE 0 1 1 1 1 SVSHMD X 0 0 1 1 SVSHFP X 0 1 0 1 表2-6 SVSH性能控制模式 AM,LPM0,LPM1 手动模式 自动模式 SVSH状态 SVSMHACE=0 SVSMHACE=1 LPM2,LPM3,LPM4 LPM2,LPM3,LPM4 SVSH状态 SVSH状态 关闭 关闭 关闭 正常模式 关闭 关闭 高性能模式 关闭 关闭 正常模式 正常模式 关闭 高性能模式 高性能模式 正常模式 SVMHE SVMHFP AM,LPM0,LPM1 SVSH状态 0 X 关闭 1 0 正常模式 1 1 高性能模式 表2-7 SVMH性能控制模式 手动模式 自动模式 SVSMHACE=0 SVSMHACE=1 LPM2,LPM3,LPM4 LPM2,LPM3,LPM4 SVSL状态 SVSL状态 关闭 关闭 正常模式 关闭 高性能模式 正常模式 2.2.8.1 在DEBUG模式下的唤醒时间 TEST/SBWTCK 引 脚 是 在 SBW 及 JTAG 模 式 下 的 调 试 工 具 接 口 。 当 这 个 引 脚 在 高 电 平 情 况 下 , 从 LPM2/LPM3/LPM4模块下唤醒及从该引脚为低电平下唤醒时,其唤醒时间可能存在一些差别。当为高电平唤 醒时,其唤醒时间与SVSL及SVML的设置相关,但仍然在tWAKE-UP-FAST范围内。但由于连接到了开发工具上(如: FET430UIF),所以要注意实际的唤醒时间。 2.2.9 PMM中断 PMM产生的中断标志指向NMI中断矢量寄存器SYSSNIV。当PMM产生复位时,根据响应的复位源,将在系 统复位矢量产生寄存器SYSRSTIV中生成一个值。这些寄存器在SYS模块中有定义。可以在SYS模块章节中查 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–44–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 看到关于PMM与SYS的相应关系。 2.2.10 IO口控制 PMM提供一种在低压情况下防止IO口处于不可控状态的方法,在这个过程中,普通驱动及弱上下拉功 能的输出均被禁止。如果在CPU正常工作时发生了低电压情况,任何设置为输入模式的IO口将锁定各自的 PxIN寄存器,直到电压恢复正常。在这种低电压情况下,任何来自外部管脚上电压改变都不会引起内部IO 寄存器的变化,这样可以防止错误发生。 2.2.11 SVM输出 SVMLIFG、SVMLVLRIFG、SVMHIFG及SVMLVLRIFG的状态可以通过外部的SVMOUT引脚输出已供外部设备检 测。为了产生这个输出信号,可以设置中断标志允许位(SVMLOE、SVMLVLROE、SVMHOE、SVMLVLROE)。配 置SVMOUTPOL位来设置输出极性。当中断标志置位时,如果SVMOUTPOL置位,SVMOUT输出高。 2.3 PMM寄存器介绍 PMM模块寄存器如表2-8所示,PMM模块的基地址可以在数据手册中查到。表中给出了每个寄存器的 偏移量。PMMCTL0中定义的口令(PMMPW)用于控制对PMM、SVS、SVM寄存器的访问,只有口令写入正确 时,才允许对寄存器写操作。在字节写模式下,对PMMCTL0的高字节写入错误的口令时,将禁止任何的 写入操作。如果对PMMCTL0进行字访问,写入错误的密码时,将产生PUC。对PMMCTL0以外的其他寄存器 进行写操作不会产生PUC。 注:所有的寄存器都支持字节访问或字访问。这类寄存器,后缀为"_L"的涉及寄存器的低 字节(BIT0~BIT7),后缀为"_H"的涉及寄存器的高字节(BIT8~BIT15)。 表2-8 PMM寄存器 寄存器名称 简写 寄存器类型 存取方式 偏移量 PMM控制寄存器0 PMMCTL0 读写 字操作 00H PMMCTL0_L 读写 字节操作 00H PMMCTL0_H 读写 字节操作 01H PMM控制寄存器1 PMMCTL1 读写 字操作 02H PMMCTL1_L 读写 字节操作 02H PMMCTL1_H 读写 字节操作 03H SVS/SVM 初 级 控 制寄存器 SVSMHCTL SVSMHCTL_L 读写 读写 字操作 04H 字节操作 04H SVSMHCTL_H 读写 字节操作 05H SVS/SVM 次 级 控 制寄存器 SVSMLCTL SVSMLCTL_L 读写 读写 字操作 06H 字节操作 06H SVSMLCTL_H 读写 字节操作 07H SVSIN/SVSOUT控 制寄存器 SVSMIO SVSMIO_L 读写 读写 字操作 08H 字节操作 08H SVSMIO_H 读写 字节操作 09H PMM中断 标志寄 PMMIFG 读写 字操作 0AH 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 初始值 9600H 00H 96H 0000H 00H 00H 4400H 00H 44H 4400H 00H 44H 0020H 20H 00H 0000H 第–45–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 存器 PMMIFG_L 读写 字节操作 0AH 00H PMMIFG_H 读写 字节操作 0BH 00H PMM中断 允许寄 存器 PMMRIE PMMRIE_L 读写 读写 字操作 0EH 字节操作 0EH 0000H 00H PMMRIE_H 读写 字节操作 0FH 00H 电源模式5控制 寄存器 PMM5CTL0 PMM5CTL0_L 读写 读写 字操作 10H 字节操作 10H 0000H 00H PMM5CTL0_H 读写 字节操作 11H 00H PMM控制寄存器0(PMMCTL0) 15 14 13 12 11 10 9 8 RW-1 RW-0 RW-0 RW-1 RW-0 RW-1 RW-1 RW-0 PMMPW 读时为96H,写时必须写A5H 7 6 5 4 3 2 1 0 保留 保留 保留 PMMREGOFF PMMSWPOR PMMSWBOR PMMCOREV RW-0 RW-0 RW-0 RW-0 RW-0 RW-0 RW-[0] RW-[0] PMMPW 保留 保留 PMMREGOFF PMMSWPOR PMMSWBOR PMMCOREV 手册) BIT15-8 BIT7 BIT6-5 BIT4 BIT3 BIT2 BIT1-0 PMM控制寄存器1(PMMCTL1) 15 14 R-0 R-0 保留 保留 保留 保留 保留 7 6 保留 R-0 R-0 BIT15-6 BIT5-4 BIT3-2 BIT1 BIT0 PMM口令,读为96H,必须写A5H,否则会产生PUC 保留,必须写0 保留,读时总为0 LDO调整器关闭(参考SYS章节) 软件POR,写1将产生POR,自动清除 软件BOR,写1将产生BOR,自动清除 核电压(VCORE)选择(芯片支持的电压级别及相应的电压值可以参考数据 00 VCORE 级别0 01 VCORE 级别1 10 VCORE 级别2 11 VCORE 级别3 13 12 11 10 R-0 R-0 R-0 R-0 保留 5 4 3 2 保留 保留 RW-0 RW-0 R-0 R-0 保留。读时总是为0 保留。必须写0 保留。读时总是为0 保留。必须写为0 保留。必须写为0 9 R-0 1 保留 RW-0 8 R-0 0 保留 RW-0 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–46–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM SVS/SVM初级控制寄存器(SVSMHCTL) 15 14 13 12 11 10 9 8 SVMHFP SVMHE 保留 SVMHOVPE SVSHFP SVSHE SVSHRVL RW-[0] RW-1 R-0 RW-[0] RW-[0] RW-1 RW-[0] RW-[0] 7 6 5 4 3 2 1 0 SVSMHACE SVSHEVM 保留 SVSHMD SVSMHDLYST SVSMHRRL RW-[0] RW-0 R-0 RW-0 R-0 RW-[0] RW-[0] RW-[0] SVMHFP BIT15 SVM初级高性能模式,该位置位,SVMH工作在高性能模式 0 普通正常模式 1 高性能模式,数据手册中可以得到响应时间 SVMHE BIT14 SVM初级允许位,置1时允许 保留 BIT13 保留。读取数值总为0 SVMHOVPE BIT12 SVM初级过压允许,如果置位,则启动SVMH过压监测,如果 SVMHVLRPE也置位,过压时将产生POR SVSHFP BIT11 SVS初级高性能模式,该位置位,SVSH工作在高性能模式 0 普通正常模式 1 高性能模式,数据手册中可以得到响应时间 SVSHE BIT10 SVS初级允许位,置1时允许 SVSHRVL BIT9-8 SVS的初级复位电压级别,DVCC下降到SVSHRVL所选择 的电压以下时,如果SVSHPE=1,将产生复位。电压级别在 芯片数据手册中有定义。 SVSMHACE BIT7 SVS/SVM初级自动控制允许,如果置位,SVSH和SVMH电路的 低功耗模式硬件控制。 SVSMHEVM BIT6 SVS/SVM初级事件屏蔽位,如果这个置1,则SVSH和SVMH事 件将被屏蔽 0 不屏蔽 1 屏蔽 保留 BIT5 保留,读取数值总为0 SVSHMD BIT4 SVS初级工作模式。在LPM2/3/4模式下供电故障时,如果该 位置1,则SVSH中断标志置位。如果这个位不置位,则在 LPM2/3/4模式下,SVSH中断标志也不置位。 SVSMHDLYST BIT3 SVS/SVM初级延迟状态,该位置位时,SVSH和SVMH事件将在 一定延时时间中被屏蔽。延时时间取决于SVSH和SVMH的电 源模式。如 果SVMHFP=1且SVSHFP=1,高性能模式的延时时 间比较短,详细信息可参 考数据手册。如果延时结束,该 位由硬件清除。 SVSMHRRL BIT2-0 SVS/SVM初级复位释放电压等级,这几个位定义了SVSH的复 位电压级别,还可以用于SVMH定义电压级别,可以在数 据手册中得到更详细的信息。 SVS/SVM次级控制寄存器(SVSMLCTL) 15 14 13 12 11 10 9 8 SVMLFP SVMLE 保留 SVMLOVPE SVSLFP SVSLE SVSLRVL 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–47–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM RW-[0] RW-1 R-0 RW-[0] RW-[0] RW-1 RW-[0] RW-[0] 7 6 5 4 3 2 1 0 SVSMLACE SVSLEVM 保留 SVSLMD SVSMLDLYST SVSMLRRL RW-[0] RW-0 R-0 RW-0 R-0 RW-[0] RW-[0] RW-[0] SVMLFP BIT15 SVM次级高性能模式,该位置位,SVML工作在高性能模式 0 普通正常模式 1 高性能模式,数据手册中可以得到响应时间 SVMLE BIT14 SVM次级允许位,置1时允许 保留 BIT13 保留,读取数值总为0 SVMLOVPE BIT12 SVM次级过压允许,如果置位,则允许SVMH过压监测。 SVSLFP BIT11 SVS次级高性能模式,这个位置位,SVSL工作在高性能模式 0 普通正常模式 1 高性能模式,数据手册中可以得到响应时间 SVSLE BIT10 SVS次级允许位,置1时允许 SVSLRVL BIT9-8 SVS的次级复位电压级别。DVCC下降到低于SVSL所选择 的电压级别,如果SVSLPE=1,将产生复位,电压级别在数 据手册中有定义。 SVSMLACE BIT7 SVS/SVM次级自动控制允许,如果该位置位,SVSL和SVML 电路的低功耗模式将由硬件控制 SVSMLEVM BIT6 SVS/SVM次级事件屏蔽位,如果该位置1,则SVSL和SVML事 件将被屏蔽 0 不屏蔽 1 屏蔽 保留 BIT5 保留。读取数值总为0 SVSLMD BIT4 SVS次级工作模式,在LPM2/3/4模式下,供电故障时如果该 位置1,则SVSL中断标志置位。如果该位没有置位,则 SVSL 中断标志不会置位。 SVSMLDLYST BIT3 SVS/SVM次级延迟状态,该位置位时,SVSL和SVML事件将在 延时时间内被屏蔽。延时时间取决于SVSL和SVML的电源模 式 。 如 果 SVMLFP=1且SVSLFP=1,高性能模式的延时时间将 变短,更多详细信息可参考数据手册。如果延迟结束,该 位由硬件清 除。 SVSMLRRL BIT2-0 SVS/SVM次级复位释放电压等级,这几个位定义了SVSL的复 位电压级别,还可以用于SVML定义电压级别,可以在数 据手册中得到详细的信息。 SVSIN/SVMOUT输出控制寄存器(SVSMIO) 15 14 13 12 11 10 9 8 保留 SVMLVLROE SVMHOE 保留 R-0 R-0 R-0 RW-[0] RW-[0] R-0 R-0 R-0 7 6 5 4 3 2 1 0 保留 SVMOUTPOL SVMLVLROE SVMLOE 保留 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–48–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM R-0 R-0 RW-[1] RW-[0] RW-[0] R-0 R-0 R-0 保留 BIT15-13 保留。读取数值总为0 SVMLVLROE BIT12 SVM初级电压门限值达到输出允许。如果该位置位, SVMLVLRIFG位为芯片SVMOUT引脚输出,具体芯片端口逻辑 已相应配置完毕。 SVMHOE BIT11 SVM初级输出允许,当置位时,SVMHIFG位在SVMOUT 引脚上输出,具体芯片端口逻辑已相应配置完毕。 保留 BIT10-6 保留。读取数值总为0 SVMOUTPOL BIT5 SVMOUT输出极性,该位置位时,SVMOUT引脚高电平起作用。 SVMOUT引脚输出高来代表一个错误发生。该位清零时,如 果有错误信号发生,则在SVMOUT引脚输出低。 SVMLVLROE 完毕。 BIT4 SVM次级门限电压达到输出允许。置位时,SVMLVLRIFG 值将在SVMOUT引脚上输出,具体芯片端口逻辑已相应配置 SVMLOE BIT3 SVM次级输出允许,当置位时,SVMLIFG位在SVMOUT 引脚上输出,具体芯片端口逻辑已相应配置完毕。 PMM中断标志寄存器(PMMIFG) 15 14 13 12 11 10 9 8 PMMLPM5IFG 保留 SVSLIIFG SVSHIFG 保留 PMMPORIFG PMMRSTIFG PMMBORIFG RW-[0] R-0 RW-[0] RW-[0] R-0 RW-[0] RW-[0] RW-[0] 7 6 5 4 3 2 1 0 保留 SVMHVLRIFG SVMHIFG SVSMHDLYIFG 保留 SVMLVLRIFG SVMLIFG SVSMLDLYIFG R-0 RW-[0] RW-[0] RW-[0] R-0 RW-[0] RW-[0] RW-[0] PMMLPM5IFG BIT15 LPMX.5标志。若系统之前处于LPMX.5模式,则置位,该位 可软件清除或通过读复位向量字清除,DVCC范围内的电源故 障也可以清除该位 0 没有中断产生 1 有中断产生 保留 BIT14 保留。读为0 SVSLIIFG BIT13 SVS次级中断标志,通过软件或读复位向量字清除 0 没有中断产生 1 有中断产生 SVSHIFG BIT12 SVS初级中断标志,通过软件或读复位向量字清除 0 没有中断产生 1 有中断产生 保留 BIT11 保留。读取数值总为0 PMMPORIFG BIT10 PMM软件BOR中断标志,如果有软件POR发生时则置位,通过 软件或读复位向量寄存器SYSRSTIV清除 0 没有中断产生 1 有中断产生 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–49–页 共 423 页 PMMRSTIFG PMMBORIFG 保留 SVMHVLRIFG SVMHIIFG SVSMHDLYIFG 保留 SVMLVLRIFG SVMLIIFG SVSMLDLYIFG LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM BIT9 PMM复位引脚中断标志,当RST/NMI引脚产生复位后置位, 可通过软件或读复位向量字清除。 0 没有中断产生 1 有中断产生 BIT8 PMM软件BOR中断标志,如果产生软件BOR,标志置位。通过 软件或读复位向量字SYSRSTIV清除 0 没有中断产生 1 有中断产生 BIT7 保留。读取数值总为0 BIT6 SVM初级电压门限值达到时中断标志。通过软件或读复位向 量(SVSHPE=1)字或读中断向量(SVSHPE=0)字时清除 0 没有中断产生 1 有中断产生 BIT5 SVM初级中断标志,软件清除 0 没有中断产生 1 有中断产生 BIT4 SVS/SVM初级延时结束中断标志,当延迟时间到时,该位置 位,通过软件或读中断向量字清除 0 没有中断产生 1 有中断产生 BIT3 保留。读为0 BIT2 SVM次级电压门限值达到时中断标志,通过软件或读复位向 量(SVSLPE=1)字或读中断向量(SVSLPE=0)字时清除 0 没有中断产生 1 有中断产生 BIT1 SVM次级中断标志,通过软件清除 0 没有中断产生 1 有中断产生 BIT0 SVS/SVM次级延时结束中断标志,当延迟时间到后,该位置 位,通过软件或读中断向量字后清除 0 没有中断产生 1 有中断产生 PMM复位或中断使能寄存器(PMMRIE) 15 14 13 12 11 10 保留 SVMHVLPE SVSHPE 保留 R-0 R-0 RW-[0] RW-[0] R-0 R-0 7 6 5 4 3 2 保留 SVMHVLRIE SVMHIE SVSMHDLYIE 保留 SVMLVLRIE R-0 RW-0 RW-0 RW-0 R-0 RW-0 保留 BIT15-14 保留。读取数值总为0。 9 SVMLVLRPE RW-[0] 1 SVMLIE RW-0 8 SVSLPE RW-[0] 0 SVSMLDLYIE RW-0 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–50–页 共 423 页 SVMHVLRPE SVSHPE 保留 SVMLVLRPE SVSLPE 保留 SVMHVLRIE SVMHIE SVSMHDLYIE 保留 SVMLVLRIE SVMLIE SVSMLDLYIE LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM BIT13 SVM初级电压门限值达到后POR允许位,如果该位置位,则 超过SVMH电压将产生POR。 BIT12 SVS初级POR允许,如果置位,则当电压低于SVSH电压级别 时产生POR。 BIT11-10 保留。读取数值总为0。 BIT9 SVM次级电压达到门限值后POR允许位,如果该位置位,则 超过ML电压将产生POR。 BIT8 SVS次级POR允许,如果该位置位,则当电压低于SVSL电压 级别后产生POR。 BIT7 保留。读取数值总为0。 BIT6 SVM 初级复位电压级别中断允许 BIT5 SVM 初级中断允许,这个位可以通过软件或读中断向量字后 清除。 BIT4 SVS/SVM 初级延迟结束中断允许 BIT3 保留。读取数值总为 0 BIT2 SVM 次级复位电压级别中断允许 BIT1 SVM 次级中断允许,这个位可由软件或读中断向量字后清除 BIT0 SVS/SVM 次级延迟结束中断允许 低功耗模式5控制寄存器0(PMM5CTL0) 15 14 13 12 11 10 9 8 保留 R-0 7 6 5 4 3 2 1 0 保留 LOCKLPM5 保留 LOCKLPM5 R-0 RW-[0] BIT15-1 保留。读取数值总为 0 BIT0 在进入或退出 LPM5 模式时锁定 IO 口配置,若该位置位,一 旦芯片上电,只能由用户清除或通过另外的上电周期才能清 除 0 IO 口配置成未被锁定,默认到复位状态 1 IO 口配置成被锁定,在进入或退出 LPMx.5 模式时,IO 仍保持原先的状态 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–51–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 第3章 标准时钟系统 标准时钟系统可以为芯片提供各种需要的时钟信号。本章主要将讲述芯片中都需要的标准时钟系统。 目录 3.1 标准时钟系统介绍 3.2 UCS 操作模式 3.3 振荡模块(MODOSC) 3.4 UCS 模块寄存器 3.1 时钟系统介绍 UCS 模块是一个低成本超低功耗系统。通过选择使用 3 个内部时钟信号,用户可以得到性能和功耗的 最佳平衡点。UCS 可以由软件配置其工作模式,如配置成:不需要任何外部器件、使用 1 或 2 个外部晶振 等。 UCS 模块具有多达 5 个时钟源: l XT1CLK:低频/高频振荡器,既可以与低频 32768HZ 钟振、标准晶振、外部振荡器,又可以与 外部 4MHZ~32MHZ 时钟源一起使用。XT1CLK 可以作为 FLL 模块内部的参考时钟。有些芯片 XT1CLK 只允许使用外部的低频晶振,具体可参考数据手册。 l VLOCLK:内部低功耗,低频振荡器。频率典型值为 10KHZ。 l REFOCLK:内部低频振荡器,典型值为 32768HZ,还可作为 FLL 基准时钟源。 l DCOCLK:可以通过 FLL 来稳定的内部数字控制振荡器(DCO)。 l XT2CLK:可选高频振荡器,可与标准晶振,振荡器或者 4MHZ~32MHZ 外部时钟源一起使用。 UCS 模块可以提供三种时钟信号: l ACLK:辅时钟。可通过软件选择 XT1CLK,REFOCLK,VLOCLK,DCOCLK,DCOCLKDIV 及 XT2CLK(如果可用)作为 ACLK 时钟源。DCOCLK 在 FLL 模块中被 1、2、4、8、16、32 分频后得到 DCOCLKDIV。ACLK 可以被 1、2、4、8、16、32 分频。ACLK/n 为 ACLK 经 1、2、 4、8、16、32 分频后得到的,可以通过管脚输出被外部设备使用。 l MCLK:系统主时钟。可通过软件选择 XT1CLK,REFOCLK,VLOCLK,DCOCLK,DCOCLKDIV 及 XT2CLK(如果可用)作为 MCLK 时钟源。DCOCLK 在 FLL 模块中被 1、2、4、8、16、32 分频后得到 DCOCLKDIV。MCLK 可被 1、2、4、8、16、32 分频。MCLK 可以作为 CPU 和系统 时钟。 1)SMCLK:子系统主时钟。可通过软件选择作为 XT1CLK,REFOCLK,VLOCLK,DCOCLK, DCOCLKDIV 及 XT2CLK(如果可用)作为 SMCLK 时钟源。DCOCLK 在 FLL 模块中被 1、2、 4、8、16、32 分频后得到 DCOCLKDIV。SMCLK 可被 1、2、4、8、16、32 分频。SMCLK 可以 通过管脚输出后供外围模块使用。 UCS 模块框图如图 3-1 所示: 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–52–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 3.2 UCS操作 图 3-1 UCS 框图 PUC 之后,UCS 的默认配置模式如下: l XT1CLK 选择 LF 模式下的 XT1 作为时钟源,ACLK 选择 XT1CLK 作为时钟源 l MCLK 选择 DCOCLKDIV 作为时钟源 l SMCLK 选择 DCOCLKDIV 作为时钟源 l FLL 操作使能。FLL 基准时钟(FLLREFCLK)选择 XT1CLK l XIN 和 XOUT 作普通 IO 口使用,禁止了 XT1 功能,直到 I/O 口重新配置为 XT1 模式 l 如果有 XT2IN 和 XT2OUT,则一并配置为普通 IO 口,禁止 XT2 功能 如上所述,默认选择了使用 XT1 的 FLL 操作,但是 XT1 由于和通用 IO 共用引脚而禁止了 XT1 功能。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–53–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 为了启用 XT1 功能,必须将与 XT1 引脚对应的 PSEL 置位。当 XT1CLK 使用 32768Hz 晶振时,由于 XT1 不会立即稳定(参考 3.2.12 节),失效逻辑控制位会立即选择 REFOCLK 作为 ACLK 时钟源。一旦晶体振 荡稳定后,由于 FLL 的作用, MCLK 和 SMCLK 都将稳定在 1.047586MHz,Fdco 稳定在 2.097152MHz。 状态寄存器(SCG0,SCG1,OSCOFF 和 CPUOFF)用于配置 MSP430 的工作模式,使能和禁止 UCS 模 块 中 的 部 分 功 能 ( 参 考 系 统 复 位 、 中 断 和 操 作 模 式 章 节 )。 UCS 模 块 的 配 置 使 用 寄 存 器 UCSCTL0~UCSCTL8。 UCS 模块可以在程序运行中的任何时候进行配置和修改配置。 3.2.1 UCS模块在超低功耗方面的特性 电池供电应用中有一些相互制约的因素: ● 为了保持长时间工作或降低功耗而采用低时钟频率 ● 快速响应时间和快速数据处理能力需要高时钟频率 ● 适应各种工作温度和供电电压的稳定时钟 ● 低成本应用中使用准确度要求较少器件的时钟 UCS 模块有 3 个时钟信号 ACLK,MCLK,SMCLK,用户可以根据需要选择不同的时钟来解决上述 矛盾点。 这 3 种时钟信号可取自任何有效的时钟源(XT1CLK,VLOCLK,REFOCLK,或者 XT2CLK),此时 系统时钟的配置就具有了很大的灵活性。 3.2.2 内部低功耗低频率振荡器(VLO) 内部 VLO 能够在不需要任何外接晶振的情况下,提供 10KHz 的时钟(数据手册中查的具体参数), 在对时钟精度不敏感而对成本又非常敏感的场合,使用 VLO 是一个非常好的选择。当 VLO 作为 ACLK、 MCLK、SMCLK(SELA=1、SELM=1、SELS=1)中的任何一个时钟源时,开始启动振荡。 3.2.2 内部低频参考时钟(REFO) 在对成本非常敏感时,通常不需要使用外部晶振,此时可以使用内部低频参考时钟。该时钟的典型频 率值为 32768Hz,并可以作为用于稳定时钟模块 FLL 所需要的参考时钟源 FLLREFCLK。REFO 和 FLL 在 不需要外接晶振的情况下,给了系统时钟设置一定的灵活性。REFO 不使用时,不存在电流消耗。 REFO 在下面任何一种情况下,是处于工作允许状态的: ● 在活动模式到 LPM3 模式下,REFO 作为 ACLK 的时钟源(SELA=2)(OSCOFF=0) ● 在活动模式下,REFO 作为 MCLK 的时钟源(SELM=2)(CPUOFF=0) ● 在活动模式到 LPM1 模式下时,REFO 作为 SMCLK 的时钟源(SELS=2);(SMCLKOFF=0) ● 活动模式到 LPM3 模式下,REFO 作为 FLLREFCLK(SELREF=2)时钟源,DCO 作为 ACLK 的 时钟源(SELA=3,4)(OSCOFF=0) ● 在活动模式下,REFO 作为 FLLREFCLK(SELREF=2)时钟源,DCO 作为 MCLK 的时钟源 (SELA=3,4);(CPUOFF=0) ● 在活动模式到 LPM1 模式下,REFO 作为 FLLREFCLK(SELREF=2)时钟源,DCO 作为 SMCLK 的时钟源(SELA=3,4);(SMCLKOFF=0) ___________________________________________________________________ 注:REFO 对 MSP430543X 和 MSP430541X 系列都可用。 REFO 在下面任何一种情况下,允许工作: ●在活动模式到 LPM3 模式下,REFO 作为 ACLK 的时钟源(SELA=2)(OSCOFF=0) ●活动模式到 LPM3 模式下,REFO 作为 FLLREFCLK(SELREF=2)时钟源,DCO 作为 ACLK 的时 钟源(SELA=3,4)(OSCOFF=0) ____________________________________________________________________ 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–54–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 3.2.4 XT1振荡器 XT1 为了支持低功耗模式,而支持在低频模式下(XTS=0)使用 32768Hz 时钟。晶振连接到 XIN 和 XOUT,此时不需要任何其他外围器件。软件可以通过 XCAP 位来设置 LF 模式下 XT1 晶振的内部负载电 容。负载电容可以由软件选择为 2pF,6pF,9pF,12pF(典型值),也可以根据需要增加外接电容。 一些芯片在 HF 模式时(XTS=1)也支持高速晶振或者振荡器。高频晶振或振荡器连接到 XIN 和 XOUT 引脚时,两端口都需要接外部电容。电容的大小需要根据晶振或者振荡器的规格来选择。 LF 模式下,可以通过 XT1DRIVE 位来提高 XT1 驱动能力。在上电时,为快速可靠启动,可以设置 XT1DRIVE 位来快速启动。如果用户为了降低功耗,可以在需要时降低其驱动能力。在 HF 模式时,可以通 过选择适当的 XT1DRIVE 值来满足不同范围的晶振或振荡器。 无论是在 LF 还是 HF 模式下,都可以通过配置 XT1BYPASS 位,XT1 可以使用加载在 XIN 脚上的外 部时钟信号。当使用外部时钟信号时,外部信号的频率和选择的工作模式必须与数据手册上的参数相符合。 当在 BYPASS 模式时,将关闭 XT1 的振荡器电源。 XT1 和普通 I/O 口复用。上电时,默认操作是 XT1,LF 模式。但是 XT1 将保持禁止状态,直到与 XT1 复用的端口设置成 XT1 模式。复用 IO 口的配置由 XIN 和 XT1BYPASS 相关的 PSEL 决定。PSEL 置位, X1IN 和 X1OUT 端口将配置成 XT1 模式。如果 XT1BYPASS 也置位,XT1 将配置成 BYPASS 模式,XT1 相对应的振荡器将断电。在 BYPASS 模式下,XIN 可以接收外部时钟信号的输入,XOUT 配置成普通 IO 口模式,这时与 X1OUT 相对应的 PxSEL 位可以不用关心。 如果与 XT1IN 对应的 PSEL 位清零,XT1IN 和 XT1OUT 均被配置为普通 IO 口模式,XT1 将禁止。 以下任何一种情况下,XT1 都是允许的: ● 在活动模式(AM)到 LPM3 模式下,XT1 作为 ACLK 的时钟源(SELA=0)(OSCOFF=0) ● 在活动模式(AM)下,XT1 作为 MCLK 的时钟源(SELM=0);(CPUOFF=0) ● 在活动模式(AM)到 LPM1 模式下,XT1 作为 SMCLK 的时钟源(SELS=0);(SMCLKOFF=0) ● 在活动模式(AM)到 LPM3 模式下,XT1 作为 FLLREFCLK(SELREF=2)时钟源并且 DCO 作 为 ACLK 的时钟源(SELA=3,4);(OSCOFF=0) ● 在活动模式(AM)下,XT1 作为 FLLREFCLK(SELREF=0)时钟源并且 DCO 作为 MCLK 的时 钟源(SELA=3,4);(CPUOFF=0) ● 在活动模式(AM)到 LPM1 模式下,XT1 作为 FLLREFCLK(SELREF=0)时钟源并且 DCO 作 为 SMCLK 的时钟源(SELA=3,4);(SMCLKOFF=0) ● XT1OFF=0,活动模式(AM)到 LPM4 模式下 ___________________________________________________________________________ 注:XT1 在 MSP430543X 和 MSP430541X 系列中都有效。 XT1 在下面任何一种情况下,都是允许的: ● 在活动模式(AM)到 LPM3 模式下,XT1 作为 ACLK(SELA=0)、MCLK(SELM=0)、SMCLK (SELS=0)的时钟源(OSCOFF=0) ● 在活动模式(AM)到 LPM3 模式下,XT1 作为 FLLREFCLK(SELREF=2)时钟源并且 DCO 作 为 ACLK、MCLK 或 MCLK(SELA=3,4)、SMCLK(SELA=3,4);(OSCOFF=0) ● XT1OFF=0,活动模式(AM)到 LPM4 模式下 ___________________________________________________________________________ 3.2.4 晶振 XT2 某些芯片有第二个晶振 XT2,XT2 源自 XT2CLK,且在高频模式下,XT2 的特性和 XT1 相同。XT2DRIVE 位用来选择 XT2 的频率范围。 通过配置 XT1BYPASS 位,可以使 XT2 可以使用加载在 XIN 脚的外部时钟信号,当使用外部时钟信 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–55–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 号时,外部信号的频率必须和选择的工作模式在数据手册上的参数相符合。 XT2 管脚和普通 I/O 口复用。上电后,默认为 XT2 模式。但是 XT2 会一直保持禁止状态,直到与 XT2 复用的端口通过 PSEL 设置成 XT2 模式。复用 IO 口的配置由 XIN 和 XT2BYPASS 相关的 PSEL 决定。PSEL 置位,X2IN 和 X2OUT 端口将配置成 XT2 模式。如果 XT2BYPASS 也置位,XT2 将配置成 BYPASS 模式, XT2 相对应的振荡电路将停止工作。在 BYPASS 模式下,XIN 可以接收外部时钟信号输入,X2OUT 配置 成普通 IO 口模式,这时与 XOUT 相对应的 PSEL 位可以不用关心。 如果与 XT2IN 对应的 PSEL 位清零,XT2IN 和 XT2OUT 均被配置为普通 IO 口模式,此时 XT2 是禁 止的。 以下任何一种情况下,XT2 都被是允许的: ● 在活动模式(AM)到 LPM3 模式下,XT2 作为 ACLK 的时钟源(SELA=5,6,7);(OSCOFF=0) ● 在活动模式(AM)下,XT2 作为 MCLK 的时钟源(SELM=5,6,7);(CPUOFF=0) ● 在活动模式到 LPM1 模式下,XT2 作为 SMCLK 的时钟源(SELS=5,6,7);(SMCLKOFF=0) ● 在活动模式(AM)到 LPM0~3 模式下,XT2 作为 FLLREFCLK(SELREF=5,6)时钟源并且 DCO 作为 ACLK 的时钟源(SELA=3,4);(OSCOFF=0) ● 在活动模式(AM)下,XT2 作为 FLLREFCLK(SELREF=5,6)时钟源并且 DCO 作为 MCLK 的时钟源(SELA=3,4);(CPUOFF=0) ● 在活动模式(AM)及 LPM1 模式下,XT2 作为 FLLREFCLK(SELREF=5,6)时钟源并且 DCO 作为 SMCLK 的时钟源(SELA=3,4);(SMCLKOFF=0) ● XT2OFF=0,在活动模式(AM)到 LPM4 模式下 ___________________________________________________________ 注:XT2 在 MSP430543X 和 MSP430541X 系列都有效 XT2 在下面任何一种情况下,是允许工作的: ● 在活动模式(AM)到 LPM3 模式下,XT2 作为 ACLK(SELA=0)、MCLK(SELM=0)、SMCLK (SELS=0)的时钟源(OSCOFF=0) ● 在活动模式(AM)到 LPM3 模式下,XT2 作为 FLLREFCLK(SELREF=2)时钟源并且 DCO 作 为 ACLK、MCLK 或 MCLK(SELA=3,4)、SMCLK(SELA=3,4);(OSCOFF=0) ● XT1OFF=0,活动模式(AM)到 LPM4 模式下 ___________________________________________________________________________ 3.2.5 数字控制振荡器 (DCO) DCO 是内部集成的数字频率振荡器。DCO 频率可以通过软件配置 DCORSEL、DCO 和 MOD 位来调 整。DCO 频率可以经过 FLL 得到稳定的多种频率(FLLREFCLK/N),这点是可以通过软件选择的。FLL 可以通过 SELREF 位来选择的不同参考时钟源。参考时钟源包含 XT1、REFOCLK 或者 XT2CLK(如果可 用)。N 的值由 FLLREFDIV(n=1,2,4,8,12,16)定义。默认 N=1。在不需要 FLL 的场合,也就不 需要 FLLREFCLK 了,这时可以通过设置 SELREF={7}来实现。 __________________________________________________________________________ 注:对 F543x 和 F541x 的非 A 系列来说:设置 SELREF={7}实际上是选择了 XT2CLK 作为 FLL 参考 时钟。 _________________________________________________________________________ FLLD 可将 FLL 分频器的值 D 配置为 1,2,4,8,16,32。默认情况下 D=2,DCOCLKDIV 作为 MCLK 和 SMCLK 的时钟源,时钟频率为 DCOCLK/2。 分频因子(N+1)和分频值 D 定义了 N>0 时的 DCOCLK 和 DCOCLKDIV。当 N=0 分频值设置为 2。 fDCOCLK = D*(N+1)*(fFLLRENCLK/n) fDCOCLK = (N+1)*(fFLLRENCLK/n) 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–56–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 3.2.6.1 DCO频率调整 默认情况下,FLL 功能是允许的。可以通过置位 SCG0 或 SCG1 来禁止 FLL。一旦 FLL 被禁止,DCO 将在寄存器 UCSCTL0 和 UCSCTL1 定义的当前设置下继续工作。DCO 频率也可以在需要的时候手动调整, 否则,DCO 的频率将由 FLL 来稳定。 PUC 后,DCORSELx = {2}、DCOx = {0}。DCOCLKDIV 为 MCLK 和 SMCLK 提供时钟源。由于 CPU 执行代码的时钟来自 MCLK,而 MCLK 由 DCO 提供,所以从上电复位到执行代码的时间小于 5us。 DCOCLK 的频率由以下方式设置: 2)DCORSEL 位为 3 时,从 8 个频率范围中选择 1 个频率。具体可查看数据手册。 3)DCORSEL 选择 5,将 DCO 分成 32 个频率级别,相邻两个级大约相差 8%。 4)MOD 为 5,将在 DCO 选择的频率和{DCO+1}设置的下一更高频率中转换。如果 DCO=31, MOD 位不起作用,因为 DCO 频率已经是由 DCORSEL 选择的频率范围的最大值。 3.2.7 锁频环(FLL) 锁频环可以对 频率积分 器进行连续 加或减。 用于 驱动 DCO 的频率积分器 的值可以 从寄存器 UCSCTL0,UCSCTL1(MODx 和 DCOx 位)中读出。计数器的值可以用 fFLLREFCLK/n (n = 1, 2, 4, 8, 12, or 16) 加一调整或者用 fDCOCLK/(D*(N+1))减一调整。 注意:读 MOD 和 DCO 随着 DCOCLK 的频率不同,其积分器是不断调整的。所以在在写入 DCO 频率后再立即读,可能 读不出来,这是因为积分器还没有更新,如果积分器恰好在下一个连续 DCOCLK 时钟时产生了更新, 才能读出正确的值。 另外,因为 MCLK 与积分器的更新是异步的,所以在这种情况下的读数可能是一个错误值。这时 就需要使用多数表决法。 积分器中的 5 位(UCSCTL0 8~12 位)用于设置 DCO 频率。DCO 设置了 32 节拍,每一频率大约比 前面的高出约 8%。调制器混合两个相邻的 DCO 频率产生 1 个小数节拍。 对于给定 DCO 偏差范围设定,为了使 DCO 正常操作,要给 DCO 一段时间来稳定,一般需要 (n×32) fFLLREFCLK 个周期,在最坏情况下需要(n×32×32) fFLLREFCLK 周期。其中的 n 值由 FLLREFDIVX(1,2,4, 8,12,16)来定义。 3.2.8 DCO调制器 调制器混合两个 DCO 的频率:fDCO 和 fDCO+1,来产生一个有效的中间频率,提高时钟驱动,减少电 磁干扰。调制器通过配置 MOD 位,在 32 个 DCOLK 时钟周期中混合 fDCO 和 fDCO+1。当 MOD={0}时调制 器关闭。 调制器混频公式如下: T=(32-MOD) ×tDCO+MOD×tDCO+1 调制器操作如图 3-2 所示: 当 FLL 模块允许时下,DCO 调制器是由 FLL 硬件控制。如果不希望 FLL 工作,DCO 调制器设置需 由软件来配置。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–57–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图 3-2 调制模式 3.2.9 禁止FLL硬件和调制器 当状态寄存器 SCG0 和 SCG1 置位时,FLL 模块将禁止。当 FLL 模块禁止工作时,DCO 将在先前设 置的频率下运行,此时 DCOCLK 不会自动稳定。 DISMOD 置位时,DCO 调制器将禁止工作。当 DCO 调制器禁止时,可由 DCO 的控制位来选择 DCO 节拍。 注意:无 FLL 的 DCO 操作 当 FLL 被停止后,DCO 仍然可以在当前的设置下运行。因为 DCO 不再由 FLL 稳定,温度和 电压的改变将影响操作的频率。为确保可靠的操作性能,请注意参考数据手册中温度和电压系数。 3.2.10 低功耗模式下FLL 如果 SCG1、CPUOFF、OSCOFF 置位,中断服务请求将其清除,但是 SCG0 除外。也就是说,当从 LPM1、2、3、4 进入中断服务程序后,FLL 仍然禁止,此时 DCO 工作在之前 UCSCTL0 和 UCSCTL1 寄 存器设置的模式下。此时如果需要 FLL 工作,则可以由用户软件清除 SCG0 位。 3.2.11 在低功耗模式下,外部模块的请求操作 外部模块可以自动的从 UCS 模块中请求时钟源,而不用关心当前的工作模式,如图 3.3 所示。 外围模块可以通过 ACLK_REQ、MCLK_REQ、SMCLK_REQ 这三个控制位中的任何一个来产生请求 信号。这个请求信号是建立在相应模块时钟选择和配置的基础上的。例如:如果定时器选择了 ACLK 作为 时钟源,定时器允许时,定时器就会向 UCS 系统发出 ACLK_REQ 请求信号,此时,UCS 则不管当前 LPM 的设置,都会允许输出 ACLK 信号。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–58–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 来自外围模块的任何时钟请求信号都将导致其相关的时钟停止信号忽略,但是并不改变时钟停止控制 位的设置。例如,某外围模块可能需要当前被 OSCOFF 停止的 ACLK 信号(OSCOFF=1),这时外围模块 可以请求一个 ACLK_REQ 产生的 ACLK,此时 OSCOFF 位无效,因此 ACLK 对发出请求的外围模块就是 可用的,OSCOFF 仍保持当前值。 如果请求的时钟是不活动的,软件不可屏蔽中断处理程序就必须要处理这个请求。在前面的例子中, 如果 ACLK 来自 XT1,且 XT1 是禁止的,此时将产生一个振荡失效标志,此时需要软件处理。由于看门 狗的有安全性的要求,如果先前选择的时钟源不可用,将自动选择 VLOCLK 作为时钟源。 由于有时钟请求信号这个特性,所以在实际应用中,要注意进入低功耗模式的情况。虽然选择了低功 耗模式,但时钟请求造成的功耗仍会大于数据手册中的值。 图 3-3 模块请求时钟系统 3.2.12 UCS模块自动失效安全操作 UCS 中模块有振荡器实现失效时的自动保护特性。这个功能可以检测 XT1、DCO、XT2 的振荡器故 障,如图 3-4 所示。失效条件有: XT1 在 LF 模式下低频振荡失效(XT1LFOFFG) XT1 在 HF 模式下高频振荡失效(XT1HFOFFG) XT2 高频振荡失效(XT2OFFG) DCO 失效标志(DCOFFG) 如果相应的振荡功能打开但不能正常运行,则相应的晶振失效位 XT1LFOFFG、XT1HFOFFG 和 XT2OFFG 将置位。而且一旦置位,失效标志则不论失效条件是否还存在,都将一直保持置位,直到软件 复位。如果用户清除了失效标志位,但失效条件依然存在的话,则失效标志位会自动重新置位,否则,保 持清零。 当选择 LF 模式下的 XT1 作为 FLL 的参考信号源时,晶振失效将使 FLL 的参考信号源 FLLREFCLK 切换到 REFO,同时 XT1LFOFFG 置位。当选择 HF 模式下的 XT1 作为 FLL 的参考信号源时,XT1 失效时 将导致 FLLREFCLK 信号丢失,FLL 继续倒数到 0,并尝试锁定 FLLREFCLK 和 DCOCLK/(D×[N+1])。 DCO 降到最低频率的节拍位置(DCO 被清除),DCOFFG 置位。对于给定的 DCO 频率范围,如果 DCO 倍频器的值过高,使 DCO 频率达到了最高的节拍位置(UCSCTL0.12~UCSCTL0.8 置位),DCOOFF 也同 样会置位。DCOFFG 置位后将一直保持,直到软件将其清除。如果用户清除了 DCOFFG 位,但是故障条 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–59–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 件依然存在的话,DCOFFG 会再次置位,否则保持清零,XT1HFOFFG 置位。 当使用 XT2 作为 FLL 的参考信号源时,其操作也同样如此。 上电复位或检测到振荡故障(XT1LFOFFG、 XT1HFOFFG,、XT2OFFG)时,振荡故障中断标志 OFIFG 置位。如果 OFIFG 置位,并且 OFIE 置位,OFIFG 将产生不可屏蔽中断请求。中断允许后,如前面的 MSP430 系列一样,OFIE 不会自动复位,这是由不可屏蔽中断电路产生的。此时,OFIE 必须由软件复位。具体的 时钟故障源可以通过检查相应的时钟故障标志位来确定。 如果检测到 MCLK 时钟源振荡故障,将自动切换到 DCO 时钟(DCOCLKDIV)作为除 XT1 低频模式 外的所有的时钟源。如果 MCLK 来自于低频模式的 XT1,振荡故障将自动转换 REFO 作 MCLK 时钟源。 这并不会改变 SELM 的设置,此时必须由软件处理。 如果检测到 SMCLK 时钟源振荡故障,将自动切换到 DCO 时钟(DCOCLKDIV)作为除 XT1 低频模 式外的所有的时钟源。如果 SMCLK 来自于低频模式的 XT1,振荡故障将自动转换 REFO 作 SMCLK 时钟 源。这同样不会改变 SELS 的设置,也必须由软件处理。 如果检测到 ACLK 时钟源振荡故障,将自动切换到 DCO 时钟(DCOCLKDIV)作为除 XT1 低频模式 外的所有的时钟源。如果 ACLK 来自于低频模式的 XT1,振荡故障将自动转换 REFO 作 ACLK 时钟源。 SELA 的设置不会改变,需要软件来处理这种情况。 图 3-4 振荡故障逻辑 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–60–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 注意:振荡故障期间 DCO 的活动状态 DCOCLKDIV 时钟即使在 DCO 最小频率下仍可以活动。这个时钟信号可以保证在振荡故障期间 CPU 能够执行程序代码或者响应不可屏蔽中断。 注意:故障条件 DCO 故障:如果 UCSCTL0 寄存器的 DCO 位的值等于 0 或者 31,DCOFFG 置位。 XT1 的低频晶振故障:在 LF 模式下 XT1 停止操作时,XT1LFOFFG 将置位,继续使能操作后 XT1LFOFFG 复位。如果由于晶振故障发生,则 XT1LFOFFG 置位,且保持置位状态,即使用户 把该位清零,如果故障条件仍然存在,XT1LFOFFG 仍置位。 XT1 的高频晶振故障:在 HF 模式下 XT1 停止操作时,XT1LFOFFG 置位,继续使能操作后 XT1LFOFFG 复位。如果晶振发生故障,则 XT1LFOFFG 置位,且保持置位状态,即使用户把该 位清零,如果故障条件仍然存在,XT1LFOFFG 仍置位。 XT2 晶振故障:XT2 停止操作时,XT2OFFG 置位,继续使能操作后 XT2OFFG 复位。如果晶振 发生故障,则 XT2OFFG 置位,且保持置位状态,即使用户把该位清零,如果故障条件仍然存 在,XT2OFFG 仍置位。 注意:故障逻辑 注意如果故障条件一直存在,则 OFIGF 将保持置位。实际应用时要注意清除 OFIFG 位的情 况。如果清除该位时故障条件仍存在,时钟逻辑将回到故障前的用户配置。 注意:故障逻辑计数器 每个振荡电路都有硬件计数器,这些计数器在它们各自的振荡器发生故障(即故障标志置 位)时,这些计数器将复位。在故障条件消除后则继续计数,一旦达到最大计数值,故障 标志也会清除。 低频模式下,XT1 最大的计数值是 8192。高频模式(且 XT2 有效)下,XT1 的最大计数值为 1024。在旁路模式下,不管是高频还是低频设置,最大计数值都是 8192。 3.2.13 时钟信号的同步 当把 MCLK 或者 SMCLK 从一个时钟源切换到另一个时钟源时,为了避免产生竞争现象,要同步切换。 如图 3.5 所示。 当前时钟周期持续到下一个上升沿开始。 时钟保持高电平直到新时钟源的下一上升沿到来。 选择新的时钟源,并维持一个高电平。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–61–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图 3-5 将 MCLK 从 DCOCLK 改变为 ACLK 3.3 模块振荡器(MODOSC) UCS 模块也支持一个内部模块振荡器(MODOSC),它可为 FLASH 存储控制器模块提供信号或通过 选择设置供其他系统其它模块使用。MODOSC 的时钟来自 MODCLK。 3.3.1 MODOSC 操作 为了降低功耗,在不需要 MODOSC 时,停止供电,需要时才使其振荡。当需要 MODOSCCLK 时, 相关的模块向其产生请求。分为有条件请求和无条件请求,然后再使能 MODOSC。MODOSCREQEN 置位, 表示有条件请求有效。而无条件请求则总是有效。使用无条件请求时,不需要去置位 MODOSCREQEN, 例如 Flash 控制器和 ADC12_A。 Flash 存储控制器在执行写或者擦除操作时,只需要 MODCLK 信号。当执行操作时,flash 存储控制 器为 MODOSC 产生一个无条件请求信号。如果在其他模块发出的请求前没有被允许,则执行上述操作之 后,MODOSC 会允许启用。 ADC12_A 可以通过设置选择使用 MODOSC 作为转换时钟源。用户选择 ADC12OSC 作为转换时钟源 时。在转换期间,ADC12_A 为 ADC12OSC 产生一个无条件请求。如果在其他模块发出的请求前没有被允 许,则执行上述操作之后,MODOSC 会允许启用。 3.4 UCS模块寄存器 表 3-1 中列出了 UCS 的模块寄存器。其基地址可以在数据手册中找到,表中只列出了地址偏移量。 寄存器 缩写 寄存器类型 访问形式 地址偏移量 初始状态 标准时钟控制器 0 UCSCTL0 读/写 字 00h 0000h UCSCTL0_L 读/写 字节 00h 00h UCSCTL0_H 读/写 字节 01h 00h 标准时钟控制器 1 UCSCTL1 读/写 字 02h 0020h UCSCTL1_L 读/写 字节 02h 20h UCSCTL1_L 读/写 字节 03h 00h 标准时钟控制器 2 UCSCTL2 读/写 字 04h 101Fh UCSCTL2_L 读/写 字节 04h 1Fh UCSCTL2_L 读/写 字节 05h 10h 标准时钟控制器 3 UCSCTL3 读/写 字 06h 0000h UCSCTL3_L 读/写 字节 06h 00h UCSCTL3_L 读/写 字节 07h 00h 标准时钟控制器 4 UCSCTL4 读/写 字 08h 0044h UCSCTL4_L 读/写 字节 08h 44h 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–62–页 共 423 页 标准时钟控制器 5 标准时钟控制器 6 标准时钟控制器 7 标准时钟控制器 8 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM UCSCTL4_L UCSCTL5 UCSCTL5_L UCSCTL5_L UCSCTL6 UCSCTL6_L UCSCTL6_L UCSCTL7 UCSCTL7_L UCSCTL7_L UCSCTL8_L UCSCTL8_L UCSCTL8_L 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 字节 09h 字 0Ah 字节 0Ah 字节 0Bh 字 0Ch 字节 0Ch 字节 0Dh 字 0Eh 字节 0Eh 字节 0Fh 字 10h 字节 10h 字节 11h 00h 0000h 00h 00h C1CDh CDh C1h 0703h 03h 07h 0707h 07h 07h UCSCTL0 标准始终系统控制寄存器 0 15 14 13 12 11 10 9 8 保留 DCO 7 6 5 4 3 2 1 0 MOD 保留 DCO MOD Bits12-8 Bits7-3 DCOtap 选择。这些位可以选择 DCOtap。在 FLL 操作中,可自动修改。 调制位计数器。这些位选择调制模式所有的 MOD 位在 FLL 操作中,自动修改。 调制位计数器从 31 到 0 时,DCO 寄存器值增加。调制位计数器从 0 减至最大 计数值时,DCO 同样减小。 UCSCTL1 标准时钟系统控制寄存器 1 15 14 13 12 11 10 9 8 保留 7 6 保留 5 4 DCORSEL 3 保留 2 保留 1 保留 0 DISMOD DCORSEL DISMOD Bits6-4 Bits0 DCO 频率范围选择。这些位选择操作的 DCO 频率范围。 调整器。该位使能/禁止调制器。 0 调整器使能 1 调整器禁止 UCSCTL2 标准时钟系统控制器 2 15 14 13 12 11 10 9 8 保留 FLLD 保留 保留 FLLN 7 6 5 4 3 2 1 0 FLLD Bits14-12 FLLN 锁频环分频器。在 FLL 反馈环中这些位除 fDCOCLK。这使 乘数位产生另外的乘数。 000 fDCOCLK/1 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–63–页 共 423 页 FLLN LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM Bits9-0 001 fDCOCLK/2 010 fDCOCLK/4 011 fDCOCLK/8 100 fDCOCLK/16 101 fDCOCLK/32 110 保留,默认 fDCOCLK/32 111 保留,默认 fDCOCLK/32 乘数位。这些位设置 DCO 的乘数值。N 必须大于 0。对 FLLN 写 0,将使 N 置 1。 UCSCTL3 标准时钟系统控制器 3 15 14 13 12 11 10 9 8 保留 7 6 保留 SELREF FLLREFDIV 5 4 3 2 1 0 SELREF 保留 FLLREFDIV Bits6-4 FLL 基准源选择。这些位选择 FLL 基准时钟源。 Bits2-0 000 XT1CLK 001 保留备用。默认是 XT1CLK。 010 REFOCLK。 011 保留备用。默认是 REFOCLK。 100 保留备用。默认是 REFOCLK。 101 XT2CLK(如果可用)。否则 REFOCLK。 110 保留备用。XT2CLK(如果可用)。否则 REFOCLK 111 无选项。只针对 F543X 以及 F541x 非 A 版本,保留 备用。XT2CLK(如果可用)。否则 REFOCLK。 FLL 基准源分频。这些位定义 fFLLREFCLK 分频因子,分频后 的频率就被用作 FLL 基准频率。 000 fFLLREFCLK/1 001 fFLLREFCLK/2 010 fFLLREFCLK/4 011 fFLLREFCLK/8 100 fFLLREFCLK/12 101 fFLLREFCLK/16 110 保留。默认 fFLLREFCLK/16 111 保留。默认 fFLLREFCLK/16 UCSCTL4 标准时钟系统控制器 4 15 14 13 12 11 10 9 保留 SELA 7 6 5 4 3 2 1 保留 SELA Bits10-8 SELS 保留 选择 ACLK 的时钟源 SELM 000 XT1CLK 001 VLOCLK 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 8 0 第–64–页 共 423 页 SELS SELM Bits6-4 Bits2-0 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 010 REFOCLK 011 DCOCLK 100 DCOCLKDIV 101 XT2CLK(可用),否则是 DCOCLKDIV 110 保留。XT2CLK(可用),否则是 DCOCLKDIV 111 保留。XT2CLK(可用),否则是 DCOCLKDIV 选择 SMCLK 的时钟源 000 XT1CLK 001 VLOCLK 010 REFOCLK 011 DCOCLK 100 DCOCLKDIV 101 XT2CLK(可用),否则是 DCOCLKDIV。 110 保留。XT2CLK(可用),否则是 DCOCLKDIV。 111 保留。XT2CLK(可用),否则是 DCOCLKDIV。 选择 MCLK 的时钟源 000 XT1CLK 001 VLOCLK 010 REFOCLK 011 DCOCLK 100 DCOCLKDIV 101 XT2CLK(可用),否则是 DCOCLKDIV。 110 保留。XT2CLK(可用),否则是 DCOCLKDIV。 111 保留。XT2CLK(可用),否则是 DCOCLKDIV。 UCSCTL5 标准时钟系统控制器 5 15 14 13 12 11 10 9 8 保留 DIVPA 保留 DIVA 7 6 5 4 3 2 1 0 保留 DIVPA Bits14-12 DIVS 保留 DIVM 外部引脚上可用的 ACLK 时钟源分频。对 ACLK 进行分频,外部 引脚上输出。 DIVA Bits 10-8 000 fACLK/1 001 fACLK/2 010 fACLK/4 011 fACLK/8 100 fACLK/16 101 fACLK/32 110 保留。默认是 fACLK/32 111 保留。默认是 fACLK/32 ACLK 时钟源分频。对 ACLK 时钟源进行分频。 000 fACLK/1 001 fACLK/2 010 fACLK/4 011 fACLK/8 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–65–页 共 423 页 DIVS DIVM Bits 6-4 Bits2-0 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 100 fACLK/16 101 fACLK/32 110 保留。默认是 fACLK/32 111 保留。默认是 fACLK/32 SMCLK 时钟源分频 000 fSMCLK/1 001 fSMCLK/2 010 fSMCLK/4 011 fSMCLK/8 100 fSMCLK/16 101 fSMCLK/32 110 保留。fSMCLK/32 111 保留。fSMCLK/32 MCLK 时钟源分频 000 fMCLK/1 001 fMCLK/2 010 fMCLK/4 011 fMCLK/8 100 fMCLK/16 101 fMCLK/32 110 保留。默认是 fMCLK/32 111 保留。默认是 fMCLK/32 UCSCTL6 标准时钟系统控制器 6 15 14 13 12 11 10 9 XT2DRIVE 保留 XT2BYPASS 保留 8 XT2OFF 7 6 5 4 3 2 1 0 XT1DRIVE XTS XT1BYPASS XCAP SMCLKOFF XT1OFF XT2DRIVE Bits15-14 XT2 的振荡电流可以调到需要的值。最初为了快速稳定起 振,以最大电流开始。需要时,用户软件可减小驱动。 00 最低电流消耗。XT2 的晶振频率范围在 4MHz 到 8MHz。 01 驱动力稍增大。XT2 的晶振频率范围在 8MHz 到 6MHz。 10 驱动力增大。XT2 的晶振频率范围在 16MHz 到 24MHz。 11 驱动力和电流消耗均达到最大。XT2 的晶振频率范围 在 24MHz 到 32MHz。 XT2BYPASS Bit12 XT2 旁路模式选择 0 XT2 由内部晶振提供。 1 XT2 由外部引脚输入。 XT2OFF Bit8 关闭 XT2 晶振。 0 如果 XT2 通过端口选择,并且非旁路模式,那么 XT2 被打开。 1 如果 XT2 没有被用作 ACLK、MCLK、以及 SMCLK 的 时钟源或者没有用作 FLL 的基准源,XT2 关闭。 XT1DRIVE Bits7-6 XT1 的振荡电流可以调到需要的值。最初为了快速稳定起 振,以最大电流开始。需要时,用户软件可减小驱动。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–66–页 共 423 页 XTS XT1BYPASS XCAP SMCLKOFF XT1OFF LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM Bit5 Bit4 Bit3-2 00 XT1 低频模式下,最低电流消耗。XT1 在高频模式下的 晶振频率范围在 4MHz 到 8MHz。 01 XT1 低频模式下,驱动力稍增大。XT1 在高频模式下的 晶振频率范围在 8MHz 到 16MHz。 10 XT1 低频模式下,驱动力增大。 XT1 在高频模式下的 晶振频率范围在 16MHz 到 24MHz。 11 驱动力和电流消耗均达到最大。XT1 在高频模式下的 晶振频率范围在 24MHz 到 32MHz。 XT1 模式选择 0 低频模式。XCAP 定义 XIN 和 XOUT 两个引脚的电容。 1 高频模式。该位没有使用。 XT1 旁路模式 0 XT1 有内部晶振提供。 1 XT1 由外部引脚输入。 振荡电容选择。这些位选择 LF 模式下用于 LF 振荡器的电 容。等效电容 Ceff=(Cxin+2pF)/2。前提是假定 Cxin=Cout, 并且由于封装以及布板的原因产生 2pF 左右的寄生电容。关 于典型内部及有效电容的细节,参见数据手册的相关章节。 Bit1 SMCLK 关闭。该位用来关闭 SMCLK。 0 SMCLK 开启 1 SMCLK 关闭 Bit0 关闭 XT1 晶振 0 如果 XT1 已经通过端口选择,并且非旁路模式,那么 XT1 被打开。 1 如果 XT1 没有被用作 ACLK、MCLK、以及 SMCLK 的 时钟源或者没有用作 FLL 的校准源,XT1 关闭。 UCSCTL7 标准时钟系统控制器 7 15 14 13 12 7 6 5 4 保留 保留 11 保留 3 XT2OFFG 10 2 XT1HFOFFG 9 1 XT1LFOFFG 8 0 DCOFFG XT2OFFG Bit3 XT1HFOFFG Bit2 XT1LFOFFG Bit1 XT2 晶振故障标志位。假如该位置位,那么 OFIFG 也置位。只要 XT2 故障条件存在 XT2OFFG 标志位就会置位。XT2OFFG 可以通 过软件清零。 0 上一次复位之后没有故障条件产生。 1 XT2 好、故障。上一次复位之后出现故障条件。 XT1 晶振故障标志位(高频模式)。假如该位置位,那么 OFIFG 也 置位。只要 XT1 故障条件存在 XT1HFOFFG 标志位就会置位。 XT1HFOFFG 可以通过软件清零。 0 上一次复位之后没有故障条件产生。 1 XT1 故障。上一次复位之后出现故障条件。 XT1 晶振故障标志位(低频模式)。假如该位置位,那么 OFIFG 也 会置位。只要 XT1 故障条件存在 XT1LFOFFG 标志位就会置位。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–67–页 共 423 页 DCOFFG LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM XT1LFOFFG 可以通过软件清零。 l 最近一次复位之后没有故障条件产生。 1 XT1 故障(低频)。最近一次复位之后出现 XT1(LF)故障 条件。 Bit0 DCO 故障标志。假如该位置位,那么 OFIFG 也会置位。如果 DCO={0}或者 DCO={31},DCOFFG 标志位就会置位。DCOOFFG 可以通过软件清零。 1 上一次复位之后没有故障条件产生。 1 DCO 故障。上一次复位之后出现 DCO 故障条件 UCSCTL8 标准时钟系统控制器 8 15 14 13 12 11 10 9 8 保留 7 6 5 4 3 2 1 0 保留 MODOSCREQEN Bit3 SMCLKREQEN Bit2 MCLKREQEN Bit1 ACLKREQEN Bit0 保留 MODOSC REQEN SMCLK REQEN MCLK REQEN ACLK REQEN MODOSC 时钟需求允许。置位该位允许 MODOSC 条件模块 请求。 0 MODOSC 条件请求禁止。 1 MODOSC 条件请求允许。 SMCLK 时钟需求允许。置位该位允许 SMCLK 条件模块请 求。 2 SMCLK 条件请求禁止。 3 SMCLK 条件请求允许。 MCLK 时钟需求允许。置位该位允许 MCLK 条件模块请求。 0 MCLK 条件请求禁止。 1 MCLK 条件请求允许。 ACLK 时钟需求允许。置位该位允许 ACLK 条件模块请求。 0 ACLK 条件请求禁止。 1 ACLK 条件请求允许。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–68–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 第4章 CPUX 本章主要讲述扩展 MSP430X 16 位精简指令 CPU,寻址模式与指令集,其具有 1MB 存储器地址的访问能 力 注:MSP430F5xx 芯片中的 MSP430X CPUX,在某些情况下,与 2xx 和 4xx 系列的时钟周期有细微差 别。 4.1 MSP430X CPU(CPUX)介绍 4.2 中断 4.3 CPU 寄存器 4.4 寻址模式 4.5 MSP430 及 MSP430X 指令 4.6 指令集说明 4.1 CPU 介绍 MSP430X CPU 具有一些独特的特性,如:分支计算、表处理及使用高级 C 语言等现代编程技术设计 的特性。MSP430XCPU 可以在不分页存储情况下寻址 1MB 的范围。MSP430XCPU 完全兼容 MSP430CPU。 MSP430X CPU 特性: 4 RISC 构架 5 正交结构 6 包含 PC、SR、SP 的全寄存器访问 7 单周期寄存器操作 8 为减少存储器操作的大寄存器文件 9 允许直接访问或在不分页情况下在整个存储空间跳转的 20 位地址总线 10 支持直接使用字操作的 16 位数据总线 11 提供能产生 6 个常用立即数的常数发生器,可以优化代码 12 中间不使用寄存器寄存、直接存储器到存储器的传递 13 字节、字、20 位字寻址 MSP430XCPU 的框图如图 4-1 所示: 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–69–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图 4-1 MSP430X CPU 框图 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–70–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 4.2 中断 MSP430X 具有如下中断结构: 14 中断向量无需表决 15 中断向量地址从 0FFFEH 开始 中断向量是一个指向低 64KB 存储空间的 16 位地址。这意味着所有的中断处理程序必须从低 64KB 存 储空间开始。 中断期间,程序计数器 PC 与状态寄存器 SR 按照图 4-2 的方式压入堆栈。MSP430X 结构将 PC 的 19~ 16 位自动添加到堆栈中状态寄存器 SR 上,通过这种方式可以有效地存储 20 位的 PC 值。RETI 指令执行时, 恢复 20 位的 PC,可以从中断返回到存储器的任何范围内。 图 4-2 中断时 PC 在堆栈中的存放方式 4.3 CPU 寄存器 CPU 包含 16 个寄存器(R0~R15)。其中 R0~R3 具有特殊功能,其余的可以作为通用寄存器。 4.3 .1 程序计数器(PC) 20 位的 PC(PC/R0)始终指向的是下一条要执行的指令地址。每条指令存储的地址都是偶地址,所以 PC 也是以相应的偶数的方式变化。即 PC 每次都定位到偶地址上。如图 4-3 所示。 图 4-3 PC 程序计数器 PC 可以用任何指令和寻址模式来访问,如: MOV.W #LABEL,PC ; Branch to address LABEL(lower 64kb) MOVA @LABEL,PC ; Branch to address LABEL(1MB memory) MOV.W LABEL,PC ; Branch to address in word LABEL(lower 64kb) MOV.W @R14,PC ; Branch indirect to address in R14(lower 64kb) ADDA #4,PC ; Skip two words(1MB memory) 当执行 BR 和 CALL 指令时,PC 的高 4 位清零。使用 BR 或 CALL 指令只能在低 64KB 地址范围内跳转。 当在超出 64KB 的地址范围跳转或调用子函数时,只能使用 BRA 及 CALLA 指令。所以,直接修改 PC 值的任 何指令可以根据其相应的寻址模式实现跳转和调用。例如:当执行 MOV.W #VALUE,PC 的高 4 位清零,因为 这是一个.W 指令。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–71–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 中断服务响应过程中或使用 CALL(CALLA)指令时,PC 是自动保存到堆栈中的。表 4-4 为使用 CALLA 指令后,PC 在堆栈中的存储方式,而 CALL 指令只存储了 PC 的 0~15 位。 图 4-4 使用 CALLA 指令后保存在堆栈中的 PC 值 使用 RETA 指令将恢复 PC 值的 19~0 位,且 SP 加 4。而 RET 指令只能恢复 PC 值的 15~0 位,SP 加 2。 4.3.2 堆栈指针(SP) 20 位的 SP(R1)用于存储子函数调用或中断的返回地址。SP 采用预减或后加的策略。另外,SP 可用于 所有指令或寻址模式。图 4-5 为 SP,SP 定义在 RAM 中,且与偶地址对齐。 图 4-6 描述了堆栈的使用方法。图 4-7 为 20 位地址字入栈时的操作。 MOV.W 2(SP),R6 MOV.W R7,0(SP) PUSH #0123h POP R8 ; copy item I2 to R6 ; overwrite TOS with R7 ; put 0123h on stack ; R8=0123h 图 4-5 堆栈指针 图 4-6 堆栈的使用 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–72–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图 4-7 堆栈中 PUSHX.A 格式 图 4-8 描述了使用 PUSH 和 POP 指令的特性。 在执行 PUSH SP 后,堆栈指针改变了。 当执行 POP SP 后,SP 没有变化。POP SP 指令将 SP1 放入堆栈指针 SP 中(SP2=SP1) 图 4-8 PUSH SP,POP SP 顺序 4.3.3 状态寄存器(SR) 16 位的 SP(R2)状态寄存器可作为源寄存器或目的寄存器,只能用于字指令访问及寄存器寻址模式。 在其他寻址模式下可以与 R3 组合起来作为常数发生器使用。图 4-9 所示为 SR 的各寄存器位。不能向 SR 中写入 20 位的数据,否则将产生不可预料的后果。 图 4-9 SR 寄存器位 表 4-1 为 SR 寄存器位的具体描述: 表 4-1 SR 寄存器位描述 位 描述 保留 保留 V 溢出位,当算术运算结果超出有符号变量的范围时,置 1。 ADD(.B),ADDX(.B,.A),ADDC(.B,),ADDCX(.B,.A),ADDA 当正+正=负或负+负=正时置位,否则清零 SUB(.B),SUBX(.B,.A),SUBC(.B,),SUBCX(.B,.A),SUBA,CMP(.B),CMPX(.B,.A), CMPA 当正-负=负或负-正=正时置位,否则清零 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–73–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM SCG1 系统时钟发生器 1,当置位时,如果 MCLK 或 SMCLK 没有使用 DCOCLK 时将关闭 DCO 的直流发生器 SCG0 系统时钟发生器 0,当置位时,将关闭 FLL 模块 OSCOFF 晶振关闭,当置位时,如果 MCLK 或 SMCLK 没有使用 LFXT1CLK 时将关闭 LFXT1 晶振 震荡器 CPUOFF CPU 关闭位,当置位时,将关闭 CPU GIE 总中允许位,当置位时,将允许所有的可屏蔽中断,否则将禁止所有可屏蔽中断。 N 负数标志,当置位时,表示操作的结果是负数,当为正数时,清除 Z 零标志,当置位时,表示操作的结果是 0,非零时,将清零 C 进位位,当置位时,表示操作的结果产生了进位,无进位将清零 注:对 SR 进行位操作时,应使用 MOV,BIS 及 BIC 指令。 4.3.4 常数发生器(CG1 及 CG2) 可以使用常数发生器产生 6 种常用的常数,产生常数是不需要任何额外的 16 位程序指令的,常数发 生器由 R2(CG1)和 R3(CG2)组成。当作为常数发生器时,只能作为源寄存器寻址模式,如表 4-2 所示。 表 4-2,CG1/CG2 常数发生器的值 寄存器 AS 内容 备注 R2 00 - 寄存器寻址模式 R2 01 (0) 绝对寻址模式 R2 10 00004h 4,位处理 R2 11 00008h 8,位处理 R3 00 00000h 0,字处理 R3 01 00001h 1 R3 10 00002h 2,位处理 R3 11 FFh,FFFFh,FFFFFFh -1,字处理 使用常数发生器的优势在于: 16 无需特殊指令 17 6 个常数不需要额外的代码 18 无需访问代码存储器可以多次得到常数 在汇编语言中,如果作为立即数使用,该常数是自动产生的。此时,R2/R3 只能工作在常数发生器模 式下,不能用于寻址,只能作为源操作数。 4.3.4.1 常数发生器——扩展指令集 MSP430 仅有 27 条 RISC 指令集。然而,常数发生器允许 MSP430 汇编程序支持额外的 24 条仿真指令。 例如:单操作数指令: CLR dst (MOV R3,dst) 可被同样长度的双操作数指令仿真。 MOV R3,dst(R3 = #0) 这里#0 被汇编替代,使用了 R3 且 As=00. INC dst (ADD 0(R3),dst) 被下面指令替代: ADD 0(R3),dst 4.3.5 通用寄存器(R4~R15) 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–74–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 12 个 CPU 寄存器(R4~R15)可作为 8 位、16 位、20 位数据寄存器。对 CPU 寄存器做字节写操作时将 清除 BIT19~BIT8 位。对寄存器做字写操作将清除 BIT19~BIT16。只有 SXT 指令例外,因为 SXT 指令是扩 展符号位到 20 位寄存器。 下图所示的是字节、字、地址字的不同处理方式。如果寄存器是作为目的操作数,并且是以字节或字 的指令方式来操作的,需要注意最高位的清零处理。 图 4-10 所示为字节处理操作(8 位,.B 后缀)。源寄存器与目的存储器字节、源存储器字节与目的寄 存器的处理过程如下图所示。 图 4-10 寄存器-字节/字节-寄存器操作 图 4-11 及图 4-12 所示为 16 位字的操作过程(后缀为.W),源寄存器与目的存储器字、源存储器字与 目的寄存器的处理过程如下图所示。 图 4-11 寄存器-字操作 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–75–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图 4-12 字-寄存器的操作 图 4-13 及图 4-14 为 20 位的地址字的操作过程(下标为 A 的指令),源操作数为寄存器,目标操作数 为存储器或相反。 图 4-10 寄存器-地址字的操作 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–76–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图 4-10 地址字-寄存器的操作 4.4 寻址模式 源操作数的 7 种寻址模式及目的操作数的 4 种寻址方式可以使用 16 位或 20 位地址(见表 4-3)。MSP430 和 MSP430X 指令在整个 1MB 存储范围内都是可用的。 表 4-3 源/目标寻址模式 AS/AD 寻址模式 语法 描述 00/0 寄存器寻址 Rn 寄存器内容为操作数 01/1 变址寻址 X(Rn) (Rn+X)指向操作数,X 存于后面字或前扩展字及下一字 节组合中。 01/1 符号寻址 ADDR (PC+X)指向操作数,X 存于后面字或前扩展字及下一 字节组合中,使用了变址模式 X(PC) 01/1 绝对寻址 &ADDR 指令后面字中包括绝对地址。X 存于后面字或前扩展字 及下一字节组合中,使用了变址模式 X(SR) 10/- 间接寄存器寻址 @Rn Rn 作为指向操作数的指针。 11/- 间接增量寻址 @Rn+ Rn 作为指向操作数的指针,操作结束后,如果是.B 指令 则 Rn 加 1,.W 指令则加 2,.A 指令则加 4 11/- 立即数寻址 #N N 存于后面字或前扩展字及下一字节组合中,使用了间 接自增模式@PC+ 下面的章节中将详细介绍这 7 种寻址模式。大部分例程对目地操作数和源操作数均使用了相同的寻址 模式。但在实际指令中,源操作数或目地操作数的寻址方式是多种寻址方式的组合。 注:EDE、TONI、TOM 及 LEO 标号的使用 在整个 MSP430 文档中,EDE、TONI、TOM 及 LEO 是作为通用的标号,它们仅仅是标号,并没 有其他任何特殊意义。 4.4.1 寄存器寻址模式 操作方式:操作数可使用 CPU 寄存器的 8、16、20 位的值 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–77–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 指令长度:1、2 或 3 个字 注释说明:适用于源操作数和目的操作数 字节操作:只读源操作寄存器 Rsrc 的 8 位最低有效位(LSBs),结果写到目的操作数 Rdst 的 8 位最 低有效位(LSBs)中,目的操作数的 BIT8~BIT19 清零。Rsrc 寄存器的值保持不变。 字操作: 只读源操作寄存器 Rsrc 的 16 位最低有效位(LSBs),结果写到目的操作数 Rdst 的 16 位最 低有效位(LSBs)中,目的操作数的 BIT6~BIT19 清零。Rsrc 寄存器的值保持不变。 地址字操作:地址字操作时,将读源操作寄存器的全部 20 位数据,将 20 位结果写入目的操作数 20 位中。Rsrc 寄存器的值不变。 SXT 例外:在寄存器操作中,SXT 是唯一的例外。低字节的符号位(BIT7)将扩展到整个 Rdst 的 19:8 中。 例如:BIS.W R5,R6; 该指令将 R5 中的 16 位数据与 R6 中的 16 位内容进行逻辑或运算,R6 的 19:16 清零。 BISX.A R5,R6; 该指令将 R5 中的 20 位数据与 R6 中的 20 位内容进行逻辑或运算。 扩展字中包含与 20 位数据相关的 A/L。指令执行结果如下: 4.4.2 变址寻址模式 在变址寻址模式通过在 CPU 寄存器上加一个地址偏移量来计算操作数的实际地址。 变址模式有三种寻址模式: 3、低 64KB 范围内的变址寻址 4、超出 64KB 地址范围变址寻址的 MSP430 指令 5、变址寻址模式的 MSP430X 指令 4.4.2.1 低 64KB 存储范围的变址寻址 如果 CPU 寄存器 Rn 指向低 64KB 存储范围的一个地址,那么在 CPU 寄存器 Rn 与 16 位偏移量相加之后 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–78–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 所得到存储地址的 BIT19~BIT16 位为零。这就说明,计算后所得到的地址总是在 64KB 的范围之内,不会 超出 64KB 的存储范围。RAM 和外围寄存器也可用这种方式访问,原有的 MSP430 软件不需要任何改动即可 使用,如图 4-15 所示。 图 4-15 低 64KB 的变址寻址模式 指令长度:2 或 3 个字 操作方式:在指令后的下一字中存放了有符号的 16 位偏移量,将这个偏移量加到 CPU 寄存器 Rn 上。即可 得到实际的存储地址。该地址指向 00000h~0FFFFh 范围内的操作数地址,将结果的 BIT19~ BIT16 位清零。操作数为寻址存储空间的内容。 注释说明:可用于源操作数和目的操作数,并且在计算前后,所涉及的两个寄存器内容在操作前后保持不 变。 例如:ADD.B 1000h(R5),0F000h(R6) 该指令将 1000h(R5)中的 8 位操作数与 0F000h(R6)中的 8 位操作数相加,结果存入目的字节。由于 R5 和 19:16 位都清零,源操作数和目的操作数都位于低 64KB 的存储范围内。 源操作数:通过计算R5+1000h,字节指向缩短1个16位地址后结果为R5+1000h=0579Ch的地址。 目标操作数:通过计算 R6+0F000h,字节指向缩短 1 个 16 位地址后结果为 R6+F000h=00778h 的地址。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–79–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 4.4.2.2 高字节变址寻址 MSP430 指令 如果 CPU 寄存器 Rn 指向超出 64KB 的存储空间范围的地址,那么 Rn 的 19:16 位将用于计算操作数的 地址。由于偏移量是有符号的 16 位数,所以操作数可能位于存储器中 Rn±32kB 的存储范围之内。这种情 况下,操作数的地址可能向上或向下超出 64KB 的存储空间(见图 4-16 和图 4-17)。 图 4-16 高字节存储空间的变址寻址 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–80–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图 4-17 变址寻址模式的上溢和下溢 长度:2 个或 3 个字 操作方式:指令后的字中存放有符号的 16 位偏移量,该偏移量加到 20 位的 CPU 寄存器 Rn 上,可以得到 一个指向存储范围在 0 到 FFFFFH 的 20 位地址,该地址存储器中的内容为操作数。 注释说明:可用于源操作数和目的操作数,并且在计算前后,所涉及的两个寄存器内容在操作前后保持不 变。 例子:ADD.W 8346h(R5),2100h(R6) 该指令将源地址与目的地址中的 16 位数据相加,并把结果存入目的地址。源操作数与目的操作数可 定位在整个地址空间的任何地址。 源操作数:字指向R5+8346h=1B79Ch地址。负偏移地址8346h是有符号数,使地址结果为 23456h + F8346h = 1B79Ch. 目标操作数:指向R6+2100h,地址结果为15678h + 2100h = 17778h。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–81–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图 4-18 变址寻址模式举例 4.4.2.2 变址寻址模式的 MSP430X 指令 当使用变址寻址的 MSP430X 指令时,操作数地址可以是 Rn+19 位范围内的任意位置。 长度:3 个或 4 个字 操作方式:操作数地址是 20 位 CPU 寄存器内容与 20 位偏移量之和。偏移量的高四位在扩展字中,低 16 位位于指令的后续字中。CPU 寄存器保持不变。 注释说明:可用于源和目的操作数,并且在计算前后,所涉及的两个寄存器内容在操作前后保持不变。 例子:ADDX.A 12346h(R5),32100h(R6) 该指令将源地址及目的地址中的 20 位数据相加,并将结果存入目的地址。 源操作数:指向R5+12346h,结果为23456h + 12346h=3579Ch地址的两个字 目标操作数:指向 R6+32100h,结果为 45678h + 32100h =77778h 地址的两个字 扩展字包括源偏移量、目的偏移量的最高有效位及20位数据的A/L位。由于A/L:B/W=01,20位数据的 长度,指令字采用字节模式。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–82–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 4.4.3 符号寻址 符号寻址模式通过将有符号的偏移量加到 PC 上来计算操作数地址。符号寻址有三种可能情况: 6、低 64KB 地址范围内的符号寻址; 7、对超出低 64KB 地址范围的符号寻址方式的 MSP430 指令; 8、符号寻址的 MSP430X 指令; 4.4.3.1 低 64KB 的符号寻址 如果 PC 指向的地址在低 64KB 存储范围内,那么当 PC 与有符号的 16 位偏移量相加之后,得到的存储 地址的 BIT19~BIT16 位清零。这意味着计算得到的地址总是位于低 64KB 的范围之内,不会向上或向下超 出 64KB 存储空间。RAM 和外围寄存器可按照这种方式寻址,原有的 MSP430 软件不需做任何修改即可使用, 如图 4-19 所示。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–83–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图 4-18 低 64KB 范围内的符号寻址模式 操作方式:指令后续字中的有符号 16 位偏移量,临时加到 PC 上。通过给定一个缩短的地址,该地址指向 00000H~0FFFFH 范围内的操作数地址,将结果的 BIT19~BIT16 位清零。操作数为寻址存储空 间的内容。 长度:2 个或 3 个字。 注释说明:可用于源和目的操作数 例如:ADD.B EDE,TONI 该指令将源字节 EDE 与目的字节 TONI 中的 8 位操作数相加,结果存入目的字节 TONI。EDE、TONI 和 程序都位于低 64KB 的存储范围内。 源操作数:字节EDE地址为0579Ch,PC + 4766h指向它,此处PC的偏移量4766h是0579Ch –01036h = 04766h 的结果,地址01036h是此例中地址偏移量的地址。 目的操作数:字节TONI地址为00778h,PC + F740h指向它,此处PC的偏移量F740h是00778h – 1038h = FF740h 的结果,地址01038h是此例中地址偏移量的地址。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–84–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 4.4.3.1 对超出低 64KB 地址范围的符号寻址方式的 MSP430 指令 如果 PC 指向的地址超出 64KB 的存储空间范围,那么 PC 的 19:16 位用来计算操作数地址。因为偏移 量 X 是有符号的 16 位数,所以操作数可能位于 PC±32kB 的存储范围内。这种情况下,操作数的地址可能 向上或向下溢出 64KB 的存储空间,见图 4-20 和图 4-21。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–85–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图 4-18 超出低 64KB 范围的符号寻址模式 图 4-18 符号寻址模式的上溢和下溢 长度:2 或 3 个字 操作方式:指令后续字中的有符号 16 位偏移量加到 PC 上,得到一个在 0 到 FFFFFH 范围内的 20 位地址, 该地址存储器中的内容为操作数。 备注说明:可用于源和目的操作数 例子:ADD.W EDE,&TONI 该指令将源字变量EDE与目的字变量TONI中的16位操作数相加,结果存入目的字变量TONI中。此例中, 指令地址是2F034h。 源操作数:字变量EDE地址3379Ch,通过PC+4766h指向它,4766h是3379Ch– 2F036h=04766h的16位结果, 地址2F036h是此例中偏移量的位置。 目的操作数:字变量TONI地址00778h,绝对地址00778h指向它。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–86–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 4.4.3.1 符号寻址的 MSP430X 指令 当使用符号寻址模式烦扰 MSP430X 指令时,操作数可以存放在 PC+19 位范围内的任何位置。 长度:3 或 4 个字 操作方式:操作数地址是 20 位 PC 与 20 位偏移量之和。偏移量的高四位包含在扩展字中,低 16 位位于指 令后续字中。 备注说明:可用于源和目的操作数 例子:ADDX.B EDE,TONI 该指令将源字节变量 EDE 与目的字节变量 TONI 中的 8 位操作数相加,结果存入目的字节变量 TONI。 源操作数:字节变量EDE地址3579Ch,通过PC+14766h指向它,14766h是3579Ch–21036h= 14766h的20位结 果,21036h是此例中偏移量的地址。 目的操作数:字节变量TONI地址77778h,通过PC+56740h指向它,56740h是77778h–21038h = 56740h的20 位结果,地址21038h是此例中偏移量的地址。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–87–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 4.4.4 绝对寻址 绝对寻址使用指令后面字变量的内容作为操作数的地址。 绝对寻址模式的两种可能情况: 2 低 64KB 存储范围的绝对寻址 3 MSP430X 指令的绝对寻址 4.4.4.1 低 64KB 存储范围的绝对寻址 如果 MSP430 指令中使用绝对寻址,由于绝对地址是一个 16 位数值,所以指向低 64KB 存储范围内的 一个地址。计算地址时的偏移量是 0,且地址存储在指令后面字中。RAM 和外围寄存器可用这种方式寻址, 已有的 MSP430 软件可以在不做更改的情况下使用。 长度:2 或 3 个字 操作方式:寻址存储空间内容为操作数。 备注说明:可用于源和目的操作数 例子: ADD.W &EDE,&TONI 该指令将绝对源地址与目的地址中的 16 位操作数相加,结果存入目的地址。 源操作数:EDE 地址的字 目的操作数:TONI 地址的字 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–88–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 4.4.4.1 MSP430X 指令绝对寻址 如果 MSP430X 指令使用的是绝对寻址模式,则绝对地址是一个 20 位的值,因此该地址可以指向整个 存储范围的任何地址。操作数地址是以 0 为偏移量的值,偏移量的高四位存储在扩展字中,低 16 位存储 在指令的后续字中。 长度:3 或 4 个字 操作方式:寻址存储器中的内容为操作数。 备注说明:可用于源和目的操作数 例子: ADDX.A &EDE,&TONI 该指令将绝对源地址与目的地址中的 20 位操作数相加,结果存入目的地址。 源操作数:地址从 EDE 开始的两个字 目的操作数:地址从 TONI 开始的两个字 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–89–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 4.4.5 寄存器间接寻址 寄存器间接寻址模式,使用 CPU 寄存器 Rsrc 的内容作为源操作数。寄存器间接寻址总是使用 20 位地 址。 长度:1,2 或 3 个字 操作方式:寻址存储器的内容为操作数,源寄存器 Rsrc 不变。 备注说明:只用于源操作数,目的操作数用 0(Rn)替代。 例子: ADDX.W @R5,2100h(R6) 该指令源地址与目的地址中的操作数相加,结果存入目的地址。 源操作数:R5指向的字。此例中R5含3579Ch。 目的操作数:R6+2100h指向的字,地址结果45678h + 2100h = 7778h。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–90–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 4.4.6 间接增量寻址 间接增量寻址采用 CPU 寄存器 Rsrc 的内容作源操作数。取得源操作数后,若是字节指令,则 Rsrc 立 即自动加 1,字指令加 2,地址字指令则加 4。如果源操作数与目的操作数使用相同的寄存器,则目的操作 地址为自增的地址。间接增量寻址总是使用 20 位地址。 长度:1,2,3 个字 操作方式:操作数是地址存储空间内容。 备注说明:仅用于源操作数。 例子:ADD.B @R5+,0(R6) 该指令将源地址与目的地址中的 8 位数据相加,结果保存在目的地址中。 源操作数:R5指向的字节。此例中R5含地址3579Ch。 目的操作数:R6+0h指向的字节。此例中结果为0778h。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–91–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 4.4.7 立即数寻址 立即数寻址,通过存储器内指令后包含常数,来允许常数作为操作数访问。PC 用于间接增量寻址。PC 指向下一字中的立即数。获取立即数之后,对于字节,字或地址字指令来说,PC 增加 2。 立即数模式有两种寻址情况: 28、MSP430 指令下的 8 位,16 位常数 29、MSP430X 指令下的 20 位常数 4.4.7.1 MSP430 指令的立即数寻址 MSP430 指令使用立即数寻址模式,常数是 8 位或 16 位且存储于指令后面的字中。 长度:2 或 3 个字。如果常数发生器的一个常数用作立即数,可减少一个字。 操作方式:16 位源立即操作数同 16 位目的操作数。 备注说明:只可用于源操作数。 例子:ADD #3456h,&TONI 该指令将 16 位立即数 3456h 与目的地址 TONI 中的 16 位数相加。 源操作数:16位立即数3456h 目的操作数:TONI 地址处的字 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–92–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 4.4.7.2 MSP430X 的立即数模式 MSP430 指令使用立即数寻址模式,常数 20 位。常数的高四位存储在扩展字中,低 16 位存储于指令的 后面字中。 指令长度:3 或 4 个字。 如果常数发生器的一个常数用作立即数,可减少一个字。 操作方式:20 位源立即操作数同 20 位目的操作数。 备注说明:只用于源操作数 例子:ADDX.A #23456h,&TONI 该指令将 20 位立即数 23456h 与 TONI 地址中的 20 位数据相加。 源操作数:20位立即数23456h。 目的操作数:起始地址为 TONI 的 2 个字 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–93–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 4.5 MSP430 与 MSP430X 指令 MSP430 指令是 MSP430 CPU 的 27 条核心指令。这些指令可在 1MB 存储范围内使用,除非超出 16 位数 据范围。当操作数寻址范围或数据长度超出 MSP430 指令的 16 位范围时,应使用 MSP430X 指令。 在 MSP430 指令和 MSP430X 指令之间选择的时候,有 3 种可能: Ø 仅使用 MSP430 指令:指令 CALLA 和 RETA 例外。如果一些简单条件满足,就可以实现。 --低 64KB 存储范围的常量、变量、数组、表格和数据的放置。对所有数据,允许 使用 16 位 寻址的 MSP430 指令,不需要 20 位地址指针。 --子程序代码后的子程序常量。允许16位偏移量的符号寻址到PC + 32 KB范围内 地址。 l 仅使用 MSP430X 指令:这种方法的缺点是由于 CPU 周期加长引起的速度降低,以及 由 于 双 操作数指令必要的扩展字,而增加了代码所占空间。 l 在需要的时候使用合适的指令。 下面章节中将列出并描述 MSP430 和 MSP430X 指令。 4.5.1 MSP430 指令 MSP430 指令,不论程序放在低 64KB 还是超出此范围,都可以使用。只有 CALL 和 RET 指令只限于该地 址范围。为了在整个地址范围内处理子程序而不用任何代码开销,在 MSP430X 指令中增加了 CALLA 和 RETA。 4.5.1.1 MSP430 的双操作数指令(格式 1) MSP430 双操作数的指令格式如图 4-22 所示。源和目的字遵循变址寻址、符号寻址、绝对寻址和立即 寻址模式。表 4-4 列出了 12 条 MSP430 双操作数指令。 图 4-22 双操作指令格式 表 4-4 MSP430 双操作指令 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–94–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM l 注: *=状态位受影响。 _=状态位不受影响。 0=状态位清零。 1=状态位置位。 4.5.1.2 MSP430 单操作数指令(格式 2) 图 4-23 所示 MSP430 单操作数指令格式,RETI 除外。目地操作数遵循变址寻址、符号寻址、绝对寻址 和立即寻址模式。表 4-5 列出了 7 条单操作数指令。 图 4-23 MSP430 单操作指令格式 表 4-5 MSP430 单操作指令 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–95–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM (1)注: *=状态位受影响。 _=状态位不受影响。 0=状态位清零。 1=状态位置位。 4.5.1.3 跳转指令 图 4-24 所示为 MSP430 及 MSP430X 跳转指令格式。跳转指令中的 10 位有符号偏移量乘 2,符号扩展成 为 20 位地址,之后加到 PC 上。允许在整个 20 位地址空间与 PC 相关的-511 到+512 个字的范围跳转。跳 转不影响状态位。表 4-6 列出并说明了 8 条跳转指令。 图 4-24 跳转指令格式 表 4-6 跳转指令 4.5.1.4 仿真指令 除了 MSP430 及 MSP430X 指令之外,仿真指令是一种可以使代码编写与阅读更加简便,但自身无操作 码的指令。相反,它们会被汇编程序用核心指令来自动代替。使用仿真指令不会造成代码或性能上的不利。 表 4-7 列出了仿真指令。 表 4-7 仿真指令 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–96–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM (1)注: *=状态位受影响。 _=状态位不受影响。 0=状态位清零。 1=状态位置位。 4.5.1.5 MSP430 指令执行 指令执行所需要的 CPU 周期数取决于指令格式和使用的寻址方式,而不是指令本身。时钟周期数指的 是 MCLK。 中断、复位及子程序的指令周期与长度 表 4-8 列出了复位、中断和子程序的指令 CPU 周期和长度: 表 4-8 中断,返回,复位指令的长度和执行周期 格式 2 (单操作数)指令周期和长度 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–97–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 如表 4-9 列出了单周期指令所有寻址方式的长度及 CPU 周期: 表 4-9 MSP430(格式 2)指令周期和长度 跳转指令周期和长度 不论跳转是否发生,所有的跳转指令需要 1 个代码字,2 个 CPU 时钟周期。 格式 1(双操作数)指令周期及长度 如表 4-10 列出了 MSP430 格式 1 指令所有寻址方式下的 CPU 周期及长度。 表 4-10 MSP430(格式 1)指令长度和周期 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–98–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 注:(1)MOV、BIT 和 CMP 指令少于 1 个周期。 4.5.2 MSP430X 扩展指令 MSP430X 扩展指令能够访问 20 位地址范围。大多数 MSP430X 指令需要一个额外的所谓扩展字的操作码。 一些指令不需要扩展字,这在指令描述里已经注明。所有的地址、变址与立即数前有扩展字时,都是 20 位的数值。 有两种扩展字类型: l 格式 1 或 2 指令的寄存器寻址模式 l 其它寻址模式组合时的扩展字 4.5.2.1 寄存器模式扩展字 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–99–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 寄存器模式扩展字如图 4-25 所示,在表 4-11 中对其进行了描述,图 4-27 为其中一例。 位 15:11 10:9 ZC # A/L 5:4 3:0 图 4-25 寄存器模式扩展字 表 4-11 寄存器模式扩展字描述 描述 扩展字操作码。操作码1800h 到1FFFh 为扩展字。 保留 0进位 0 执行的指令使用进位 C 的状态 1 执行指令把进位当做0来使用。进位由指令执行完毕之后的最终结果定义。 重复 0 指令重复的次数由扩展字位3:0来决定。 1 指令重复的次数由 Rn 的4位低有效位的值来定义。参照位3:0的描述。 数据长度扩展。与 MSP430指令后的 B/W 位一起, A/L 位定义被使用的指令数据长度 A/L B/W 说明 0 0 保留 0 1 20位地址字 1 0 16位字 1 1 8位字节 保留 重复计数 # = 0 :这4位设置重复计数n的值。这些位包含n-1。 # = 1 :这4位来定义CPU寄存器,这些寄存器的3:0位设置重复次数,Rn3:0包含n-1 4..2.2 非寄存器模式下的扩展字 寄存器模式扩展字如图 4-26 所示,在表 4-12 中对其进行了描述,图 4-28 为其中一例。 图 4-26 非寄存器模式下的扩展字 表 4-12 非寄存器模式下的扩展字描述 位 描述 15:11 扩展字操作码。操作码1800h 到1FFFh 是扩展字 源位 20位源操作数的4位最高有效位。根据源寻址模式,这4位最高有效位可能属于立即操作数,变址 19:16 寻址或绝对寻址。 A/L 数据长度扩展。与 MSP430指令后的 B/W 位一起, A/L 位定义被使用的指令数据长度 A/L B/W 说明 0 0 保留 0 1 20位地址字 1 0 16位字 1 1 8位字节 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–100–页 共 423 页 5:4 目标位 19:16 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 保留 20位目的操作数的4个最高有效位。根据目标寻址,这4个最高有效位可能属于变址寻址或绝对寻 址。 注意:SWPBX 和 SXTX 的 B/W 和 A/L 的位设置 A/L B/W 0 0 SWPBX.A, SXTX.A 0 1 N/A 1 0 SWPB.W, SXTX.W 1 1 N/A 图 4-27 扩展寄存器或寄存器指令的例子 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–101–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图 4-28 扩展立即/变址指令的例子 4.5.2.3 双操作数(格式 1)的扩展指令 所有 12 条双操作数指令扩展后如表 4-13 所示: 表 4-13 扩展双操作数指令 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–102–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM l *=状态位受到影响。 _=状态位没有受到影响。 0=状态位清零。 1=状态位置位。 对格式 1 指令扩展字有 4 种可能的寻址组合,如图 4-29 所示。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–103–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图 4-29 扩展的格式 1 指令格式 如果源操作数或目的操作数的 20 位地址在存储器内,而不是在 CPU 寄存器内,那么此操作数将使用两个 字,如图 4-30 所示。 图 4-30 存储器内 20 位地址 4.5.2.4 扩展单操作数(格式 2)指令 扩展的单操作数(格式 2)MSP430X 指令如表 4-14 所示。 表 4-14 扩展的单操作指令 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–104–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 格式 2 指令的 3 种寻址方式的组合指令如图 4-31 所示: 图 4-31 扩展格式 2 指令格式 扩展格式 2 指令的例外情况 扩展格式 2 指令的例外情况如图 4-32~图 4-35 所示。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–105–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图 4-32 PISHM/POPM 指令格式 图 4-33 RRCM,RRAM,RRUM 和 RLAM 指令格式 图 4-34 BRA 指令格式 图 4-35 CALLA 指令格式 4.5.2.5 扩展的仿真指令 扩展指令与常数发生器一起构成扩展的仿真指令。表 4-15 列出了扩展仿真指令。 表 4-15 扩展仿真指令 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–106–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 4.5.2.6 MSP430X 地址指令 MSP430X 地址指令是寻址模式有限制的支持 20 位操作数的指令。除 MOVA 指令外,寻址模式限于寄存 器寻址和立即数寻址,如表 4-16 所示。限制寻址模式,就可以不再需要额外的扩展字操作码,这些扩展 字操作码可以用于提高代码密度和执行时间。地址指令应该在需要 MSP430X 指令的场合,和相应的允许的 寻址模式一起使用。 表 4-16 寻址指令,作用于 20 位寄存器数据 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–107–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 4.5.2.7 MSP430X 指令的执行 MSP430X 指令执行所需要的 CPU 周期数取决于依指令格式和寻址方式,而不是指令本身。时钟周期数 指的是 MCLK。 MSP430X 格式 2(单操作数)指令周期和长度 如表 4-17 列出的是 MSP430X 扩展单操作数指令的所有可能寻址方式下的指令周期和指令长度: 表 4-17 MSP430X 格式 2 指令周期和长度 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–108–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 注:(1)当 Rn=SP 时,增加一个时钟周期。 MSP430X 格式 1(双操作数)指令周期和长度 如表 4-18 列出的是 MSP430X 扩展双操作数指令的所有可能寻址方式下的指令周期和指令长度: 表 4-18 MSP430X 格式 1 指令周期和长度 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–109–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 注:(1)重复指令需要 n+1 个周期,这里 n 是指令执行的次数。 (2)对于 MOV,BIT 和 CMP 指令减少一个时钟周期 (3)对于 MOV,BIT 和 CMP 指令减少两个时钟周期 (3)对于 MOV,ADD 和 SUB 指令减少一个时钟周期 MSP430X 地址字指令周期和长度 如表 4-19 列出的是 MSP430X 地址指令的所有可能寻址方式下的指令周期和指令长度: 表 4-19 地址指令周期和长度 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–110–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 4.6 指令集描述 表 4-20 列出了所有的指令: 表 4-20 MSP430X 指令图 4.6.1 扩展指令的二进制描述 MSP430X 指令二进制描述细节见下表: 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–111–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–112–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 4.6.2 MSP430 指令 下面将列出并描述 MSP430 指令。 * ADC[.W] 将进位位加到目的操作数 * ADC.B 将进位位加到目的操作数 指令格式: ADC 目的操作数或ADC.W 目的操作数 ADC.B 目的操作数 操作: 目的操作数 + C →目的操作数 功能描述: 进位位 C 和目的操作数相加,目的操作数原来的内容丢失。 状态位 N:运算结果为负时置位,否则复位。 Z: 运算结果为零时置位,否则复位。 C:字或字节运算有进位时置位,否则复位。 V:发生算术溢出时置位,否则复位。 控制位 例: OSCOFF, CPUOFF, and GIE不受影响。 R13 指向的 16 计数器加到 R12 指向的 32 位计数器。 例: ADD @R13,0(R12) ADC 2(R12); R13 指向的 8 计数器加到 R12 指向的 16 位计数器。 ADD.B @R13,0(R12) ADC.B 1(R12); ____________________________________________________________________________ ADD[.W] 源操作数和目的操作数相加 ADD.B 源操作数和目的操作数相加 指令格式: ADD 源操作数,目的操作数 或 ADD.W 源操作数,目的操作数 ADD.B 源操作数,目的操作数 操作: 源操作数+ 目的操作数→目的操作数 功能描述: 将源操作数和目的操作数相加,目的操作数原来的内容丢失。 状态位 N:运算结果为负时置位,否则复位。 Z: 运算结果为零时置位,否则复位。 C:字或字节运算有进位时置位,否则复位。 V:发生算术溢出时置位,否则复位。 例: 例: 10与位于低64KB内的16位计数器CNTR相加。 ADD.W #10,&CNTR ; R5指向的表格字加到R6上,有进位时跳转到标号为TONI的部分。 ADD.W @R5,R6 ; JC TONI 例: R5指向的表格字节加到R6上,如果没有进位,则跳转到标号为TONI的部分, 表 指针自增1。R6.19:8=0. ADD.B @R5+,R6 ; JNC TONI ADDC[.W] 将源操作字、进位位与目的操作字相加。 ADDC.B 将源操作字节、进位位加到目的操作字节。 指令形式: ADDC 源操作数,目的操作数 或 ADDC.W 源操作数,目的操作数 ADDC.B 源操作数,目的操作数 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–113–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 操作: 源操作数 +目的操作数 + C →目的操作数 功能描述: 将源操作数、进位位加到目的操作数。目的操作数之前的内容丢失。 状态位 N:运算结果为负时置 1,否则为 0。 Z: 运算结果为零时置 1,否则为 0。 C:字或字节运算有进位时置 1,否则为 0。 V:发生算术溢出时置 1,否则为 0。 例: 常数值15与前面指令的进位位被加到位于低64KB范围内的16位计数器CNTR。 ADDC.W #15,&CNTR 例: R5(20位地址)指向的表格字和进位位被加到R6上。有进位时,跳转到标号 为 TONI的部分。R6.19:16 = 0 ADDC.W @R5,R6 ; JC TONI 例: R5(20位地址)指向的表格字和进位位被加到R6上。没有进位时,跳转到标 号 为TONI的部分。表格指针自增1。R6.19:16 = 0 ADDC.B @R5+,R6 ; JNC TONI AND[.W] 源操作字与目的操作字逻辑与 AND.B 源操作字节与目的操作字节逻辑与 指令形式: AND 源操作数,目的操作数 或 AND.W 源操作数,目的操作数 AND.B 源操作数,目的操作数 操作: 源操作数 .与. 目的操作数→目的操作数 功能描述: 将源操作数和目的操作数进行逻辑与,结果保存到目的操作数.源操作数不受 影 响。 状态位: N:运算结果为负时置位,否则复位。 Z: 运算结果为零时置位,否则复位。 C:运算结果非零时置位,否则复位。 V:复位。 控制位: OSCOFF, CPUOFF,和 GIE不受影响 例: MOV #AA55h,R5 ; AND R5,&TOM ; 例: JZ TONI AND #AA55h,&TOM ; JZ TONI AND.B @R5+,R6 BIC[.W] 清除目的操作数中相应于源操作数中置位的位 BIC.B 清除目的操作数中相应于源操作数中置位的字节 指令形式: BIC 源操作数,目的操作数 或 BIC.W 源操作数,目的操作数 BIC.B 源操作数,目的操作数 操作: (.取反.源操作数) .与.目的操作数→目的操作数 功能描述: 源操作数取反与目的操作数进行逻辑与,结果存入目的操作数。源操作数不受 影响。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–114–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 状态位: N 无影响 Z 无影响 C 无影响 V 无影响 控制位: OSCOFF, CPUOFF, GIE无影响 例: R5(16位数)的15:14清零。R5.19:16=0. 例: BIC #0C000h,R5 R5指向的表格字用于对R7清零。R7.19:16=0. 例: BIC.W @R5,R7 R5指向的表格字节用于对端口1位清零。 BIC.B @R5,&P1OUT —————————————————————————————————————— BIS[.W] 设置目的操作字中相应于源操作数置位的各位。 BIS.B 设置目的操作字节中相应于源操作数置位的各位。 指令形式: BIS 源操作数,目的操作数 或 BIS.W 源操作数,目的操作数 BIS.B 源操作数,目的操作数 操作: 源操作数 .或.目的操作数→目的操作数 功能描述: 将源操作数和目的操作数进行逻辑或运算,结果存入目的操作数。源操作数无 影响。 状态位: N 无影响 Z 无影响 C 无影响 V 无影响 控制位: OSCOFF、 CPUOFF、 GIE无影响 例: R5(16位数)的13和15位置为1。R5.19:16=0. 例: BIS #A000h,R5 R5(20位地址)指向的表格字将R7中的位置位。R7.19:16=0. 例: BIS.W @R5,R7 R5(20位地址)指向的表格字节置位端口1的位。R5随后增1。 BIS.B @R5+,&P1OUT BIT[.W] 测试目的操作字的各位。 BIT.B 测试目的操作字节的各位。 指令形式: BIT 源操作数,目的操作数 或 BIT.W 源操作数,目的操作数 BIT.B 源操作数,目的操作数 操作: 源操作数.与.目的操作数 功能描述: 源操作数与目的操作数进行逻辑与。只影响状态寄存器中的状态位。 状态位 N:运算结果为负时置位,否则复位。 Z: 运算结果为零时置位,否则复位。 C:运算结果非零时置位,否则复位。 V:复位。 控制位: OSCOFF, CPUOFF, and GIE无影响 例: 测试R5(16位数据)的15和14位其中1位是否置位。如果满足,则跳转到标号TONI 处执行。R5.19:16位无影响。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–115–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM BIT #C000h,R5 JNZ TONI .......... 例: R5(20位地址)指向的表格字用于测试R7中的位。如果至少有1位置位,则跳转到 TONI 处执行。 BIT.W @R5,R7 JC TONI 例: .......... R5(20位地址)指向的表格字用于测试端口1的位。如果没有1位置位,则跳转到 TONI 处执行。定位到下1表格字节。 BIT.B @R5+,&P1OUT JNC TONI ............... 标号为 标号为 * BR 跳转到64KB地址空间的任一地址 指令形式: BR 目的操作数 操作: 目的操作数→PC 功能描述: 无条件跳转到低64KB地址范围内的任一地址。 状态位: 状态位无影响。 例: 各种寻址模式下的例子。 BR #EXEC R EXEC BR &EXEC BR R5 BR @R5 BR @R5+ BR X(R5) CALL 调用低64KB地址空间中任意地址处的子程序 指令格式: CALL 目的操作数 操作: dst →PC SP – 2→SP PC→@SP tmp→PC 功能描述: 实现从低64KB地址空间的1个地址到子程序地址的子程序调用。可使用7种寻址 方式,CALL为字指令。子程序返回用RET指令。 状态位: 状态位无影响。PC.19:16清零(低64KB地址空间内)。 控制位: OSCOFF, CPUOFF和 GIE没有影响。 例: 给出了所有寻址模式的例子。 立即寻址:在标号为EXEC处调用子程序或直接通过地址调用。 CALL #EXEC CALL #0AA04h 符号寻址:在EXEC地址包含的16位地址处调用子程序。EXEC地址PC+X,这里X范围 PC+32K. CALL EXEC 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–116–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 绝对寻址:低64KB存储范围内,绝对地址EXEC包含的16位地址处调用子程序。 CALL &EXEC 寄存器寻址:寄存器R5包含的16位地址处调用子程序。 CALL R5 间接寻址:寄存器R5指向的字包含的16位地址处调用子程序。 CALL @R5 * CLR[.W] 清目的操作数 * CLR.B 清目的操作数 指令格式: CLR 目的操作数 或 CLR.W 目的操作数 CLR.B 目的操作数 操作: 0→目的操作数 仿真: MOV #0,目的操作数 MOV.B #0,目的操作数 功能描述: 目的操作数清零。 状态位: 状态位无影响。 例: RAM内的字TONI清零。 例: CLR TONI 寄存器R5清零。 例: CLR R5 RAM内的字节TONI清零。 CLR.B TONI * CLRC 清除进位位 指令格式: CLRC 操作: 0→C 功能描述: 进位位清零,请进位位指令是字指令。 状态位: N 无影响 Z 无影响 C 清零 控制位: 例: V 无影响 OSCOFF, CPUOFF和 GIE无影响。 R13指向的16位十进制计数器加到R12指向的32位计数器。 CLRC ; DADD @R13,0(R12) ; DADC 2(R12) * CLRN 清除负位。 指令格式: CLRN 操作: 0→N 或 (.NOT.src .AND. dst→dst) 仿真: BIC #4,SR 功能描述: 常量04h取反(0FFFBh),再与目的操作数进行逻辑与运算。结果存放在目的 操 作数中。清除负位指令是字指令。 状态位: N 清零 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–117–页 共 423 页 控制位: 例: SUBR SUBRET LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM Z 无影响 C 无影响 V 无影响 OSCOFF, CPUOFF和 GIE无影响。 SR的负位标志清零。这避免了调用子程序负数的特殊处理。 CLRN CALL SUBR ....... JN SUBRET ; ...... RET * CLRZ 清除零标志位 指令格式: CLRZ 操作: 0→Z 或 (.NOT.src .AND. dst→dst) 仿真: BIC #2,SR 功能描述: 常量02h取反(0FFFDh),再与目的操作数进行逻辑与运算。结果存放在目的 操 作数中。清除零标志位指令是字指令。 状态位: 控制位: 例: N 无影响 Z 清零 C 无影响 V 无影响 OSCOFF, CPUOFF和 GIE无影响。 SR的零位标志清零。 CLRZ 间接、自动增量模式:R5(20位地址)指向的字所包含的16位地址 处 调 用 子 程 序。R5中的16位地址增加2。软件在下一次把R5作为指针, 会由于访问表格中R5 指向的下一字地址而改变程序的执行。 CALL @R5+ 变址模式:R5+X寄存器指向的20位地址中包含的16位地址处调用子 程序。例如, 一个起始地址为X的表格,地址在地64KB范围内,X在 +32KB之内。 CALL X(R5) CMP[.W] 比较源操作字与目的操作字 CMP.B 比较源操作字节与目的操作字节 指令格式: CMP src,dst or CMP.W src,dst 操作: CMP.B src,dst (.not.src) + 1 + dst 或 dst – src 仿真: BIC #2,SR 功能描述: 目的操作数减去源操作数,通过将源操作数+1后的补码加到目的操作数实现。 结果仅影响到SR中的状态位。寄存器的19:16位或19:8位不被清除。 状态位: N:运算结果为负时置位,否则复位。 Z: 运算结果为零时置位,否则复位。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–118–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM C:运算有借位时置位,否则复位。 V:发生算术溢出时置位,否则复位。 控制位: OSCOFF CPUOFF 和 GIE 无影响。 例: 将自变量EDE与16位常量01800h比较。如果EDE等于该常量,跳转到标号为TONI 处执行。EDE的地址在PC+32K范围内。 CMP #01800h,EDE JEQ TONI 例: R5+10指向的表格字变量与R7比较。如果R7包含数值带符号,且比较小,则跳 转到 标号TONI处。R7的19到16位不清零。源操作数的地址是整个存储范围内的 1个20位地址。 CMP.W 10(R5),R7 JL TONI ........ 例: R5(20位地址)指向的表格字节变量与端口1输出量进行比较。如果值相等,则跳 转到标号TONI处。下一表格字节已被寻址。 CMP.B @R5+,&P1OUT JEQ TONI ...... * DADC[.W] 将十进制进位位加到目的操作数上 * DADC.B 将十进制进位位加到目的操作数上 指令格式: DADC dst or DADC.W dst DADC.B dst 操作: 仿真: dst + C→dst (十进制) DADD #0,dst DADD.B #0,dst 功能描述: 将十进制进位位加到目的操作数。 状态位: N:运算结果最高位为 1 时置位,否则复位。 Z: 目的操作数为 0 时置位,否则复位。 C:目的操作数从 9999 增至 0000 时置位,否则复位。 目的操作数从 99 增至 00 时置位,否则复位。 V:未定义。 控制位: OSCOFF CPUOFF 和GIE无影响。 例: R5中的4位十进制数加到R8指向的8位十进制数。 CLRC DADD R5,0(R8) ; 例: DADC 2(R8) R5中的2位十进制数加到R8指向的4位十进制数。 CLRC ; DADD.B R5,0(R8) ; DADC * DADD[.W] 十进制源操作字和进位位加到目的操作字 * DADD.B 十进制源操作字节和进位位加到目的操作字节 指令格式: DADD src,dst or DADD.W src,dst 操作: DADD.B src,dst src + dst + C→dst (十进制) 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–119–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 功能描述: 源操作数和目的操作数被当做2(.B)或4(.W)个带符号的二-十进制(BCD)数, 十进制源操作数和进位位加到目的操作数。源操作数不受影响,目的操作数 以前的数据 丢失。结果对非BCD数不适用。 状态位: N:运算结果最高位为 1 时置位,否则复位。 Z: 结果为 0 时置位,否则复位。 C:如果 BCD 结果太大时(字>9999h,字节>99h)置位,否则复位。 V:未定义。 控制位: OSCOFF CPUOFF 和GIE无影响。 例: 十进制10加到16位BCD计数器DECCNTR上。 DADD #10h,&DECCNTR 例: 包含在16位RAM地址BCD和BCD+2内的8位BCD数十进制形式加到包含在R4和 的8位BCD数上(BCD+2和R5包含高位数据), R5 中 CLRC ; DADD.W &BCD,R4 ; DADD.W &BCD+2,R5 ; JC OVERFLOW ........ 例: 包含在自变量BCD(16位地址)中的2位BCD数十进制加到包含在R4中的2位BCD数。进位位也被 加上。R4的19到8位为0。CLRC ;清进位位;DADD.B &BCD,R4 ;十进制BCD加到R4.R4: 0,00ddh。 CLRC ; DADD.B &BCD,R4 * DEC[.W] 目的操作数减1 * DEC.B 目的操作数减1 指令格式: DEC dst or DEC.W dst DEC.B dst 操作: dst – 1→dst 功能描述: 目的操作数减1,以前的内容丢失。 状态位: N: 结果为负时置位,否则复位。 Z:目的操作数为1时置位,否则复位。 C: 目的操作数为0时置位,否则复位。 V: 算术运算溢出时置位,否则复位,目的操作数的初值为0x8000H 或0x80H时置位,否则复位。 控制位: OSCOFF CPUOFF 和GIE无影响。 例: R10减1。 DEC R10 MOV #EDE,R6 MOV #510,R10 L$1 MOV @R6+,TONI-EDE-1(R6) DEC R10 JNZ L$1 图4-36(无) * DECD[.W] 目的操作数减2 * DECD.B 目的操作数减2 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–120–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 指令格式: DECD dst or DECD.W dst DECD.B dst 操作: dst – 2 →dst 功能描述: 目的操作数减2,以前的内容丢失。 状态位: N: 结果为负时置位,否则复位。 Z:目的操作数为2时置位,否则复位。 C: 目的操作数为0或1时置位,否则复位。 V: 算术运算产生溢出时置位,否则复位。 目的操作数的初值为0x8000H 或0x8001H时置位,否则复位。 目的操作数初值为0x80H或0x81H时置位,否则复位。 控制位: OSCOFF CPUOFF 和GIE无影响。 例: R10减2。 DECD R10 MOV #EDE,R6 MOV #255,R10 L$1 MOV.B @R6+,TONI-EDE-2(R6) DECD R10 例: JNZ L$1 LEO位置处的存储器减2. DECD.B LEO ; Decrement MEM(LEO) 状态字节STATUS减2。 DECD.B STATUS * DINT 禁止中断 指令格式: DINT 操作: 0→GIE 或 (0FFF7h .AND. SR→SR / .NOT.src .AND. dst→dst) 功能描述: 禁止所有中断。常量08H取反,与SR进行逻辑与。结果存放在SR中。 状态位: 控制位: 状态位无影响 GIE复位。OSCOFF和 CPUOFF 无影响。 例: 中断标志GIE清零,从而完成对1个32位计数器的不间断转移。这保证了32位 数器在转移过程中不被任何中断打断。 DINT ; NOP MOV COUNTHI,R5 ; MOV COUNTLO,R6 EINT ————————————————————————————————————— 注意:禁止中断 如果代码顺序需要不被中断打断,DINT要在非中断顺序前至少1条指令处执行,或者 NOP指令。 ————————————————————————————————————— 计 其后跟随 * EINT 中断使能 指令格式: EINT 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–121–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 操作: 1 →GIE 或 (0008h .OR. SR→SR / .src .OR. dst→dst) 功能描述: 所有中断使能。 状态位: 常量08h与SR逻辑与,结果存入SR. 状态位不受影响。 控制位: 例: GIE置位。OSCOFF和CPUOFF不受影响。 SR的GIE位置位。 PUSH.B &P1IN BIC.B @SP,&P1IFG ; EINT ; BIT #Mask,@SP JEQ MaskOK ; ...... MaskOK BIC #Mask,@SP ...... INCD SP ; RETI —————————————————————————————————— 注意: 使能中断 EINT后的指令总是被执行,即使中断被允许且有中断请求被响应。 —————————————————————————————————— * INC[.W] 目的操作数加1 * INC.B 目的操作数加1 指令格式: INC dst or INC.W dst 操作: 仿真: 功能描述: 状态位: INC.B dst dst + 1→dst ADD #1,dst 目的操作数加1,以前的内容丢失。 N: 结果位负时置位,否则复位。 Z:目的操作数包含0FFFFH置位,否则复位。 目的操作数包含0FFH置位,否则复位 C: 目的操作数包含0FFFFH置位,否则复位。 目的操作数包含0FF置位,否则复位。 V: 目的操作数包含07FFFH置位,否则复位。 目的操作数包含07FH置位,否则复位。 控制位: OSCOFF、CPUOFF和GIE不受影响。 例: 每个过程,状态字节STATUS增1,当它等于11时,跳转到标号为OVFL处执行。 INC.B STATUS CMP.B #11,STATUS JEQ OVFL * INCD[.W] 目的操作数加2 * INCD.B 目的操作数加2 指令格式: INCD dst or INCD.W dst 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–122–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 操作: 仿真: INCD.B dst dst + 2→dst ADD #2,dst 功能描述: 目的操作数加2,以前的内容丢失。 状态位: N: 结果位负时置位,否则复位。 Z:目的操作数包含0FFFEH置位,否则复位。 目的操作数包含0FEH置位,否则复位。 C:目的操作数包含0FFFFH或0FFFEH置位,否则复位。 目的操作数包含或0FFH或0FEH置位,否则复位。 V: 目的操作数包含0FFFFH或07FFEH置位,否则复位。 控制位: 目的操作数包含0FFH或07EH置位,否则复位。 OSCOFF、CPUOFF和GIE不受影响。 例: 堆栈顶端的项在不适用寄存器的情况下被移走。 ....... PUSH R5 ; INCD SP ; RET 例: 堆栈顶端字节增2. INCD.B 0(SP) * INV[.W] 目的操作数取反 * INV.B 目的操作数取反 指令格式: INV dst or INV.W dst INV.B dst 操作: 仿真: .not.dst→dst XOR #0FFFFh,dst XOR.B #0FFh,dst 功能描述: 目的操作数取反,以前的内容丢失。 状态位: N: 结果位负时置位,否则复位。 Z:目的操作数包含0FFFFH置位,否则复位。 目的操作数包含0FFH置位,否则复位。 C:结果非零时置位,否则复位。 V: 目的操作数初值为负置位,否则复位。 控制位: OSCOFF、CPUOFF和GIE不受影响。 例: R5的内容取反。 MOV #00AEh,R5 ; INV R5 ; INC R5 例: 存储器字节LEO内容取反。 MOV.B #0AEh,LEO ; INV.B LEO ; INC.B LEO JC 设置进位位时程序跳转 JHS 大于和等于时程序跳转 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–123–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 指令格式: JC label JHS label 操作: 如果C = 1, PC + (2*Offset)→PC 如果C = 0, 执行其后指令 功能描述: 测试状态寄存器SR中的进位位C。若C置位,则将指令中包含的带符号10位字 偏 移量乘以2,再加到20位的PC上。这意味着相对全部存储范围内PC的-511到 512个字范围内的 跳转。如果C复位则执行该跳转指令之后的指令。JHS用于无 符号数的比较。 状态位: 状态位不受影响。 控制位: OSCOFF, CPUOFF和GIE不受影响。 例: 端口1管脚状态P1IN.1 决定了程序的流程。 BIT.B #2,&P1IN ; JC Label1 例: 如果R5≥R6(无符号),程序跳转到label2处执行。 CMP R6,R 5 ; JHS Label2 例: 如果R5≥12345h(无符号操作数),程序跳转到label2处执行。 CMP #12345h,R 5 ; JHS Label2 JEQ 等于时程序跳转 JZ 为零时程序跳转 指令格式: JEQ lable JZ lable 操作: 如果Z=1,PC+(2*Offset)→PC 如果Z=0,执行其后的指令 功能描述: 测试状态寄存器SR中的零标志位Z。若Z置位,则将指令中包含的带符号10位字 偏移量乘以2,再加到20位的PC上。这意味着相对全部存储范围内PC的-511到 512 个 字 范 围 内的跳转。如果Z复位则执行该跳转指令之后的指令。 JZ常用来测试零标志位Z。 JEQ常用于操作数比较。 状态位: 状态位不受影响。 控制位: 例: OSCOFF, CPUOFF和GIE不受影响。 端口2管脚状态P2IN.0 决定了程序的流程。 BIT.B #1,&P2IN ; 例: JZ Label1 如果R5=15000h(20位数),则程序跳转到label2处执行。 CMPA #15000h,R5 ; 例: JEQ Label2 R7 (20位计数器)加1,如果内容为0,则程序跳转到label4处执行。 ADDA #1,R7 JZ Label4 ... JGE : 大于等于时程序跳转 指令格式: JGE lable 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–124–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 操作: 如果(N Xor V)=0,PC+(2*Offset)→PC 如果(N Xor V)=1,执行其后的指令 功能描述: 测试状态寄存器SR中的负数标志N和溢出标志位V。如果N和V均被置位或复位, 则将指令中包含的带符号10位字偏移量乘以2,再加到20位的PC上。这意味着 相对全部存 储范围内PC的-511到512个字范围内的跳转。如果只有其中一个置 位则执行该跳转指令之后 的指令。 JGE常用带符号数的比较,也用于由于溢出造成错误结果的情况,JGE指令作出 的 结 论 是正确的。 注意:JGE如果用在AND,BIT,RRA,SXTX和TST后,可以仿真无效的JP指令。这些 指 令 将 溢出标志位V清零。 状态位: 状态位不受影响。 控制位: OSCOFF, CPUOFF和GIE不受影响。 例: 如果字节变量(低64KB)包含正数,程序跳至label1.软件在整个存储空间运 行。 TST.B &EDE ; JGE Label1 例: 如果R6的内容大于或等于R7指向的存储器,程序转到label5.数据和程序可在整 个存储空间内。 CMP @R7,R6 ; 例: JGE Label5 如果R5≥12345h(带符号操作数),程序转到label2.程序在整个存储空间内。 CMPA #12345h,R5 JGE Label2 ... JL : 小于时程序跳转。 指令格式: JL lable 操作: 如果(N Xor V)=1,PC+(2*Offset)→PC 如果(N Xor V)=0,执行其后的指令 功能描述: 测试状态寄存器SR中的负标志位N和溢出标志位V。如果只有其中一个置位,指 令中包含的带符号10位字偏移量乘以2,再加到20位的PC上。这意味着相对全 部存储范围 内PC的-511到512个字范围内的跳转。若N和V均被置位或复位则执 行该跳转指令之后的指令。 JL用于带符号数的比较,也用于由于溢出造成错误结果的情况,JL指令作出 的 结 论 是 正 确的。 状态位: 状态位不受影响。 控制位: OSCOFF, CPUOFF和GIE不受影响 例: 如果字节变量EDE包含的带符号数比TONI小,程序跳转到Label1.地址EDE在PC ± 32 K范围内。 CMP.B &TONI,EDE ; 例: JL Label1 … R6的带符号内容如果比R7(20位地址)指向的存储内容小,程序跳转到Label5。 数据和程序可在整个存储空间内。 CMP @R7,R6 ; JL Label5 … 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–125–页 共 423 页 例: LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 如果R5<12345h(带符号操作数),程序转到label2.程序在整个存储空间内。 CMPA #12345h,R5 JL Label2 ... JMP: 无条件跳转 指令格式: JMP lable 操作: PC+(2*Offset)→PC 功能描述: 指令中包含的带符号10位字偏移量乘以2加到PC上。这意味着相对全部存储范 围 内PC的-511到512个字范围内的跳转。在相对PC有限制的范围内,功能与BR 或BRA指令类似。 状态位: 状态位不受影响。 控制位: OSCOFF, CPUOFF和GIE不受影响 例: 字节变量STATUS置为10。然后跳转到标号为MAINLOOP处,数据在低64KB 范 围,程序在整个存储范围。 MOV.B #10,&STATUS ; JMP MAINLOOP 例: 定时器Timer_A3的中断向量被读取,并用于控制程序流程。程序在整个存储 空 间,而中断处理器只在低64KB范围内。 ADD &TAIV,PC ; RETI ; JMP IHCCR1 ; JMP IHCCR2 ; RETI JN : 为负时程序跳转 指令格式: JN lable 操作: 如果N=1,PC+(2*Offset)→PC 如果N=0,执行其后的指令 功能描述: 测试状态寄存器SR中的负标志位N。若N置位,则将指令中包含的带符号10 位 字偏移量乘以2加到PC上。这意味着相对全部存储范围内PC的-511到512个 字范围内的跳转。 如果N复位,则执行该跳转指令之后的指令。 状态位: 状态位不受影响。 控制位: OSCOFF, CPUOFF和GIE不受影响 例: 测试字节变量COUNT,如果为负,程序跳至Label0.数据在低64KB范围内,程 序 在整个存储空间。 TST.B &COUNT ; 例: JN Label0 … 从R5中减R6。如果结果为负,则跳转到Label2.程序在整个存储空间范围内。 SUB R6,R5 ; JN Label2 … 例: R7(20位计数器)减1,如果结果小于0,则跳转到Label4.程序在整个存储空 间 范围内。 SUBA #1,R7 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–126–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM JN Label4 … JNC 进位位未设置时程序跳转 JLO 小于时程序跳转 指令格式: JNC lable JLO lable 操作: 如果C=0,PC+(2*Offset)→PC 如果C=1,执行其后的指令 功能描述: 测试状态寄存器SR中的进位位C。若C复位,则将指令中包含的带符号的10 位 字偏移量乘以2加到PC上。这意味着相对全部存储范围内PC的-511到512个 字范围内的跳转。 如果C置位,则执行该跳转指令之后的指令。 JNC用于测试进位位C。 JLO用于比较无符号数。 状态位: 状态位不受影响。 控制位: OSCOFF, CPUOFF和GIE不受影响 例: 如果EDE<15,则程序跳转到标号Label2.数据在低64KB范围内,程序在整个存 间范围内。 储空 CMP.B #15,&EDE ; 例: JLO Label2 … 字变量TONI加到R5上。如果没有进位,跳转到Label0.TONI的地址范围在PC± 32K. ADD TONI,R5 ; JNC Label0 … JNZ: 不为零时程序跳转 JNE: 不相等时程序跳转 指令格式: JNZ lable JNE lable 操作: 如果Z=0,PC+(2*Offset)→PC 如果Z=1, 执行其后的指令 功能描述: 测试状态寄存器SR中的零标志位Z。若Z复位,则将指令中包含的带符号10位 字 偏移量乘以2加到PC上。这意味着相对全部存储范围内PC的-511到512个 Z置位,则执行该跳转指令之后的指令。 字范围内的跳转。如果 JNC用于测试零标志位Z。 JLO用于操作数的比较。 状态位: 状态位不受影响。 控制位: OSCOFF, CPUOFF和GIE不受影响 例: 测试字节变量STATUS ,如果不是0,则跳转到Label3.STATUS 的地址范围PC ± 32 K. TST.B STATUS ; JNZ Label3 … 例: 如果字变量EDE≠1500,程序跳转到Label2.数据在低64KB范围内,程序在整 个 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–127–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 存储空间内。 CMP #1500,&EDE ; 例: JNE Label2 … R7(20位计数器)减1,如果内容不是0,程序跳转到Label4.程序在整个存储空 SUBA #1,R7 JNZ Label4 … 间。 MOV[.W] 移动源操作数到目的操作数 MOV.B 移动源操作数到目的操作数 指令格式: MOV src,dst or MOV.W src,dst 操作: 功能描述: 状态位: 控制位: 例: MOV.B src,dst src→ds 将原操作数传送到目的操作数,原操作数不变。 N 不受影响 Z 不受影响 C 不受影响 V 不受影响 OSCOFF, CPUOFF和GIE不受影响 将16位常量1800h移动到绝对地址字EDE(低64KB) MOV #01800h,&EDE 例: 表EDE(字数据,16位地址)内容传送到表TOM,表格长度是030h个字,两个 表 格都位于低64KB范围。 MOV #EDE,R10 ; Loop MOV @R10+,TOM-EDE-2(R10) ; CMP #EDE+60h,R10 ; JLO Loop … 例: 表EDE(字数据,16位地址)内容传送到表TOM,表格长度是020h个字,两个 表 格都可位于整个存储空间,但必须在R10±32K范围内。 MOVA #EDE,R10 MOV #20h,R9 Loop MOV.B @R10+,TOM-EDE-1(R10) DEC R9 JNZ Loop ... * NOP 指令格式: 操作: 仿真: 功能描述: 状态位: 空操作 NOP 无 MOV #0, R3 不执行具体操作,可用于检查软件期间仿真指令或用于已确定的等待时间。 状态位不受影响。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–128–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM * POP[.W] 将堆栈顶部的字送入目的操作数 * POP.B 将堆栈顶部的字送入目的操作数 指令格式: POP dst POP.B dst 操作: 仿真: @SP →temp SP + 2 →SP temp →dst MOV @SP+,dst or MOV.W @SP+,dst MOV.B @SP+,dst 功能描述: SP指向的堆栈位置送入目的操作数,堆栈指针加2。 状态位: 状态位不受影响。 例: R7的内容及SR压出堆栈。 POP R7 ; 例: POP SR RAM字节LEO压出堆栈。 例: POP.B LEO R7的内容压出堆栈。 POP.B R7 例:R7指向的存储内容及SR压出堆栈。 POP.B 0(R7) POP SR —————————————————————————————————— 注:系统堆栈指针 系统堆栈指针增2,并与字节后缀无关。 —————————————————————————————————— PUSH[.W] 将字存入堆栈 PUSH.B 将字节存入堆栈 指令格式: PUSH dst or PUSH.W dst 操作: PUSH.B dst SP– 2 →SP dst→@SP 功能描述: 20位堆栈指针SP减2,把源操作数的内容传送到SP所指向的堆栈顶部。 入 栈的字节存入低字节,高字节不受影响。 状态位: 控制位: 例: 状态位不受影响。 OSCOFF, CPUOFF和GIE不受影响 将2个16位寄存器R9和R10压入堆栈。 PUSH R9 ; 例: PUSH R10 将字节变量EDE和TONI压入堆栈。EDE和TONI的地址范围为PC±32K. PUSH.B EDE ; PUSH.B TONI RET 子程序返回 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–129–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 指令格式: RET 操作: @SP→ PC.15:0 恢复 PC 到 PC.15:0。 PC.19:16←0 SP + 2 →SP 功能描述: 将CALL指令压进堆栈的16位返回地址移至PC,程序在子程序调用后的代码地 址 处继续执行。PC的4位有效位19~16位清零。 状态位: 状态位不受影响。PC的19~16位清零。 控制位: OSCOFF, CPUOFF和GIE不受影响 例: 调用低64KB范围内的子程序SUBR,在CALL之后返回地址。 CALL #SUBR ; SUBR PUSH R14 ; POP R14 ; RET 添加图4-37 RETI 指令格式: 操作: 中断返回 RETI @SP →SR.15:0 恢复状态寄存器 SR 与 PC.19:16位 SP + 2 →SP @SP →PC.15:0 恢复 PC.15:0 SP + 2 →SP 功能描述: SR恢复中断服务程序开始的值。这也包括PC的最高有效位19~16位。堆栈指针 SP 增2,从PC的19~16(与状态位堆栈位置相同)和15~0位,重新装入20位PC 值。20位的PC值恢 复到中断服务程序开始值。程序从中断被响应时执行的最 后一条指令后继续执行。堆栈指针加 2。 状态位: N: 堆栈中恢复 C: 堆栈中恢复 Z: 堆栈中恢复 V: 堆栈中恢复 控制位: 例: OSCOFF, CPUOFF和 GIE 从堆栈中恢复。 中断处理位于低64KB范围。1个20位的地址压入堆栈。 INTRPT PUSHM.A #2,R14 ; ... ; POPM.A #2,R14 ; RETI * RLA[.W] 算术左移 * RLA.B 算术左移 指令格式: RLA dst or RLA.W dst RLA.B dst 操作: C←MSB ←MSB-1 .... LSB+1←LSB ←0 功能描述: 目的操作数进行如图4-38所示的向左移动一位,相应的高位进入进位标 志 位,最低位补零。RLA指令相当于对操作数带符号乘2。 如果执行操作前,操作数dst ≥ 04000h且dst < 0C000h,会发生溢出。结果 符号改变。 如果执行操作前,操作数dst ≥ 040h且dst < 0C0h,会发生溢出。结果符号改变。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–130–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 状态位: 控制位: 例: (重画此图,应该为图4-38) N: 结果为负时置位,否则复位。 Z: 结果为零时置位,否则复位。 C:最高位移入。 V:04000h≤dst < 0C000h,发生溢出时置位,否则复位。 040h≤dst < 0C0h,发生溢出时置位,否则复位。 OSCOFF, CPUOFF和GIE不受影响 R7乘以2。 例: RLA R7 R7乘以4。 RLA.B R7 RLA.B R7 注:汇编程序不识别以下指令: RLA @R5+ ; RLA.B @R5+; RLA(.B) @R5 响应地应使用下列指令代替: ADD @R5+ ; ADD.B @R5+; ADD(.B) @R5 * RLC[.W] 带进位位的左移 * RLC.B 带进位位的左移 指令格式: RLC dst or RLC.W dst RLC.B dst 操作: C←MSB ←MSB-1 .... LSB+1←LSB←C 仿真: ADDC dst,dst 功能描述: 目的操作数进行如图4-39所示的向左移1位。操作数的最高位送入进位位C, 而 原进位位C中的内容送到操作数的最低位。 状态位: (此图重画,应该为4-39) N: 结果为负时置位,否则复位。 Z: 结果为零时置位,否则复位。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–131–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 控制位: 例: C:最高位移入。 V:04000h≤dst < 0C000h,发生溢出时置位,否则复位。 040h≤dst < 0C0h,发生溢出时置位,否则复位。 OSCOFF, CPUOFF和GIE不受影响 R5左移1位。 例: RLC R5; LEO内容左移1位。 RLC.B LEO 注:汇编程序不识别以下指令: RLC @R5+ ; RLC.B @R5+; RLC(.B) @R5 响应地应使用下列指令代替: ADDC @R5+ ; ADDC.B @R5+; ADDC(.B) @R5 RRA[.W] 目的操作字的算术右移 RRA.B 目的操作字节的算术右移 指令格式: RRA.B dst or RRA.W dst 操作: MSB →MSB →MSB–1 →... LSB+1→LSB→C 功能描述: 目的操作数执行如图4-40所示的右移1位。最高位保持不变(符号)。RRA指令 等 同于对目的操作数执行一次带符号除2。最高位保留且被移入次高位。最低 入。原来的最低位移入到进位位。 位由其前1位移 状态位: 控制位: 例: N: 结果为负(MSB=1)时置位,否则复位。 Z: 结果为零时置位,否则复位。 C:最低位移入。 V:复位。 OSCOFF, CPUOFF和GIE不受影响 带符号的16位数算术右移1位。 RRA R5 例: 带符号的RAM字节变量EDE进行算术右移1位。 RRA.B EDE (此图重画,标号为4-40) 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–132–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM RRC[.W] 带进位的右移操作字 RRC.B 带进位的右移操作字节 指令格式: RRC dst or RRC.W dst RRC.B dst 操作: C →MSB →MSB–1 →... LSB+1 →LSB →C 描述: 目的操作数执行如图4-41所示的右移1位。进位位移入最高位(MSB),最低位 (LSB)移入进位位C。 状态位: 控制位: 例: (重画应该为4-41) N: 结果为负时置位,否则复位。 Z: 结果位0时置位,否则复位。 C:最低位移入。 V: 复位。 OSCOFF, CPUOFF和GIE不受影响 RAM内子变量EDE右移1位。最高位移入1。 SETC * SBC[.W] * SBC.B 指令格式: RRC EDE 从目的操作数减去借位 从目的操作数减去借位 SBC dst or SBC.W dst 操作: 仿真; SBC.B dst dst + 0FFFFh + C →dst dst + 0FFh + C →dst SUBC #0,dst SUBC.B #0,dst 功能描述: 状态位: 该指令将进位C加到减1后的目的操作数,目的操作数以前的内容丢失。 N: 结果为负时置位,否则复位。 Z: 结果位0时置位,否则复位。 C:如果结果的最高位有进位置位,否则复位。 如果没有借位置位,否则复位。 控制位: 例; V: 发生算术溢出时置位,否则复位。 OSCOFF, CPUOFF和GIE不受影响 R12指向的32位计数器减去R13指向的16位计数器。 SUB @R13,0(R12) ; 例: SBC 2(R12) R12指向的16位计数器减去R13指向的8位计数器。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–133–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM SUB.B @R13,0(R12) ; SBC.B 1(R12) ———————————————————————————————————— 注:借位的实现 借位可等同于对进位位取反。 借位位 Yes No 进位位 0 1 * SETC 指令格式: 操作: 仿真: 功能描述: 状态位: 控制位: 例: DSUB 设置进位位C SETC 1→C BIS #1,SR 进位位C置位 N 无影响 Z 无影响 C 置位 V 无影响 OSCOFF, CPUOFF和GIE不受影响 十进制减法的仿真: R6以十进制形式减去R5,假设R5= 03987h ,R6 = 04137h. ADD #06666h,R5 INV R5 SETC DADD R5,R6 * SETZ 负位标志位Z置位 指令格式: SETZ 操作: 1 →Z 仿真: BIS #4,SR 功能描述:负位标志Z置位 状态位: N 置位 Z 无影响 C 无影响 V 无影响 控制位: OSCOFF, CPUOFF和GIE不受影响 * SETN 指令格式: 操作: 仿真: 功能描述: 状态位: 零标志位Z置位 SETN 1 →N BIS #2,SR 零标志位N置位 N 无影响 Z 置位 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–134–页 共 423 页 控制位: LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM C 无影响 V 无影响 OSCOFF, CPUOFF和GIE不受影响 SUB[.W] 从目的操作字减去源操作字 SUB.B 从目的操作字节减去源操作字节 指令格式: SUB src,dst or SUB.W src,dst SUB.B src,dst 操作: (.not.src) + 1 + dst →dst or dst – src →dst 功能描述: 从目的操作数中减去源操作数。具体就是将源操作数取反加1,然后再加到目 操作数上。源操作数不受影响,结果写入目的操作数。 状态位: N: 结果为负时置位,否则复位。 Z: 结果位0时置位,否则复位。 C:如果最高位有借位置位,否则复位。 V: 如果从正的目的操作数减去负的源操作数,产生负的结果,或者负的目的 去正的源操作数产生正的结果则置位,否则复位(没有溢出)。 控制位: 例: OSCOFF, CPUOFF和GIE不受影响 RAM区的字变量EDE减去16位常量7654h。 SUB #7654h,&EDE 例: 从R7中减去R5(20位地址)指向的表格字变量,运算完成后,如果R7为0,则 跳转到TONI。R5然后自增2,R7的19~16位为0。 SUB @R5+,R7 JZ TONI ... 例: R12指向的字节中减去字节CNT,CNT的地址范围PC±32K.R12指向的地址在整 储范围内。 SUB.B CNT,0(R12) 的 操作数减 个存 SUBC[.W] 带进位的目的操作字减源操作字 SUBC.B 带进位的目的操作字节减源操作字节 指令格式: SUBC src,dst or SUBC.W src,dst 操作: SUBC.B src,dst (.not.src) + C + dst →dst or dst – (src – 1) + C →dst 功能描述: 从目的操作数减去源操作数。具体为将源操作数取反再加上C,然后和目的操 数相加。原操作数不变,结果存入目的操作数。适用于32、48、64位操作数。 状态位: N: 结果为负(MSB=1)置位,否则复位。 Z: 结果位0时置位,否则复位。 C:如果最高位有借位置位,否则复位。 V: 如果从正的目的操作数减去负的源操作数,产生负的结果,或者负的目的 去正的源操作数产生正的结果则置位,否则复位(没有溢出)。 控制位: OSCOFF, CPUOFF和GIE不受影响。 例: 从前面指令中的R5中考虑借位地减去16位常量7654h。 SUBC.W #7654h,R5 作 操作数减 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–135–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 例: R12指向的字节中减去字节CNT.考虑了前面指令的借位位C。CNT的地址在整 个 存储空间内。 SUBC.B &CNT,0(R12) SWPB 指令格式: 操作: 功能描述: 状态位: 控制位: 例: 交换字节 SWPB dst dst.15:8 ↔ dst.7:0 将操作数的高位字节和低位字节互换。寄存器模式下PC 的19:16位被清零。 状态位不受影响。 OSCOFF, CPUOFF和GIE不受影响。 RAM区字节EDE字节交换。 MOV #1234h,&EDE SWPB &EDE 下图重新画,图标号错误及说明为英文。 SXT 指令格式: 操作: 功能描述: 状态位: 扩展符号 SXT dst dst.7 →dst.15:8, dst.7 →dst.19:8 (register mode) 寄存器模式:将操作数低字节的符号位扩展到19~8位。 如果Rdst.7 = 0, Rdst.19:8 = 000h 。 如果Rdst.7 = 1, Rdst.19:8 = FFFh 。 其他模式:将操作数低字节的符号位扩展到高字节。 如果dst.7 = 0, 高字节= 00h 如果dst.7 = 1, 高字节= FFh N: 结果为负时置位,否则复位。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–136–页 共 423 页 控制位: 例: 例: 上。 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM Z: 结果位0时置位,否则复位。 C:结果非零则置位,否则复位。 V: 复位。 OSCOFF, CPUOFF和GIE不受影响。 EDE(低64K)内的8位数据进行符号扩展,然后加到R7指向的16位有符号数 MOV.B &EDE,R5 ; SXT R5 ; ADD R5,R7 EDE(PC+32K)内的8位数据进行符号扩展,然后加到R7指向的20位有符号 MOV.B EDE,R5 ; SXT R5 ; ADDA R5,R7 上。 数 * TST[.W] 测试目的操作数 * TST.B 测试目的操作数 指令格式: TST dst or TST.W dst TST.B dst 功能操作: dst + 0FFFFh + 1 仿真: dst + 0FFh + 1 CMP #0,dst 功能描述: 状态位: 控制位: 例: CMP.B #0,dst 将目的操作数和0比较。根据比较结果,设置状态位。目的操作数不变。 N: 目的操作数为负置位,否则复位。 Z:目的操作数为零置位,否则复位。 C: 置位。 V: 复位。 OSCOFF, CPUOFF和GIE不受影响。 测试R7,如果它为负,跳转到R7NEG;如果为正,但不为0,则跳转到R7POS. TST R7 JN R7NEG JZ R7ZERO R7POS ...... R7NEG ...... R7ZERO ...... 例: 测试R7的低字节,如果它为负,跳转到R7NEG;如果为正,但不为0,则跳转 到 R7POS. TST.B R7 ; Test low byte of R7 JN R7NEG ; Low byte of R7 is negative JZ R7ZERO ; Low byte of R7 is zero R7POS ...... R7NEG ..... R7ZERO ...... XOR[.W] 源操作字与目的操作字异或操作 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–137–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM XOR.B 源操作字节与目的操作字节异或操作 指令格式: XOR src,dst or XOR.W src,dst XOR.B src,dst 操作: src .xor. dst →dst 功能描述: 将源操作数和目的操作数进行异或,结果存入目的操作数,源操作数不 目的操作数之前的内容丢失。 状态位: 控制位: 例: N: 结果为负((MSB = 1)时置位,否则复位。 Z: 结果为零置位,否则复位。 C:结果非零时则置位,否则复位。 V: 执行操作前,两操作数都为负时置位,否则复位。 OSCOFF, CPUOFF和GIE不受影响。 说明++(对应英文201页) 例: XOR &TONI,&CNTR 说明++(对应英文201页) XOR @R5,R6 例: R7低字节中与EDE字节不同的位置0。R7的19~8位为0。EDE的地址在PC±32K 范围内。 XOR.B EDE,R7 INV.B R7 变, 4.6.3 扩展指令 MSP430X的扩展指令使MSP430 CPU可以访问所有20位地址范围。扩展指令需要一个称做扩展字的额 外操作码字。所有地址,变址与立即数在都可以是20位的值。 MSP430X扩展指令如下描述: * ADCX.A * ADCX.[W] * ADCX.B 指令格式: ADCX.A dst ADCX dst or ADCX.W dst 操作: 功能描述: 状态位: 例: ADCX.B dst dst + C →dst 目的操作数与进位位C相加,结果存入目的操作数。 影响标志位:N Z C V N:运算结果为负时置位,否则复位。 Z: 运算结果为零时置位,否则复位。 C:字或字节运算有进位时置位,否则复位。 V:两个正操作数的结果为负,或两负数结果为正置位,否则复位。 INCX.A @R12 ; ADCX.A @R13 ADDX.A ADDX.[W] ADDX.B 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–138–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 指令格式: ADDX.A src,dst ADDX src,dst or ADDX.W src,dst ADDX.B src,dst 操作: src + dst →Dst 功能描述: 将源操作数和目的操作数相加结果保存到目的操作数。可寻址整个存储空间的 操作数。 状态位: 例: 影响标志位:N Z C V N:运算结果为负时置位,否则复位。 Z: 运算结果为零时置位,否则复位。 C:字或字节运算有进位时置位,否则复位。 V:两个正操作数的结果为负,或两负数结果为正置位,否则复位。 ADDX.A #10,CNTR;ADDX.W @R5,R6 ;JC TONI ADDX.B @R5+,R6 ; ADDX.A Rsrc,Rdst; ADDX.A #imm20,Rdst;JNC TONI ADDCX.A ADDCX.[W] ADDCX.B 指令格式: ADDCX.A src,dst ADDCX src,dst or ADDCX.W src,dst ADDCX.B src,dst 操作: src + dst + C →dst 功能描述: 将源操作数和目的操作数以及进位位C相加结果存入目的操作数,操作数可在 整 个寻址范围。 影响标志位:N Z C V 状态位: N:运算结果为负时置位,否则复位。 Z: 运算结果为零时置位,否则复位。 C:字或字节运算有进位时置位,否则复位。 V:两个正操作数的结果为负,或两负数结果为正置位,否则复位。 例: ADDCX.A #15,&CNTR ADDCX.W @R5,R6; JC TONI ADDCX.B @R5+,R6; JNC TONI ANDX.A ANDX.[W] ANDX.B 指令格式: ANDX.A src,dst ANDX src,dst or ANDX.W src,dst ANDX.B src,dst 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–139–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 操作: src .and. dst →dst 功能描述: 将源操作数和目的操作数进行逻辑与,结果保存到目的操作数,原操作数不变, 操作数可在整个寻址范围。 状态位: 例: 影响的标志位:N C Z V,不影响:OSCOFF, CPUOFF, GIE N:运算结果为负时置位,否则复位。 Z: 运算结果为零时置位,否则复位。 C:运算结果非零时置位,否则复位。 V:复位。 ANDX.A R5,TOM; ANDX.A #AAA55h,TOM; JZ TONI ANDX.B @R5+,R6 BICX.A BICX.[W] BICX.B 指令格式: BICX.A src,dst BICX src,dst or BICX.W src,dst BICX.B src,dst 操作: (.not. src) .and. dst →dst 功能描述: 操作数取反与目的操作数进行逻辑与,使目的操作数相应位清零。 例: 不影响标志位:N Z C V,OSCOFF, CPUOFF, GIE BICX.A #0F8000h,R5 BICX.W @R5,R7 BICX.B @R5,&P1OUT BISX.A BISX.[W] BISX.B 指令格式: BISX.A src,dst BISX src,dst or BISX.W src,dst 操作: 功能描述: 例: BISX.B src,dst src .or. dst →dst 将源操作数和目的操作数进行逻辑或运算,置位目的操作数相应位。 不影响标志位:N Z C V,OSCOFF, CPUOFF, GIE BISX.A #018000h,R5 BISX.W @R5,R7 BISX.B @R5,&P1OUT BITX.A 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–140–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM BITX.[W] BITX.B 指令格式: BITX.A src,dst BITX src,dst or BITX.W src,dst BITX.B src,dst 操作: src .and. dst →dst 功能描述: 只影响标志位的源操作数和目的操作数逻辑与运算。 状态位: 例: 影响标志位:N Z C V N:运算结果为负时置位,否则复位。 Z: 运算结果为零时置位,否则复位。 C:运算结果非零时置位,否则复位。 V:复位。 BITX.A #018000h,R5 ; JNZ TONI BITX.W @R5,R7 ; JC TONI BITX.B @R5+,&P1IN ;JNC TONI * CLRX.A * CLRX.[W] * CLRX.B 指令格式: CLRX.A dst CLRX dst or CLRX.W dst 操作: CLRX.B dst 0 →dst 功能描述: 目的操作数清零。 例: 不影响状态标志位 CLRX.A TONI CMPX.A CMPX.[W] CMPX.B 指令格式: 操作: 功能描述: 志位。 状态位: CMPX.A src,dst CMPX src,dst or CMPX.W src,dst CMPX.B src,dst (.not. src) + 1 + dst or dst – src 目的操作数与源操作数相比较,即用目的操作数减 去源操作数,仅影响标 影响状态标志:N Z C V,不影响标志位:OSCOFF CPUOFF GIE N:运算结果为负时置位,否则复位。 Z: 运算结果为零时置位,否则复位。 C:运算有借位时置位,否则复位。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–141–页 共 423 页 例: LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM V:发生算术溢出时置位,否则复位。 CMPX.A #018000h,EDE ; JL TONI CMPX.B @R5+,&P1IN; JEQ TONI CMPA Rsrc,Rdst; CMPA #imm20,Rdst * DADCX.A * DADCX.[W] * DADCX.B 指令格式: DADCX.A dst DADCX dst or DADCX.W dst 操作: 功能描述: 状态位: 例: DADCX.B dst dst + C →dst 将十进制进位位加到目的操作数,结果存到目的操作 影响标志位 N Z C V N:运算结果最高位为 1 时置位,否则复位。 Z: 目的操作数为零时置位,否则复位。 C:运算有进位时置位,否则复位。 V:未定义。 数。 DADDX.A #1,0(R12); DADCX.A 0(R13) DADDX.A DADDX.[W] DADDX.B 指令格式: DADDX.A src,dst DADDX src,dst or DADDX.W src,dst 操作: 功能描述: 状态位: 例: DADDX.B src,dst src + dst + C →dst 带进位的BCD数相加。 影响状态标志 N Z C V N:运算结果最高位为 1 时置位,否则复位。 Z: 目的操作数为零时置位,否则复位。 C:运算有进位时置位,否则复位。 V:未定义。 DADDX.A #10h,&DECCNTR DADDX.W BCD,R5 DADDX.B BCD,R4 * DECX.A * DECX.[W] * DECX.B 指令格式: DECX.A dst 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–142–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 操作: 功能描述: 状态位: 例: DECX dst or DECX.W dst DECX.B dst dst – 1 →dst 目的操作数减一。 影响标志位:N Z C V N: 结果为负时置位,否则复位。 Z:目的操作数包含1时置位,否则复位。 C: 目的操作数为0时置位,否则复位。 V: 发生算术溢出时置位,否则复位。 DECX.A TONI * DECDX.A * DECDX.[W] * DECDX.B 指令格式: DECDX.A dst DECDX dst or DECDX.W dst 操作: 功能描述: 状态位: 例: DECDX.B dst dst – 2 →dst 目的操作数减2。 影响标志位:N Z C V N: 结果为负时置位,否则复位。 Z:目的操作数初值为2时置位,否则复位。 C: 目的操作数初值为0或1时置位,否则复位。 V: 发生算术溢出时置位,否则复位。 DECDX.A TONI * INCX.A * INCX.[W] * INCX.B 指令格式: INCX.A dst INCX dst or INCX.W dst 操作: 功能描述: 状态位: 例: INCX.B dst dst + 1 →dst 目的操作数加1。 影响标志位:N Z C V N: 结果位负时置位,否则复位。 Z:目的操作数包含0FFFFFH或0FFFFH或0FFH置位,否则复位。 C:目的操作数包含0FFFFFH或0FFFFH或0FFH置位,负责复位。 V: 目的操作数包含07FFFFH或07FFFH或07F置位,否则复位。 INCX.A TONI * INCDX.A 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–143–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM * INCDX.[W] * INCDX.B 指令格式: INCDX.A dst INCDX dst or INCDX.W dst 操作: INCDX.B dst dst + 2 →dst 影响标志位:N Z C V 状态位: N: 结果位负时置位,否则复位。 Z:目的操作数包含0FFFFEH或0FFFEH或0FEH置位,否则复位。 C:目的操作数包含0FFFFEH或0FFFFFH置位,否则复位。 目的操作数包含0FFFFF或0FFFEH置位,否则复位。 例: 目的操作数包含0FF或0FEH置位,否则复位。 V: 目的操作数包含07FFFEH或07FFFFH置位,否则复位。 目的操作数包含07FFFF或07FFEH置位,否则复位。 目的操作数包含07F或07EH置位,否则复位。 I NCDX.B LEO * INVX.A * INVX.[W] * INVX.B 指令格式: INVX.A dst INVX dst or INVX.W dst INVX.B dst 操作 NOT.dst →dst 功能描述: 目的操作数取反,将取反后的只存储在目的操作数。 状态位: 例: 影响标志位:N Z C V N: 结果位负时置位,否则复位。 Z:目的操作数包含0FFFFFH或0FFFFH或0FFH置位,否则复位。 C:结果非零置位,否则复位。 V: 初始目的操作数为负置位,否则复位。 INVX.A R5 ; INCX.A R5 INVX.B LEO INCX.B LEO MOVX.A MOVX.[W] MOVX.B 指令格式: MOVX.A src,dst MOVX src,dst or MOVX.W src,dst 操作: MOVX.B src,dst src →dst 功能描述: 将原操作数写入目的操作数,原操作数不变。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–144–页 共 423 页 例: LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 不影响标志位。 Loop MOVX.W @R10+,TOM-EDE-2(R10) ; CMPA #EDE+60h,R10 ; JLO Loop ; ... MOVA #EDE,R10 ; MOV #20h,R9 ; Loop MOVX.W @R10+,TOM-EDE-2(R10) ; DEC R9 ; JNZ Loop POPM.A POPM.[W] 指令格式: POPM.A #n,Rdst 1 1<=n<=16 POPM.W #n,Rdst or POPM #n,Rdst 功能描述: POPM.A:从堆栈中恢复指定n个CPU寄存器的值,每个寄存器加载堆栈指针SP 增加4,20位的值从堆栈加载到CPU寄存器。 POPM.W:从堆栈中恢复指定n个CPU寄存器的16位的值,每个寄存器加载堆 栈 指 针 SP 增 加2,16位的值从堆栈加载到CPU寄存器。 例: 不影响状态标志位,除SR为操作数之外。 POPM.A #5,R13 恢复R9, R10, R11, R12, R13 POPM.W #5,R13 PUSHM.A PUSHM.[W] 指令格式: PUSHM.A #n,Rdst 1 1<=n<=16 PUSHM.W #n,Rdst or PUSHM #n,Rdst 功能描述: PUSHM.A:将n个20位的CPU寄存器的值压入堆栈,堆栈指针以4递减. PUSHM.W:将n个16位的CPU寄存器的值压入堆栈,堆栈指针以2递减 注:该指令无需额外的扩展字。 不影响状态标志位。 例: PUSHM.A #5,R13 ; 保存 R13, R12, R11, R10, R9 PUSHM.W #5,R13 ; 保存 R13, R12, R11, R10, R9 * POPX.A * POPX.[W] * POPX.B 指令格式: POPX.A dst POPX dst or POPX.W dst POPX.B dst 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–145–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 功能描述: 从堆栈中恢复8/16/20位的值到目的操作数。堆栈指针加2 或加4 不影响状态标志位。 例: POPX.W &EDE POPX.A R9 PUSHX.A PUSHX.[W] PUSHX.B 指令格式: PUSHX.A src PUSHX src or PUSHX.W src 功能描述: 例: PUSHX.B src 将8/16/20位的目的操作数压入堆栈中。堆栈指针减2或减4 不影响状态标志位。 PUSHX.B &EDE PUSHX.A R9 RLAM.A RLAM.[W] 指令格式: RLAM.A #n,Rdst 1<=n<=4 操作: 功能描述: 状态位: 例: RLAM.W #n,Rdst or RLAM #n,Rdst C←MSB ←MSB-1 .... LSB+1←LSB←0 将目的操作数左移指定的位数(1-4位),字操作时19:16位为零。 如:图 5-44所示: 注:该指令无需字扩展。 影响状态标志位:N Z C V N: 结果为负时置位,否则复位。 Z: 结果为零时置位,否则复位。 C:移入的最高位。 V:未定义。 RLAM.A#3,R * RLAX.A * RLAX.[W] * RLAX.B 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–146–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 指令格式: RLAX.A dst RLAX dst or RLAX.W dst RLAX.B dst 操作: C←MSB ←MSB-1 .... LSB+1 ←LSB←0 功能描述: 指令操作一次就将目的操作数的所有位向左移动一位, 相应的高位进入进 位标志位,最低为补零。如图 5-45. 影响状态位:N Z C V 状态位: N: 结果为负时置位,否则复位。 Z: 结果为零时置位,否则复位。 C:移入的最高位。 V:发生算术溢出时置位,否则复位。 例: RLAX.A R7 * RLCX.A * RLCX.[W] * RLCX.B 指令格式: RLCX.A dst RLCX dst or RLCX.W dst RLCX.B dst 操作: C <-MSB <-MSB-1 .... LSB+1 <-LSB <-C 功能描述: 指令每执行一次,则操作数的最高位送入标志位C,而 原标志位C中的内容送 到 操作数的最低为。如Figure 5-46. 影响状态位:N Z C V 状态位: N: 结果为负时置位,否则复位。 Z: 结果为零时置位,否则复位。 C:移入的最高位。 V:发生算术溢出时置位,否则复位。 例: RLCX.A R5 RRAM.A RRAM.[W] 指令格式: RRAM.A #n,Rdst 1<=n<=4 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–147–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM RRAM.W #n,Rdst or RRAM #n,Rdst 操作: MSB →MSB →MSB–1 ... LSB+1 →LSB →C 功能描述: 将目的操作数右移指定的位数,符号位保持,最低为移 16位清零。如图 5-47. 注:该指令无需子扩展。 影响状态位:N Z C V 状态位: N: 结果为负时置位,否则复位。 Z: 结果为零时置位,否则复位。 C:移入的最低位。 V:复位。 例: 入标志位C.字操作 RRAM.A #2,R5 19: RRAX.A RRAX.[W] RRAX.B 指令格式: RRAX.A Rdst RRAX.W Rdst RRAX Rdst RRAX.B Rdst RRAX.A dst RRAX dst or RRAX.W dst 操作: RRAX.B dst MSB →MSB →MSB–1 ... LSB+1 →LSB →C 功能描述: 指令每执行一次,使操作数右移一位,但保持符号位不 如:图 5-48,图 5-49. 影响状态位:N Z C V 状态位: N: 结果为负时置位,否则复位。 Z: 结果为零时置位,否则复位。 C:移入的最低位。 V:复位。 例: RRAX.A R5 RRAX.B &EDE 变,最低为移至C。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–148–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM RRCM.A RRCM.[W] 指令格式: RRCM.A #n,Rdst 1<=n<=4 RRCM.W #n,Rdst or RRCM #n,Rdst 操作: C →MSB →MSB–1 ... LSB+1 →LSB →C 功能描述: 目的操作数向右移动指定的位数,当前最低为移入进位位 C,进位位C移入最 高 位。 影响状态位:N Z C V 状态位: N: 结果为负时置位,否则复位。 Z: 结果为零时置位,否则复位。 C:移入的最低位。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–149–页 共 423 页 例: LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM V:复位。 RRCM.A #3,R5; RRCM.W #2,R6 RRCX.A RRCX.[W] RRCX.B 指令格式: 操作: 功能描述: 状态位: RRCX.A Rdst RRCX.W Rdst RRCX Rdst RRCX.B Rdst RRCX.A dst RRCX dst or RRCX.W dst RRCX.B dst C →MSB →MSB–1 ... LSB+1 →LSB →C 目的操作数右移一位,最低为移入C位,C移入最高位。 如图 5-51.图 5-52. 影响状态位:N Z C V N: 结果为负时置位,否则复位。 Z: 结果为零时置位,否则复位。 C:移入的最低位。 V:复位。 例: SETC ; RRCX.A EDE RPT #12;RRCX.W R6 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–150–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM RRUM.A RRUM.[W] 指令格式: RRUM.A #n,Rdst 1 1<=n <=4 操作: 功能描述: 状态位: 例: RRUM.W #n,Rdst or RRUM #n,Rdst 0 →MSB →MSB–1 ... LSB+1 →LSB →C 目的操作数向右移动指定的位数,最低为移入C,最高位补零。如:图 5-53. 影响状态位:N Z C V N: 结果为负时置位,否则复位。 Z: 结果为零时置位,否则复位。 C:移入的最低位。 V:复位。 RRUM.A #4,R5;R5/16; RRUM.W #1,R6;R6 = R6/2 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–151–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM RRUX.A RRUX.[W] RRUX.B 指令格式: RRUX.A Rdst RRUX.W Rdst RRUX Rdst 操作: 功能描述: 状态位: 例: RRUX.B Rdst 0 →MSB →MSB–1 ... LSB+1 →LSB →C 目的操作数右移移位,最低为移入C,最高位补零。如:图 5-54. 影响状态位:N Z C V N: 结果为负时置位,否则复位。 Z: 结果为零时置位,否则复位。 C:移入的最低位。 V:复位。 RRUX.W R6 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–152–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM * SBCX.A * SBCX.[W] * SBCX.B 指令格式: SBCX.A dst SBCX dst or SBCX.W dst 操作: SBCX.B dst dst + 0FFFFFh + C →dst dst + 0FFFFh + C →dst dst + 0FFh + C →dst 功能描述: 将借位C加到减1后的目的操作数,结果存入目的操作数。 影响状态位:N Z C V 状态位: 例: N: 结果为负时置位,否则复位。 Z: 结果为零时置位,否则复位。 C:有进位置位,否则复位。 V:发生算术溢出置位,否则复位。 SUBX.B @R13,0(R12) ; SBCX.B 1(R12) SUBX.A SUBX.[W] SUBX.B 指令格式: SUBX.A src,dst SUBX src,dst or SUBX.W src,dst 操作: 功能描述: 状态位: 例: SUBX.B src,dst (.not. src) + 1 + dst →dst or dst – src →dst 目的操作数减去源操作数,结果存入目的操作数。 影响状态位:N Z C V N: 结果为负时置位,否则复位。 Z: 结果为零时置位,否则复位。 C:有进位置位,否则复位。 V:发生算术溢出置位,否则复位。 SUBX.A #87654h,EDE SUBX.W @R5+,R7 SUBX.B CNT,0(R12) SUBX.A Rsrc,Rdst SUBX.A #imm20,Rdst SUBCX.A SUBCX.[W] SUBCX.B 指令格式: SUBCX.A src,dst SUBCX src,dst or SUBCX.W src,dst SUBCX.B src,dst 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–153–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 操作: 功能描述: 状态位: 例: (.not. src) + C + dst →dst or dst – (src – 1) + C →dst 源操作数取反再加上C,然后和目的操作数相加。结果 写入目的操作数。 影响状态位:N Z C V N: 结果为负时置位,否则复位。 Z: 结果为零时置位,否则复位。 C:有进位置位,否则复位。 V:发生算术溢出置位,否则复位。 SUBCX.A #87654h,R5 SUBCX.W @R5+,2(R7) SUBCX.B &CNT,0(R12) SWPBX.A SWPBX.[W] 指令格式: SSWPBX.A dst 操作: 功能描述: 例: SWPBX dst or SWPBX.W dst dst.15:8 ↔ dst.7:0 高位字节和低位字节交换,若为20位则19:16位不变。 不影响标志位,且若在存储器中指令执行后31:20位清零。 MOVX.A #23456h,&EDE ;SWPBX.A EDE 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–154–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM SXTX.A SXTX.[W] 指令格式: SXTX.A dst SXTX dst or SXTX.W dst 操作: dst.7 →dst.15:8, Rdst.7 →Rdst.19:8 (Register Mode) 功能描述: 准字操作,将目的操作数符号扩展到20位,存储器中的31:20位清零。字操作 情况下,将低字节的符号位扩展到8:15位。 影响状态位:N Z C V 状态位: N: 结果为负时置位,否则复位。 Z: 结果为零时置位,否则复位。 C:结果非零置位,否则复位。 V:复位。 例: SXTX.A &EDE 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–155–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM * TSTX.A * TSTX.[W] * TSTX.B 指令格式: TSTX.A dst TSTX dst or TSTX.W dst 操作: TSTX.B dst dst + 0FFFFFh + 1 dst + 0FFFFh + 1 dst + 0FFh + 1 功能描述: 将目的操作数和零相比,影响标志位,目的操作数不变。 影响状态位:N Z C V 状态位: N: 结果为负时置位,否则复位。 Z: 结果为零时置位,否则复位。 例: C:置位。 V:复位。 TSTX.B LEO ; Test LEO JN LEONEG XORX.A XORX.[W] XORX.B 指令格式: XORX.A src,dst XORX src,dst or XORX.W src,dst 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–156–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 操作: 功能描述: 状态位: 例: XORX.B src,dst src .xor. dst →dst 将源操作数和目的操作数进行逻辑异或运算,结果存入目的操作数。 影响状态位:N Z C V N: 结果为负时置位,否则复位。 Z: 结果为零时置位,否则复位。 C:结果非零置位,否则复位。 V:两个操作数是负时置位,否则复位。 XORX.A TONI,&CNTR XORX.W @R5,R6 XORX.B EDE,R7 4.6.4 地址字指令 该类指令支持20位操作数,但受寻址模式的限制,只限寄存器模式和立即数模式(MOVA除外)。指 令不需要操作码扩展字从而提高了代码密度和减少了执行时间。 ADDA 指令格式: ADDA Rsrc,Rdst 操作: 功能描述: 状态位: ADDA #imm20,Rdst src + Rdst →Rdst 将20位的原操作数和目的操作数相加结果存入目的操作数,源操作数不变。 影响状态标志位:N Z C V N: 结果为负时置位,否则复位。 Z:结果为零时置位,否则复位。 C: 有进位置位,否则复位。 V:如果两个正操作数的结果为负, 或两个负操作数结果为正置位, 否则复位。 例: ADDA #0A4320h,R5 ; JC TONI * BRA 指令格式: 操作: 功能描述: 例: BRA dst dst →PC 该指令无条件跳转至整个20位地址空间的任意位置。7种寻址模式都可以使用。 不影响状态标志位。 BRA #EDE ; BRA #01AA04h BRA EXEC MOVX.A EXEC,PC BRA &EXEC BRA R5 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–157–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM BRA @R5 BRA @R5+ BRA X(R5) MOVX.A X(R5),PC CALLA 指令格式: 操作: 功能描述: CALLA dst dst →tmp SP – 2 →SP PC.19:16 →@SP SP – 2 →SP PC.15:0 →@SP tmp →PC 该指令实现整个地址范围内的子程序调用,可用7中寻址 不影响状态标志位。 例: CALLA #EXEC ; CALLA #01AA04h CALLA EXEC CALLA &EXEC CALLA R5 CALLA @R5 CALLA @R5+ CALLA X(R5) 模式。 * CLRA 指令格式: 操作: 功能描述: 例: CLRA Rdst 0 →Rdst 目的寄存器清零。 不影响标志位 CLRA R10 CMPA 指令格式: CMPA Rsrc,Rdst 操作: 功能描述: 例: CMPA #imm20,Rdst (.not. src) + 1 + Rdst or Rdst – src 20位源操作数和寄存器目的操作数相比,仅影响标志 位,操作数内容不变。 CMPA #12345h,R6 ; JEQ EQUAL CMPA R6,R5 ; JGE GRE * DECDA 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–158–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 指令格式: 操作: 功能描述: 状态位: 例: DECDA Rdst Rdst – 2 →Rdst 目的操作数减2,结果存入目的操作数。 影响标志位:N Z C V N: 结果为负置位,否则复位。 Z: 目的操作数时2置位,否则复位。 C: 目的操作数是0或1置位,否则复位。 V: 如果发生算术溢出置位,否则复位。 DECDA R5 * INCDA 指令格式: 操作: 功能描述: 状态位: 例: INCDA Rdst Rdst + 2 →Rdst 目的寄存器加2,结果存入目的操作数。 影响状态标志位:N Z C V N: 结果为负置位,否则复位。 Z: 目的操作数是0FFFFE时置位,否则复位。 目的操作数是0FFFEH时置位,否则复位。 目的操作数是0FE时置位,否则复位。 C: 目的操作数是0FFFFFH或0FFFFEH时置位,否则复位。 目的操作数是0FFFFH或0FFFE时置位,否则复位。 目的操作数是0FFH或0FEH时置位,否则复位。 V: 目的操作数是0FFFFFH或0FFFFEH时置位,否则复位。 目的操作数是0FFFFH或0FFFE时置位,否则复位。 目的操作数是0FFH或0FEH时置位,否则复位。 INCDA R5 MOVA 指令格式: 操作: 功能描述: 例: MOVA Rsrc,Rdst MOVA #imm20,Rdst MOVA z16(Rsrc),Rdst MOVA EDE,Rdst MOVA &abs20,Rdst MOVA @Rsrc,Rdst MOVA @Rsrc+,Rdst MOVA Rsrc,z16(Rdst) MOVA Rsrc,&abs20 src →Rdst Rsrc →dst 将20位原操作数写入目的操作数。 不影响状态标志位。 MOVA R9,R8 ; MOVA R13,EDE; MOVA EDE,R12; 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–159–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM MOVA @R9+,R8 MOVA @R9,R8; MOVA 100h(R9),R8; MOVA R8,100h(R9) MOVA &EDE,R12; MOVA R13,&EDE * RETA 指令格式: RETA 操作: @SP →PC. SP + 2 →SP @SP →PC. SP + 2 →SP 功能描述: 子程序返回将CALLA指令压入到堆栈的PC值从堆栈恢复到 PC,程序从该数据 地 址处执行。 例: 不影响状态标志位。 CALLA #SUBR ; ... ; SUBR PUSHM.A #2,R14 ; ... ; POPM.A #2,R14 ; RETA * TSTA 指令格式: TSTA Rdst 操作: dst + 0FFFFFh + 1 dst + 0FFFFh + 1 功能描述: 状态位: 例: dst + 0FFh + 1 将目的操作数和0相比,目的操作数不变,仅影响标志位。 影响标志位:N Z C V N: 目的操作数为负数置位,否则复位。 Z: 目的操作数为零置位,否则复位。 C: 置位。 V: 复位。 TSTA R7 ; JN R7NEG ; JZ R7ZERO ; R7POS ...... ; R7NEG ...... ; R7ZERO ...... SUBA 指令格式: 操作: 功能描述: SUBA Rsrc,Rdst SUBA #imm20,Rdst (.not.src) + 1 + Rdst →Rdst or Rdst – src →Rdst 20位目的操作数减去源操作数,结果存入目的操作数。 影响标志位:N Z C V 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–160–页 共 423 页 状态位: 例: LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM N: 结果位负置位,否则复位。 Z: 结果为零置位,否则复位。 C: 有进位置位,否则复位。 V:运算发生算术溢出置位,否则复位。 SUBA R5,R6 ; JC TONI 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–161–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 第5章 FLASH 存储控制器 本章主要讲述的是 FLASH 控制器的相关操作。 5.1 FLASH 存储器介绍 5.2 FLASH 存储器分段结构 5.3 FLASH 存储器操作 5.4 FLASH 存储器寄存器 5.1 Flash存储器介绍 MSP430 的 Flash 可字节/字/长字寻址和编程。Flash 存储器模块有一个控制编程和擦除操作的集成控 制器。该模块包括三个寄存器,一个时序发生器,一个提供编程和擦除电压的电压发生器。不能超出累计 高电压时间,在另外一个擦除周期前,每个 32 位字最多写四次(字节、字、长字模式下),具体参考数据 手册。 Flash 存储器特征包括: 2 内部的编程电压发生器 3 可字节、字(2 个字节)和长字(4 个字节)编程 4 超低功耗操作 5 段擦除、扇区擦除和全部擦除 6 边沿 0 和边沿 1 读模式 7 当程序可在另外不同的扇区执行时,每个扇区可以单独擦除。 注意:并不是所有芯片都支持扇区操作,具体参考数据手册获得详细信息。 Flash 存储器和控制器的框图如图 5-1 所示。 图 5-1 Flash 存储器模块框图 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–162–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 5.2 Flash存储器的分段结构 MSP430 的 Flash 主存储区被分割成段,每段为 512 个字节。位、字节或者 字都可以写入 Flash 存储器,但是 Flash 存储器最小的擦除单元是段。 Flash 存储器分为主存储区和信息存储区。在操作上两者没有什么区别。程 序代码和数据可以装载在任何部分。两者的区别在于段的大小不同。 有四个信息存储段,A 到 D。每个信息存储段包含 128 个字节,并且可以单 独擦除。 引导加载存储器(BSL)包含 4 个段,A 到 D。每个引导加载段有 512 个字 节,并且可以单独擦除。 主存储区段大小为 512 个字节。每个扇区的开始地址和结束地址以及整体 存储空间图详见具体芯片的数据手册。 图 5-2 所示为一个 Flash 分割段的例子,在该例子中,有 256KB 的 Flash, 分为四个 64KB 大小的扇区(A 到 D)和信息存储区。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–163–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图 5-2 Flash 存储器段,256KB 举例 5.2.1 段A 信息存储器的段 A 可以通过 LOCKA 位进行锁定,而与其它的段区分开来。 如果 LOCKA = 1, 段 A 不能进行写入或者擦除操作,并且所有的信息存储区禁止 段擦除操作。如果 LOCKA = 0,段 A 可以像其它 Flash 存储段一样进行擦除和写 入操作。 对 LOCKA 位写 1 后,其状态将翻转。对 LOCKA 位写入 0 无效。这样可以使 用已存在的编程程序,而不对其做改变。 ;Unlock Info Memory BIC #FWKEY+LOCKINFO, &FCTL4 ;Unlock SegmentA BIT #LOCKA,&FCTL3 JZ SEGA_UNLOCKED MOV #FWKEY+LOCKA,&FCTL3 SEGA_UNLOCKED ;SegmentA is unlocked ;Clear LOCKINFO ;Test LOCKA ;Already unlocked? ;No, unlock SegmentA ;Yes, continue ;Lock SegmentA BIT #LOCKA,&FCTL3 JNZ SEGALOCKED MOV #FWKEY+LOCKA,&FCTL3 SEGA_LOCKED ;SegmentA is locked ;Lock Info Memory BIS #FWKEY+LOCKINFO,&FCTL4 5.3 Flash存储器操作 ;Test LOCKA ;Already locked? ;No, lock SegmentA ;Yes, continue ;Set LOCKINFO Flash 存储器默认的模式是读模式。在读模式下,Flash 存储器不能进行擦 除或写操作,Flash 时序发生器和电压发生器是关闭的,存储器的操作与 ROM 相 似。 在擦除时读取—Flash 存储器允许当一个扇区执行擦除操作时,Flash 内程序的 执行,也可以从没有正在执行擦除操作的其他扇区中读数据。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–164–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 注意:在擦除时读取 如果该 FLASH 有不止一个扇区可用,擦除的同时可以对其他的扇区进行读取操作。如果整个 FLASH 存储器只有一个扇区时,在擦除期间,从存储器、信息存储器和通过引导加载内存(BSL)的读操作 都将是无效的。 MSP430 Flash 存储器不需要外部电压,可以实现在线系统编程(ISP)。CPU 能够对 Flash 存储器进行编程。Flash 存储器通过 BLKWRT,WRT,MERAS 和 ERASE 位选择写入/擦除模式: 30、字节/字/长字(32 位)写入 31、块写入 32、段擦除 33、扇区擦除(针对主存储区) 34、主存擦除(所有的主存储扇区) 35、当擦除扇区时读(除了从当前的扇区读) 当 Flash 存储器的扇区正在进行编程或擦除(页、Mass 或扇区)操作时, 禁止对该扇区进行读或写操作。对 Flash 存储器的擦除或者编程可以从 Flash 存储器或者 RAM 中启动。 5.3.1擦除Flash存储器 擦除后 Flash 存储器的值为逻辑 1。每一位可以单独通过编程,从 1 变到 0, 但是要将其重新编程从 0 到 1 需要擦除操作。Flash 最小的擦除单元是一个段。 通过表 5-1 列出的 ERASE 和 MERAS 位,可以选择三种擦除模式。 MERAS 表 5-1 擦除模式 ERASE 擦除模式 0 1 段擦除 1 0 空写地址选择的扇区擦除(一个扇区) 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–165–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 主存擦除(所有的存储扇区,信息存储区 A 到 D 以及引 1 1 导装载段 A 到 D 不被擦除) 注:并不是所有的器件都支持扇区擦除,具体参考数据手册。 5.3.1.1 擦除周期 在对需要擦除的段地址范围内执行一次空写操作将启动一次擦除。图 5-3 所示为擦除周期的时序。在空写后 BUSY 位立即置位,并且在整个擦除周期内保 持置位。当擦除完成后 BUSY、MERAS 和 ERASE 位自动清除。主存擦除周期时序 并不取决于芯片内的 Flash 存储器的数量。所以对所有的 MSP430F5xx 系列芯片, 擦除周期的时间都是相同的。对所有芯片来说,擦出周期的时序是等同的。 图 5-3 Flash 擦除周期时序 5.3.1.2 擦除主存储器 主存储器包含一个或者多个扇区。每个扇区可以单独进行擦除(扇区擦除)。 所有的主存储器扇区都可在主存擦除模式下擦除。 5.3.1.3 擦除信息存储器或FLASH段 信息存储器 A 到 D 及引导装载段 A 到 D,可以在段擦除模式下擦除。在扇区 擦除或者主擦除模式时,不能擦除这些存储器。 5.3.1.4 从FLASH存储器中启动擦除 擦除可以从 Flash 存储器启动。在扇区擦除时,代码可以在 Flash 或者 RAM 中执行。被执行的代码不能存放在需要擦除的扇区中。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–166–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 在段擦除期间,CPU 会一直挂起到擦除完毕。擦除周期结束后,CPU 将按照 空写之后的指令继续执行代码。 当从 Flash 存储区启动擦除周期时,有可能会擦除操作之后要执行的代码。 如果是这样,CPU 在擦除完成后的操作是不可预料的。 从 Flash 存储区启动擦除操作的流程如图 5-4 所示。 图 5-4 从 Flash 存储区启动擦除操作 ;Segment Erase from flash. ;Assumes Program Memory. Information memory or BSL ;requires LOCKINFO to be cleared as well. ;Assumes ACCVIE = NMIIE = OFIE = 0. MOV #WDTPW+WDTHOLD,&WDTCTL ;Disable WDT L1 BIT #BUSY,&FCTL3 ;Test BUSY JNZ L1 ;Loop while busy MOV #FWKEY,&FCTL3 ;Clear LOCK MOV #FWKEY+ERASE,&FCTL1 ;Enable segment erase CLR &0FC10h ;Dummy write L2 BIT #BUSY,&FCTL3 ;Test BUSY JNZ L2 ;Loop while busy MOV #FWKEY+LOCK,&FCTL3 ;Done, set LOCK ... ;Re-enable WDT? 5.3.1.5 从RAM存储器中启动擦除 擦除操作可以从 RAM 区启动。在这种情况下,CPU 不会挂起,将继续从 RAM 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–167–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 区执行代码。当在 RAM 区执行代码时,将启动主存擦除操作(所有的主存储扇 区)。BUSY 位用于检测擦除操作是否结束。如果 Flash 在扇区擦除操作忙时,可 以从另外一个不同扇区的 Flash 区域读数据或者获取指令。当 Flash 处于忙状 态时,启动一个擦除周期或者编程周期将导致非法访问,ACCIFG 置位,同时擦 除操作的结果是不可预料的。 从 RAM 区启动擦除操作的流程图如图 5-5 所示。 图 5-5 从 RAM 区启动擦除操作 ;segment Erase from RAM. ;Assumes Program Memory. Information memory or BSL ;requires LOCKINFO to be cleared as well. ;Assumes ACCVIE = NMIIE = OFIE = 0. MOV #WDTPW+WDTHOLD,&WDTCTL ;Disable WDT L1 BIT #BUSY,&FCTL3 ;Test BUSY JNZ L1 ;Loop while busy MOV #FWKEY,&FCTL3 ;Clear LOCK MOV #FWKEY+ERASE,&FCTL1 ;Enable page erase CLR &0FC10h ;Dummy write L2 BIT #BUSY,&FCTL3 ;Test BUSY 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–168–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM JNZ L2 MOV #FWKEY+LOCK,&FCTL3 ... ;Loop while busy ;Done, set LOCK ;Re-enable WDT? 5.3.2 Flash存储器写操作 可以通过 WRT 和 BLKWRT 位来选择写模式,如表 5-2 所示。 表 5-2 写模式 BLKWRT WRT 写模式 0 1 字节/字写入 1 0 长字写入 1 1 长字块写入 写模式使用特有的写入指令时序。使用长字写入模式的速度大概是字节/字 写入模式的两倍,是字节/字写入模式的四倍,因为电压发生器在块写入期间一 直处于打开状态,长字是并行写入的。在字节/字写入模式、长字写入模式或者 长字块写入模式下,任何修改目的操作数的指令均能用于修改 Flash 的位置。 当写入操作正在运行时,BUSY 位置位,当操作完成后,BUSY 位清零。如果 写操作是从 RAM 区启动的,当 BUSY 位为 1 时,CPU 禁止访问 Flash。否则,发 生非法访问时,ACCVIFG 位置位,对 Flash 的写操作是不可预料的。 5.3.2.1 写入字节/字 单个字节/字写入操作可以从 Flash 存储器内或者从 RAM 区启动。当从内部 Flash 存储器启动时,在写操作完成时,CPU 是挂起的。写操作完成后,CPU 将 会从写入访问之后的指令处继续执行。字节/字写入的时序如图 5-6 所示。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–169–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图 5-6 字节/字/长字写入时序 当字节/字写入是从 RAM 区执行时,CPU 继续从 RAM 区执行代码。在 CPU 再 次访问 Flash 前,BUSY 位必须为 0,否则将产生非法操作,ACCVIFG 置位,写入 结果不可预料。 在字节/字写入模式下,内部产生的编程电压应用于整个 128 字节块。不能 超出任何块的累计编程时间 tCPT。每个字节或者字的写入时间将加到该段的累 计编程时间上。如果达到或超过了最大累计时间,必须擦除该段。进一步对其 编程或者使用数据都会产生不可预料的结果(详见具体芯片的数据手册)。 5.3.2.2 从FLASH存储器中启动字/字节写入 从 Flash 存储器启动字/字节写入的流程图如图 5-7 所示。 图 5-7 从 Flash 存储器启动字/字节写入 ;Byte/word write from flash. ;Assumes 0x0FF1E is already erased ;Assumes ACCVIE = NMIIE = OFIE = 0. MOV #WDTPW+WDTHOLD,&WDTCTL ;Disable WDT MOV #FWKEY,&FCTL3 ;Clear LOCK 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–170–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM MOV #FWKEY+WRT,&FCTL1 ;Enable write MOV #0123h,&0FF1Eh ;0123h -> 0x0FF1E MOV #FWKEY,&FCTL1 ;Done. Clear WRT MOV #FWKEY+LOCK,&FCTL3 ;Set LOCK ... ;Re-enable WDT? 5.3.2.3 从RAM区中启动字/字节写入 从 RAM 区启动字/字节写入的流程图如图 5-8 所示。 图 5-8 从 RAM 区启动字/字节写入 ;Byte/word write from RAM. ;Assumes 0x0FF1E is already erased ;Assumes ACCVIE = NMIIE = OFIE = 0. MOV #WDTPW+WDTHOLD,&WDTCTL ;Disable WDT L1 BIT #BUSY,&FCTL3 ;Test BUSY JNZ L1 ;Loop while busy MOV #FWKEY,&FCTL3 ;Clear LOCK MOV #FWKEY+WRT,&FCTL1 ;Enable write MOV #0123h,&0FF1Eh ;0123h -> 0x0FF1E L2 BIT #BUSY,&FCTL3 ;Test BUSY JNZ L2 ;Loop while busy MOV #FWKEY,&FCTL1 ;Clear WRT MOV #FWKEY+LOCK,&FCTL3 ;Set LOCK 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–171–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM ... ; Re-enable WDT? 5.3.2.4 写入长字 长字写入操作可以从 Flash 存储器内启动,也可以从 RAM 区启动。在 32 位数据写入 Flash 控制器及编程周期开始后,BUSY 位置 1。当从 Flash 存储器 内启动时,在写入完成时,CPU 挂起。写入操作完成后,CPU 将会从写入之后 的指令处继续执行。长字写入操作的时序如图 5-6 所示。 一个长字由 32 位地址处的 4 个连续字节(只有低两位地址位不相同)组成。 字节可以以任何顺序或字节和字的组合写入。如果一个字节或者字写入不止一 次时,最后写入 4 个字节的数据将存储在 FLASH 存储器中。 如果在所有 4 个字节有效前,对超出 32 位地址的 Flash 地址写操作,将丢 弃当前写入的数据,最后写入的字节/字决定了新的 32 位对齐地址。 当 32 位的数据有效时,执行写周期。当从 RAM 区执行时,CPU 继续执行 代码。在 CPU 再次访问 Flash 前,BUSY 位必须为 0,否则将产生非法操,ACCVIFG 位置位,同时写入的结果也是不可预料的。 在长字写入模式下,内部产生的编程电压应用到整个 128 字节块。不能超 出任何块的累计编程时间 tCPT。每个字节或者字的写入时间将加到该段的累计 编程时间上。如果达到或超过了最大累计时间,必须擦除该段。进一步对其编 程或者使用数据都会产生不可预料的结果。 对于字节或者字的写入,该块所需的总时间受累积编程电压的约束。如果 达到或者超出累计编程时间,在进一步编程或者使用之前,必须对该块进行擦 除操作(详见具体的芯片数据手册的说明)。 5.3.2.5 从FLASH存储器中启动长字写入 从 Flash 存储器启动长字写入的流程图如图 5-9 所示。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–172–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图 5-9 从 Flash 存储器启动长字写入 ;Long-word write from flash. ;Assumes 0x0FF1C and 0x0FF1E is already erased ;Assumes ACCVIE = NMIIE = OFIE = 0. MOV #WDTPW+WDTHOLD,&WDTCTL ;Disable WDT MOV #FWKEY,&FCTL3 ;Clear LOCK MOV #FWKEY+BLKWRT,&FCTL1 ;Enable 2-word write MOV #0123h,&0FF1Ch ;0123h -> 0x0FF1C MOV #45676h,&0FF1Eh ;04567h -> 0x0FF1E MOV #FWKEY,&FCTL1 ;Done. Clear BLKWRT MOV #FWKEY+LOCK,&FCTL3 ;Set LOCK ... ;Re-enable WDT? 5.3.2.6 从RAM区中启动长字写入 从 RAM 区启动长字写入的流程图如图 5-10 所示。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–173–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图 5-10 从 RAM 区启动长字写入 ;Two 16-bit word writes from RAM. ;Assumes 0x0FF1C and 0x0FF1E is already erased ;Assumes ACCVIE = NMIIE = OFIE = 0. MOV #WDTPW+WDTHOLD,&WDTCTL ;Disable WDT L1 BIT #BUSY,&FCTL3 ;Test BUSY JNZ L1 ;Loop while busy MOV #FWKEY,&FCTL3 ;Clear LOCK MOV #FWKEY+BLKWRT,&FCTL1 ;Enable write MOV #0123h,&0FF1Ch ;0123h -> 0x0FF1C MOV #4567h,&0FF1Eh ;4567h -> 0x0FF1E L2 BIT #BUSY,&FCTL3 ;Test BUSY JNZ L2 ;Loop while busy MOV #FWKEY,&FCTL1 ;Clear WRT MOV #FWKEY+LOCK,&FCTL3 ;Set LOCK ... ;Re-enable WDT? 5.3.2.7 块写 当有许多连续的字节或者字需要编程写入时,块写入能够提高Flash的写入速 度。在写的过程中,编程电压将在128个字节块中保持。块写过程中不能超过任 何组的累计编程时间tCPT。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–174–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 块写入不能从 Flash 存储器内启动,块写入必须从 RAM 区启动。在整个块 写入过程中,BUSY 位置位。在块写入过程中,每四个字节或者每两个字之间必 须检查 WAIT 位。当 WAIT 位置位时,可以写入 4 个字节或者两个 16 位的字。 连续块写入时,在当前块写完之后,BLKWRT 位必须清零。在需要的由 tEND 给定的 flash 恢复时间之后,启动下一个块的写入之前,BLKWRT 位必须置位。 在每个块完成写操作之后 BUSY 位清零,表示可以对下一块执行写操作。图 5-11 所示为块写入时序。 图 5-11 块写入周期时序 5.3.2.6 块写入的流程和范例 块写入流程如图 5-12 所示,下面是代码示例。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–175–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图 5-12 块写入流程 ;Write one block starting at 0F000h. ;Must be executed from RAM, Assumes Flash is already erased. ;Assumes ACCVIE = NMIIE = OFIE = 0. MOV #32,R5 ;Use as write counter MOV #0F000h,R6 ;Write pointer MOV #WDTPW+WDTHOLD,&WDTCTL ;Disable WDT L1 BIT #BUSY,&FCTL3 ;Test BUSY JNZ L1 ;Loop while busy MOV #FWKEY,&FCTL3 ;Clear LOCK MOV #FWKEY+BLKWRT+WRT,&FCTL1 ;Enable block write L2 MOV Write_Value1,0(R6) ;Write 1st location MOV Write_Value2,2(R6) ;Write 2nd word 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–176–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM L3 BIT #WAIT,&FCTL3 ;Test WAIT JZ L3 ;Loop while WAIT=0 INCD R6 ;Point to next words INCD R6 ;Point to next words DEC R5 ;Decrement write counter JNZ L2 ;End of block? MOV #FWKEY,&FCTL1 ;Clear WRT, BLKWRT L4 BIT #BUSY,&FCTL3 ;Test BUSY JNZ L4 ;Loop while busy MOV #FWKEY+LOCK,&FCTL3 ;Set LOCK ... ;Re-enable WDT if needed 5.3.3 写入或者擦除期间访问Flash存储器 当 BUSY = 1 时,从 RAM 区启动写入或擦除操作,CPU 可能不会在任何 Flash 位置进行写操作。否则,将发生非法访问,ACCVIFG 位置位,结果不可 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–177–页 共 423 页 预料。 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 当写操作从 Flash 存储器内启动时,在写周期完成后(BUSY = 0),CPU 将 继续取下一指令。 操作代码 3FFFh 是 JMP PC 指令。它将使 CPU 处于循环状态直到 Flash 操 作完成。当写操作完成且 BUSY = 0 时,Flash 控制器才允许 CPU 取出操作代码, 继续执行代码。 当 BUSY = 1 时,对 Flash 的访问条件如表 5-3 所示。 表 5-3 当 BUSY=1 时 Flash 的访问 任何 Flash 操作期间,中断自动禁止。 在 Flash 擦除周期前,应该禁止看门狗定时器(在看门狗模式下)。复位将 中止当前的擦除操作,造成的结果是不可预料的。擦除周期完成之后,可以重 新使能看门狗。 5.3.4 校验Flash存储器 Flash存储器编程的结果,可以对编程后Flash存储器的内容通过与/或进行计算或 者存储校验码(CRC)来进行校验。The result of a programming cycle of the flash memory can be checked by calculating and storing a checksum (CRC) of 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–178–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM parts and/or the complete flash memory content. CRC模块可以完成这个功能 (详见具体芯片的数据手册)。在系统运行时间内,已知的校验码可以重新计算, 并与存储在Flash存储器中的预期值进行比较。编程校验Flash存储器内容的操作 是在RAM区执行的。为了尽早得到弱存储器单元的信息,可以结合具体器件的 边沿读取模式读取Flash。边沿读取模式由芯片内可用的寄存器位FCTL4.MRG0 和FCTL4.MRG1控制(参考数据手册)。 5.3.5 配置和访问Flash存储控制器 FCTLx 寄存器是一个 16 位的,具有密码保护的读/写寄存器。读或写访问 时必须使用字指令,写操作时高字节内必须包括写入密码 0A5h。对任何 FCTLx 寄存器写入 0A5h 以外的其他值,将引起密钥错误,KEYV 标志将置位,产生一 个 PUC 系统复位。读取任何 FCTLx 寄存器高字节的结果为 096h。 在擦除或字节/字/双字写入操作期间,对 FCTL1 的写操作都是非法操作, ACCVIFG 将置位。在块写入模式下,WAIT = 1 时,允许对 FCTL1 进行写操作, 但是当 WAIT = 0 时,对 FCTL1 的写操作为非法操作,ACCVIFG 置位。 当 BUSY = 1 时,对 FCTL2(该寄存器当前未完成)的任何写入操作是非法 操作。 当 BUSY = 1 时,可以读 FCTLx 寄存器。读操作不会产生非法访问。 5.3.6 Flash存储控制器中断 Flash 控制器有两个中断源,KEYV 和 ACCVIFG。当发生非法访问时, ACCVIFG 位置位。当 flash 写或擦除之后重新使能 ACCVIE 位时,ACCVIFG 标志置位将产生 1 个中断请求。ACCVIE 位于特殊功能寄存器 SFRIE1 内(详细 内容请参考系统复位、中断、操作模式及系统控制模块章节)。 ACCVIFG 来源于不可屏蔽中断(NMI)向量,所以 ACCVIFG 请求中断时, 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–179–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM GIE 不必置位。也可以通过软件检测 ACCVIFG 以确定是否有发生非法访问。 ACCVIFG 必须由软件清零。 当错误的密码写入任何 Flash 控制寄存器时,密钥错误标志 KEYV 置位。 此时立即产生上复位芯片的上电清零。 5.3.7 FLASH 存储器编程 对于 MSP430 Flash 型芯片有三种编程方法。所有方式都支持在线编程: 9、通过 JTAG 接口编程 10、通过引导加载程序编程 11、通过自定义方式编程 5.3.7.1 通过JTAG的FLASH存储器编程 MSP430 芯片能够通过 JTAG 接口编程。JTAG 接口需要 4 根信号线(在 20 脚或者 28 脚的芯片中需要 5 根信号线)、地及可选的 VCC 和 RST/NMI。 JTAG 接口由熔丝进行保护。完全烧断熔丝将禁止 JTAG 口且不可逆,不可 能通过 JTAG 再次访问芯片,更多细节请参阅 www.ti.com/msp430 的应用报告《使 用 JTAG 接口对 Flash 型 MSP430 编程》。 5.3.7.2 通过引导加载程序(BSL)对FLASH存储器编程 每个 MSP430 Flash 型芯片都包含一个引导加载区(BSL)。BSL 允许用户使 用 UART 串行接口对 Flash 存储器或 RAM 进行读取或编程操作。用户自定义的 256 位口令可以保护通过 BSL 对 Flash 存储器的访问。更多的细节请参阅 www.ti.com/msp430 的用户手册《MSP430 引导加载区的特征》。 5.3.7.2 通过自定义方式对 FLASH 存储器编程 MSP430 CPU 对自身 flash 存储器的写操作能力,允许在线编程和外部自定 义方法编程,如图 5-13 所示。用户可以选择提供数据的方式(UART,SPI 等等)。 用户开发的软件可以接收数据,对 Flash 存储器进行编程。由于这种类型的解决 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–180–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 方案是由用户开发的,它能够完全用户化,从而适应编程、擦除或者更新 Flash 存储器的应用需求。 5.4 Flash存储器寄存器 图 5-13 用户自定义编程方式 Flash 存储寄存器如表 5-4 所列。基地址可以在具体芯片的数据手册里面找 到。偏移地址在表 5-4 中给出。 寄存器 Flash 存储控制寄存器 1 Flash 存储控制寄存器 3 Flash 存储控制寄存器 4 中断使能 1 中断标志 1 表 5-4 Flash 控制寄存器 缩写 读写类型 地址 FCTL1 FCTL3 FCTL4 读/写 读/写 读/写 0000h 0004h 0006h IE1 IFG1 读/写 读/写 000Ah 000Ch 初始状态 9600h 9658h 9600h 0000h 0000h FLASH 控制寄存器 1 (FCTL1) 15 14 13 12 11 10 9 8 FRKEY 读密码是 96h,写时必须为 A5h 7 6 5 4 3 2 1 0 BLKWRT WRT SWRT 保留 保留 MERAS ERASE 保留 FRKEY/ FWKEY Bits15-8 FCTLx 的密钥。读结果是 96h,写时必须是 A5h,否则引起 PUC. BLKWRT WRT Bit7 Bit6 见下表 见下表 SWRT BLK WRT Write Mode 0 1 字节/字写 1 0 长字写 1 1 长字块写 Bit5 智能写。假如该位置位,编程时间会缩短了。编程质量必须 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–181–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 由边沿读模式检查确认。 MERAS Bit2 全部擦除和段擦除。MERASE 和 ERASE 两位组合选择不同的 擦除模式。擦除操作完成之后 2 位自动复位。 ERASE Bit1 MERAS ERASE 擦除周期 0 0 没有擦除操作 0 1 段擦除 1 0 扇区擦除 1 1 全部擦除(包括主 FLASH 和信息段) FLASH 控制寄存器 3 (FCTL3) 15 14 13 12 11 10 9 8 FRKEY 读密码是 96h,写时必须为 A5h 7 保留 FWKEY LOCKA 6 LOCKA Bit15-8 Bit6 LOCK Bit4 5 4 3 2 1 0 保留 LOCK WAIT ACCVIFG KEYV BUSY FCTLx 的密钥。读结果是 96h,写时必须是 A5h,否则引起 PUC。 锁信息 A 段。对该位写 1 能改变该位状态。写 0 无效。 0 信息 A、B、C、D、被解锁。 1 信息 A 段被写保护。 锁。该位对 FLASH 的写和擦除操作进行解锁。该位可以字/字节 写的任意时刻置位。在快写模式中,当 BLKWRT=WAIT=1,LOCK 置位的话,BLKWRT 和 WAIT 会立即复位,该模式正常终止。 0 解锁 1 锁定 WAIT Bit3 ACCVIFG Bit2 Wait 位用来检测,当前字/字节是否已经写完毕,确认是否 可以启动下个字/字节的写操作了。 l FLASH 没有准备好下一个字节的写操作。 1 FLASH 准备好下一个字节的写操作。 非法访问中断标志 1、没有中断产生 KEYV Bit1 BUSY Bit0 2、中断产生 Flash 安全键值出错。该位指示了一个不正确的 FCTLx 安全键值 被写入到 flash 控制寄存器中,KEYV 会置位。并触发 PUC。 KEYV 位必须被软件复位。 0 FCTLx 密码写入正确 1 FCTLx 密码写入不正确 忙标志位。该位指示是否 Flash 正忙于当前的擦除或者编程。 0 不忙 1忙 FLASH 控制寄存器 4 (FCTL4) 15 14 13 12 11 10 9 8 FRKEY 读密码是 96h,写时必须为 A5h 7 LOCKINFO FWKEY LOCKINFO 6 保留 Bits15-8 Bit7 5 4 3 2 1 0 MRG1 MRG0 保留 VPE FCTLx 密码。读操作为 096h。写操作为 0A5h,否则将发生 PUC。 信息段锁定。如果该位置位,信息存储区不能在段擦除模式下擦 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–182–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 除,也不能够被写入。 MRG1 MRG0 Bit5 边沿读 1 模式。该位使能边沿读 1 模式。仅仅当从 Flash 存储区 读时,边沿读 1 位才是有效的。在存取周期内,边沿模式自动关 闭。如果 MRG1 和 MRG0 都置位,则 MRG1 有效 MRG0 被忽略。 0 边沿 1 读模式禁止 1 边沿 1 读模式使能 Bit4 边沿读 0 模式。该位使能边沿读 0 模式。仅仅当从 Flash 存储区 读时,边沿读 0 位才是有效的。在存取周期内,边沿模式自动关 闭。如果 MRG1 和 MRG0 都置位,则 MRG1 有效,MRG0 被忽 略。 0 边沿 0 读模式禁止 1 边沿 0 读模式使能 VPE Bit0 编程错误期间变化的电压。该位被软件置位,只能被软件清除。 如果在编程期间 DVCC 改变很大,该位置位指示一个无效的结 果。如果 VPE 置位,则 ACCVIFG 位置位。 中断使能寄存器1 (SFRIE1、SFRIE1_L、SFRIE1_H) 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ACCVIE ACCVIE Bit5 Flash存储器非法访问中断使能。该位使能ACCVIFG中断。由于IE1的其 它位被其它模块使用,建议使用BIS.B或者BIC.B指令置位或者清除该 位,而不用MOV.B或者CLR.B指令。详细情况见系统复位、中断、操作模 式、系统控制模块(SYS) 章节。 0 中断禁止 1 中断使能 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–183–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 第6章 RAM控制器(RAMCTL)用于控制RAM的操作。 RAM 控制器 6.1 RAM控制器介绍 6.2 RAMCTL操作 6.3 RAMCTL模块寄存器 6.1 RAM控制器介绍 RAMCTL 提供在对 RAM 的不同节电模式的访问。当 CPU 关闭的时候,RAMCTL 可以减少漏电流。 为了降低功耗,甚至可以关闭 RAM。在待机模式下保存 RAM 数据,但是在关机模式下 RAM 的数据丢失。 RAM 被分成段,典型值是每段 4KB,实际块的分配及大小见相应芯片的数据手册。每个段由 RAMCTL 控 制寄存器 0 的 RAM 控制器 RAM 段关闭控制位 RCRSyOFF 控制。RCCTL0 寄存器由密码保护,只有在字 写入操作模式下写入正确的密码时,才可以修改 RCCTL0 寄存器的内容。忽略字节写或者密码错误写访问。 6.2 RAMCTL操作 活动模式 在活动模式下,RAM 可以随时进行读写。假如某段的 RAM 地址需要保存一些数据,那么不能关闭整个 RAM 段。 低功耗模式 在低功耗模式下,CPU 处于关闭状态。只要 CPU 关闭,为了减少漏电流 RAM 进入保持模式。 RAM 关闭模式 RAM 内的每一段都可以通过置位各自的 RCRSyOFF 位独立关闭。读取关闭的 RAM 段,返回的数据是 0。即使该段被重新上电,之前存储在关闭的 RAM 段的所有数据都会丢失,不能读取。 堆栈指针 程序堆栈在 RAM 内,假如需要执行中断程序,不能关闭保存堆栈的段,否则进入低功耗模式。 USB 缓冲区 在具有 USB 的芯片中,USB 缓冲区在 RAM 内,第 7 段 RAM 是专门为 USB 缓冲使用的。如果不需要 USB 操作或在正常操作中没有使用时,可以通过置位 RCRS7OFF 位关闭这个 RAM 段。 6.3 RAMCTL模块寄存器 RAMCTL 模块寄存器如表 6-1 所示。基地址可在芯片的数据手册中找到,偏移地址如表 6-1 所列。 寄存器 缩写 寄存器类型 访问形式 初始状态 RAM 控制寄存器 0 RCCTL0 RCCTL0_L RCCTL0_H RCCTL0 RAM 控制寄存器 0 读/写 读/写 读/写 字 字节 字节 8900h 00h 69h 15 14 13 12 11 10 9 8 RCKEY,读出值时钟为 69h,写时必须为 5Ah 7 6 RCRS7OFF 5 保留 4 3 2 1 0 RCRS3OFF RCRS2OFF RCRS1OFF RCRS0OFF 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–184–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM RCKEY Bits 15-8 RCRS7OFF Bit7 RCRSyOFF Bits3-0 RAM 控制密钥。读的结果是 69h,写时必须是 5Ah,否则此次操作 将被忽略 置位该位,将关闭 RAM 的第 7 段,所有保存在该段的数据都将 丢失。在具有 USB 接口的器件里,该段是作为 USB 缓冲区的。 具体的 RAM 空间大小和地址见数据手册。 控制 RAM第 y段关闭。该位置位将关闭相应的 RAM段,关闭后 该部分保存的数据丢失。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–185–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 第7章 DMA 控制器 DMA 控制器能够将数据从一个地址传输到另外一个地址而不需要 CPU 的干预。 本章主要讲述的就是 DMA 控制器的操作。 7.1 直接存储器访问(DMA)介绍 7.2 DMA 的操作 7.3 DMA 寄存器 7.1 DMA 介绍 DMA控制器可以在整个寻址范围内把数据从一个地址传输到另外一个地址, 而无须CPU的 干预。例如:DMA 控制器可以把ADC 转换后的结果传输到RAM 中。 含有DMA控制器的芯片最多可有8 个DMA通道。因此,由于DMA 通道个数不同, 本章中所描述的有些特性并不适用于所有芯片。芯片支持的通道数可以参考相关 数据手册。 使用DMA 控制器可以提高外设模块的处理效率,还可以减少系统的功耗,这 点通过允许CPU保持在低功耗模式时而不必唤醒CPU就可以实现与外围器件之间 进行数据传输实现。 DMA 控制器的特性包括: 3、最多高达 8 个独立的传输通道 4、DMA 通道优先级可配置 5、每次传输仅需要两个 MCLK 时钟周期 6、字节、字及字与字节混合传输特性 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–186–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 7、块的大小高达 65536 个字或字节 8、触发源的选择可配置 9、可选择的跳变沿触发或电平触发方式 10、四种寻址方式 11、单次、块或者突发块传输模式 DMA 控制器结构框架如图 7-1 所示 。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–187–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图 7-1. DMA 控制器结构框架图 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–188–页 共 423 页 7.2 DMA 操作 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM DMA 控制器可由用户软件配置。下面的部分将讨论如何设置和使用DMA控制器。 7.2.1 DMA 寻址模式 DMA 控制器有四种寻址模式。对于每个DMA 通道来说其寻址模式都是可独立 配置的。例如:通道0 可以配置成在两个固定的地址间传输,而通道1则 可配置成 两个块地址间传输。四种寻址模式如图7-2所示。 四种寻址模式为: l 固定地址到固定地址 l 固定地址到块地址 l 块地址到固定地址 l 块地址到块地址 可以通过DMASRCINCR和DMADSTINCR位来配置寻址模式。DMASRCINCR选择每次数 据传输完成后源地址增大、减小或不变。DMADSTINCR 位选择每次数据传输结束后目 标地址增大、减少还是不变。 传输操作可以是字节到字节,字节到字,字到字节或者字到字。当字到字节传输 时,只传输源字的低字节。当字节到字传输时,目的字的高字节清零。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–189–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 7.2.2 DMA 传输模式 图 7-2. DMA 寻址模式 如表 7-1 所示,DMA 控制器可通过DMADT位选择6种传输模式。每个通道都 可以独立的配置其传输模式。例如:通道0 可以配置为单次传输模式,而通道1 可 以配置为突发块传输模式,通道2 可配置为重复块传输模式。传输模式和寻址 方式配置上是独立的。任何寻址方式都可用于任何传输模式。 通过DMAxCTL寄存器的DSTBYTE 和SRCBYTE 字段可以选择2种传输的数据类型。 源和目标可以是字或者字节数据,也可以是字节到字节、字到字之间或者是它们的 任意组合。 表7-1 DMA传输模式 DMADTx 传输模式 说明 000 001 010, 011 100 101 110、111 单次传输 块传输 突发块传输 重复单次传输 重复块传输 重复突发块传输 每次传输都需要一次触发。在 DMAxSZ 次传输完成后 DMAEN 位会被自 动清除。 触发一次后整个块都被传输。传输结束后DMAEN自动复位 CPU是于块传输交叉运行。DMAEN位会在突发块传输结束后自动清除。 一个触发信号只传输一次。传输结束后DMAEN仍保持使能。 一个触发信号传输一个块数据。传输结束后DMAEN仍保持使能。 CPU与块传输交叉运行。传输结束后DMAEN仍保持使能。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–190–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 7.2.2.1 单次传输 在单次传输模式中,每次传输都需要一次单独触发。单次传输状态如图 7-3 所示。 DMAxSZ 寄存器用来定义传输的个数,DMADSTINCR 和 DMASRCINCR 用来选择在传输 结束后目标地址和源地址是否增大或者减小。如果 DMAxSZ = 0时,没有数据传 输。 DMAxSA、DMAxDA和DMAxSZ 寄存器被复制到暂存寄存器中。每次传输结束后 DMAxSA和DMAxDA的临时值都会增加或者减少。在每次传输结束后DMAxSZ 寄存器 中的值会减少。DMAxSZ 寄存器在每次传输后减小。当DMAxSZ 寄存器减到0 时, 会自动从暂存寄存器中重载到DMAxSZ寄存器,并且相应的DMAIFG 标志将会置位。 DMADT ={0}时,当DMAxSZ减小到0时,DMAEN 位自动清除,必须为下次传输重新 置位。 在重复单次传输模式中,DMAEN = 1,DMA控制器将保持使能,每次触发发 生时,都有数据传输。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–191–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图 7-3 DMA 单次传输状态图 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–192–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 7.2.2.2 块传输 在块传输模式中,每次触发发生后,将有整个数据块的传输。当 DMADT ={1} 时,块传输结束后DMAEN 位会被清除,且必须在下次传输被触发前再次置位。触 发块传输后,将忽略传输过程中的再次触发信号。块传输的状态如图 7-4 所示。 DMAxSZ 寄存器定义块的大小,DMADSTINCR 和 DMASRCINCR 用来选择每次 块传输结束后目标地址和源地址是增还是减。如果 DMAxSZ = 0,不会有块传输 操作。 DMAxSA、DMAxDA和DMAxSZ 会被复制到暂存寄存器中。每次块传输结束后, 暂存寄存器中DMAxSA 和 DMAxDA的值都会增加或者减少。每次块传输结束后, DMAxSZ 寄存器值将减小,表示块中还剩余传输数据的数量。当DMAxSZ 寄存器 的值减到0 时,将从暂存寄存器中重载并且相应的DMAIFG标志将置位。 在块传输过程中,CPU将处于挂起状态直到完成块传输。块传输占用2 x MCLK x DMAxSZ 个时钟周期。块传输结束后,CPU 将按之前的状态继续运行。 在重复块传输模式中,块传输结束后DMAEN位仍保持置位状态。在重复块传 输结束后的下一触发信号将触发另一个块传输。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–193–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 7.2.2.3 突发块传输 图7-4 DMA块传输状态图 在突发块传输模式中,数据传输与 CPU 是交叉的。每传输四个字节/字后, CPU 将运行 2 个 MCLK 时钟周期,产生 20%的 CPU 吞吐量。突发块传输后,DMAEN 位清除,并且 CPU 将会在 100%吞吐量下运行。在触发下一次突发块传输前,DMAEN 位必须重新置位。当一个突发块传输被触发后,将忽略数据传输过程中的产生 的触发信号。突发块传输状态如图 7-5 所示。 DMAxSZ 寄存器用来定义块的大小,DMADSTINCR 和DMASRCINCR 用来选择每次 块传结束后目标地址和源地址是否增大或者减小。如果 DMAxSZ = 0,将不会产 生数据传输。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–194–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM DMAxSA、DMAxDA和DMAxSZ 都被复制到暂存寄存器中,每次块传输结束后 DMASA 和 DMADA暂存寄存器中的值都会增大或者减小。每次块传输结束后, DMAxSZ 寄存器中的值将减小,表示块中还剩余多少传输数据。当DMAxSZ 寄存器 的值减少至0时,将会从暂存寄存器中重载并且相应的DMAIFG标志将会置位。 在重复突发块传输模式中,每个突发块传输结束后,DMAEN位仍将保持置位, 但不再需要更多的触发信号来启动另一次突发块传输。突发块传输结束后,另一 次突发块传输立即开始。此时,必须通过清除DMAEN 位或当ENNMI置位时清除不 可屏蔽中断来停止传输。在重复突发块传输模式中,CPU只有20%的吞吐量,直到 重 复 突 发 块 传 输 停 止 。 图 7-5.突发块传输状态图 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–195–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 7.2.3 启动DMA 传输 每个DMA 通道都可通过DMAxTSEL位来独立配置触发源。只有当DMACTLx寄存器 中的DMAEN位为0时才可以修改DMAxTSEL位,否则可能会产生不可预料的DMA触发 源。表 7-2描述了每种类型模块的触发操作。请参阅芯片的数据手册来获得可用 触发条件列表及它们各自的DMAxTSEL 值。 当选择触发条件时,必须确保触发条件还未发生否则不会产生数据传输。 ____________________________________________________________________________ 注意:DMA 触发选择和 USB 包含USB模块的芯片中,从DMA通道0,1或2的选择的触发源可用于USB时间标 记事件选择(更多细节请参阅USB模块)。 _________________________________________________________________________ 7.2.3.1 边沿触发 DMALEVEL=0 时,选择边沿触发且触发信号的上升沿将启动传输。单次传输模式 中,每次传输都需要一次触发。当使用块或者突发块模式时,仅需要一次触发来 启动块或者突发块传输。 7.2.3.2 电平触发 DMALEVEL = 1 时,选择电平触发。为保证操作正确,电平触发仅仅用在DMAE0 作为外部触发源的情况下。只要触发信号为高电平且DMAEN 位置位时,就会触发 DMA传输。 为了完成块或突发块传输,在传输过程中触发信号必须始终保持高电平。块 或突发块传输时,如果触发信号变低,DMA 控制器将会保持在当前状态上,直 到触发信号重新变高或者软件修改了DMA寄存器。如果当触发信号再次变高时, 没有修改DMA 寄存器,则将会从触发信号变低时的状态继续传输。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–196–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 当DMALEVEL=1 时,建议选择DMADTx = {0, 1, 2, 3},因为此配置下传输完成 后,DMAEN位自动复位。 7.2.4 DMA 传输的终止执行指令 DMARMWDIS 位控制DMA传输引起CPU挂起的时间。DMARMWDIS = 0 时,一旦接收到 传输的触发信号,CPU会立即挂起,DMA传输开始。在这种情况下,CPU的读-更改- 写操作可能会被DMA传输打断。当 DMARMWDIS= 1时,在DMA控制器打断CPU及传输 开始前,CPU完成当前正在执行的读-修改-写操作(见表 7-2)。 模块 DMA Timer_A Timer_B USCI_Ax USCI_Bx DAC12_A ADC12_A MPY 保留 表 7-2 DMA触发操作 操作 当DMAREQ位被置位时触发传输操作。传输开始后DMAREQ自动复位。 当DMAxIFG位置位时触发传输操作,DMA0IFG触发通道1,DMA1IFG触发通道2,DMA2IFG触发通 道0。传输开始后任何DMAxIFG标志都不会自动复位,传输由外部触发源DMAE0触发。 当TACCR0—CCIFG标志被置位时触发传输操作,传输开始后TACCR0—CCIFG标志自动复位。如 果TACCR0—CCIE置位, TACCR0—CCIFG标志不会触发传输操作。当TACCR2—CCIFG标志置位时 触发传输被操作,传输开始后TACCR2—CCIFG标志自动复位。如果TACCR2—CCIE置位,则TACCR2 —CCIFG标志不会触发传输事件。 当TBCCR0——CCIFG标志置位时触发传输操作,传输开始后TBCCR0—CCIFG标志自动复位。如 果TBCCR0—CCIE被置位,TBCCR0 CCIFG标志不会触发传输.当TBCCR2 CCIFG标志被置位时触发 传输操作. 传输开始后TBCCR2 CCIFG标志自动复位.如果 TBCCR2 CCIE置位, TBCCR2 CCIFG 标志不会触发传输。 当USCI_Ax收到一个新的数据时触发一次传输.传输开始后UCAxRXIFG 自动复 位。 如果 UCAxRXIE置位, UCAxRXIFG 不会触发传输。当USCI_Ax准备好发送一个新的数据时触发一次传 输.传输开始后UCAxRXIFG 自动复位。如果UCAxRXIE置位, UCAxRXIFG 不会触发传输。 当USCI_Bx收到一个新的数据时触发一次传输.传输开始后 UCBxRXIFG 自动复 位. 如果 UCBxRXIE 置位, UCBxRXIFG 不会触发传输.当USCI_Bx准备好发送一个新的数据时触发一次传 输.传输开始后 UCBxRXIFG 自 动复位. 如果UCBxRXIE 被置位, UCBxRXIFG 不会触发传输. 当DAC12_xCTL0 DAC12IFG标志置位时触发传输操作。传输开始后DAC12_x CTL0 DAC12IFG标志自动复位。如果DAC12_xCTL0 DAC12IE 置位,DAC12_xCTL0DAC12IFG标志不会触 发传输。 采用ADC12IFGx标志来触发当一传输操作,当单通道转换完成后,相应的ADC12IFGx被触发。如 果用到序列转换, ADC12IFGx在转换序列的最后一次完成时触发。在一次转换结束后触发传输 操作并且ADC12IFGx置位.软件设置ADC12IFGx,不会触发传输. 当相关的ADC12MEMx 寄存器被 DMA 控制器访问时,所有的 ADC12IFGx 标志自动复位. 在硬件乘法器准备一个新的操作数时,触发一次传输操作 没有传输被触发 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–197–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 7.2.5 停止DMA传输 有两种方法可以停止正在进行的DMA传输: l 如果DMACTL1寄存器的ENNMI位置位,NMI中断事件可以停止单次、块和突发块的传输。 l 可以通过清除DMAEN位来停止突发块传输 7.2.6 DMA 通道优先级 DMA 通道优先顺序默认是从DMA0 到DMA7。如果2或3个触发同时发生或者处于 挂起状态,具有最高优先级的通道将会首先完成传输操作(单次,块或者突发 块传输),然后是第二优先级的通道,再然后后是第三优先级的通道。在传输 过程中,如果触发了更高优先级的通道,当前正在传输的通道也不会停止。等 到当前传输操作结束后,具有较高优先级的通道才开始传输。 DMA 通道的优先级由ROUNDROBIN 位来配置。当ROUNDROBIN 位置位时,完成传 输的通道优先级将变为最低。通道优先级的顺序保持不变,举个三个通道的例子, DMA0-DMA1-DMA2。当ROUNDROBIN 清零时,通道返回到默认优先级状态。 DMA优先级 DMA0 - DMA1 - DMA2 DMA2 - DMA0 - DMA1 DMA0 - DMA1 - DMA2 发生的传输 DMA1 DMA2 DMA0 新的 DMA优先级 DMA2 - DMA0 - DMA1 DMA0 - DMA1 - DMA2 DMA1 - DMA2 - DMA0 7.2.7 DMA 传输周期 在单次传输、块传输或者突发块传输时,DMA 控制器需要1或2个MCLK 时钟周 期来同步。同步后每个字节/字传输需要两个MCLK时钟周期,传输完成后有1个 周期的等待时间。因为DMA控制器使用了MCLK,所以DMA周期时间决定于MSP430 的操作模式和时钟系统设置。 如果MCLK 时钟处于激活状态,但CPU关闭,DMA控制器将使用MCLK时钟来 完成每次传输,而无需重新使能CPU。如果MCLK 时钟关闭,DMA 控制器将临时 重启以DCOCLK为时钟源的MCLK,以完成单次、块或者突发块传输。CPU将保持 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–198–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 关闭,MCLK在传输结束后关闭。各种操作模式下的最大DMA 周期见表 7-3。 表 7-3 单次传输最大DMA周期 CPU 操作模式时钟源 最大 DMA周期 活动模式MCLK=DCOCLK 4 MCLK周期 活动模式MCLK=LFXT1CLK 4 MCLK 周期 低功耗模式LPM0/1 MCLK=DCOCLK 5 MCLK 周期 低功耗模式LPM3/4 MCLK=DCOCLK 5 MCLK周期 +5 us(1) 低功耗模式LPM0/1 MCLK=LFXT1CLK 5 MCLK 周期 低功耗模式LPM3 MCLK=LFXT1CLK 5 MCLK周期 低功耗模式 LPM4 MCLK=LFXT1CLK 5 MCLK周期+ 5 us(1) 4 为了启动DCOLK,需要外加5us. 在数据表里指t(LPMx) 参数。 7.2.8 系统中断下使用DMA 系统中断不会打断DMA传输。系统中断将会处于挂起状态直到传输完成。如 果ENNMI位置位,NMI中断可以打断DMA 控制器。 DMA传输可以打断系统中断服务程序。如果系统中有些中断服务程序或者其 他程序必须在不被打断的情况下运行,必须在执行这些程序前禁止DMA 控制器。 7.2.9 DMA控制器中断 每个DMA通道都有自己的DMAIFG标志。在任何模式下,当相应的DMAxSZ寄存 器计数到0时,DMAIFG 标志都处于置位状态。如果相应的DMAIE 位和GIE 位置位, 则会产生一个中断请求。 所有的DMAIFG 标志都是有优先顺序的,DMA0IFG 优先级最高,所有DMAIFG 标志组合具有一个中断向量。使能的具有最高优先级的中断在DMAIV 寄存器产 生一个数值。这个值可以用来评估或者自动加到程序计数器(PC)上,使之能 进入到适当的软件服务控制程序程序。禁止DMA 中断不会影响DMAIV 的值。 任何对DMAIV寄存器的读或写访问,将自动复位挂起的具有最高优先级的 中断标志。如果有另一个中断标志置位,则在原中断服务程序结束后立即产生 中断。例如,假设DMA0有最高的中断优先权,如果当中断服务程序访问DMAIV 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–199–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 寄存器时,DMA0IFG 和DMA2IFG置位,DMA0IFG自动复位。当中断服务程序执行 完RETI 指令后,DMA2IFG 将会产生另一个中断。 7.2.9.1 DMAIV 程序示例 下面的软件示例是DMAIV 的推荐用法及包括8通道DMA控制器的预处理。DMAIV 值加在PC 上实现到相应程序的自动跳转。 页面右边的数据表示每个指令所必需的CPU周期。对于不同中断源,软件耗 费包括中断恢复和中断返回的周期,但是不包括任务处理本身需要的周期。 DMA_HND …… ADD &DMAIV,PC RETI ;Vector 0: JMP DMA0_HND JMP DMA1_HND JMP DMA2_HND JMP DMA3_HND JMP DMA4_HND JMP DMA5_HND JMP DMA6_HND JMP DMA7_HND DMA7_HND ... RETI No interrupt ; Vector 2: DMA channel 0 ; Vector 4: DMA channel 1 ; Vector 6: DMA channel 2 ; Vector 8: DMA channel 3 ; Vector 10: DMA channel 4 ; Vector 12: DMA channel 5 ; Vector 14: DMA channel 6 ; Vector 16: DMA channel 7 ; Vector 16: DMA channel 7 ; Task starts here ; Back to main program 周期 6 3 5 2 2 2 2 2 2 2 2 5 DMA6_HND ... RETI ; Vector 14: DMA channel 6 ; Task starts here ; Back to main program 5 DMA5_HND ... RETI ; Vector 12: DMA channel 5 ; Task starts here ; Back to main program 5 DMA4_HND ... RETI ; Vector 10: DMA channel 4 ; Task starts here ; Back to main program 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 5 第–200–页 共 423 页 DMA3_HND ... RETI DMA2_HND ... RETI DMA1_HND ... RETI DMA0_HND ... RETI LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM ; Vector 8: DMA channel 3 ; Task starts here ; Back to main program 5 ; Vector 6: DMA channel 2 ; Task starts here ; Back to main program 5 ; Vector 4: DMA channel 1 ; Task starts here ; Back to main program 5 ; Vector 2: DMA channel 0 ; Task starts here ; Back to main program 5 7.2.10 DMA控制器及使用 USCI_B I2C 模块 USCI_B I2C 为DMA 控制器提供两个触发源。当USCI_B I2C模块接收到新I2C 数据和需要发送数据的时候,均可触发DMA传输。 7.2.11 DMA 控制器及使用ADC12 内部集成DMA 控制器的MSP430芯片,可以自动将任何ADC12MEMx 寄存器的 数据移到另一个位置。DMA传输可以在没有CPU 的干预下完成,并且不受任何低 功耗模式的影响。DMA 模块增加了ADC12 模块的数据吞吐量,并且增强了数据 传输时允许CPU保持关闭状态的低功耗应用。 任何ADC12IFG标志均可触发DMA传输。当CONSEQx = {0,2}时,转换中用到 的ADC12MEMx的ADC12IFGx标志可以触发DMA传输。当CONSEQx = {1,3}时,在序 列转换中的最后的ADC12MEMx的ADC12IFGx标志触发DMA传输。当DMA控制器访问 相应的 ADC12MEMx 时,ADC12IFGx 标志会自动清除。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–201–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 7.2.12 在 DMA 控制器及使用DAC12 内部集成DMA 控制器的MSP430 芯片,可以自动把数据移动到DAC12_xDAT 寄 存器中。DMA 传输可以在没有CPU 的干预下完成并且不受任何低功耗模式的影 响。DMA 模块提高了DAC12 模块的数据吞吐量,并且增强了数据传输时允许CPU 保持关闭状态的低功耗应用。 对于一个需要产生周期波的应用实例来说,利用DMA 控制器及DAC12是很方便 的。例如,在需要产生正弦波的应用中,可以把正弦值存储在表格中。DMA控制 器可以在具体的时间间隔内,自动且连续不断的将数据传输到DAC12 以产生正弦 波,并且不占用CPU 的资源。当DMA 控制器访问DAC12_xDAT 寄存器的时候, DAC12_xCTL的DAC12IFG 标志位会自动清除。 7.3 DMA寄存器 DMA 模块的寄存器如表7-4所示。基地址可以在具体芯片的数据手册中找到。 每个通道从各自的基地址开始。偏移地址如表7-4 所示。 寄存器 缩写 寄存器类型 访问形式 初始状态 DMA 控制寄存器 0 DMACTL0 读/写 字 0000h DMA 控制寄存器 1 DMACTL0_L DMACTL0_H DMACTL1 读/写 读/写 读/写 字节 字节 字 00h 00h 0000h DMACTL1_L 读/写 字节 00h DMACTL1_H 读/写 字节 00h DMA 控制寄存器 2 DMACTL2 DMACTL2_L DMACTL2_H 读/写 读/写 读/写 字 字节 字节 0000h 00h 00h DMA 控制寄存器 3 DMACTL3 读/写 字 0000h DMACTL3_L 读/写 字节 00h DMA 控制寄存器 4 DMACTL3_H DMACTL4 DMACTL4_L 读/写 读/写 读/写 字节 字 字节 00h 0000h 00h DMACTL4_H 读/写 字节 00h DMA 中断向量寄存器 DMAIV 只读 字 0000h 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–202–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM DMA 通道 0 控制器 DMA 通道 0 源地址 DMA 通道 0 目的地址 DMA 通道 0 传输大小 DMA 通道 1 控制器 DMA 通道 1 源地址 DMA 通道 1 目的地址 DMA 通道 1 传输大小 DMA 通道 2 控制器 DMA 通道 2 源地址 DMA 通道 2 目的地址 DMA 通道 2 传输大小 DMA 通道 3 控制器 DMA 通道 3 源地址 DMA 通道 3 目的地址 DMA 通道 3 传输大小 DMA 通道 4 控制器 DMA 通道 4 源地址 DMA 通道 4 目的地址 DMA 通道 4 传输大小 DMA 通道 5 控制器 DMAIV_L DMAIV_H DMA0CTL DMA0CTL_L DMA0CTL_H DMA0SA DMA0DA DMA0SZ DMA0SZ_L DMA0SZ_H DMA1CTL DMA1CTL_L DMA1CTL_H DMA1SA DMA1DA DMA1SZ DMA1SZ_L DMA1SZ_H DMA2CTL DMA2CTL_L DMA2CTL_H DMA2SA DMA2DA DMA2SZ DMA2SZ_L DMA2SZ_H DMA3CTL DMA3CTL_L DMA3CTL_H DMA3SA DMA3DA DMA3SZ DMA3SZ_L DMA3SZ_H DMA4CTL DMA4CTL_L DMA4CTL_H DMA4SA DMA4DA DMA4SZ DMA4SZ_L DMA4SZ_H DMA5CTL DMA5CTL_L DMA5CTL_H 只读 只读 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 字节 字节 字 字节 字节 字 字节 字节 字 字节 字节 字 字节 字节 字 字节 字节 字 字节 字节 字 字节 字节 字 字节 字节 字 字节 字节 字 字节 字节 字 字节 字节 00h 00h 0000h 00h 00h 未定义 未定义 未定义 未定义 未定义 0000h 00h 00h 未定义 未定义 未定义 未定义 未定义 0000h 00h 00h 未定义 未定义 未定义 未定义 未定义 0000h 00h 00h 未定义 未定义 未定义 未定义 未定义 0000h 00h 00h 未定义 未定义 未定义 未定义 未定义 0000h 00h 00h 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–203–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM DMA 通道 5 源地址 DMA 通道 5 目的地址 DMA 通道 5 传输大小 DMA5SA DMA5DA DMA5SZ DMA5SZ_L DMA 通道 6 控制器 DMA5SZ_H DMA6CTL DMA6CTL_L DMA 通道 6 源地址 DMA6CTL_H DMA6SA DMA 通道 6 目的地址 DMA6DA DMA 通道 6 传输大小 DMA6SZ DMA6SZ_L DMA 通道 7 控制器 DMA6SZ_H DMA7CTL DMA7CTL_L DMA 通道 7 源地址 DMA 通道 7 目的地址 DMA7CTL_H DMA7SA DMA7DA DMA 通道 7 传输大小 DMA7SZ DMA7SZ_L DMA7SZ_H DMACTL0 DMA 控制寄存器 0 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 字 字节 字节 字 字节 字节 字 字节 字节 字 字节 字节 字 字节 字节 未定义 未定义 未定义 未定义 未定义 0000h 00h 00h 未定义 未定义 未定义 未定义 未定义 0000h 00h 00h 未定义 未定义 未定义 未定义 未定义 15 14 13 12 11 10 9 8 保留 DMA1TSEL 7 6 5 4 3 2 1 0 保留 DMA1TSEL Bits12-8 DMA0TSEL DMA 触发选择。这几位用来选择 DMA 传输触发源。 00000 DMA1TRIG0 00001 …… DMA1TRIG1 …… 11110 DMA1TRIG30 DMA0TSEL Bits4-0 11111 DMA1TRIG31 同 DMA1TSEL DMACTL1 DMA 控制寄存器 1 15 14 13 12 11 10 9 8 保留 DMA3TSEL 7 6 5 4 3 2 1 0 保留 DMA2TSEL DMA3TSEL Bits12-8 DMA 触发选择。这几位用来选择 DMA 传输触发源。 00000 DMA3TRIG0 00001 …… DMA3TRIG1 …… 11110 DMA3TRIG30 11111 DMA3TRIG31 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–204–页 共 423 页 DMA2TSEL LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM Bits4-0 同 DMA3TSEL DMACTL1 DMA 控制寄存器 2 15 14 13 12 11 10 9 8 保留 DMA5TSEL 7 6 5 4 3 2 1 0 保留 DMA5TSEL Bits12-8 DMA4TSEL DMA 触发选择。这几位用来选择 DMA 传输触发源。 00000 DMA5TRIG0 00001 …… DMA5TRIG1 …… 11110 DMA5TRIG30 DMA4TSEL Bits4-0 11111 DMA5TRIG31 同 DMA5TSEL DMACTL3 DMA 控制寄存器 3 15 14 13 12 11 10 9 8 保留 DMA7TSEL 7 6 5 4 3 2 1 0 保留 DMA7TSEL Bits12-8 DMA6TSEL DMA 触发选择。这几位用来选择 DMA 传输触发源。 00000 DMA7TRIG0 00001 …… DMA7TRIG1 …… 11110 DMA7TRIG30 DMA6TSEL Bits4-0 11111 DMA7TRIG31 同 DMA7TSEL DMACTL4 DMA 控制寄存器 4 15 14 13 12 11 10 保留 9 8 7 6 5 保留 DMARMWDIS Bit2 ROUNDROBIN Bit1 ENNMI Bit0 4 3 2 1 0 DMARMWDIS ROUNDROBIN ENNMI 禁止读和改写。当此位置位时,禁止任何发生在 CPU 读写操作 时的DMA传输。 0 CPU读写操作时允许发生DMA传输 1 CPU读写操作时禁止发生DMA传输 循环特性.此位允许 DMA通道优先级的循环特性 0 DMA通道的优先级是DMA0-DMA1-DMA2- ...-DMA7 1 DMA通道优先级在每次传输后改变 使能NMI. 此位使能由NMI中断引起的DMA传输中断. NMI中断 一次DMA传输的时候, 当前的传输一般会正常的完成, 下一 个传输将会被阻止, 并且DMAABORT会置位. 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–205–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 0 NMI中断不中断DMA传输 1 NMI中断中断DMA传输 DMA 通道 x 控制寄存器 (DMAxCTL ) 15 14 13 12 保留 DMADT 7 6 5 4 DMA DMA DMA DMAEN DSTBYTE SRCBYTE LEVEL 11 10 DMADSTINCR 3 2 DMAIFG DMAIE 9 8 DMASRCINCR 1 0 DMAA DMAREQ BORT DMADTx Bit14-12 DMA传输模式 000 单次传输 001 块传输 010 突发块传输 011 突发块传输 100 重复单次传输 101 重复块传输 110 重复突发块传输 DMADSTINCRx Bit11-10 111 重复突发块传输 DMA 目 的 量 增 加 . 此 位 选 择 当 一 个 字 节 / 字 传 输 完 成 后目标地址自动增加或者减小。当DMADSTBYTE=1时, 目标地 址加/减1。当DMADSTBYTE=0时, 目标地址加/减2。DMAxDA 被复制到一个临时的寄存器中,这个暂存寄存器将会加或者 减。DMAxDA的值不会增加或者减小。 00 目标地址不变 01 目标地址不变 DMASRCINCRx Bits9-8 10 目标地址减小 11 目标地址增加 DMA源增加. 此位选择当一个字节/字传输完成后源地址动 增加或者减小.当DMASRCBYTE=1时, 源地址加/减1. 当DMASRCBYTE=0时, 源地址加/减2. DMAxSA 被复制到个 临时的寄存器中,这个暂存寄存器将会加或者减. DMAxS的 值不会增加或者减小. 00 源地址不变 01 源地址不变 10 源地址减小 11 源地址增加 DMADSTBYTE Bit7 DMA目标字节. 此位选择目标数据存放单元式字或者字节. 0字 1 字节 DMASRCBYTE Bit6 DMA 源字节。该位选择源数据单元是字还是字节。 0字 1 字节 DMALEVEL Bit5 DMA 电平。该位选择是边沿触发还是电平触发。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–206–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 2)边沿触发 3)电平触发 DMAEN Bit4 DMA 使能 l 禁止 l 使能 DMAIFG Bit3 DMA 中断标志 l 没有中断产生 l 有中断产生 DMAIE Bit2 DMA 中断使能 2、禁止 3、使能 DMAABORT Bit1 DMA 异常中断。该位表明 DMA 在传输过程中有无被 NMI 打断。 12、DMA 传输过程中没有被打断 13、DMA 传输过程中有被打断过 DMAREQ Bit0 DMA 请求。软件控制 DMA 启动。该位会自动复位。 5)没有启动 DMA 6)启动 DMA DMAxSA DMA 源地址寄存器 31 30 29 28 27 26 25 24 保留 23 22 21 20 19 18 17 16 保留 DMAxSA 15 14 13 12 11 10 9 8 DMAxSA 7 6 5 4 3 2 1 0 DMAxSA DMAxSA Bits15-0 DMA 源地址。源地址寄存器指向单次传输 DMA 源地址,或者指向 块传输的首源地址。 源地址寄存器的值在块传输或者突发块传输 中保持不变。DMAxSA 寄存器有两个字。 位 31-20 保留,并且读 出总为 0。读或者写位 19-16 需要使用扩展指令。使用字指令写 DMAxSA 的时候,位 19-16 会被清零 DMAxDA DMA 目标地址寄存器 31 30 29 28 27 26 25 24 保留 23 22 21 20 19 18 17 16 保留 DMAxDA 15 14 13 12 11 10 9 8 DMAxDA 7 6 5 4 3 2 1 0 DMAxDA DMAxDA Bits15-0 DMA目标地址。目标地址寄存器指向单次传输DMA目标地址或 者指向块传输的首目的地址。 目标地址寄存器的值在块传输 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–207–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 或者突发块传输中保持不变. DMAxDA寄存器有两个字。位 31-20保留并且读出值总为0。读或者写位19-16 需要使用展 指令. 当使用字指令写DMAxDA的时候, 位19-16会被清零。 DMAIV DMA 中断向量寄存器 15 14 13 12 11 10 9 8 7 6 DMAIV Bits15-0 DMAIV 值 00h 02h 04h 06h 08h 0Ah 0Ch 0Eh 10h 5 4 DMA 中断向量值 中断源 无中断产生 DMA 通道 0 DMA 通道 1 DMA 通道 2 DMA 通道 3 DMA 通道 4 DMA 通道 5 DMA 通道 6 DMA 通道 7 3 2 DMAIV 中断标志 DMA0IFG DMA1IFG DMA2IFG DMA3IFG DMA4IFG DMA5IFG DMA6IFG DMA7IFG 1 0 优先级 最高 最低 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–208–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 第8章 本章讲述了所有芯片内数字IO 口的操作。 8.1 数字IO介绍 8.2 数字IO操作 8.3 IO配置及LPMX.5模式 8.4 IO寄存器 数字 I/O 口 8.1 数字I/O口介绍 数字 I/O 口主要特性包括: 36、可独立编程的 I/O 管脚 37、输入或输出可任意组合 38、可独立设置的 P1 和 P2 中断,某些器件可能还有其他中断口 39、独立的输入、输出数据寄存器 40、可独立配置的上拉或下拉电阻 此系列的芯片可以提供多达 12 组数字 I/O 接口(P1 到 P11 以及 PJ)。大 部分端口都有 8 个管脚,但是有些端口可能会少于 8 个管脚。(具体端口信息见 数据手册)。每个 I/O 管脚都可以独立设置为输入或者输出方向,可以单独进 行读或写操作,可单独配置选择内部上拉电阻或下拉电阻,也可配置驱动能力 full or reduced。端口 PJ 只有 4 个管脚。 P1 和 P2 总是具有中断能力。P1 和 P2 端口的每个 I/O 管脚的中断都可 以单独使能,并且可以设置为输入信号的上升沿或下降沿触发中断。所有 P1 口 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–209–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 的 I/O 管脚中断都来源于同一个中断向量 P1IV,而所有 P2 口的中断都来源于 不同的单一中断向量 P2IV。在一些芯片中,可能会有另外的具有中断能力的端 口(详细信息见具体芯片数据手册),包含它们各自的中断向量。 每个端口可以按照字节宽度端口访问或组合成字宽端口以字的方式进行访 问。端口对 P1/P2、P3/P4、P5/P6、P7/P8 等分别与名字 PA、PB、PC、PD 等相 关联。所有的端口寄存器都是以这种方式处理,除了中断向量寄存器 P1IV 和 P2IV,例如,不存在 PAIV。 当对 PA 进行字写入操作时,16 位数均被写入端口.当使用字节操作对 PA 端 口的低字节写入时,高字节保持不变.同样,采用字节指令对 PA 端口的高字节写 时,低字节不变.当对管脚数少于最大可用位数的端口写操作时,忽略没有使用 到的位.端口 PB、PC、 PD、 PE 和 PF 特性类似。 当利用字操作读取端口PA时,所有16位数据都传递到目的位置。利用字节 操作读取端口PA(P1 或者 P2)的高字节或者低字节并且将它们存储到存储器 时,只把高字节或者低字节传输到目的位置。利用字节操作读取PA口数据并存 储到通用寄存器时,传输的数据写入寄存器中低位字节,寄存器中其它高位字 节会自动清零。端口 PB、PC、PD 和 PE操作相同。当从小于端口最大位长度的 端口读取数据时,那些没有用到的位读为零(PJ 口类似)。 8.2 操作数字 IO口 数字 IO 接口可以由用户软件配置。数字 IO 接口的设置和操作将在下面部分 中说明。 8.2.1 输入寄存器 PxIN 当管脚配置为 IO 口功能时,PxIN 寄存器中的每一位反映相应 IO 管脚的输入 信号值。对应的这些寄存器为只读。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–210–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM Bit = 0:输入为低 Bit = 1:输入为高 注意:对只读寄存器 PxIN 写操作 对只读寄存器写操作会导致在写操作被激活的时候增大电流消耗。 8.2.2 输出寄存器 PxOUT 当 I/O 管脚配置为 IO 口功能且为输出方向时,每个 PxOUT 寄存器的每一位 就对应着在相应管脚输出的值。 l Bit = 0:输出为低 l Bit = 1:输出为高 如果管脚被配置为 I/O 口功能、输入方向,并且上拉或下拉电阻使能时, PxOUT 寄存器中相应的位选择上拉或是下拉。 l Bit = 0:下拉 l Bit = 1:上拉 8.2.3 输入/输出方向寄存器 PxDIR 不论管脚的功能,PxDIR 寄存器中的每一位选择相应 I/O 管脚的方向。当管 脚被设置为其它功能时,PxDIR 位必须按照其他功能的需要进行设置。 7)Bit = 0:管脚为输入方向 8)Bit = 1:管脚为输出方向 8.2.4 上拉/下拉电阻能寄存器 PxREN PxREN 寄存器中的每一位可以使能/禁止相应 I/O 管脚的上拉/下拉电阻。 PxOUT 寄存器中对应的位选择管脚是否包含上拉或下拉电阻。 19 Bit = 0:上拉、下拉寄存器禁止 20 Bit = 1:上拉、下拉寄存器使能 表 8-1 总结了恰当 IO 配置下 PxDIRx、PxRENx 和 PxOUTx 寄存器的用法。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–211–页 共 423 页 PxDIR 0 0 0 1 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 表 8-1 I/O 配置 PxRENx 0 1 1 x PxOUTx x 0 1 x I/O 口配置 输入 下拉输入 上拉输入 输出 8.2.5 输出驱动能力增强寄存器 PxDS PxDS 寄存器的每一位选择全驱动或弱驱动。默认的是弱驱动能力。 12、Bit = 0:弱驱动 13、Bit = 1:全驱动 注意:驱动能力和 EMI 为了减少电磁干扰(EMI),所有输出默认为弱驱动。 使用全 驱动可能导致 EMI 增加。 8.2.6 功能选择寄存器 PxSEL 端口管脚经常与其他外围模块复用,参考芯片数据手册确定管脚功能。每个 PxSEL 位选择对应管脚的功能——普通 I/O 功能或外围模块功能。 l Bit = 0:I/O 口功能 l Bit = 1:外围模块功能 设置 PxSELx = 1,不会自动设置管脚方向。外围模块的引脚功能还需要根 据实际模块功能要求设置 PxDIRx。管脚图见具体芯片的数据手册。 注意:当 PxSEL=1 时,禁止 P1 和 P2 口的中断功能 置位任何 PxSEL 位,将禁止相应管脚的 I/O 口中断功能。因此,无论相应 P1IE 和 P2IE 寄存器状态 如何,这些管脚的信号不能产生 P1 或者 P2 口中断。 当一个 I/O 口管脚被设置为外围设备的输入脚时,输入到外设的信号就会被 锁存在芯片引脚上。当 PxSELx=1 时,内部输入信号将跟随该管脚上的信号。但 是,如果 PxSELx=0,在相应的 PxSELx 复位前,输入到外设的输入信号保持芯片 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–212–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 管脚处的输入信号值。 8.2.7 P1 和 P2 口中断,端口中断 当对 PxIFG,PxIE 及 PxIES 寄存器进行相应的配置后,P1 和 P2 口的每一个管 脚都可具备中断能力。所有 P1 口中断标志是有优先级的,如 P1IFG.0 具有最高 优先级,它们组合共用一个中断向量。使能的具有最高优先级中断在 P1IV 中产 生 1 个数值。为了跳转到适当的程序位置,对该数值评估或加到程序计数器上。 禁止 P1 口中断不会影响 P1IV 寄存器中的值。P2 口具有相同的功能。PxIV 寄 存器只能以字形式访问。有些芯片除了 P1/P2 外,还有其他中断管脚,请参考 芯片具体数据手册,确定可用的中断端口。 每个 PxIFGx 位都是相应 I/O 管脚的中断标志位,当管脚上有选择的输入信 号沿到来时,PxIFGx 置位。当相应的 PxIE 位和 GIE 位置位时,所有的 PxIFGx 中断标志产生中断请求。软件也可以使 PxIFG 标志置位,这就提供了一种软件 产生中断的方法。 4)Bit = 0: 没有中断挂起 5)Bit = 1: 中断挂起 只有沿跳变才能产生中断。如果在一个 Px 口中断服务程序执行期间任何 PxIFG 变为置位或者 Px 口中断服务程序的 RETI 指令执行之后有任何一个 PxIFGx 位置位,置位的 PxIFG 标志产生另一个中断。这样就可以保证能够识别 每一个沿跳变。 注意:当 PxOUT、PxDIR 或 PxREN 寄存器值改变时的 PxIFG 标志位 写 P1OUT、P1DIR、P1REN、P2OUT、P2DIR 或者 P2REN 寄存器可使相应的 P1IFG 或者 P2IFG 标志位 置位。 任何对 P1IV 寄存器的读写操作都会自动使最高响应优先级中断标志复位。 如果另外一个中断标志置位,则在响应最初中断后立即产生另一中断。例如, 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–213–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 假设 P1IFG.0 优先级最高,如果中断服务程序访问 P1IV 寄存器时,P1IFG.0 和 P1IFG.2 置位,只有 P1IFG.0 会自动复位。当中断服务程序的 RETI 指令执行以 后,P1IFG.2 产生另一中断。P2 口中断与此相似,中断向量寄存器为 P2IV。 8.2.7.1 P1IV、P2IV 软件例程 以下的软件例程演示了 P1IV 的推荐用法和处理。P1IV 的值加到程序计数器, 系统自动跳转到适当的中断服务程序中。P2IV 类似。右边空白处的数字为每条 指令执行所必需的 CPU 周期。软件处理不同中断源的时钟消耗包括中断等待时 间和中断返回周期,不包括处理操作本身。 ;Interrupt handler for P1IFGx P1_HND ... ; Interrupt latency ADD &P1IV,PC ; Add offset to Jump table RETI ; Vector 0: No interrupt JMP P1_0_HND ; Vector 2: Port 1 bit 0 JMP P1_1_HND ; Vector 4: Port 1 bit 1 JMP P1_2_HND ; Vector 6: Port 1 bit 2 JMP P1_3_HND ; Vector 8: Port 1 bit 3 JMP P1_4_HND ; Vector 10: Port 1 bit 4 JMP P1_5_HND ; Vector 12: Port 1 bit 5 JMP P1_6_HND ; Vector 14: Port 1 bit 6 JMP P1_7_HND ; Vector 16: Port 1 bit 7 P1_7_HND ; Vector 16: Port 1 bit 7 ... ; Task starts here RETI ; Back to main program P1_6_HND ; Vector 14: Port 1 bit 6 ... ; Task starts here RETI ; Back to main program P1_5_HND ; Vector 12: Port 1 bit 5 ... ; Task starts here RETI ; Back to main program P1_4_HND ; Vector 10: Port 1 bit 4 ... ; Task starts here RETI ; Back to main program P1_3_HND ; Vector 8: Port 1 bit 3 ... ; Task starts here RETI ; Back to main program P1_2_HND ; Vector 6: Port 1 bit 2 ... ; Task starts here Cycles 6 3 5 2 2 2 2 2 2 2 2 5 5 5 5 5 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–214–页 共 423 页 RETI P1_1_HND ... RETI P1_0_HND ... RETI LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM ; Back to main program 5 ; Vector 4: Port 1 bit 1 ; Task starts here ; Back to main program 5 ; Vector 2: Port 1 bit 0 ; Task starts here ; Back to main program 5 8.2.7.2 中断沿选择寄存器 P1IES P2IES 每个 PxIES 位为相应的 I/O 管脚选择中断沿。 8 Bit = 0:上升沿时置位各自的 PxIFGx 标志 9 Bit = 1:下降沿时置位各自的 PxIFGx 标志 注意:写 PxIESx 寄存器 对 P1IES 和 P2IES 写操作,可使相应中断标志置位。 PxIESx PxINx PxIFGx 0→1 0 可能置位 0→1 1 不改变 1→0 0 不改变 1→0 1 可能置位 8.2.7.2 中断使能寄存器 P1IE、P2IE 每个 PxIE 位将使能相应的 PxIFG 中断标志。 4、Bit = 0:Px 口中断禁止 5、Bit = 1:Px 口中断使能 8.2.8 配置未使用的端口管脚 未使用的 I/O 管脚应被配置为普通 I/O 功能、输出方向,并且在 PCB 板上不连接这些管脚,可以防 止浮动输入,降低功耗。因为没有连接这些管脚,所以可以不用考虑 PxOUT 值。另外,为了避免浮动输入, 可以通过置位未使用管脚的 PxREN 位来使能集成的上拉/下拉电阻。关闭未使用的管脚,可以参考系统复 位、中断和操作模式及系统控制模块(SYS)章节。 注意:配置 PJ 端口及复用 JTAG 管脚 在应用中应特别注意恰当配置 PJ 口,以避免浮动输入。因为 PJ 端口与 JTAG 功能复用,可能注意不到仿真环境下的浮动输入。默认情况下 PJ 端口初始化为 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–215–页 共 423 页 高阻态。 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 8.3 IO口配置及LPMX.5低功耗模式 注意:并不是所有芯片都有 LPMX.5 模式。LPM4.5 模式下功耗最低,没有时钟工作。LPM3.5 模式支持 RTC 模式操作功耗最低。可以参考 SYS 章节获取详细信息,也可在具体芯片的数据手 册查阅可用的 LPMx.5 低功耗模式。对于数字 I/O 口,本部分对 LPM3.5 和 LPM4.5 都适用。 在进入 LPMX.5(LPM3.5 or LPM4.5)模式时,禁止 PMM 电压调节器,这可能引 起 IO 的配置数据丢失。因为配置数据丢失,为了保证在进入或退出 LPMX.5 模 式时所有的 I/O 管脚在使用时可控,必须对 I/O 口管脚配置进行不同处理。在 实际应用时,为了使 LPMX.5 模式下功耗可能达到最低,同时避免不可控的输入 或输出 IO 状态,适当配置 I/O 管脚非常关键。系统在进入或退出 LPMX.5 时, 完全控制 IO 口状态,避免出现不想要的虚假操作。关于 I/O 口操作,进入或退 出 LPMX.5 模式的基本流程如图 8-1 所示。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–216–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图 8-1 LPMX.5 的进入或退出流程 在进入LPMX.5前,必须通过PxSEL寄存器将所有的IO口配置为通用IO口模式且根 据应用需要进行适当设置。每个IO口可以配置成输入高阻态、输入下拉、输入 上拉、输出高(弱驱动或强驱动)或输出低(弱驱动或强驱动)。保证没有浮动 输入是非常关键的,否则,LPMX.5下电流会增大。对I/O口这种方式的配置保证 了每个管脚在进入LPMX.5模式前处于安全状态。I/O管脚状态将保持并锁定在进 入LPMx.5前的设置。一旦进入LPMX.5模式,PMM模块中PM5CTL0寄存器的LOCKLPM5 将自动置位。请注意,只保持管脚状态,所有其他端口配置寄存器内容丢失, 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–217–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 如PxDIR、PxREN、PxOUT和PxDS。 当从 LPMX.5 模式退出时,I/O 口的状态将一直保持锁定,同时 LOCKLPM5 也 保持置位。退出 LPMX.5 将产生 BOR 事件,所有的 IO 口寄存器将恢复到默认状 态。但是由于有 LOCKLPM5 位仍保持置位,所以先前的 IO 状态仍将保持。然而, 由于 LOCKLPM5 仍然置位,管脚状态保持在进入 LPMx.5 前的状态。不论默认 I/O 寄存器设置如何,锁定 I/O 管脚可以保证在进入活动模式时所有管脚的稳定状 态。一旦进入活动模式,应用程序可以按照需要重新配置 IO 口寄存器。在应用 程序重新配置后,清除 LOCKLPM5 位将释放 IO 口状态。当 LOCKLPM5 位置位时, 任何对 I/O 配置的改变都不会影响 IO 管脚。 8.3.1 通过IO口唤醒LPMX.5 为了将芯片从 LPMX.5 状态唤醒,通用 I/O 口必须包括 1 个带中断能力的输 入端口。并不是所有的芯片都可以通过 IO 口来唤醒 LPMX.5,也并不是所有具有 中断能力的 I/O 口都可以唤醒 LPMX.5。具体参考相关数据手册。为了能够使用 端口来唤醒芯片,必须在进入 LPMX.5 之前进行适当的配置。每个端口都应该配 置成通用输入,根据需要选择是否上拉或下拉。相应寄存器 PxIES 位的设置, 决定了唤醒芯片的转换沿。最后,必须使能端口 PxIE。进入 LPMX.5 模式后,配 置过的管脚上适当的输入沿将使芯片从 LPMX.5 模式下退出,进入活动模式。 LPMX.5 操作期间,通过置位 PxIE 和 PxIES,使能相应 I/O 口对输入转换沿 的检测。当从 LPMX.5 模式下退出时,相应 PxIFG 置位,表示有输入信号。这些 标志或相应的 PxIV 寄存器可以直接用于判断是哪个端口将芯片从 LPMX.5 唤醒。 注意:不同端口可发生多个事件,这种情况下,多个 PxIFG 标志置位,且不能判断端口唤醒 I/O 口。 8.4 数字 I/O 端口寄存器 数字 I/O 寄存器如表 8-2 所列。基地址可以在芯片的数据手册中找到。端 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–218–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 口根据基地址来分组。表 8-2 给出了地址偏移量。 表 8-2 数字 IO 寄存器 端口 寄存器 简写 寄存器类型 访问方式 偏移量 初始状态 端口 1 端口 2 中断向量 中断向量 P1IV P1IV_L P1IV_H P2IV P2IV_L P2IV_H 只读 只读 只读 只读 只读 只读 字 字节 字节 字 字节 字节 0EH 0000H 0EH 00H 0FH 00H 1EH 0000H 1EH 00H 1FH 00H 端口1 输入 P1IN或PAIN_L 只读 字节 输出 P1OUT或 读/写 字节 PAOUT_L 方向 P1DIR或PADIR_L 读/写 字节 电阻使能 P1REN或PAREN_L 读/写 字节 驱动能力 P1DS或PADS_L 读/写 字节 端口选择 P1SEL或PASEL_L 读/写 字节 中断沿选择 P1IES或PAIES_L 读/写 字节 中断使能 P1IE或PAIE_L 读/写 字节 中断标志 P1IFG或PAIFG_L 读/写 字节 00h 02h 未定义 04h 00h 06h 00h 08h 00h 0Ah 00h 18h 未定义 1Ah 00h 1Ch 00h 端口2 输入 P2IN或PAIN_H 只读 字节 输出 P2OUT或 读/写 字节 PAIOUT_H 方向 P2DIR或PADIR_H 读/写 字节 电阻使能 P2REN或PAREN_H 读/写 字节 驱动能力 P2DS或PADS_H 读/写 字节 端口选择 P2SEL或PASEL_H 读/写 字节 中断沿选择 P2IES或PAIES_H 读/写 字节 中断使能 P2IE或PAIE_H 读/写 字节 中断标志 P2IFG或PAIFG_H 读/写 字节 端口3 输入 P3IN或PBIN_L 只读 字节 输出 P3OUT或PBOUT_L 读/写 字节 方向 P3DIR或PBDIR_L 读/写 字节 电阻使能 P3REN或PBREN_L 读/写 字节 驱动能力 P3DS或PBDS_L 读/写 字节 端口选择 P3SEL或PBSEL_L 读/写 字节 端口4 输入 P4IN或PBIN_H 只读 字节 输出 P4OUT或PBOUT_H 读/写 字节 方向 P4DIR或PBDIR_H 读/写 字节 电阻使能 P4REN或PBREN_H 读/写 字节 驱动能力 P4DS或PBDS_H 读/写 字节 01h 03h 未定义 05h 00h 07h 00h 09h 00h 0Bh 00h 19h 未定义 1Bh 00h 1Dh 00h 00h 02h 未定义 04h 00h 06h 00h 08h 00h 0Ah 00h 01h 03h 未定义 05h 00h 07h 00h 09h 00h 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–219–页 共 423 页 端口5 端口6 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 端口选择 P4SEL或PBSEL_H 读/写 字节 输入 P5IN或PCIN_L 只读 字节 输出 P5OUT或PCOUT_L 读/写 字节 方向 P5DIR或PCDIR_L 读/写 字节 电阻使能 P5REN或PCREN_L 读/写 字节 驱动能力 P5DS或PCDS_L 读/写 字节 端口选择 P5SEL或PCSEL_L 读/写 字节 输入 P6IN或PCIN_H 只读 字节 输出 P6OUT或PCOUT_H 读/写 字节 方向 P6DIR或PCDIR_H 读/写 字节 电阻使能 P6REN或PCREN_H 读/写 字节 驱动能力 P6DS或PCDS_H 读/写 字节 端口选择 P6SEL或PCSEL_H 读/写 字节 0Bh 00h 00h 02h 未定义 04h 00h 06h 00h 08h 00h 0Ah 00h 01h 03h 未定义 05h 00h 07h 00h 09h 00h 0Bh 00h 端口7 端口8 端口9 端口10 端口11 端口A 输入 输出 方向 电阻使能 驱动能力 端口选择 输入 输出 方向 电阻使能 驱动能力 端口选择 输入 输出 方向 电阻使能 驱动能力 端口选择 输入 输出 方向 电阻使能 驱动能力 端口选择 输入 输出 方向 电阻使能 驱动能力 端口选择 输入 P7IN或PDIN_L 只读 P7OUT或PDOUT_L 读/写 P7DIR或PDDIR_L 读/写 P7REN或PDREN_L 读/写 P7DS或PDDS_L 读/写 P7SEL或PDSEL_L 读/写 P8IN或PDIN_H 只读 P8OUT或PDOUT_H 读/写 P8DIR或PDDIR_H 读/写 P8REN或PDREN_H 读/写 P8DS或PDDS_H 读/写 P8SEL或PDSEL_H 读/写 P9IN或PEIN_L 只读 P9OUT或PEOUT_L 读/写 P9DIR或PEDIR_L 读/写 P9REN或PEREN_L 读/写 P9DS或PEDS_L 读/写 P9SEL或PESEL_L 读/写 P10IN或PEIN_H 只读 P10OUT或PEOUT_H 读/写 P10DIR或PEDIR_H 读/写 P10REN或PEREN_H 读/写 P10DS或PEDS_H 读/写 P10SEL或PESEL_H 读/写 P11IN或PFIN_L 只读 P11OUT或PFOUT_L 读/写 P11DIR或PFDIR_L 读/写 P11REN或PFREN_L 读/写 P11DS或PFDS_L 读/写 P11SEL或PFSEL_L 读/写 PAIN 只读 字节 字节 字节 字节 字节 字节 字节 字节 字节 字节 字节 字节 字节 字节 字节 字节 字节 字节 字节 字节 字节 字节 字节 字节 字节 字节 字节 字节 字节 字节 字节 00h 02h 未定义 04h 00h 06h 00h 08h 00h 0Ah 00h 01h 03h 未定义 05h 00h 07h 00h 09h 00h 0Bh 00h 00h 02h 未定义 04h 00h 06h 00h 08h 00h 0Ah 00h 01h 03h 未定义 05h 00h 07h 00h 09h 00h 0Bh 00h 00h 02h 未定义 04h 00h 06h 00h 08h 00h 0Ah 00h 00h 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–220–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM PAIN_L 输出 PAIN_H PAOUT PAOUT_L 方向 PAOUT_H PADIR PADIR_L 电阻使能 PADIR_H PAREN PAREN_L 驱动能力 PAREN_H PADS PADS_L 端口选择 PADS_H PASEL PASEL_L PASEL_H 中断沿选择 PAIES PAIES_L 中断使能 PAIES_H PAIE PAIE_L 中断标志 PAIE_H PAIFG PAIFG_L PAIFG_H 只读 只读 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 字节 字节 字节 字节 字节 字节 字节 字节 字节 字节 字节 字节 字节 字节 字节 字节 字节 字节 字节 字节 字节 字节 字节 字节 字节 字节 00h 01h 02h 未定义 02h 未定义 03h 未定义 04h 00h 04h 00h 05h 00h 06h 00h 06h 00h 07h 00h 08h 00h 08h 00h 09h 00h 0Ah 00h 0Ah 00h 0Bh 00h 18h 未定义 18h 未定义 19h 未定义 1Ah 00h 1Ah 00h 1Bh 00h 1Ch 00h 1Ch 00h 1Dh 00h 端口B 输入 PBIN 只读 字节 PBIN_L 只读 字节 PBIN_H 只读 字节 输出 PBOUT 读/写 字节 PBOUT_L 读/写 字节 PBOUT_H 读/写 字节 方向 PBDIR 读/写 字节 PBDIR_L 读/写 字节 PBDIR_H 读/写 字节 电阻使能 PBREN 读/写 字节 PBREN_L 读/写 字节 PBREN_H 读/写 字节 驱动能力 PBDS 读/写 字节 PBDS_L 读/写 字节 PBDS_H 读/写 字节 端口选择 PBSEL 读/写 字节 PBSEL_L 读/写 字节 PBSEL_H 读/写 字节 00h 00h 01h 02h 未定义 02h 未定义 03h 未定义 04h 00h 04h 00h 05h 00h 06h 00h 06h 00h 07h 00h 08h 00h 08h 00h 09h 00h 0Ah 00h 0Ah 00h 0Bh 00h 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–221–页 共 423 页 端口C LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 输入 PCIN PCIN_L 只读 字节 00h 只读 字节 00h 输出 PCIN_H PCOUT PCOUT_L 只读 读/写 读/写 字节 字节 字节 01h 02h 未定义 02h 未定义 方向 PCOUT_H PCDIR 读/写 读/写 字节 字节 03h 未定义 04h 00h PCDIR_L 读/写 字节 04h 00h 电阻使能 PCDIR_H PCREN PCREN_L 读/写 读/写 读/写 字节 字节 字节 05h 00h 06h 00h 06h 00h PCREN_H 读/写 字节 驱动能力 PCDS 读/写 字节 PCDS_L 读/写 字节 07h 00h 08h 00h 08h 00h 端口选择 PCDS_H PCSEL PCSEL_L 读/写 读/写 读/写 字节 字节 字节 09h 00h 0Ah 00h 0Ah 00h PCSEL_H 读/写 字节 0Bh 00h 端口D 输入 PDIN 只读 字节 PDIN_L 只读 字节 PDIN_H 只读 字节 输出 PDOUT 读/写 字节 PDOUT_L 读/写 字节 PDOUT_H 读/写 字节 方向 PDDIR 读/写 字节 PDDIR_L 读/写 字节 PDDIR_H 读/写 字节 电阻使能 PDREN 读/写 字节 PDREN_L 读/写 字节 PDREN_H 读/写 字节 驱动能力 PDDS 读/写 字节 PDDS_L 读/写 字节 PDDS_H 读/写 字节 端口选择 PDSEL 读/写 字节 PDSEL_L 读/写 字节 PDSEL_H 读/写 字节 端口E 输入 PEIN 只读 字节 PEIN_L 只读 字节 PEIN_H 只读 字节 输出 PEOUT 读/写 字节 PEOUT_L 读/写 字节 PEOUT_H 读/写 字节 方向 PEDIR 读/写 字节 PEDIR_L 读/写 字节 00h 00h 01h 02h 未定义 02h 未定义 03h 未定义 04h 00h 04h 00h 05h 00h 06h 00h 06h 00h 07h 00h 08h 00h 08h 00h 09h 00h 0Ah 00h 0Ah 00h 0Bh 00h 00h 00h 01h 02h 未定义 02h 未定义 03h 未定义 04h 00h 04h 00h 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–222–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 电阻使能 驱动能力 端口选择 PEDIR_H PEREN PEREN_L PEREN_H PEDS PEDS_L PEDS_H PESEL PESEL_L PESEL_H 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 字节 字节 字节 字节 字节 字节 字节 字节 字节 字节 05h 00h 06h 00h 06h 00h 07h 00h 08h 00h 08h 00h 09h 00h 0Ah 00h 0Ah 00h 0Bh 00h 端口F 输入 输出 方向 电阻使能 驱动能力 端口选择 PFIN PFIN_L PFIN_H PFOUT PFOUT_L PFOUT_H PFDIR PFDIR_L PFDIR_H PFREN PFREN_L PFREN_H PFDS PFDS_L PFDS_H PFSEL PFSEL_L PFSEL_H 只读 只读 只读 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 字节 字节 字节 字节 字节 字节 字节 字节 字节 字节 字节 字节 字节 字节 字节 字节 字节 字节 00h 00h 01h 02h 未定义 02h 未定义 03h 未定义 04h 00h 04h 00h 05h 00h 06h 00h 06h 00h 07h 00h 08h 00h 08h 00h 09h 00h 0Ah 00h 0Ah 00h 0Bh 00h 端口J 输入 PJIN 只读 字节 00h PJIN_L 只读 字节 00h PJIN_H 只读 字节 01h 输出 PJOUT 读/写 字节 02h PJOUT_L 读/写 字节 02h PJOUT_H 读/写 字节 03h 方向 PJDIR 读/写 字节 04h PJDIR_L 读/写 字节 04h PJDIR_H 读/写 字节 05h 电阻使能 PJREN 读/写 字节 06h PJREN_L 读/写 字节 06h PJREN_H 读/写 字节 07h 驱动能力 PJDS 读/写 字节 08h PJDS_L 读/写 字节 08h PJDS_H 读/写 字节 09h 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 未定义 未定义 未定义 00h 00h 00h 00h 00h 00h 00h 00h 00h 第–223–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM P1IV P1 口中断向量寄存器 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 P1Ivx P1Ivx 内容 00h 02h 04h 06h 08h 0Ah 0Ch 0Eh 10h Bits15-0 P1 口中断向量值 中断源 中断标志位 无中断挂起 P1.0 中断 P1IFG.0 P1.1 中断 P1IFG.1 P1.2 中断 P1IFG.2 P1.3 中断 P1IFG.3 P1.4 中断 P1IFG.4 P1.5 中断 P1IFG.5 P1.6 中断 P1IFG.6 P1.7 中断 P1IFG.7 中断优先级 最高 最低 P2IV P2 口中断向量寄存器 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 P2Ivx P2Ivx 内容 00h 02h 04h 06h 08h 0Ah 0Ch 0Eh 10h Bits15-0 P2 口中断向量值 中断源 中断标志位 无中断挂起 P2.0 中断 P2IFG.0 P2.1 中断 P2IFG.1 P2.2 中断 P2IFG.2 P2.3 中断 P2IFG.3 P2.4 中断 P2IFG.4 P2.5 中断 P2IFG.5 P2.6 中断 P2IFG.6 P2.7 中断 P2IFG.7 中断优先级 最高 最低 P1IES P1 口边沿中断选择寄存器 7 6 5 4 3 2 1 0 P1IES P1IES Bits7-0 P1 口边沿中断选择 0 上升沿时,P1IFG 置位 1 下降沿时,P1IFG 置位 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–224–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM P1IE P1 口中断使能寄存器 7 6 5 4 3 2 1 0 P1IE P1IE Bits7-0 P1 口中断使能 0 相关引脚中断禁止 1 相关引脚中断使能 P1IFG P1 口中断使能 7 6 5 4 3 2 1 0 P1IFG P1IFG Bits7-0 P1 口中断标志位 0 无中断产生 1 中断产生 P2IES P2 口边沿中断选择寄存器 7 6 5 4 3 2 1 0 P2IES P2IES Bits7-0 P1 口边沿中断选择 0 上升沿时,P2IFG 置位 1 下降沿时,P2IFG 置位 P2IE P2 口中断使能寄存器 7 6 5 4 3 2 1 0 P2IE P2IE Bits7-0 P2 口中断使能 0 相关引脚中断禁止 1 相关引脚中断使能 P2IFG P2 口中断使能 7 6 5 4 3 2 1 0 P2IFG P2IFG Bits7-0 P2 口中断标志位 0 无中断挂起 1 中断挂起 PxIN Px 输入寄存器 7 6 5 4 3 2 1 PxIN 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 0 第–225–页 共 423 页 PxIN Bits7-0 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 只能读 PxOUT Px 输出寄存器 7 6 5 4 3 2 1 0 PxOUT PxOUT Bits7-0 Px 口输出 当 I/O 口被设置成输出模式 0 输出低电平 1 输出高电平 当 I/O 口被设置成输入模式,并且上拉/下拉使能 0 下拉 1 上拉 PxDIR Px 方向寄存器 7 6 5 4 3 2 1 0 PxDIR PxDIR Bits7-0 Px 口方向设置(输入还是输出) 0 输入 1 输出 PxDS Px 驱动力寄存器 7 6 5 4 3 2 1 0 PxDS PxDS Bits7-0 Px 口驱动力设置 0 减弱驱动力输出 1 全状态驱动力输出 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–226–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 第9章 端口映射控制器 端口映射控制器可以灵活地将数字功能映射到I/O管脚,本章将主要讲述端口映射控制器。 9.1 端口映射控制器的介绍 9.1 端口映射控制器的操作 9.1 端口映射控制器寄存器 9.1 端口映射控制器介绍 端口映射控制器可以灵活且可再配置地将数字功能映射到 I/O 管脚,端口映射 控制器的特性包括: 9)配置具有密码保护 10)为每个 IO 端口提供一个默认的映射(与芯片型号有关,参考数据手册中芯 片管脚输出部分) 11)运行期间,映射关系可以修改 12)每一个输出信号可以映射到多个输出管脚 9.2 端口映射控制器的操作 端口映射可以由用户软件配置。其设置和操作将在以下部分进行说明。 9.2.1 存取操作 要对映射控制寄存器进行写操作,PMAPPWDP 寄存器必须写入正确的密码。 PMAPPWD 寄存器读取结果总为 096A5H,写入密码为 02D52H 时,可以对所有端口 映射控制器寄存器进行写操作。读控制寄存器操作不需要密码。 如果写操作允许时,写入了无效的密码,则不能再进行写操作。一般建议采 用写入无效密码的方式完成映射配置。 超时计数器在每执行一条(汇编)指令后加 1,当计数到 32 时,又重新锁定 写操作。对端口映射控制器寄存器的任何访问都将复位该计数器。在配置过程 中应禁止中断,否则应用程序应当注意偶然执行中断服务程序造成对端口映射 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–227–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 寄存器的永久锁定。如:通过重新配置能力(参考 9.2.2 章节)。 PMAPLOCK 位可以反映访问状态。 默认情况下,端口映射控制器在 PUC 之后只能配置一次。通过写入正确密 码来使能写访问是无效的,并且控制寄存器将一直保持锁定状态。需要 PUC 来 再次禁止永久锁定。如果运行期间必须要重新配置映射,PMAPRECFG 位必须 在第一次写访问时隙间置位。如果 PMAPRECFG 在后面的配置中清零,将无法 再进行配置。 9.2.2 映射 对提供映射功能的端口的任何一个端口管脚 Px.y 来说,可以使用映射寄存 器 PxMAPy。将寄存器设置到一定值,可以将模块的输入和输出信号映射到各自 的端口管脚 Px.y。通过置位相应的 PxSEL.y 寄存器,可将端口管脚本身从普通 I/O 口切换到选择的外围/第二功能。通常由 PxDIR.y 位定义使用了模块的输入 还是输出功能。如果 PxDIR.y=0 表示管脚为输入,PxDIR.y=1 表示管脚为输出。 同样也有外设(例如 USCI 模块)控制方向甚至管脚的其他功能,这些选择记录 在映射表在。 模块的输出映射功能使模块的输出可以映射到多个管脚。同样,模块输入也 可以接收多个管脚的输入。需要注意把多个输入映射到一个功能的情况,因为 输入信号是在没有任何优先级的情况下进行了逻辑与-任一输入的逻辑 1 将导致 模块的逻辑 1。如果 PxSEL.Y 位为 0,则相应的输入信号为逻辑 0。 映射关系与芯片型号有关,具体参考相应的数据手册获取所具有的功能和具 体值。使用概括划线 PxMAPy 值的助记符时,建议允许不同芯片间的简单移植。 表 9-1 所示为一些常用外围设备的映射助记符示例。 所有可映射的端口引脚都提供 PM_ANALOG(0FFH)功能。将 PxMAPy 设置到 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–228–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM PM_ANALOG,PxSEL.y=1 时,将禁止输出驱动和输入施密特触发器,以此来避免 使用模拟信号时产生寄生交叉电流。 表 9-1 端口映射助记符和功能实例 PxMAPy 的助记符 PM_NONE PM_ACLK PM_MCLK PM_SMCLK PM_TA0CLK PM_TA0CCR0A PM_TA0CCR1A PM_TA0CCR2A PM_TA0CCR3A PM_TA0CCR4A PM_TA1CLK PM_TA1CCR0A PM_TA1CCR1A PM_TA1CCR2A PM_TBCLK PM_TBOUTH PM_TBCCR0A PM_TBCCR1A PM_TBCCR2A PM_TBCCR3A PM_TBCCR4A PM_TBCCR5A PM_TBCCR6A PM_UCA0RXD PM_UCA0SOMI PM_UCA0TXD PM_UCA0SIMO PM_UCA0CLK PM_UCA0STE 输入引脚功能 输出引脚功能 PxSEL.y =1 及 PxDIR.y=0 PxSEL.y =1 及 PxDIR.y=1 NONE DVSS NONE ACLK NONE MCLK NONE SMCLK TA0 的时钟输入 DVSS TA0 CCR0 的捕获输入 CCI0A TA0 CCR0 的比较输出 OUT0 TA0 CCR1 的捕获输入 CCI1A TA0 CCR1 的比较输出 OUT1 TA0 CCR2 的捕获输入 CCI2A TA0 CCR2 的比较输出 OUT2 TA0 CCR3 的捕获输入 CCI3A TA0 CCR3 的比较输出 OUT3 TA0 CCR4 的捕获输入 CCI4A TA0 CCR4 的比较输出 OUT4 TA1 的时钟输入 DVSS TA1 CCR0 的捕获输入 CCI0A TA1 CCR0 的比较输出 OUT0 TA1 CCR1 的捕获输入 CCI1A TA1 CCR1 的比较输出 OUT1 TA1 CCR2 的捕获输入 CCI2A TA1 CCR2 的比较输出 OUT2 TA1 的时钟输入 DVSS TB 输出高阻抗 DVSS TB CCR0 的捕获输入 CCI0A TB CCR0 的比较输出 OUT0 (方向由 TB(TBOUTH)控制) TB CCR1 的捕获输入 CCI1A TB CCR1 的比较输出 OUT1 (方向由 TB(TBOUTH)控制) TB CCR2 的捕获输入 CCI2A TB CCR2 的比较输出 OUT2 (方向由 TB(TBOUTH)控制) TB CCR3 的捕获输入 CCI0A TB CCR3 的比较输出 OUT3 (方向由 TB(TBOUTH)控制) TB CCR4 的捕获输入 CCI1A TB CCR4 的比较输出 OUT4 (方向由 TB(TBOUTH)控制) TB CCR5 的捕获输入 CCI2A TB CCR5 的比较输出 OUT5 (方向由 TB(TBOUTH)控制) TB CCR6 的捕获输入 CCI0A TB CCR6 的比较输出 OUT6 (方向由 TB(TBOUTH)控制) USCI_A0 UART RXD(方向由 USCI 控制-输入) USCI_A0 SPI 从机输出主机输入(方向由 USCI 控制) USCI_A0 UART TXD(方向由 USCI 控制-输出) USCI_A0 SPI 从机输入主机输出(方向由 USCI 控制) USCI_A0 输入/输出时钟(方向由 USCI 控制) USCI_A0 SPI 从机发送允许(方向由 USCI 控制) 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–229–页 共 423 页 PM_UCB0SOMI PM_UCB0SCL PM_UCB0SIMO PM_UCB0SDA PM_UCB0CLK PM_UCB0STE PM_ANALOG LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM USCI_B0 SPI 从机输出主机输入(方向由 USCI 控制) USCI_B0 IIC 时钟(方向由 USCI 控制,开路) USCI_B0 SPI 从机输入主机输出(方向由 USCI 控制) USCI_B0 IIC 数据 (方向由 USCI 控制,开路) USCI_B0 输入输出时钟 (方向由 USCI 控制) USCI_B0 SPI 从机发送允许(方向由 USCI 控制) 禁止输出驱动和输入触发电路,以避免当作为模拟通道信号 时的杂散寄生电流 9.2.3 软件例程 下面的例程说明如何用软件配置端口映射。 #include “……” // 芯片的头文件 #define NUM_MAPPED_PORTS 3 Unsigned char * PxMAPy = (unsigned char *) 0x01c8; Const unsigned char port_mapping[NUM_MAPPED_PORTS*8] = { //port P1: PM_TA0CCR0A, PM_TA0CCR1A, PM_TA0CCR2A, PM_TA0CCR3A, PM_TA0CCR4A, PM_TA1CCR0A, PM_TA1CCR1A, PM_TA2CCR2A, // port P2 : PM_UCA0RXD, PM_UCA0TXD, PM_NONE, PM_NONE, PM_UCB0SOMI, PM_UCB0SIMO, PM_UCB0CLK, PM_UCB0STE, // PORT P3 : PM_NONE, PM_NONE, PM_NONE, PM_NONE, PM_NONE, PM_NONE, PM_NONE, PM_NONE, } Void configure_ports() 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–230–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM { Int i ; // disable all interrupts __disable_interrupt() ; // get write-access to port mapping registers : PMAPPWD = 0x02D52; #ifdef PORT_MAP_RECFG // allow reconfiguration during runtime; PMAPCTL = PMAPRECFG; #endif // configure port mapping For(i=0; i< NUM_MAPPED_PORTS*8; i++) { PxMAPy[i] = port_mapping[i]; } // disable write-access to port mapping registers: PMAPPWD = 0; #ifdef PORT_MAP_EINT // re-enable all interrupts __enable_interrupt(); #endif } 9.3 端口映射控制寄存器 端口映射控制寄存器如表 9-2 所列,表 9-3 为端口映射寄存器,映射寄存器也可以字的方式访问,如 表 9-4。 表 9-2 端口映射控制寄存器 寄存器 简写 类型 偏移量 初始状态 端口映射口令寄存器 PMAPPWD 读写 000H PUC 后为 0 端口控制寄存器 PMAPCTL 读写 002H PUC 后为 0 寄存器 表 9-3 按字节访问的 PX 端口映射寄存器 简写 类型 偏移量 初始状态 Px.0 映射寄存器 Px.1 映射寄存器 Px.2 映射寄存器 Px.3 映射寄存器 Px.4 映射寄存器 Px.5 映射寄存器 Px.6 映射寄存器 Px.7 映射寄存器 寄存器 PxMAP0 读写 000H PxMAP1 读写 001H PxMAP2 读写 002H PxMAP3 读写 003H PxMAP4 读写 004H PxMAP5 读写 005H PxMAP6 读写 006H PxMAP7 读写 007H 表 9-4 按字访问的 PX 端口映射寄存器 简写 类型 偏移量 与芯片有关 与芯片有关 与芯片有关 与芯片有关 与芯片有关 与芯片有关 与芯片有关 与芯片有关 初始状态 Px.0/Px.1 映射寄存器 Px.2/Px.3 映射寄存器 Px.4/Px.5 映射寄存器 PxMAP01 PxMAP23 PxMAP45 读写 读写 读写 000H 002H 004H 与芯片有关 与芯片有关 与芯片有关 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–231–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM Px.6/Px.7 映射寄存器 PxMAP67 读写 006H 与芯片有关 PMAPPWD,端口映射控制器口令寄存器 15 14 13 12 11 10 9 8 PMAPPWDx,读时为 096a5h,写时口令为 02D52H 7 6 5 4 3 2 1 0 PMAPPWDx,读时为 096a5h,写时口令为 02D52H PMAPCTL 端口映射控制寄存器 15 14 13 12 11 10 9 8 保留 R0 R0 R0 R0 R0 R0 R0 R0 7 6 5 4 3 2 1 0 保留 PMAPRECFG PMAPLOCKED R0 R0 R0 R0 R0 R0 Rw-0 r-1 PMAPRECFG BIT1 端口映射再配置控制控制位 0 只允许配置一次 1 允许重新配置端口映射 PMAPLOCKED BIT0 端口映射保护位,只读 0 允许访问端口映射寄存器 1 锁定端口映射寄存器访问 PxMAPy,Px.y 映射寄存器 7 6 5 4 3 2 1 0 PMAPx Rw-0 PMAPx Rw-0 Rw-0 Rw-0 Rw-0 Rw-0 Rw-0 Rw-0 bit7~0 选择端口的第二功能,设置与芯片信号有关,参照芯片相关数据 手册来配置。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–232–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 第10章 CRC 模块 循环冗余校验模块(CRC)为给定的数据序列提供一种签名方法。本 章将主要描述 CRC 模块的操作和使用。 注意:MSP430F543x 和 MSP430F541x 非 A 芯片内的 CRC 模块不支持在模块说明中讲到的位反转特 性.CRCDIRB 和 CRCRESR 寄存器及相应的功能 是不可用 的. 10.1 CRC 模块介绍 10.2 CRC 校验生成 10.3 CRC 模块寄存器 10.1 CRC模块介绍 该模块为数据的给定序列产生一个签名。该签名是通过来自数据的 0、4、11 和 15 位的反馈路径生成的(如表 10-1)。CRC 签名根据的是 CRC-CCITT-BR 多 项式中给出的多项式(见公式 10)。 图10-1 CRC-CCITT 标准的LFSR实现, 0位是结果的最高位 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–233–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM CRC 初始种子值相同时,相同的数据序列将生成相同的签名,反之不同的输 入数据序列生成的签名将会不一样。 10.2 生成CRC校验和 向 CRC 初始化和结果寄存器 CRCINIRES 中写入 16 位字(种子),将初始化 CRC 发生器。任何需要参与 CRC 运算的数据必须按照计算源 CRC 校验的相同顺序写 入 CRC 数据输入寄存器(CRCDI 或 CRCDIRB)。为了将计算得签名与期望的签名 相比较,可以从 CRCINIRES 寄存器中读出实际签名。 校验生成器描述了一种如何进行签名运算的方法。通过外部工具计算出来的 签名在下面内容中称为数据序列的校验和。该校验和存储于产品的存储器中, 用来检验 CRC 运算结果的正确性。 10.2.1 CRC实现 为了能够并行处理 CRC,线性反馈移位寄存器(LFSR)功能通过 XOR 树实现。 在低位首先移位,8 位数据移入后,与 LFSR 方法类似。生成签名的运算必须通 过将种子写入 CRCINIRES 寄存器开始。软件或硬件(例如,DMA)可将数据传输 到 CRCDI 或 CRCDIRB 寄存器(例如,从存储器)。CRCDI 或 CRCDIRB 内的值参与 CRC 校验运算,作为下一次读校验结果寄存器时的有效结果(CRCINIRES 和 CRCRESR)。可使用字模式或字节数据生成签名。 如果处理字形式数据,则在第一个时钟(MCLK)周期使用偶地址的低字节, 在第二个时钟周期时处理高字节,因此处理字形式数据需要花费两个时钟周期, 而处理字节形式数据则只需要消耗一个时钟周期就能完成。 在字模式或字节模式下写入到 CRCDIRB 的数据字节在 CRC engine 把字节加 到签名之前,位序是反向的。每个字节的位之间也是反向排列。在字模式或字 节模式下写入到 CRCDI 中的数据字节在 CRC 处理之前不是反向的。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–234–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 如果校验和自身(反向位序)参与 CRC 运算,那么 CRCINIRES 和 CRCRESR 寄存器中的结果必须为零。 图10-2使用CRCDI和CRCINIRES寄存器,完成CRC-CCITT 10.2.2 汇编例程 10.2.2.1 通用汇编例程 下面的范例说明了 CRC 模块的使用。 PUSH R4 ; Save registers PUSH R5 MOV #StartAddress,R4 ; StartAddress < EndAddress MOV #EndAddress,R5 MOV &INIT, &CRCINIRES ; INIT to CRCINIRES L1 MOV @R4+,&CRCDI ; Item to Data In register CMP R5,R4 ; End address reached? JLO L1 ; No MOV TST JNZ &Check_Sum,&CRCDI &CRCINIRES CRC_ERROR ; Yes, Include checksum ; Result = 0? ; No, CRCRES <> 0: error 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–235–页 共 423 页 ... POP POP LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM ; Yes, CRCRES=0: ; information ok. R5 ; Restore registers R4 10.2.2.2 参考数据序列 CRC 运算法则的详细情况如下面的数据序列所示。数据序列采用字或字节访问, 正向或反向的 CRC 数据字节寄存器。 Mov #0ffffh,&CRCINIRES Mov #00031h,&CRCCDI_L Mov #00032h,&CRCCDI_L Mov #00033h,&CRCCDI_L Mov #00034h,&CRCCDI_L Mov #00035h,&CRCCDI_L Mov #00036h,&CRCCDI_L Mov #00037h,&CRCCDI_L Mov #00038h,&CRCCDI_L Mov #00039h,&CRCCDI_L ; “1” ; “2” ; “3” ; “4” ; “5” ; “6” ; “7” ; “8” ; “9” Cmp #089f6h,&CRCINIRES Jeq &success Br &error Mov #0ffffH,&CRCINIRES Mov.w #03231h,&CRCDI Mov.w #03433h,&CRCDI Mov.w #03635h,&CRCDI Mov.w #03837h,&CRCDI Mov.b #039h,&CRCDI_L ; ; ”1”&”2” ; ”3”&”4” ; ”5”&”6” ; ”7”&”8” ; ”9” Cmp #089f6h,&CRCINIRES Jeq &success Br &error Mov #0ffffh,&CRCINIRES ; Mov #00031h,&CRCCDIRB_L ; “1” Mov #00032h,&CRCCDIRB_L ; “2” Mov #00033h,&CRCCDIRB_L ; “3” Mov #00034h,&CRCCDIRB_L ; “4” Mov #00035h,&CRCCDIRB_L ; “5” Mov #00036h,&CRCCDIRB_L ; “6” 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–236–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM Mov #00037h,&CRCCDIRB_L ; “7” Mov #00038h,&CRCCDIRB_L ; “8” Mov #00039h,&CRCCDIRB_L ; “9” Cmp #029B1h,&CRCINIRES Jeq &success Br &error Mov #0ffffH,&CRCINIRES Mov.w #03231h,&CRCDIRB Mov.w #03433h,&CRCDIRB Mov.w #03635h,&CRCDIRB Mov.w #03837h,&CRCDIRB Mov.b #039h,&CRCDIRB_L ; ”1”&”2” ; ”3”&”4” ; ”5”&”6” ; ”7”&”8” ; ”9” Cmp #029B1h,&CRCINIRES Jeq &success Br &error 10.3 CRC模块寄存器 CRC 模块寄存器如表 10-1 所示。基地址可在具体芯片的数据手册中找到。表 10-1 给出了地址偏移量。 表 10-1 CRC 模块寄存器 寄存器 缩写 CRC 数据输入 CRCDI CRCDI_L CRCDI_H CRC 数据输入反向字节 CRCDIRB CRCDIRB_L CRCDIRB_H CRC 初始化及结果 CRCINIRES CRCINIRES_L CRC 结果反向 CRCINIRES_H CRCRESR CRCRESR_L CRCRESR_H 读写类型 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 访问形式 字 字节 字节 字 字节 字节 字 字节 字节 字 字节 字节 初始状态 0000h 00h 00h 0000h 00h 00h FFFFh FFh FFh FFFFh FFh FFh CRCDI CRC 数据输入 15 14 13 12 11 10 9 7 6 5 4 公司地址:杭州市登云路 425 号利尔达大厦 CRCDI 3 Tel:0571-88800000 2 1 Fax:0571-89908080 8 0 第–237–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM CRCDI CRCDI Bits15-0 CRC 数据输入。根据 CRC-CCITT 标准,写入 CRCDI 的数据与 CRCINIRES 寄存器签名累加到一起。 CRCDIRB CRC 数据输入反向寄存器 15 14 13 12 11 10 9 8 CRCDIRB 7 6 5 4 3 2 1 0 CRCDIRB CRCDIRB Bits15-0 CRC数据反向输入。根据CRC-CCITT标准,写入CRCDI的数据与 CRCINIRES及CRCRESR寄存器签名累加到一起。 CRCINIRES CRC 初始化及结果寄存器 15 14 13 12 11 10 9 8 CRCINIRES 7 6 5 4 3 2 1 0 CRCINIRES CRCINIRES Bits15-0 CRC初始化以及结果。该寄存器保存的是当前CRC校验的结果。 如果对该寄存器进行写操作,将初始化与写入值的CRC计算,刚 写入的值可以通过读取CRCINIRES寄存器得到。 CRCRESR CRC 反向结果寄存器 15 14 13 12 11 10 9 8 CRCRESR 7 6 5 4 3 2 1 0 CRCRESR CRCRESR Bits15-0 CRC 结果寄存器。该寄存器保存的是当前 CRC 校验的结果。位 的 顺 序 与 CRCINIRES 寄 存 器 内 的 数 据 位 顺 序 相 反 ( 如 CRCRESR[0]= CRCINIRES[15])。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–238–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 第11章 看门狗定时器 看门狗定时器是一个 32 位的定时器,它既可以作看门狗又可作间隔定时器。本章介绍看门狗。所有 F5XX 系列的芯片中都有增强型看门狗定时器—WDT_A。 11.1 WDT_A 简介 11.2 WDT_A 的操作 11.3 WDT_A 寄存器 11.1 WDT_A简介 WDT_A 的主要功能是当程序发生异常时使系统重启。如果所选择的定时时间到了,则产生系统复位。 在应用中如不需要此功能,可将 WDT_A 配置成间隔定时器,在间隔时间到时产生中断。 WDT_A 特性包括: 2)8 种软件可选的定时时间 3)看门狗工作模式 4)定时器工作模式 5)带密码保护的 WDT 控制寄存器 6)时钟源可选择 7)为降低功耗,可停止 8)时钟失效保护 看门狗定时器的逻辑框图如图 11-1 注意:WDT_A 上电激活 在 PUC 后,WDT_A 自动配置成看门狗模式,SMCLK 作为时钟源,复位间隔时间为 32ms。 用户必须在初始定时间隔到来之前重新设置或停止看门狗。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–239–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图 11-1 看门狗定时器框图 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–240–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 11.2 操作WDT_A 可以通过 WDTCTL 寄存器选择将 WDT 模块配置成看门狗或普通定时器。WDTCTL 是一个带密码保 护的 16 位可读可写寄存器。必须用字操作指令对该寄存器执行读或写操作,写操作时高字节中必须包括 写入口令 05AH。不论 WDT 运行在哪种模式,对 WDTCTL 写入 05AH 之外的其他任何值,都与安全密钥 相冲突,将触发一个 PUC 系统复位。对 WDTCTL 读操作时,高字节读取结果为 069h。以字节方式读取 WDTCTL 的高字节或低字节部分时,读取结果为低字节的值。向 WDTCTL 的高字节或低字节进行字节写 操作时都将产生 PUC(上电清除)。 11.2.1 看门狗定时器计数器(WDTCNT) WDTCNT 是一个不能通过软件直接访问的 32 位增计数器。WDTCNT 的定 时间隔可以通过看门狗定时器控制寄存器(WDTCNT)来选择、控制。在一些芯 片内,WDTCNT 的时钟源可以为 SMCLK、ACLK、VLOCLK 和 X_CLK,可以 通过 WDTSSEL 位选择。WDTIS 用来选择定时间隔。 11.2.2 看门狗模式 在 PUC 后,WDT_A 自动配置成看门狗模式,SMCLK 作为时钟源,复位间隔时间为 32ms。用户必须在初 始定时间隔到来之前重新设置或停止看门狗,否则将再次产生 PUC。当 WDT 设置成看门狗模式 时,对 WDTCTL 写入错误的密码或设定的定时间隔结束,都将触发 PUC。PUC 后,WDT 进入默认状态。 11.2.3 间隔定时器模式 WDTTMSEL 设置为 1 时,WDT 工作在间隔定时器模式。该模式可产生周 期性中断,在间隔定时器模式下,定时间隔到了以后,WDTIFG 标志位置 1。间 隔定时器模式下,选择的定时间隔到时,不会产生 PUC,WDTIFG 使能位 WDTIE 保持不变。 当 WDTIE 位和 GIE 位置位时,WDTIFG 标志将请求中断。当中断请求被 响应时,WDTIFG 中断标志自动清除,WDTIFG 中断标志也可以通过软件清除。 间隔定时器模式下的中断向量地址不同于看门狗模式。 注意:修改看门狗定时器 修改定时器时间间隔应该与 WDTCNTCL 置 1 在一条指令中一起完成,以避免产生意外的立即 复位或中断。如果要改变时钟源,应先停止看门狗定时器,否则,可能产生不正确的定时间 隔。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–241–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 11.2.4 看门狗定时器中断 看门狗定时器使用特殊功能寄存器的 2 位用于中断控制。 ● WDT 中断标志—SFRIFG1.0 的 WDTIFG ● WDT 中断使能—SFRIFG1.0 的 WDTIE 在看门狗模式下,WDTIFG 标志位将触发复位向量中断。复位中断服务程 序使用 WDTIFG 判断看门狗是否引起芯片复位。如果标志置位,看门狗定时器 通过定时失效或非法安全密钥初始化复位条件。如果 WDTIFG 清零,说明是其 它原因引起系统复位。 在间隔定时器模式下,如果 WDTIE 标志和 GIE 标志置位,设定的间隔时间 到时,WDTIFG 标志置位并请求看门狗间隔定时中断。间隔定时中断向量与看 门狗模式下的复位向量不同。在间隔定时器模式下,当响应中断请求时,WDTIFG 标志会自动清除,也可以通过软件清除 WDTIFG 标志。 11.2.5 时钟失效保护特性 WDT_A 提供了一个在时钟失效下的安全保护功能,以保证在看门狗模式 下,不会禁止 WDT_A 时钟。这意味着,WDT_A 时钟选择可能会影响系统的低 功耗模式。 如果选择 SMCLK 或 ACLK 作为 WDT_A 时钟源失效时,将自动选择 VLOCLK 作为 WDT_A 时钟源。 在间隔定时器模式下,WDT_A 时钟源选择时没有时钟失效保护特性。 11.2.6 低功耗模式下的操作 MSP430 系列单片机有多种低功耗模式。在不同低功耗模式下,可使用不同 的时钟信号。实际应用的需求和时钟类型决定了应该如何设置 WDT_A。例如, 当时钟为来源于 DCO、高频模式的 XT1 或 XT2 的 SMCLK 或 ACLK 时,如果 用户如果想使用低功耗模式 3,则 WDT_A 不应设置为看门狗模式。在这种情况 下,SMCLK 或 ACLK 保持使能,增加了 LMP3 模式下的功耗。当不需要看门 狗定时器时,可使用 WDTHOLD 位来停止看门狗计数器 WDTCNT,以降低功 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–242–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 耗。 11.2.7 软件举例 任何对 WDTCTL 的写操作,必须按字操作,且高字节为 05Ah(WDTPW)。 ;周期性清除一个活动的看门狗 MOV #WDTPW+WDTCNTCL, &WDTCTL ; ;改变看门狗定时间隔 MOV #WDTPW+WDTCNTCL+SSEL, &WDTCTL ; ;停止看门狗 MOV #WDTPW+WDTHOLD, #WDTCTL ; ;修改看门狗模式到间隔定时器模式,间隔为 CLK/8192 MOV #WDTPW+WDTCNTCL+WDTMSEL+WDTIS2+WDTIS0, &WDTCTL 11.3 WDT_A 寄存器 看门狗定时器模块寄存器如表 11-1 所列。可以在数据手中查的册基本寄存器、WDT 模块寄存器及特 殊功能寄存器(SFRs)。表 11-1 给出了地址偏移。 表 11-1 看门狗模块寄存器 寄存器 缩写 读写类型 访问形式 初始状态 看门狗定时器控 WDTCTL 读/写 字 6904h 制寄存器 WDTCTL_L 读/写 字节 04h WDTCTL_H 读/写 字节 69h WDTCTL 看门狗定时器控制寄存器 15 14 13 12 11 10 9 8 读的结果是 69h ,写的时候必须写 05Ah 7 6 5 4 3 2 1 0 WDTHOLD WDTSSEL WDTTMSEL WDTCNTCL WDTIS WDTPW Bits15-8 看门狗密钥,读出值是 0x69,写时必须为 0x5A,否则将产生 PUC。 WDTHOLD Bit7 看门狗定时器停止,该位停止看门狗定时器,看门狗不在低功耗 模式时,设置WDTHOLD=1。 0 没有停止看门狗 1 停止看门狗 WDTSSEL Bits6-5 看门狗时钟源选择 00 SMCLK 01 ACLK 10 VLOCLK 11 X_CLK 如果数据手册里里没有不同定义与 VLOCLK 相同 WDTTMSEL Bit4 工作模式选择 0 看门狗模式 1 间隔定时器模式 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–243–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM WDTCNTCL Bit3 WDTIS Bits2-0 看门狗计数器清零。当 WDTCNTCL=1 时,看门狗计数器值清零。 WDTCNTCL 位自动复位。 0 无动作 1 WDTCNT 计数器清 0. 看门狗定时间隔选择。这些位可以选择置位 WDTIFG 或者产生 PUC 的看门狗定时间隔。 000 看门狗时钟源/2G (18:12:16 at 32 kHz ) 001 看门狗时钟源/128M (01:08:16 at 32 kHz) 010 看门狗时钟源/8192k (00:04:16 at 32 kHz ) 011 看门狗时钟源/512k (00:00:16 at 32 kHz) 100 看门狗时钟源/32k (1 s at 32 kHz ) 101 看门狗时钟源/8192 (250 ms at 32 kHz ) 110 看门狗时钟源/512 (15,6 ms at 32 kHz) 111 看门狗时钟源/64 (1.95 ms at 32 kHz) 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–244–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 第12章 定时器 TimerA Timer_A 是带有多路捕获/比较寄存器的 16 位定时/计数器。具体的芯片中可能会有多个 Timer_A(见具 体芯片的数据手册)。本章将介绍 Timer_A 模块的操作及使用。 目录 12.1 Timer_A 介绍 12.2 Timer_A 操作 12.3 Timer_A 寄存器 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–245–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 12.1 Timer_A介绍 Timer_A 是 16 位的定时计数器,捕获/比较寄存器多达 7 个。Timer_A 支持多路捕获/比较,PWM 输出 及间隔定时。Timer_A 有很广泛的中断能力。中断可产生于溢出条件下的定时器及每一个捕获/比较寄存器。 Timer_A 特性包括: l 带有 4 种操作模式的异步 16 位定时/计数器 l 时钟源可选择,可配置 l 可配置捕获/比较寄存器数多达 7 个 l 有 PWM 输出功能的可配置输出 l 异步输入和同步锁存 l 对 Timer_A 中断快速响应的中断向量寄存器 Timer_A 的框图如图 12-1 所示。 图 12-1 Timer_A 框图 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–246–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 12.2 Timer_A操作 Timer_A 模块可通过软件配置。Timer_A 的启动和操作将在下面的章节中讨论。 12.2.1 16位定时计数器 16 位定时/计数寄存器——TAxR,随着每个时钟信号的上升沿增大或者减小(取决于操作模式)。TAxR 可通过软件读或者写。另外,当定时器溢出时,将产生中断。 TACLR 位置位可以清除 TAxR。当计数器工作在增/减计数模式时,置位 TACLR 还可以清除时钟分频 器和计数方向。 注意:修改 Timer_A 寄存器 建议在修改寄存器的操作(中断使能,中断标志,TACLR 的操作除外)前,应先停止计数器, 以避免产生错误操作条件。 当 TACLK 与 CPU 时钟不同步时,任何对 TAxR 的读操作将会导致要么定时器不运行,要么结 果不可预料。另外,可以对正在运行的定时器多读几次,软件上采用多数表决的方法得到正确 的读数。对 TAxR 写操作立即生效。 12.2.1 时钟源的选择和分频 定时器时钟 TACLK 可以选择 ACLK,SMCLK 或者来自外部的 TAxCLK。时钟源由 TASSELx 位来选 择。选择的时钟源可以直接传到定时器,或通过 IDx 位设置进行 2,4,8 分频,选择的时钟源甚至可以通 过 IDEXx 设置进行 2, 3, 4, 5, 6, 7 或者 8 分频。当 TACLR 置位时,定时器时钟分频器复位。 注意:Timer_A 分频器 TACLR 位置位将会清除 TAxR 的内容及复位分频器。时钟分频器作为减计数器,因此,当 TACLR 清 零时,定时器时钟在 TASSEL 选择的 Timer_A 时钟源的第一个上升沿立即开始计数,在 ID 和 IDEx 设 置的分频器内继续计数。 12.2.2 启动计数器 计数器可以下面的方式启动或重启: l MCx>0 并且时钟源在活动状态时,定时器开始计数 l 定时模式为增计数模式或者增/减计数模式时,对 TAxCCR0 写 0 可以停止定时器。可以通过对 TAxCCR0 写入一个非零值重新开始计数。此时,定时器将从零开始进行增计数。 12.2.3 定时器模式控制 定时器有四种操作模式:停止、增计数、连续计数和增减计数模式(见表 12-1)。由 MCx 位来选择操作 模式。 表 12-1 定时器模式 MCx 模式 说明 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–247–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 00 停止模式 01 增计数模式 10 连续计数模式 11 增/减计数模式 定时器停止 定时器重复从 0 计数到 TAxCCR0 定时器器重复从 0 计数到 0FFFFh 定时器重复从 0 增计数到 TAxCCR0 再减计数到 0 12.2.3.1 增计数模式 增计数模式用于计数周期不是 0FFFFh 的情况。定时器将重复计数到定义周期的寄存器 TAxCCR0,因此 TAxCCR0 的值将决定计数周期(见图 12-2)。定时器的计数值为 TAxCCR0+1。当定时器的值与 TAxCCR0 相等时,定时器重新从零开始计数。当定时器 TAxR 的值大于 TAxCCR0 时选择增计数模式,定时器 TAxR 将立即重新从 0 开始计数。 图 12-2 增计数模式 当定时器计数到 TAxCCR0 时,中断标志 TAxCCR0 CCIFG 置位。当计数器由 TAxCCR0 计数到 0 时, 中断标志 TAIFG 置位。图 12-3 表示了标志位的置位情况。 图 12-3 增计数模式标志位的置位 改变周期寄存器 TAxCCR0 定时器正在运行时改变 TAxCCR0,如果新的计数周期大于或者等于旧的计数周期或者大于当前计数值, 定时器将一直计数到新的计数周期。如果新的计数周期小于当前计数值,计数值将减至 0。但是,在定时 器回到 0 之前会有一次计数。 12.2.3.2 连续计数模式 在连续计数模式中,定时器重复增计数到 0FFFFh,然后从 0 开始重新计数,如图 12-4 所示。此时捕获/ 比较寄存器 TAxCCR0 和其它捕获/比较寄存器相同的方式工作。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–248–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图 12-4 连续计数模式 当定时器从 0FFFFh 计数到 0 时,中断标志 TAIFG 置位,图 12-3 表示了标志位的置位情况。 图 12-5 连续计数模式标志位的置位 12.2.3.2 连续计数模式的应用 连续计数模式可用来产生独立的时间间隔和输出频率。每个时间间隔完成时,产生一个中断。在中断服 务子程序里,将下一个时间间隔的值加到 TAxCCRn 寄存器。图 12-6 所示为两个独立的时间间隔 t0 和 t1 加到捕获/比较寄存器的情况。在此应用中,时间间隔由硬件控制,而不是软件,避免了中断延时的影响。 使用捕获/比较寄存器,最多可以产生 n(n=0~6)个独立的时间间隔或者输出频率。 图 12-6 连续计数模式的时间间隔 当 TAxCCR0 作为计数周期寄存器时,定时间隔也可以由其它模式产生。由于之前的 TAxCCRn 的值与 新定时周期之和可能比 TAxCCR0 的值大,因此它们的处理会复杂的多。当以前的 TAxCCRn 值加上 tx 大 于 TAxCCR0 值时,为了得到正确的定时间隔,必须减去 TAxCCR0。 12.2.3.4 增/减计数模式 在定时周期不同于 0FFFFh 且需要产生对称脉冲的情况下使用增减计数模式。定时器重复地增计数到 TAxCCR0,然后反向减计数到 0(见图 12-7)。计数周期是 TAxCCR0 值的 2 倍。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–249–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图 12-7 增减计数模式 计数方向是锁定的。这允许定时器停止后按照停止前的计数方向重新启动。如果不需要这样,必须置位 TACLR 位,来清除计数方向。同时 TACLR 位也将清除 TAxR 值和 TACLK 分频器。 在增减计数模式下,中断标志 TAxCCR0 CCIFG 和 TAIFG 在一个周期内仅置位一次,且被 1/2 计数周 期分隔。当定时器 TAxR 的值从 TAxCCR0-1 增计数到 TAxCCR0 时,中断标志 TAxCCR0 CCIFG 置位,当 定时器从 0001h 减计数到 0000h 时,中断标志 TAIFG 置位。图 12-8 表示了标志位的置位情况。 图 12-8 增减计数模式标志位的置位 改变周期寄存器 TAxCCR0 当计数器正在运行且在减计数方向时改变 TAxCCR0 的值,定时器将会继续减计数方向到 0。定时器减 到 0 后,新的周期才有效。 当定时器在增计数方向,如果新的计数周期大于或者等于原来的计数周期,或者比当前的计数值大,定 时器会增计数到新的计数周期,再反向计数。如果新的计数周期小于当前的计数值,则定时器将立即开始 减计数。但是,在定时器减计数之前有一个额外的计数。 12.2.3.5 增减计数模式的应用 增减计数模式用于在输出信号之间需要死区时间的情况(见 Timer_A 输出章节)。如,为了避免过载情 况,驱动一个 H 桥的两路输出不能同时为高。图 12-9 的例子中描述的死区时间 tdead 为: tdead = ttimer × (TAxCCR1 – TAxCCR2) 其中: Tdead——死区时间 Ttimer——定时器的时钟周期 TAxCCRn——捕获/比较寄存器 n 的值 TAxCCRn 寄存器没有缓冲,它们写入 0 时立即更新。因此,任何需要的死区时间都不会自动保持。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–250–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图 12-9 增/减计数模式的输出单元 12.2.4 捕获/比较模块 Timer_A 中,有多达 7 个的相同捕获/比较模块 TAxCCRn(n=0 到 6)。每个模块都可用于捕获定时器数据 或者产生定时间隔。 12.2.4.1 捕获模式 当 CAP=1 时,选择捕获模式。捕获模式用来记录时间事件。它可用于速度计算或时间测量。捕获输入 CCIxA 和 CCIxB 可以连接到外部管脚或者内部信号,由 CCISx 位选择。CMx 位选择输入信号的上升沿、 下降沿或者上升沿和下降沿作为捕获沿。在所选择的输入信号的触发沿时,产生捕获。捕获产生时: l 定时器的值被复制到 TAxCCRn 寄存器 l 中断标志 CCIFG 置位 输入信号电平可以通过 CCI 位在任意时刻读取。芯片可以有不同的信号连接到 CCIxA 和 CCIxB。可通 过芯片数据手册了解连接信号的情况。 捕获信号和定时器时钟异步,可能产生时间竞争。置位 SCS 位,将使捕获与下一定时时钟同步。建议置 位 SCS 位,同步捕获信号和定时器时钟(见图 12-10)。 图 12-10 捕获信号(SCS=1) 注:改变捕获输出 捕获模式下,改变捕获输入将有可能产生意外的捕获。为了避免这种情况,应当在捕获模式禁止(CM = 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–251–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM {0} or CAP = 0)的情况下改变捕获输入。 在每一捕获/比较寄存器中,提供给了第一次捕获值读出之前,产生第二次捕获的溢出逻辑。当这种情 况发生时,COV 位置位,如图 12-11 所示。COV 位必须通过软件清除。 图 12-11 捕获循环 软件产生捕获 软件可以产生捕获。CMx 位选择双沿捕获。软件设置 CCIS1=1,反转 CCIS0 位在 VCC 和 GND 之间切 换捕获信号。每次 CCIS0 改变状态,就产生捕获: MOV XOR #CAP+SCS+CCIS1+CM_3,&TACCTLx ;Setup TACCTLx #CCIS0,&TACCTLx ;TACCTLx = TAxR 注:软件产生捕获 通常,捕获模式下改变捕获输入模式将有可能产生一次意外的捕获事件。在 VCC 和 GND 之间切换时, 不需要禁止捕获状态。 12.2.4.2 比较模式 当 CAP=0 时,选择比较模式。比较模式用来产生 PWM 输出信号或者特定的定时中断。当 TAxR 计数到 TAxCCRn(n 代表具体的捕获比较寄存器)的值时: l 中断标志 CCIFG 置位 l 内部信号 EQUx=1 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–252–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM l EQUx 根据输出模式影响输出 l 输入信号 CCI 被锁存在 SCCI 12.2.5 输出单元 每个捕获/比较模块都包含一个输出模块。输出模块用于产生输出信号,如 PWM 信号。每个输出单元有 8 种操作模式,可以产生基于 EQU0 和 EQUx 的信号。 12.2.5.1 输出模式 OUTMODx 位定义输出模式,如表 12-2 所示。除模式 0 外,其他所有模式下,EQUx 根据定时器时钟的 上升沿而发生变化。输出模式 2、3、6 和 7 不适合输出单元 0,因为 EQUx=EQU0。 表 12-2 输出模式 OUTMODx 模式 说明 000 输出 输出信号取决与寄存器 CCTLx 中的 OUTn 位。当 OUTn 更新时,输出信号立即 更新。 001 置位 输出信号在定时器计数到 TAxCCRn 时置位,并保持置位直到定时器复位或者另 外的输出模式被选择并影响输出为止。 010 翻转/复位 输出在定时器计数到 TAxCCRn 时翻转,在定时器计数到 TAxCCR0 时复位。 011 置位/复位 输出在定时器计数到 TAxCCRn 时置位,在定时器计数到 TAxCCR0 时复位。 100 翻转 输出在定时器计数到 TAxCCRn 时翻转,输出周期是定时器周期的两倍 101 复位 输出在定时器计数到 TAxCCRn 时复位,并保持复位直到另外的输出模式被选择 并影响输出为止。 110 翻转/置位 输出在定时器计数到 TAxCCRn 时翻转,在定时器计数到 TAxCCR0 时置位。 111 复位/置位 输出在定时器计数到 TAxCCRn 时复位,在定时器计数到 TAxCCR0 时置位。 输出举例——定时器处于增计数模式 当定时器增计数到 TAxCCRn 或者从 TAxCCR 到 0 时,OUTn 信号按照输出模式变化。图 12-12 示例中 使用了 TAxCCR0 和 TACCR1。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–253–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图 12-12 输出举例——定时器处于增计数模式 输出举例——定时器处于连续计数模式 当定时器计数到 TAxCCRn 和 TAxCCR0 时,OUTn 按选定的输出模式变化。图 12-13 所示,该例使用 TAxCCR0 和 TACCR1。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–254–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图 12-13 输出举例——定时器处于连续计数模式 输出举例——定时器处于增/减计数模式 当定时器在任意计数方向上等于 TAxCCRn 及等于 TAxCCR0 时,OUTn 按选定的输出模式变化。图 12-14 所示,该例使用 TAxCCR0 和 TACCR1。 图 12-14 输出举例——定时器处于增减计数模式 注意:切换输出模式 切换输出模式时,在转换过程中 OUTMODx 至少有一个位需要置位,除非切换到模式 0。否则,由 于或非门解码输出模式 0,会产生输出抖动。输出模式间切换的比较安全的方法是使用模式 7 作 为切换的过度状态: BIS #OUTMOD_7,&TACCTLx ;Set output mode=7 BIC #OUTMODx,&TACCTLx ;Clear unwanted bits 12.2.6 Timer_A中断 与 16 位 Timer_A 相关的有两个中断向量: l TAxCCR0 CCIFG 的 TAxCCR0 中断向量 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–255–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM l 其它 CCIFG 标志和 TAIFG 共享一个 TAIV 中断向量 在捕获模式下,当定时器值被捕获到相应的 TAxCCRn 寄存器时,CCIFG 标志将置位。在比较模式下,如 果 TAxR 计数到相应的 TAxCCRn 值时,CCIFG 标志也将置位。软件也可以置位或者清除 CCIFG 标志。当相应 的 CCIE 位和 GIE 位置位时,所有的 CCIFG 标志将会产生中断请求。 12.2.6.1 TAxCCR0中断 TAxCCR0 CCIFG 是 Timer_A 中优先级最高的中断,并且有一个专用的中断向量,如图 12-15 所示。当中 断请求被响应时,TAxCCR0 CCIFG 标志自动复位。 图 12-15 捕获/比较 TAxCCR0 中断标志 12.2.6.2 TAIV,中断向量发生器 TACCR1 CCIFG,TACCR2 CCIFG 和 TAIFG 按照优先次序结合共用一个中断向量。中断向量寄存器用 于确定哪个标志请求中断。 允许的最高优先级中断能够在 TAIV 寄存器中产生一个数字偏移量(见寄存器说明章节)。这个偏移量字 可以加到程序计数器上,从而使系统进入相应的中断服务程序。禁止的 Timer_A 中断不影响 TAIV 的值。 对 TAIV 的任何访问读或写,都会自动复位挂起的最高优先级中断标志。如果另外的一个中断标志置位, 在响应最初的中断后,立即产生另一中断。例如,当中断服务子程序访问 TAIV 寄存器时,如果 TACCR1 和 TACCR2 的 CCIFG 标志都置位,TACCR1 的 CCIFG 标志自动复位。在中断服务子程序的 RETI 指令执行完后, TACCR2 的 CCIFG 标志将会产生另外一个中断。 TAIV 软件示例 下面的所示的软件代码为推荐的 TAIV 使用和操作方法。TAIV 值加到 PC 上,从而自动地跳转到相应的子 程序。范例假定最大定时器配置的单一情况。 在右边的数字表示每条指令执行所必需的 CPU 周期。不同中断源的软件执行时间包含了中断延时和中断 返回周期,而不是中断处理本身。延时时间是: l 捕获/比较模块 TAxCCR0: l 捕获/比较模块 TACCR1,TACCR2: l 定时器溢出 TAIFG: 11 个周期 16 个周期 14 个周期 ;Interrupt handler for TAxCCR0 CCIFG. Cycles CCIFG_0_HND 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–256–页 共 423 页 ; ... LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM ;Start of handler IntTAxRupt latency 6 RETI 5 ;Interrupt handler for TAIFG, TACCR1 and TACCR2 CCIFG. TA_HND ... ;Interrupt latency 6 ADD &TAIV,PC ;Add offset to Jump table 3 RETI ;Vector 0: No interrupt 5 JMP CCIFG_1_HND ;Vector 2: TACCR1 2 JMP CCIFG_2_HND ;Vector 4: TACCR2 2 RETI ;Vector 6: Reserved 5 RETI ;Vector 8: Reserved 5 RETI ;Vector 10: Reserved 5 RETI ;Vector 12: Reserved 5 TAIFG_HND ... ;Vector 14: TAIFG Flag ;Task starts here RETI TAxR 5 CCIFG_2_HND ;Vector 4: TACCR2 ... ;Task starts here RETI TAxR ;Back to main program 5 CCIFG_1_HND ;Vector 2: TACCR1 ... ;Task starts here RETI TAxR ;Back to main program 5 12.3 Timer_A寄存器 最大配置可用的 Timer_A 寄存器在表 12-3 中列出。基地址见具体芯片的数据手册。表 12-3 列出了偏移 地址。 表 12-3 Timer_A 寄存器 寄存器 缩写 读写类型 访问形式 Timer_A 控制器 TACTL 读/写 字 TACTL_L 读/写 字节 TACTL_H 读/写 字节 Timer_A 捕获/比较控制器 0 TACCTL0 读/写 字 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 初始状态 0000h 00h 00h 0000h 第–257–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM Timer_A 捕获/比较控制器 1 Timer_A 捕获/比较控制器 2 Timer_A 捕获/比较控制器 3 Timer_A 捕获/比较控制器 4 Timer_A 捕获/比较控制器 5 Timer_A 捕获/比较控制器 6 Timer_A 计数器 Timer_A 捕获/比较 0 Timer_A 捕获/比较 1 Timer_A 捕获/比较 2 Timer_A 捕获/比较 3 Timer_A 捕获/比较 4 Timer_A 捕获/比较 5 Timer_A 捕获/比较 6 Timer_A 中断向量 TACCTL0_L TACCTL0_H TACCTL1 TACCTL1_L TACCTL1_H TACCTL2 TACCTL2_L TACCTL2_H TACCTL3 TACCTL3_L TACCTL3_H TACCTL4 TACCTL4_L TACCTL4_H TACCTL5 TACCTL5_L TACCTL5_H TACCTL6 TACCTL6_L TACCTL6_H TAxR TAxR_L TAxR_H TAxCCR0 TAxCCR0_L TAxCCR0_H TAxCCR1 TAxCCR1_L TAxCCR1_H TAxCCR2 TAxCCR2_L TAxCCR2_H TAxCCR3 TAxCCR3_L TAxCCR3_H TAxCCR4 TAxCCR4_L TAxCCR4_H TAxCCR5 TAxCCR5_L TAxCCR5_H TAxCCR6 TAxCCR6_L TAxCCR6_H TAxIV 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 字节 字节 字 字节 字节 字 字节 字节 字 字节 字节 字 字节 字节 字 字节 字节 字 字节 字节 字 字节 字节 字 字节 字节 字 字节 字节 字 字节 字节 字 字节 字节 字 字节 字节 字 字节 字节 字 字节 字节 字 00h 00h 0000h 00h 00h 0000h 00h 00h 0000h 00h 00h 0000h 00h 00h 0000h 00h 00h 0000h 00h 00h 0000h 00h 00h 0000h 00h 00h 0000h 00h 00h 0000h 00h 00h 0000h 00h 00h 0000h 00h 00h 0000h 00h 00h 0000h 00h 00h 0000h 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–258–页 共 423 页 Timer_A 扩展 0 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM TAxIV_L TAxIV_H TAxEX0 TAxEX0_L TAxEX0_H 读/写 读/写 读/写 读/写 读/写 字节 字节 字 字节 字节 00h 00h 0000h 00h 00h TACTL,Timer_A 控制寄存器 15 14 13 12 保留 7 6 5 4 IDx MCx 11 3 保留 10 2 TACLR 9 8 TASSELx 1 0 TAIE TAIFG TASSELx Bits9-8 IDx Bits7-6 MCx Bits5-4 TACLR Bit2 TAIE Bit1 TAIFG Bit0 Timer_A 时钟源选择 00 TACLK 01 ACLK 10 SMCLK 11 INCLK 输入分频器。这些位和 IDEXx 位一起选择输入时钟的分频。 00 /1 01 /2 10 /4 11 /8 模式控制。当 Timer_A 不用于节电模式时,设置 MCx=00h。 00 停止模式:定时器是停止的。 01 增计数模式:定时器增计数到 TAxCCR0 10 连续计数模式:定时器增计数到 0FFFFh 11 增减计数模式:定时器增计数到 TAxCCR0 然后减计到 0000h Timer_A 清零。置位该位将复位 TAxR,TACLK 分频和计 数方向。该位会自动复位,且读出的值为 0。 Timer_A 中断允许位。该位使能 TAIFG 中断请求。 0 中断禁止 1 中断使能 Timer_A 中断标志位。 0 无中断挂起 1 有中断挂起 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–259–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM TAxR,Timer_A 寄存器 15 14 13 12 11 10 9 8 TAxR 7 6 5 4 3 2 1 0 TAxR TAxRx Bits15-0 Timer_A 寄存器。TAxR 寄存器是 Timer_A 的计数器。 TACCTLx,捕获/比较控制寄存器 15 14 13 12 CMx CCISx 7 6 5 4 OUTMODx CCIE 11 SCS 3 CCI 10 SCCI 2 OUT 9 保留 1 COV 8 CAP 0 CCIFG CMx Bits15-14 捕获模式。 00 禁止捕获模式 CCISx Bits13-12 01 上升沿捕获 10 下降沿捕获 11 上升沿与下降沿都捕获 捕获/比较输入选择。这些位选择 TAxCCRn 输入信号。参阅具体 芯片的数据手册,选择信号的连接。 00 CCIxA 01 CCIxB 10 GND SCS SCCI Bit11 Bit10 11 Vcc 同步捕获源。该位用来同步定时器时钟和捕获信号。 14、异或捕获 1 同步捕获 同步捕获/比较输入。所选择的 CCI 输入信号由 EQUx 锁存,并可 通过该位读出。 CAP Biit8 OUTMODx Bits7-6 CCIE Bit4 捕获模式 l 比较模式 l 捕获模式 输出模式。由于 EQUx=EQU0,模式 2,3,6 和 7 不适用于 TAxCCR0 000 OUT 位的值 001 置位 010 翻转/复位 011 置位/复位 100 翻转 101 复位 110 翻转/置位 111 复位/置位 捕获/比较中断使能。该位使能相应的 CCIFG 标志的中断请求。 0 中断禁止 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–260–页 共 423 页 CCI OUT COV CCIFG LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 1 中断使能 Bit3 捕获/比较输入。选择的输入信号能够通过该位读出 Bit2 输出信号。对于模式 0,该位直接控制输出状态。 0 输出低电平 1 输出高电平 Bit1 捕获溢出标志。该位表示一个捕获溢出发生。COV 位必须软件复位。 0 没有捕获溢出发生 1 捕获溢出发生 Bit0 捕获/比较中断标志 0 没有中断挂起 1 有中断挂起 TAIV,Timer_A 中断向量寄存器 15 14 13 12 11 10 9 8 0 0 0 0 0 0 0 0 7 6 5 4 3 2 1 0 0 0 0 0 TAIV 0 TAIVx Bits15-0 Timer_A 中断向量值 TAIV 值 中断来源 00h 02h 捕获/比较 1 04h 捕获/比较 2 06h 捕获/比较 3 08h 捕获/比较 4 0Ah 捕获/比较 5 0Ch 捕获/比较 6 0Eh 定时器溢出 中断标志 TAxCCR1 CCIFG TAxCCR2 CCIFG TAxCCR3 CCIFG TAxCCR4 CCIFG TAxCCR5 CCIFG TAxCCR6 CCIFG TAxCTL TAIFG 中断优先级 最高 最低 TAEX0,Timer_A 扩展寄存器 0 15 14 13 7 6 5 保留 12 11 保留 4 3 10 9 8 2 1 0 IDEX IDEX Bits2-0 输入分频器扩展。这些位和 Idx 位一起选择输入时钟的分频。 000 /1 001 /2 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–261–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 010 /3 011 /4 100 /5 101 /6 110 /7 111 /8 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–262–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 第14章 RTC 控制器 实时时钟模块(RTC)提供带日历、可编程闹钟和校准功能的时钟计数器。本章主要介绍RTC_A模块。 14.1 RTC_A 介绍 14.2 RTC_A 操作 14.3 RTC_A 寄存器 14.1 RTC_A介绍 RTC_A 模 块 既 可 以 提 供 实 时 时 钟 和 日 历 功 能 , 也 可 以 配 置 成 一 般 的 通 用 计 数 器 。 RTC_A的特点包括: l 可配置成具有日历功能的实时时钟或者一般通用计数器 l 在具有日历功能的实时时钟模式中,提供了秒,分,小时,星期,日 期,月份 和年份 l 具有中断能力 l 实时时钟模式下可选择 BCD 或者二进制格式 l 实时时钟模式下具有可编程闹钟功能 l 实时时钟模式下具有时间偏差的校正逻辑 RTC_A的框图如图 14-1所示。 注意:实时时钟初始化 大多数实时时钟模块寄存器没有初始状态。在使用之前,用户必须通过软件对寄存器进 行配置。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–263–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图 14-1 RTC_A 14.2 RTC_A操作 通过RTCMODE模式位可以将RTC_A模块配 置 成 具 有日 历模 式的 实时时钟, 或 32位的通用计 数器。 14.2.1 计数器模式 当RTCMODE复位时,选择的是计数器模式。该模式提供了1个软件可以直接 访问的32位计数器。从日历模式切换到计数器模式会使计数值(RCTNT1 , RCTNT2,RCTNT3,RCTNT4)及预分频计数器(RT0PS,RT1PS)复位。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–264–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 使计数增加的时钟源可以是ACLK、SMCLK或者是分频之后的ACLK 或 SMCLK。分频后的ACLK 或 SMCLK 来自分频器(RT0PS和RT1PS)分频后的 ACLK或SMCLK。RT0PS和RT1PS分别输出 ACLK 和 SMCLK 的2分频、4分频、 8分频、16分频、32分频、64分频、128分频、256分频。RT0PS 的输出可以与 RT1PS 级联。级联后的输出可作为 32 位计数器的时钟源输入。 4个单独的8位计数器可以级联做为32位计数器使用。这提供了计数器时钟的8 位、16位、24位、32位溢出时间间隔。RTCTEV位选择各自的触发事件。一个 RTCTEV 事 件 通 过 置 位 RTCTEVIE 位 可 触 发 一 次 中 断 。 可 以 单 独 访 问 计 数 器 RTCNT1到RTCNT4,也可对它们进行写操作。 RT0PS和RT1PS可以配置成两个8位的计数器,或者级联成一个16位的计数 器。分别置位RT0PSHOLD和RT1PSHOLD位,可以分别停止RT0PS和RT1PS。当 RT0PS和RT1PS级联的时候,置位RT0PSHOLD同时停止RT0PS和RT1PS。32位计 数器根据配置可以有几种停止方法。如果32位计数器时钟直接来自ACLK或者 SMCLK,则可以通过置位 RTCHOLD停止计数器;如果它是源于RT1PS输出, 则 可 以 通 过 置 位 RT1PSHOLD 或 RTCHOLD 停 止 ; 最 后 , 如 果 它 源 于 RT0PS 和 RT1PS的级联输出,则通过置位RT0PSHOLD、RT1PSHOLD或者RTCHOLD停止。 注意:访问RTCNT1, RTCNT2, RTCNT3, RTCNT4, RT0PS, RT1PS寄存器 如果计数器时钟与CPU时钟异步,当计数器不工作时,应当对 RTCNT1, RTCNT2, RTCNT3, RTCNT4, RT0PS, RT1PS进行读数据操作。否则,结 果有可能是无法 预知的。另外,计数器运行的时候,可以通过 软件多次读取再用多 数决的方式获取正确结果。对这些寄存器 的写操作立即生效。 14.2.2 日历模式 当置位RTCMODE时,选择 日历模式。日历模式可以选择BCD或十六进制方 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–265–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 式提供秒、分、小时、星期、日期、月份和年份。日历模式可以通过计算所有 年份是否能被4整除计算闰年。这个算法从1901年到2099年都是准确的。 14.2.2.1 实时时钟和预分频器 预分频器RT0PS和RT1PS自动配置为RTC_A提供1秒时钟间隔。RT0PS时钟源于 ACLK。为了方便RTC_A日历的操作,ACLK必须设置为32768Hz(通常情况)。 RT1PS与ACLK进行256分频后的RT0PS级联。RTC_A时钟源自RT1PS的128分频后 输出,因此提供了需要的1秒时间间隔。从计数器模式切换到日历模式时,会清除 秒、分、小时、星期和年份的计数,日期和月份置1。另外,RT0PS和RT1PS也会 清零。 当RTCBCD=1时,日历寄存器就会选择使用BCD码格式。输出格式必须在时 间设置之前选择。改变 RTCBCD的状态会清除秒、分、小时、星期和年份,将日 期和月份置1。另外,RT0PS和RT1PS也会清零。 在 日 历 模 式 下 ,不 必 考 虑 RT0SSEL 、RT1SSEL 、RT0PSDIV 、RT1PSDIV 、 RT0PSHOLD、RT1PSHOLD和RTCSSEL位。置位RTCHOLD将停止实时计数器、 预分频计数器RT0PS 、RT1PS。 14.2.2.2 实时时钟闹钟功能 RTC_A模块提供一个灵活的闹钟系统。可以在闹钟寄存器内对分、小时、星 期、日期设置的基础上对这个单独的、用户可编程控制的闹钟编程。该闹钟功 能只在日历模式下有效。 每一个闹钟寄存器包含一个闹钟使能位(AE),可使能相应的闹钟寄存器。 通过设置不同闹钟寄存器的AE位,可以产生各种闹钟。 例1:如果用户需要在每个小时的15分钟时,即00:15:00、01:15:00、02: 15:00等,闹铃响一次。这只要将RTCAMIN设置成15即可。置位RTCAMIN的 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–266–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM AE位,清除闹钟寄存器的其它AE位,就可使能闹钟。此时,AF位就会在00: 14:59到00:15:00、01:14:59到01:15:00、02:14:59到02:15:00时 置位。 例2:如果用户希望在每天00:04:00时闹钟响起,将RTCAHOUR位设置成 4即可。置位RTCHOUR的AE位,清除闹钟寄存器的所有其它AE位,就可使能 闹钟。此时,AF就会在03:59:59到04:00:00时置位。 例3:如果用户希望设置在06:30:00闹钟响起,将RTCAHOUR设置成6, 将RTCAMIN 设置成30即可。置位RTCAHOUR和RTCAMIN的AE位,即可使能 闹钟。一旦闹钟使能,AF位将会在从06:29:59到06:30:00的时间计数转变 时刻置位。此时,闹钟会在每天06:30:00响起。 例4:如果用户希望设置一个每个星期二的06:30:00时刻的闹钟。那么, RTCADOW位设置成2,RTCAHOUR设置成6,RTCAMIN将要被设置成30即可。 置位RTCADOW、RTCAHOUR和RTCAMIN的AE位,即可使能闹钟。一旦使能 闹钟,AF位将会在从06:29:59到06:30:00的时间计数转变及RTCDOW位从 1到2时置位。 例 5 : 如 果 用 户 希 望 在 每 一 个 月 份 第 五 天 的 06 : 30 : 00 时 刻 设 置 闹 钟 。 RTCADAY位将设置成5,RTCAHOUR位设置成6,RTCAMIN位设置成30。置 位RTCADAY、RTCAHOUR和RTCAMIN位的AE位,即可使能闹钟。一旦使能, AF位将在从06:29:59过渡到06:30:00且RTCADAY等于5时置位。 ______________________________________________________________________________ 注意:无效的闹钟设置 硬件不会去检测用户的闹铃设置是否有效,所以需要用户确认自己的闹铃设置有效。 ______________________________________________________________________________ _______________________________________________________________________________ 注意:无效的时间和日期值 将超出指定的合法范围的无效日期、时间信息或数据写入到RTCSEC、RTCMIN、RTCHOUR、RTCDAY、 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–267–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM RTCDOW、RTCYEARH、RTCYEARL、RTCAMIN、RTCAHOUR、RTCADAY和RTCADOW寄存器,将会导致不可预 知的结果。 ———————————————————————————————————————— —————————————————————————————————————— 注意:设置闹钟 为了防止产生潜在错误的闹钟,在将新的时间值写到RTC时钟寄存器前,应当清除 RTCAIE、RTCAIFG和AE位,禁止闹钟。 ————————————————————————————————————— 14.2.2.3 在日历模式下读写实时时钟寄存器 由于系统时钟和RTC_A时钟源异步,所以需要谨慎访问实时时钟寄存器。 在日历模式下,实时时钟寄存器每秒钟更新一次。为了防止在时间更新的 时候读取到无效的时间,模块提供了一个禁止窗口。这个禁止窗口大约位于 更新过渡时间中心约128/32768秒左右。只读位RTCRDY在禁止窗口期间复 位,禁止窗口之外置位。在RTCRDY复位时,对时钟寄存器的任何读取操作 都是无效的,并且也将忽略读取时间值。 一种简单的安全读取实时时钟寄存器的方法,是利用RTCRDYIFG中断标志。 置位RTCRDYIE,将使能RTCRDYIFG中断。一旦使能中断,将产生基于RTCRDY 的上升沿的中断,这将使RTCRDYIFG置位。此时,应用程序几乎可以有一秒钟的 时间来安全读取所有实时时钟寄存器的任何一个。同步处理方式防止了在时间跳 变的过程中读取时间值。当响应中断的时候,RTCRDYIFG自动复位,也可以软 件复位RTCRDYIFG。 在 计 数 器 模 式 下 , RTCRDY 位 保 持 复 位 。 不 用 考 虑 RTCRDYIE 位 , RTCRDYIFG保持复位。 _______________________________________________________________________ 注意:读写实时时钟寄存器 计数器时钟和CPU时钟异步,且RTCRDY位复位时,对RTCSEC、RTCMIN、RTCHOUR、RTCDOW、RTCDAY、RTCMON、 RTCYEARL和RTCYEARH任一寄存器的读操作,可能读取到无效的数据。为了安全地读取计数寄存器,可以不 断检测RTCRDY位或采用上述同步处理的方法。另外,在操作时,可以由软件多次读取计数寄存器,采用多数 决的方法来确定正确的读数。读取RT0PS和RT1PS位时,可以多次读取寄存器,采用多数决方法确定正确的 读数或通过停止计数器实现。 对任何计数寄存器的任何写操作都是立即生效的。然而,计数器在写的过程中是停止的。另外,RT0PS 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–268–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 和RT1PS寄存器处于复位状态,这有可能导致写过程中丢失1秒钟。写入合法范围外的数据或无效时间标记组 合,将产生不可预料的结果。 —————————————————————————————————————— 14.2.3 实时时钟中断 RTC_A模块有5个中断源,每一个中断源都有独立的使能和标志。 14.2.3.1 日历模式下的实时时钟中断 在 日 历 模 式 下 , 有 5 个 可 用 的 中 断 源 , 分 别 是 RT0PSIFG 、 RT1PSIFG 、 RTCRDYIFG、 RTCTEVIFG和RTCAIFG。这些中断标志按照优先次序,组合起 来获得1个独立的中断向量。中断向量寄存器(RTCIV)用来确定哪一个标志产 生中断请求。 使能的优先级最高的中断在RTCIV寄存器(见寄存器说明)产生1个数字偏移 量。这个偏移量累加到程序计数器PC上,系统跳转到相应的程序处执行。禁止实 时时钟中断,不会影响RTCIV值。 对 RTCIV 寄存器的任何访问,读或写,都将自动复位最高挂起中断标志。如 果另一个中断标志置位,在响应之前的中断之后,立即产生另一中断。另外, 所有的标志都可以通过软件清除。 实时时钟中断 RTCAIGFG 是用户可编程闹钟事件的触发源。置位 RTCAIE, 将使能中断。除了用户可编程的闹钟外,RTC_A 模块还提供了一个源自实时时 钟中断 RTCTEVIFG 的间隔闹钟。用户可以设置间隔闹钟,使之在 RTCMIN 或 RTCHOUR 变化,每天午夜(00:00:00),或者每天正午(12:00:00)时响起。引 发闹钟的事件可通过 RTCTEV 选择,置位 RTCTEVIE 位将使能中断。 RTCRDY 位源自实时时钟中断 RTCRDYIFG,在时钟寄存器和系统时钟读数 同步时起作用。置位 RTCRDYIE 位会使能中断。 可以使用RT0PSIFG通过RT0IP位的选择,生成中断间隔。在日历模式下,RT0PS 的时钟源是32768Hz的ACLK,所以可以产生16384Hz、8192Hz、4096Hz、2048Hz、 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–269–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 1024Hz、512Hz、256Hz和128Hz的时间中断间隔。置位RT0PSIE位可以使能中断。 可以使用RT1PSIFG通过RT1IP位的选择,生成中断间隔。在日历模式下, RT1PS位源自128Hz(32768/256 Hz)的RT0PS输出。因此可以产生64 Hz, 32 Hz, 16 Hz, 8 Hz, 4 Hz, 2 Hz, 1 Hz或者0.5Hz的间隔。设置RT1PSIE位可以使能中断。 14.2.3.2 计数器模式中下实时时钟中断 在 计 数 器 模 式 下 ,有三 个 可 用 中 断 源 ,分 别 是 RT0PSIFG 、RT1PSIFG 和 RTCTEVIFG。RTCAIFG位和RTCRDYIFG位清零。RTCRDYIE和RTCAIE可以忽 略。 通过设置RT0IP位,可以选择使RT0PSIFG位用来产生中断间隔。在计数器模式, RT0PS位时钟源来自于ACLK或者SMCLK,所以各自的时钟源可能进行2分频、4分 频、8分频、16分频、32分频、64分频、128分频和256分频。设置RT0PSIE位可以使 能中断。 通过设置RT1IP位,可以选择地让RT1PSIFG位用来产生中断间隔。在计数器 模式下,RT1PS位时钟源来自于ACLK、SMCLK或者是RT0PS输出,所以各自时 钟源可能进行2分频、4分频、8分频、16分频、32 分频、64分频、128分频和256 分频。设置RT1PSIE位可以使能中断。 RTC_A模块提供了一个源自实时时钟中断RTCTEVIFG的间隔定时器。该间隔 定时器在32位计数器时,当产生8位、16位、24位或者32位溢出时,产生一次中断 事件。事件可由RTCTEV位进行选择,置位RTCTEVIE位将使能中断。 RTCIV软件例程 以下例程所示是RTCV的推荐用法及处理开销。RTCIV值加到PC指针上,系 统自动跳转适当的程序处。 指令右边显示的是每条指令必需的CPU周期。不同中断源的软件消耗包括中 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–270–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 断等待时间和中断返回周期,不包括中断服务程序本身占用的时间。 RTC_HND ; 中断等待时间 6 ADD &RTCIV,PC ; 偏移量加到跳转表 3 RETI ; 向量0:没有中断 5 JMP RTCRDYIFG_HND ; 向量2: RTCRDYIFG 2 JMP RTCTEVIFG_HND ;向量4: RTCTEVIFG 2 JMP RTCAIFG ; 向量: RTCAIFG 5 JMP RT0PSIFG ; 向量8: RT0PSIFG 5 JMP RT1PSIFG ; 向量A: RT1PSIFG 5 RETI ; 向量C: Reserved 5 RTCRDYIFG_HND ; Vector 2: RTCRDYIFG Flag to ; Task starts here RETI 5 RTCTEVIFG_HND ; Vector 4: RTCTEVIFG to ; Task starts here RETI ; Back to main program 5 RTCAIFG_HND ; Vector 6: RTCAIFG to ; Task starts here RT0PSIFG_HND ; Vector 8: RT0PSIFG to ; Task starts here RT1PSIFG_HND ; Vector A: RT1PSIFG to 14.2.4 实时时钟校准 ; Task starts here RTC_A模块具有校准逻辑功能,它允许基于标准晶振振荡频率上,以每步 -2ppm或者+4ppm校准,以便保持更高精度的时间。RTCCALx位是用来校准频率 的。 RTCCALx位用来调整频率,当RTCCALS位置位之后,每一个RTCCALx低有 效位会产生一个+4ppm的调整。当RTCCALS位清零时,每一个RTCCALx低有效 位会导致-2ppm的调整。 为了校准频率,可以将RTCCLK信号从相应的引脚输出。RTCCALF位可以用 来选择输出信号的频率。校准过程中,可以测量RTCCLK信号。为了有效的降低时钟 的最初偏置,测量的结果可以应用到RTCCALS和RTCCALx位。比如说,假使 RTCCLK输出频率是512Hz,RTCCLK的测量值是511.9658Hz。这里的频率误差大 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–271–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 约是很低的67ppm。为了提高频率校正67ppm误差,RTCCALS位将置位,RTCCALx 设置成17(67/4)。 在计数器模式下(RTCMODE = 0),禁止校准逻辑电路。 注意:校准输出频率 校准设置发生改变时,不会影响RTCCLK引脚上得到到的512Hz和256Hz的输出 频率,会影响1Hz的输出频率。 14.3 实时时钟寄存器 RTC_A模块寄存器如表14-1所示。RTC_A模块寄存器的基本寄存器见具体芯 片的数据手册。表14-1中列出了地址偏移量。 寄存器 实时时钟控制0,1 实时时钟控制0 表14-1实时时钟寄存器 缩写 寄存器类型 寄存器访 问类型 RTCCTL01 读/写 字 RTCCTL0或 读/写 字节 RTCCTL01_L 实时时钟控制1 RTCCTL1或 读/写 字节 RTCCTL01_H 实时时钟控制2,3 RTCCTL23 读/写 字 实时时钟控制2 RTCCTL2或 读/写 字节 RTCCTL23_L 实时时钟控制3 RTCCTL3或 读/写 字节 RTCCTL23_H 实时时钟预分频定时控制0 RTCPS0CTL 读/写 字 RTCPS0CTLL或 RTCPS0CTL_L 读/写 字节 RTCPS0CTLH或 RTCPS0CTL_H 读/写 字节 实时时钟预分频定时控制1 RTCPS1CTL 读/写 字 RTCPS1CTLL或 RTCPS1CTL_L 读/写 字节 RTCPS1CTLH或 RTCPS1CTL_H 读/写 字节 实时时钟预分频定时器0,1计数器 RTCPS 读/写 字 实时时钟预分频定时器0,计数器 RT0PS或 读/写 字节 RTCPS_L 实时时钟预分频定时器1计数器 RT1PS 或 读/写 字节 地址偏移 00h 00h 01h 02h 02h 03h 08h 08h 09h 0Ah 0Ah 0Bh 0Ch 0Ch 0Dh 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 初始状态 4000h 00h 40h 0000h 00h 00h 0100h 00h 01h 0100h 00h 01h 未定义 未定义 未定义 第–272–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM RTCPS_H 实时时钟中断向量 RTCIV 只读 RTCIV_L 只读 RTCIV_H 只读 实时时钟秒/分实时计数器1,2 RTCTIM0或 读/写 RTCNT13 实时时钟秒实时计数器1 RTCSEC/RTCNT1读/写 或RTCTIM0_L 实时时钟分实时计数器2 RTCMIN/RTCNT2读/写 或RTCTIM0_H 实时时钟小时/星期实时计数器3,4 RTCTIM1或 读/写 RTCNT34 实时时钟小时实时计数器3 RTCHOUR/RTCNT3读/写 或RTCTIM1_L 实时时钟星期实时计数器4 RTCDOW /RTCNT4读/写 或RTCTIM1_H 实时时钟日期 RTCDATE 读/写 实时时钟日期 RTCDAY 读/写 或RTCDATE_L 实时时钟月份 RTCMON 读/写 或RTCDATE_H 实时时钟年份 RTCYEAR 读/写 RTCYEARL或 读/写 RTCYEAR_L RTCYEARH或 读/写 字 字节 字节 字 字节 字节 字 字节 字节 字 字节 字节 字 字节 字节 0Eh 0Eh 0Fh 10h 10h 11h 12h 12h 13h 14h 14h 15h 16h 17h 17h 0000h 00h 00h 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 RTCYEAR_H Real-Time Clock Minutes, Hour Alarm RTCAMINHR Read/write Word 18h undefined Real-Time Clock Minutes Alarm RRTTCCAAMMIINNHoRr _L Read/write Byte 18h undefined Real-Time Clock Hours Alarm RRTTCCAAHMOINUHRRo_rH Read/write Byte 19h undefined Real-Time Clock Day of Week, Day of Month Alarm RTCADOWDAY Read/write Word 1Ah undefined Real-Time Clock Day of Week Alarm RRTTCCAADDOOWWDoAr Y_L Read/write Byte 1Ah undefined Real-Time Clock Day of Month Alarm RRTTCCAADDAOYWoDrAY_H Read/write Byte 1Bh undefined RTC控制器寄存器0 7 6 保留 RTCTEVIE RTCCTL0 5 4 RTCAIE RTCRDYIE 3 保留 2 RTCTEVIFG 1 0 RTCAIFG RTCRDYIFG RTCTEVIE Bit6 实时时钟时钟事件中断使能 6、中断禁止 7、中断使能 RTCAIE Bit5 实时时钟闹铃中断使能。该位在日历模式(RTCMODE=0)下始终 为0. 中断禁止 中断使能 RTCRDYIE Bit4 实时时钟读数准备中断使能。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–273–页 共 423 页 RTCTEVIFG RTCAIFG RTCRDYIFG LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 13)中断禁止 14)中断使能 Bit2 实时时钟时钟事件标志 Ø 没有时钟时间发生 Ø 时钟事件发生了 Bit1 实时时钟闹铃标志。在日历模式下,该位为0 l 没有时钟事件发生 l 时钟事件发生 Bit0 实时时钟读数准备标志。 l 不能安全读取实时时钟数据 l 可以安全读取实时时钟数据 RTC控制器寄存器1 RTCCTL1 7 6 5 4 RTCBCD RTCHOLD RTCMODE RTCRDY 3 2 RTCSSEL 1 0 RTCTEV RTCBCD Bit7 RTCHOLD Bit6 RTCMODE Bit5 实时时钟BCD选择。为实时时钟选择BCD计数。仅限于日历模式 (RTCMODE = 1)。在计数模式下,该项设置无效。改变该位,使秒、 分、时、星期、年清零,日期和月设置为1。实时时钟寄存器必须 由软件进行设置。 l 二进制/十六进制形式 l BCD形式 停止实时时钟 0 实时时钟(32位计数器或日历模式)正在运作 1 计数器模式(RTCMODE = 0),只有32位计数器停止;在日 历模式(RTCMODE = 1)日历及预分频计数器RT0PS和RT1PS停 止。不考虑RT0PSHOLD和RT1PSHOLD。 实时时钟模式 0 32位计数器模式 RTCRDY RTCSSEL RTCTEV Bit4 Bits3-2 Bits1-0 1 日历模式。在日历模式和计数器模式之间的切换会复位实时时 钟/计数器寄存器。切换到日历模式会将秒、分、小时、星期和年清 零,将日期和月份置1。实时时钟寄存器需要由软件设置。基本定时 器计数器BT0CNT和 BT1CNT也会被清除。 实时时钟准备 0 实时时钟值在转换阶段(日历模式) 1 实时时钟值可安全读取(日历模式)。该位指示可以安全读取实 时时钟值的时间(日历模式)。在计数器模式,RTCRDY保持清零。 实时时钟源选择。选择RTC/32计数器的输入时钟源。在RTC日历模 式下不考虑这两位,时钟输入自动设置到RT1PS输出。 21 ACLK 22 SMCLK 15、来自PT1PS输出 16、来自PT1PS输出 RTC时间事件 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–274–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM RTC模式 计数模式(RTCMODE=0) 日历模式(RTCMODE=1) RTCTEV 00 01 10 11 00 01 10 11 中断间隔 8位溢出 16位溢出 24位溢出 32位溢出 分钟改变 小时改变 每天凌晨(00:00) 每天正午 (12:00) RTCCTL 2 实时时钟控制寄存器2 7 6 5 4 3 2 1 0 RTCCALS 保留 RTCCAL RTCCALS Bit7 RTCCAL Bits5-0 实时时钟校准标志 0 频率下调 1 频率上调 实时时钟校准。每一最低有效位LSB表示大概为+4ppm(RTCCALS) 或者-2ppm(RTCCALS=0)频率调整 RTCCTL 3 实时时钟控制寄存器3 7 6 5 4 3 2 1 0 保留 RTCCALF RTCCALF Bits1-0 RTC校准频率 校准测量时,选择频率输出到RTCCLK引脚上。相对应的端口必须 配置为外围模块功能。TRCCLK在计数模式不可用且保持为低, 不考虑RTCCALF。 00 没有频率输出到 RTCCLK 引脚 01 512HZ 10 256HZ 11 1HZ RTCNT1 实时时钟计数器1—计数模式 7 6 5 4 3 2 1 RTCNT1 RTCNT1 Bits7-0 RTCNT1X寄存器是对RTCNT1的计数 RTCNT2 实时时钟计数器2—计数模式 7 6 5 4 3 2 1 RTCNT2 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 0 0 第–275–页 共 423 页 RTCNT2 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM Bits7-0 RTCNT1X寄存器是对RTCNT2的计数 RTCNT3 实时时钟计数器3—计数模式 7 6 5 4 3 2 1 0 RTCNT3 RTCNT3 Bits7-0 RTCNT3X寄存器是对RTCNT3的计数 RTCNT4 实时时钟计数器4—计数模式 7 6 5 4 3 2 1 0 RTCNT4 RTCNT4 Bits7-0 RTCNT4X寄存器是对RTCNT4的计数 RTCSEC 实时时钟秒寄存器 十六进制格式的日历模式 7 6 5 4 3 2 1 0 秒(0 到59) RTCSEC 实时时钟秒寄存器 BCD格式的日历模式 7 6 5 4 3 2 1 0 秒(高位0-5) 秒(低位0-9) RTCMIN 实时时钟分寄存器 十六进制格式下的日历模式 7 6 5 4 3 2 1 0 分(0 到59) RTCMIN 实时时钟分寄存器 BCD格式下的日历模式 7 6 5 4 3 2 1 0 分(高位0-5) 分(低位0-9) RTCHOUR 实时时钟小时寄存器 十六进制格式下的日历模式 7 6 5 4 3 2 1 0 小时(0-24) RTCHOUR 实时时钟小时寄存器 BCD格式下的日历模式 7 6 5 4 3 2 1 0 小时(高位0-2) 小时(低位0-9) RTCDOW 实时时钟星期寄存器 日历模式 7 6 5 4 3 0 0 0 0 0 2 1 0 一个星期中的第几天(0到6) 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–276–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM RTCDAY 实时时钟天寄存器 十六进制格式下的日历模式 7 6 5 4 3 2 1 0 0 0 0 一个月中的第几天(1到28、29、30、31) RTCDAY 实时时钟天寄存器 BCD格式下的日历模式 7 6 5 4 3 2 1 0 一个月中的第几天---高位(0到3) 一个月中的第几天-----低位(0到9) RTCMON 实时时钟月寄存器 十六进制格式下的日历模式 7 6 5 4 3 2 1 0 0 0 0 0 月份(1到12) RTCMON 实时时钟月寄存器 7 6 5 0 0 0 BCD格式下的日历模式 4 3 2 1 0 月份--高位(0到3) 月份--低位(0到9) RTCYEARL 实时时钟低字节年寄存器 十六进制格式下的日历模式 7 6 5 4 3 2 1 0 年--- 0到4095的低字节 RTCYEARL 实时时钟低字节年寄存器 BCD格式下的日历模式 7 6 5 4 3 2 1 0 RTCYEARH 实时时钟高字节年寄存器 BCD格式下的日历模式 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–277–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 实时时钟预分频定时器0控制寄存器 RTCPS0CTL 15 保留 14 RTOSSEL 13 12 11 RT0PSDIV 10 保留 9 保留 8 RT0PSHOLD 7 6 5 保留 4 3 2 1 0 RT0IP RT0PSIE RT0PSIFG RTOSSEL Bit14 RT0PSDIV Bits13-11 RT0PSHOLD Bit8 RT0IP Bits4-2 RT0PSIE Bit1 RT0PSIFG Bit0 预分频定时器0时钟源选择。选择时钟源输入到PT0PS计数器。 在 RTC日历模式这些位是无效的。RT0PS 时钟输入自动默认设 置为ACLK。RT1PS 时钟输入自动默认设置为RT0PS输出。 0 ACLK 1 SMCLK 预分频定时器0分频,这些位控制RT0PS计数器的分频数。在 RTC 日历模式, 这些位对于RT0PS 和 RT1PS 是无效的。 PT0PS 时钟输出自动默认设置为/256。RT1PS 时钟输出自 动默认为设置为/128。 000 /2 001 /4 010 /8 011 /16 100 /32 101 /64 110 /128 111 /256 预分频定时器0停止。在RTC 时钟日历模式,这位是无效的。 RT0PS停止是由 RTCHOLD 位控制。 0 RT0PS是运行 1 RT0PS是保持 预分频定时器0中断间隔 000 /2 001 /4 010 /8 011 /16 100 /32 101 /64 110 /128 111 /256 预分频定时器0中断使能 l 中断禁止 l 中断使能 预分频定时器0中断标志 3、没有时间事件产生 4、有时间事件产生 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–278–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM RTCPS1CTL 实时时钟预分频定时器1控制寄存器 15 14 RT1SSEL 13 12 11 RT1PSDIV 10 9 保留 8 RT1PSHOLD 7 保留 6 保留 5 保留 4 3 2 1 0 RT1IP RT1PSIE RT1PSIFG RT1SSEL Bits15-14 预分频定时器1时钟源选择。选择RT1PS计数器时钟源。在 RTC日历模式这些是无效的。RT1PS时钟输入自动默认为 RT0PS的输出。 00 ACLK 01 SMCLK 10 RT0PS 输出 RT1PSDIV Bits13-11 RT1PSHOLD Bit8 RT1IP Bits4-2 11 RT0PS 输出 预分频定时器 1 时钟分频器,这位控制 PT0PS 计数器的 分频值。在 RTC 日历模式对于 RT0PS 和 PT1PS 这些 位无效。RT0PS 时钟输出自动默认设置为/256。RT1PS 时钟输出是自动默认设置到/128。 000 /2 001 /4 010 /8 011 /16 100 /32 101 /64 110 /128 111 /256 预分频定时器1停止。在 RTC 时钟日历模式这些位是无效 的。RT1PS 停止是由 RTCHOLD 位控制 预分频定时器 1 中断间隔 000 /2 001 /4 010 /8 011 /16 100 /32 101 /64 110 /128 111 /256 RT1PSIE Bit1 预分频定时器 1 中断使能 0 中断禁止 1 中断使能 RT1PSIFG Bit0 预分频定时器 1 中断标志 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–279–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 0 没有定时事件发生 1 定时事件发生 RT0PS 实时时钟预分频定时器0计数寄存器 7 6 5 4 3 2 1 0 RT0PS RT0P Bits7-0 预分频定时器0计数值 RT1PS 实时时钟预分频定时器1计数寄存器 7 6 5 4 3 2 1 0 RT1PS RT1P Bits7-0 预分频定时器1计数值 RTCIV 实时时钟中断向量寄存器 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 RTCIV值 00h 02h 04h 06h 08h 0Ah 0Ch 0Eh 10h 中断源 无中断挂起 RTC准备 RTC间隔定时器 RTC用户闹铃 RTC预分频器0 RTC预分频器1 保留 保留 保留 中断标志 RTCRDYIFG RTCTEVIFG RTCAIFG RT0PSIFG RT1PSIFG 中断优先级 最高 最低 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–280–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 第 15 章 32 位硬件乘法器 本章主要讲述 32 位硬件乘法器(MPY32),本系列所有芯片里都有 MPY32 模块。 15.1 MPY32 介绍 15.2 MPY32 操作 15.3 MPY32 寄存器 15.1 MPY32 介绍 32 位硬件乘法器是外围设备,不是 CPU 的一部分,也就是说它的活动不会影响 CPU 的工作。硬件乘 法寄存器可以通过 CPU 指令进行载入和读取操作。 硬件乘法器支持: l 无符号数乘法 l 有符号数乘法 l 无符号数乘加 l 有符号数乘加 l 8 位,16 位,24 位和 32 位操作数 l 饱和模式 l 小数 l 与 16 位硬件乘法器兼容的 8 位和 16 位操作 l 不需要符号扩展指令的 8 位和 24 位乘法操作 32 位硬件乘法器的结构框图如图 15-1 所示: 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–281–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图 15-1 32 位硬件乘法器结构图 15.2 硬件乘法器操作 硬件乘法器支持 8 位,16 位,24 位,32 位的无符号数乘法、无符号数乘加、有符号数乘法、有符号 数乘加操作。操作数的大小是写入操作数的地址及“字”或“字节”的写入方式确定的。 操作类型由第 一个写入的操作数类型决定。 硬件乘法器有两个 32 位操作数寄存器,操作数 OP1 和操作数 OP2,以及一个通过 RES0-RES3 寄存器 访问的 64 位结果寄存器。为了兼容 16×16 的硬件乘法器,可以通过 RESLO、RESHI 和 SUMEXT 三个寄存器 访问 8 位或者 16 位的操作结果。RESLO 存储 16×16 结果的低字,RESHI 存储高字,而 SUMEXT 则存储结 果的有关信息。 8 位或 16 位操作在 3 个 MCLK 周期内准备,可以通过 OP2 写操作后的下一个指令读取,使用间接寻址 模式除外。当使用间接寻址模式访问结果时,在结果读出之前,需要一个 NOP 指令。 24 位或 32 位操作数可以通过 OP2 或 OP2H 写操作后,以 RES0 开始的连续指令读取,除了使用间接寻 址模式以外。当使用间接寻址模式访问结果时,在结果读出之前,需要一个 NOP 指令。 表 15-1 总结了各种操作数长度组合下,64 位结果的情况。当第二个操作数为 32 位时,必须写入到 OP2L 和 OP2H 中。考虑到两个 16 位数据写入的情况,结果可能会变化。因此,此表中有两个入口,一个 是 OP2L 的写入操作,另一个是 OP2H 的写入操作。最坏的情况定义了实际结果有效性。 操作数 (OP1 × OP2) 8/16 × 8/16 表 15-1 结果可能性(MPYFRAC = 0, MPYSAT = 0) MCLK 周期内就绪的结果 RES0 RES1 RES2 RES3 MPYC 位 3 3 4 4 3 继后 OP2 写入 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–282–页 共 423 页 24/32 × 8/16 8/16 × 24/32 24/32 × 24/32 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 3 5 6 7 7 OP2 写入 3 5 6 7 7 OP2L 写入 N/A 3 3 8 4 4 4 OP2H 写入 10 11 11 OP2L 写入 N/A 3 5 6 6 OP2H 写入 15.2.1 操作数寄存器 操作数 0P1 内置 12 个寄存器(如表 15-2 所示),将数据载入到乘法器并选择乘法器模式。对给定地 址写入第一个操作数的低字时,就选择了乘法运算的类型,但并不开始任何操作。当向后缀为 32H 的高字 寄存器写入第二个字时,乘法器就认为 OP1 是 32 位,否则就认为是 16 位。在写入 OP2 之前写入的最后一 个地址定义了第一个操作数的长度。例如,先写 MPY32L 再写 MPY32H,所有 32 位数据都将参加运算,OP1 被认为是 32 位的。如果先写的是 MPY32H 后写 MPY32L,那么乘法器就会忽略先写的 MPY32H,认为 OP1 是 16 位的,并且只有写入 MPY32L 的数据参加运算。 如果操作数 OP1 值用于连续操作时,可以无需重载 OP1 而重复执行乘法操作。执行操作时没必要对 OP1 重新写入。 表 15-2 OP1 寄存器 OP1 寄存器名称 操作 MPY 无符号数乘法—操作数位 0~15 MPYS 有符号数乘法—操作数位 0~15 MAC 无符号数乘加—操作数位 0~15 MACS 有符号数乘加—操作数位 0~15 MPY32L 无符号数乘法—操作数位 0~15 MPY32H 无符号数乘法—操作数位 16~31 MPYS32H 有符号数乘法—操作数位 16~31 MAC32L 无符号数乘加—操作数位 0~15 MAC32H 无符号数乘加—操作数位 16~31 MACS32L 有符号数乘加—操作数位 0~15 MACS32H 有符号数乘加—操作数位 16~31 写入第二个操作数到寄存器 OP2 将会启动乘法操作。对 OP2 的写操作将启动第二个 16 位操作数与存 储在 OP1 内值的乘法运算。对 OP2 的写操作将启动第二个 32 位操作数乘法运算,乘法器等待 OP2H 写入一 个高字。没有写 OP2L 的情况下,将忽略对 OP2H 的写操作。 表 15-3 OP2 寄存器 OP2 寄存器名称 操作 OP2 启动乘法操作和一个 16 位长度的操作数 2(OP2)(操作数位 0~15) OP2L 启动乘法操作和一个 32 位长度的操作数 2(OP2)(操作数位 0~15) OP2H 继续乘法操作和一个 32 位长度的操作数 2(OP2)(操作数位 16~31) 对于 8 位或 24 位操作数,可以通过字节指令访问操作数寄存器。在有符号数运算过程中,如果用字 节指令访问乘法器,将会自动在乘法器模块内造成字节的符号扩展。对于 24 位操作数来说,只有高字才 需要以字节的形式写入。如果寄存器定义了 24 位操作数是可以符号扩展的,这将用于低字写入,因为在 寄存器里定义了操作数是有符号还是无符号的。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–283–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 无论是通过修改操作数长度位还是对相应操作数寄存器进行写操作,当操作数大小变为 16 位时,32 位操作数的高字都将保持不变。在一个 16 位运算过程中,将忽略操作数的高字。 注意:乘法运算过程中修改第一或第二个操作数 默认情况下,如果选择的乘法操作正在进行操作,此时改变 OP1 或 OP2 的值,将产生无效结果,该 结果在新操作数改变时没有准备好。对 OP2 或 OP2L 写操作将会中止当前正在进行的运算并重新启 动一次新的操作。此时没有准备好的结果对其后的 MAC 或 MACS 也是不可靠的。 为了避免这种情况,可以将 MPYDLYWRTEN 位置 1。这样对任何 MPY32 寄存器的写入操作将由于 MPYDLY32=0 而延时,直到 64 位结果就绪,或者由于 MPYDLY32=1 而延时,直到 32 位结果就绪。对 于 MAC 或 MACS 操作,全部 64 位结果总是就绪。 从表 15-1 可以得到在不同的操作模式下,需要多少个 CPU 指令周期才可以使寄存器就绪且有 效。 15.2.2 结果寄存器 乘法操作的结果总是 64 位,可以通过寄存器 RES0~RES3 访问。MPYS 或 MACS 用于有符号操作时,结果 通常会有符号位的扩展。在 MACS 操作之前,结果寄存器载入初始值,那么用户必须保证写入结果寄存器 的值是可以符号扩展到 64 位。 注意:乘法操作期间,修改结果寄存器 将第二个操作数写入 OP2 或 OP2L 之后,直到初始操作完成之前,用户软件不能修改结果寄存器。 除了 RES0~RES3,为了与 16×16 硬件乘法器兼容,8 位操作或 16 位操作的 32 位结果可以通过 RESLO、 RESHI 和 SUMEXT 访问。在这种情况下,RESLO 寄存器保存计算结果的低 16 位,RESHI 寄存器保存高 16 位。 在使用和访问计算结果方面,RES0、RES1 分别与 RESLO 和 RESHI 相同。 结果扩展寄存器 SUMEXT 的内容取决于乘法器的操作,如表 15-4 所列。如果操作数是 16 位或更短时, 32 位结果决定符号和进位位。如果其中一个操作数大于 16 位,则结果为 64 位。 MPYC 位反映了乘法器的进位,如表 15-4 所列,如果没有选择小数模式或者饱和模式,则该位可以作 为结果的第 33 位或第 65 位。对于 MAC 或者 MACS 操作,MPYC 位反映 32 位或 64 位累积的进位,不作为 MAC 和 MACS 连续操作的 33 位或第 65 位。 表 15-4 SUMEXT 的内容和 MPYC 的内容 模式 SUMEXT MPYC MPY SUMEXT 总是为 0000h MPYC 总是 0 MPYS SUMEXT 包含结果的符号扩展 MPYC 含有结果的符号 0000h 结果为正或零 0 结果为正或零 0FFFFh 结果为负 1 结果为负 MAC SUMEXT 包含结果进位 MPYC 包含结果进位 0000h 结果没有进位 0 结果没有进位 0001h 结果有进位 1 结果有进位 MACS SUMEXT 包含结果的符号扩展 MPYC 含有结果进位 0000h 结果为正或零 0 结果没有进位 0FFFFh 结果为负 1 结果有进位 15.2.2.1 MACS的下溢和上溢 在 MACS 模式下乘法器不会自动检测上溢和下溢的发生。例如,16 位输入数据和 32 位结果(即只使用 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–284–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM RESLO 和 RESHI)操作,正数的有效范围是从 0 到 07FFFFFFFh,负数的有效范围是从 0FFFF FFFFh 到 08000 000。当两个负数的和产生进入正数范围的结果时,发生下溢。当两个正数的和产生负数范围的结果时, 产生上溢。 SUMEXT 寄存器包含了上述两种情况下产生结果的符号,0FFFFh 表示 32 位上溢,0000h 表示 32 位下溢。 MPY32CTL0 寄存器中的 MPYC 位可以用来检测溢出的产生,如果进位位不同于 SUMEXT 寄存器反映的位,则 表示产生了上溢或下溢。用户软件必须适当处理这些情况。 15.2.3 软件例程 下面是针对各种乘法模式的例子。所有 8×8 模式使用绝对寻址访问寄存器,因为汇编程序不允许在 使用来自标准定义文件的标号时使用.B(字节访问)访问字寄存器。 在软件中没有使用符号扩展的必要。因为乘法器模块的有符号操作过程中,使用字节指令访问乘法器 就会在乘法器模块内自动引起字节的符号扩展。 ;32x32 无符号乘法 MOV #01234h,&MPY32L ;载入第一个操作数的低字部分 MOV #01234h,&MPY32H ;载入第一个操作数的高字部分 MOV #05678h,&OP2L ;载入第二个操作数的低字部分 MOV #05678h,&OP2H ;载入第二个操作数的高字部分 ;... ;处理结果 ;16x16 Unsigned Multiply MOV #01234h,&MPY MOV #05678h,&OP2 ;... ;载入第一个操作数 ;载入第二个操作数 ;处理结果 ;8x8 无符号乘法,绝对寻址 MOV.B #012h,&MPY_B MOV.B #034h,&OP2_B ;... ;载入第一个操作数 ;载入第二个操作数 ;处理结果 ;32x32 有符号乘法 MOV #01234h,&MPYS32L MOV #01234h,&MPYS32H MOV #05678h,&OP2L MOV #05678h,&OP2H ;... ;载入第一个操作数的低字部分 ;载入第一个操作数的高字部分 ;载入第二个操作数的低字部分 ;载入第二个操作数的高字部分 ;处理结果 ;16x16 有符号乘法 MOV #01234h,&MPYS MOV #05678h,&OP2 ;... ;载入第一个操作数 ;载入第二个操作数 ;处理结果 ;8x8 有符号乘法.绝对寻址 MOV.B #012h,&MPYS_B MOV.B #034h,&OP2_B ;... ;载入第一个操作数 ;载入第二个操作数 ;处理结果 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–285–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 15.2.4 小数部分 32 位乘法器支持定点信号处理功能。在定点信号处理过程中,小数通常用一个固定的十进制小数来表 示。使用 Q 格式的表示方法来区分不同范围的小数。不同的 Q 格式表示不同的十进制小数点位置。图 15-2 表示有符号 Q15 数据的 16 位数据格式。小数点后的每一位,精度为 1/2,最高有效位是符号位。最大的负 数为 08000h,最大的正数是 07FFFh。因此,16 位有符号的 Q15 格式可以表示从–1.0 到 0.999969482≈1.0 的数。 图 15-2 Q15 格式表示图 可以通过如图 15-3 所示右移小数点来增大表示的范围。16 位有符号的 Q14 格式可以表示从–2.0 到 1.999938965≈2.0 的数。 图 15-3 Q14 格式表示图 乘法器采用 16 位有符号 Q15 或 32 位 Q31 的好处是:两个在-1.0 到 1.0 范围内的两个数的乘积总是 在同一范围内。 15.2.4.1 小数模式 MPYFRAC = 0 和 MPYSAT = 0,采用默认乘法模式的两个小数相乘,其结果具有 2 位符号位。例如:两 个 16 位 Q15 格式的数相乘,将得到一个 32 位 Q30 格式的结果。为了手动将结果转换成 Q15 格式,那么将 第一个多余的 15 位和符号扩展位移除。然而,当使用乘法器的小数模式时,两个 16 位 Q15 数据相乘,结 果为 Q31 格式,多余的符号位将自动移除。读取结果寄存器 RES1,结果为 16 位 Q15 格式。两个 32 位 Q31 格式的数相乘,其结果可以通过读取寄存器 RES2 和 RES3 获得。 可以通过设置 MPY32CTL0 寄存器中的 MPYFRAC=1 来使能小数模式。当 MPYFRAC=1 时,结果寄存器的实 际值并没有改变。当通过软件访问这个结果时,计算结果左移一位,形成最终的 Q 格式结果。这样就允许 用户通过软件选择读取移位的结果还是未移位的结果。小数模式只能在需要的时候使能,在使用完之后禁 止。 在小数模式下,SUMEXT 寄存器分别包含了在 16×16 位操作数相乘左移后的符号扩展位 32、33 位及在 32×32 位操作数相乘左移后的符号扩展位 64、65 位,而不仅是第 32 位或者第 64 位。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–286–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM MPYC 位不受小数模式的影响,它总是非小数结果进位位的读取值。 ;16x16 小数乘法 BIS #MPYFRAC,&MPY32CTL0 ;打开小数模式 MOV &FRACT1,&MPYS ;Q15 格式载入第一个操作数 MOV &FRACT2,&OP2 ;Q15 格式载入第二个操作数 MOV &RES1,&PROD ;Q15 格式保存结果 BIC #MPYFRAC,&MPY32CTL0 ;返回正常模式 表 15-5 小数模式下的结果可能性(MPYFRAC = 0, MPYSAT = 0) 操作数 结果就绪的 MCLK 周期数 (OP1 × OP2) RES0 RES1 RES2 RES3 MPYC 位 继后 8/16 × 8/16 3 3 4 4 3 OP2 写入 24/32 × 8/16 3 5 6 7 7 OP2 写入 8/16 × 24/32 3 5 6 7 7 OP2L 写入 N/A 3 4 4 4 OP2H 写入 24/32 × 24/32 3 8 10 11 11 OP2L 写入 N/A 3 5 6 6 OP2H 写入 15.2.4.2 饱和模式 在饱和模式下,乘法器可以防止有符号数操作结果的上溢或者下溢。当寄存器 MPY32CTL0 的 MPYSAT=1 时,则使能饱和模式。如果发生上溢,结果将被设置成正的最大有效值。如果发生下溢,结果将被设置成 负的最大有效值。这可以减少控制系统在溢出条件下的数学结果。饱和模式只能在需要的时候使能,在使 用完之后应禁止。 当 MPYSAT=1 时,结果寄存器的值没有改变。当通过软件访问结果时,如果已经产生溢出,则此时的 值会自动调整为正的最大有效值或负的最大有效值。调整后的结果可以继续参与乘加操作。这允许用户软 件在饱和模式和非饱和模式下进行读操作切换。 16×16 操作时,饱和模式只能应用于最低有效的 32 位中,也就是结果寄存器 RES0 和 RES1。在 MAC 或 MACS 操作中采用饱和模式,混合的 16×16 操作,以及 32×32, 16×32 或 32×16 操作,将产生不可预 料的结果。 在 32×32,16×32 和 32×16 的操作中,其饱和结果只能在 RES3 已准备好的的情况下计算出来。在 非 5xx 芯片中,不论 MPYSAT 是否置位,在完整的结果准备好之前读取 RES0 到 RES2 都将会得到一个非饱 和结果。 使能饱和模式不会影响寄存器 SUMEXT 的内容,也不会影响 MPYC 的值。 ;16x16 小数饱和累加 ;打开小数和饱和模式 BIS #MPYSAT+MPYFRAC,&MPY32CTL0 MOV &A1,&MPYS ;为第一阶段载入 A1 MOV &K1,&OP2 ;为得到 A1*K1,载入 K1 MOV &A2,&MACS ;为第二阶段载入 A2 MOV &K2,&OP2 ;为得到 A2*K2,载入 K2 MOV &RES1,&PROD ;保存 A1*K1+A2*K2 作为结果 BIC #MPYSAT+MPYFRAC,&MPY32CTL0 ;返回正常模式 表 15-5 小数模式下的结果可能性(MPYFRAC = 0, MPYSAT = 0) 操作数 MCLK 周期内结果就绪 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–287–页 共 423 页 (OP1 × OP2) 8/16 × 8/16 24/32 × 8/16 8/16 × 24/32 24/32 × 24/32 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM RES0 3 RES1 3 RES2 N/A RES3 N/A MPYC 位 3 继后 OP2 写入 7 7 7 7 7 OP2 写入 7 7 7 7 7 OP2L 写入 4 4 4 4 4 OP2H 写入 11 11 11 11 11 OP2L 写入 6 6 6 6 6 OP2H 写入 图 15-4 显示了在 16×16 相乘时 32 位饱和模式的流程和其他情况下 64 位饱和模式的流程。首先,饱 和结果取决于进位位 MPYC 和结果的最高有效位(MSB)。第二,如果使能小数模式,则结果主要取决于未 左移结果的两位最高位,也就是是在小数模式禁止情况下读取的结果。 图 15-4 饱和模式流程图 注意:小数模式下的饱和 如果在小数模式下进行–1.0×–1.0 的乘法,+1.0 结果就超出了范围,因此,饱和结果将得 到正的最大有效值。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–288–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 当使用乘加操作的时候,如果 MPYFRAC=0,操作结果是饱和的——仅仅在考虑小数模式的情况 下,对饱和结果寄存器进行读访问时。这为计算提供了额外的动态范围,在需要的情况下,只有最 后的结果是饱和的。 下面的例子所示的是在小数模式下饱和功能的一种特殊情况。它同样使用了 MPY32 模块的 8 位运算功 能。 ;开启小数和饱和模式 ;清除所有 MPY32CTL0 的位: MOV #MPYSAT+MPYFRAC,&MPY32CTL0 ;为证明溢出,预先载入结果寄存器 MOV #0,&RES3 ; MOV #0,&RES2 ; MOV #07FFFh,&RES1 ; MOV #0FA60h,&RES0 ; MOV.B #050h,&MACS_B ;8-bit 有符号 MAC 操作 MOV.B #012h,&OP2_B ;开始 16x16 位操作 MOV &RES0,R6 ;R6 = 0FFFFh MOV &RES1,R7 ;R7 = 07FFFh 结果是饱和的,因为在转换成小数之前结果已经产生上溢。两个正数 00050h 和 00012h 相乘得到 0005A0h。0005A0h 加到 07FFF FA60h 的结果在 MPYC 位未被置位的情况下结果为 8000059Fh。由于未修正 的 RES1 中最高位是 1 并且 MPPYC=0,根据图 15-4,结果是饱和的。 注意:饱和结果的有效性 饱和结果只有在 RES0 到 RES3, OP1 和 OP2 的长度和 MPYC 位没有被修改的情况是有效的。 如果对预载结果使用饱和模式, 用户软件必须保证 MPY32CTL0 寄存器的 MPYC 已经载入写入结果 的符号位,否则饱和模式将会错误的使结果饱和。 15.2.5 综上小结 图 15-5 说明了完整的乘法流程图,包含了 MPY32 模块所有的可选择模式。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–289–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图 15-5 乘法流程图 16 位操作(32 位结果)和 32 位操作(64 位结果)分开处理时,理解使用 MAC/MACS 操作及 16 位操作 数/结果与 32 位操作数/结果混合的含义非常重要。当使用混合操作时,用户软件必须指定地址。下面的 代码片段说明了这个问题。 ;32x24 与 16x16 混合 MACS 操作 MOV #MPYSAT,&MPY32CTL0 ;饱和模式 MOV #052C5h,&MPY32L ;载入第一个操作数的低字 MOV #06153h,&MPY32H ;载入第一个操作数的高字 MOV #001ABh,&OP2L ;载入第二个操作数的低字 MOV.B #023h,&OP2H_B ;载入第二个操作数的高字 ;... 需要 5 个 NOP MOV &RES0,R6 ;R6 = 00E97h MOV &RES1,R7 ;R7 = 0A6EAh MOV &RES2,R8 ;R8 = 04F06h MOV &RES3,R9 ;R9 = 0000Dh 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–290–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM ;注意 MPYC = 0! MOV #0CCC3h,&MACS ;有符号 MAC 操作 MOV #0FFB6h,&OP2 ;16x16 位操作 MOV &RESLO,R6 ;R6 = 0FFFFh MOV &RESHI,R7 ;R7 = 07FFFh 因为当操作开始时,用于 16×16 MACS 操作的 32 位值已经饱和,之前操作的进位位 MPYC 为 0,但是 结果寄存器 RES1 的 MSB 位设置为 1,所以第二次操作结果是饱和的。从流程图可以看到,开始新的乘加操 作的结果寄存器饱和,新的操作是在之前结果的基础上,但是与新操作的结果大小(32 位或 64 位)也有 关。 如果 MPYC 位没有按照下面代码所说明的进行正确设置的话,在乘法操作之前,就有可能会产生饱和。 ;为证明溢出,预先载入结果寄存器 MOV #0,&RES3 ; MOV #0,&RES2 ; MOV #0,&RES1 ; MOV #0,&RES0 ; ;饱和模式,设置 MPYC: MOV #MPYSAT+MPYC,&MPY32CTL0 MOV.B #082h,&MACS_B ;8-bit 有符号 MAC 操作 MOV.B #04Fh,&OP2_B ;开始 16x16 位操作 MOV &RES0,R6 ;R6 = 00000h MOV &RES1,R7 ;R7 = 08000h 尽管结果寄存器全部装载为 0,但最后结果仍然是饱和的。这是由于 MPYC 位是置 1 引起用于乘加操作 的结果饱和至 08000 0000h。给它加上一个负数,则会再次引起下溢,最后的结果仍然会饱和至 08000 0000h。 15.2.6 结果寄存器间接寻址 当使用间接或者间接增量寻址的模式访问结果寄存器时,根据表 15-1,在得到结果之前,乘法器操作 需要三个周期,在装载完第二个操作数和访问结果寄存器之间至少需要 1 条指令。 ;间接寻址方式访问乘法器 16x16 结果 MOV #RES0,R5 ;R5 内的间接寻址的 RES0 地址 MOV &OPER1,&MPY ;载入第一个操作数 MOV &OPER2,&OP2 ;载入第二个操作数 NOP ;需要一个周期 MOV @R5+,&xxx ;复制 RES0 MOV @R5,&xxx ;复制 RES1 如果是一个 32×16 的乘法操作,在读取第一个结果寄存器 RES0 和第二个结果寄存器之间也需要一条 指令。 ;间接寻址方式访问乘法器 32x16 结果 MOV #RES0,R5 ;R5 内的间接寻址的 RES0 地址 MOV &OPER1L,&MPY32L ;载入第一个操作数的低字 MOV &OPER1H,&MPY32H ;载入第一个操作数的高字 MOV &OPER2,&OP2 ;载入第二个操作数(16 位) NOP ;需要一个周期 MOV @R5+,&xxx ;复制 RES0 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–291–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM NOP MOV @R5,&xxx ;不需要额外的周期 MOV @R5,&xxx ;需要额外一个周期 ;复制 RES1 ;复制 RES2 15.2.7 使用中断 如果在写入 OP1 之后,写入 0P2 之前时产生中断,并且在中断服务程序中使用乘法器进行操作,此时 原来的乘法器模式选择将丢失,并且结果无法预料。为了避免这种情况的发生,在使用硬件乘法器之前应 该禁止中断,也不要在中断服务子程序中使用乘法器,或者使用乘法器的保护和恢复功能。 ;使用硬件乘法器之前禁止中断 DINT ;禁止中断 NOP ;DINT 需要该指令 MOV #xxh,&MPY ;载入第一个操作数 MOV #xxh,&OP2 ;载入第二个操作数 EINT ;如果结果在中断服务程序中存储、恢复,在处理结 ;果前使能中断 15.2.7.1 保存和恢复 如果在中断服务程序中使用硬件乘法器,可以使用 MPY32CTL0 寄存器来保存和恢复乘法器的状态。下 面的例程说明了为了允许在中断服务程序中使用乘法器,怎样保存和恢复完整的乘法器状态以及在中断服 务程序中乘法器的用法。由于 MPYSAT 位和 MPYFRAC 位的状态是未知的,应该按照下面例程的操作在保存 寄存器之前将它们清零。 ;使用乘法器的中断服务程序 MPY_USING_ISR PUSH &MPY32CTL0 ;保存乘法器模式等 BIC #MPYSAT+MPYFRAC,&MPY32CTL0 ;清除 MPYSAT+MPYFRAC PUSH &RES3 ;保存结果 3 PUSH &RES2 ;保存结果 2 PUSH &RES1 ;保存结果 1 PUSH &RES0 ;保存结果 0 PUSH &MPY32H ;保存操作数 1,高字 PUSH &MPY32L ;保存操作数 1, 低字 PUSH &OP2H ;保存操作数 2, 高字 PUSH &OP2L ;保存操作数 2, 低字 ; ... ;中断服务程序的主要部分 ;使用标准 MPY 程序 ; POP &OP2L ;恢复操作数 2, 低字 POP &OP2H ;恢复操作数 2, 高字 POP &MPY32L POP &MPY32H POP &RES0 ;恢复操作数 1,低字 ;恢复操作数 1,高字 ;恢复结果 0 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–292–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM POP POP POP POP reti &RES1 &RES2 &RES3 &MPY32CTL0 ;恢复结果 1 ;恢复结果 2 ;恢复结果 3 ;恢复乘法器模式等. ;中断服务程序结束 15.2.8 使用DMA 在具有 DMA 控制器的芯片中,当乘法操作的结果有效时,乘法器可以触发一次传输。DMA 控制器需要 读取从 MPY32RES0 寄存器连续到 MPY32RES3 寄存器。并不是所有的寄存器都需要读取。 一旦当 MPY32RES0 寄存器数据准备好时就触发 DMA 操作,DMA 将立即读取,如果允许快速访问,DMA 控制器也能在一个时钟周期内从 MPY32RES3 寄存器中获得准确的数据。输入到 DMA 控制器的信号是“乘法 器已就绪”。关于更详细的信息,请阅读 DMA 章节的内容。 15.3 32位硬件乘法器寄存器 32 位硬件乘法器 MPY32 寄存器列表如表 15-7 所列。基地址在数据手册中可以找到,地址偏移量如 表 15-7 所列。 表 15-7 32 位硬件乘法器 MPY32 寄存器 寄存器 缩写 寄存器类型 地址 初始状态 16-位操作数1—乘法 MPY 读/写 0130h 无变化 8-位操作数1—乘法 MPY_B 读/写 0130h 无变化 16-位操作数1—有符号数乘法 MPYS 读/写 0132h 无变化 8-位操作数1—有符号数乘法 MPYS_B 读/写 0132h 无变化 16-位操作数1—乘加 MAC 读/写 0134h 无变化 8-位操作数1—乘加 MAC_B 读/写 0134h 无变化 16-位操作数1—有符号数乘加 MACS 读/写 0136h 无变化 8-位操作数1—有符号数乘加 MACS_B 读/写 0136h 无变化 16-位操作数2 OP2 读/写 0138h 无变化 8-位操作数2 OP2_B 读/写 0138h 无变化 16x16-位结果低字 RESLO 读/写 013Ah 未定义 16x16-位结果高字 RESLI 读/写 013Ch 未定义 16x16-位总和扩展寄存器 SUMEXT 读 013Eh 未定义 32-位操作数1-乘法-低字 MPY32L 读/写 0140h 未变化 32-位操作数1-乘法-高字 MPY32H 读/写 0142h 未变化 24-位操作数1-乘法-高字节 MPY32H_B 读/写 0142h 未变化 32-位操作数1-有符号数乘法-低字 MPYS32L 读/写 0144h 未变化 32-位操作数1-有符号数乘法-高字 MPYS32H 读/写 0146h 未变化 24-位操作数1-有符号数乘法-高字节 MPYS32H_B 读/写 0146h 未变化 32-位操作数1-乘加-低字 MAC32L 读/写 0148h 未变化 32-位操作数1-乘加-高字 MAC32H 读/写 014Ah 未变化 24-位操作数1-乘加-高字节 MAC32H_B 读/写 014Ah 未变化 32-位操作数1-有符号数乘加-低字 MACS32L 读/写 014Ch 未变化 32-位操作数1-有符号数乘加-高字 MACS32H 读/写 014Eh 未变化 24-位操作数1-有符号数乘加-高字节 MACS32H_B 读/写 014Eh 未变化 32-位操作数2-低字 OP2L 读/写 0150h 未变化 32-位操作数2-高字 OP2H 读/写 0152h 未变化 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–293–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 24-位操作数2-高字节 OP2H_B 读/写 0152h 未变化 32x32-位结果0-最小有效字 RSE0 读/写 0154h 未定义 32x32-位结果1 RSE1 读/写 0156h 未定义 32x32-位结果2 RSE2 读/写 0158h 未定义 32x32-位结果3-最大有效字 RSE3 读/写 015Ah 未定义 MPY32 控制寄存器0 MPY32CTL0 读/写 015Ch 未定义 表 15-8 中所列的寄存器是等同的。 寄存器 16-位操作数1-乘法 8-位操作数1-乘法 16-位操作数1-有符号数乘法 8-位操作数1-有符号数乘法 16-位操作数1-乘加 8-位操作数1-乘加 16-位操作数1-有符号数乘加 8-位操作数1-有符号数乘加 16 x16-位结果低字 16 x16-位结果低字 表 15-8 可替代寄存器 可替代1 可替代2 MPY MPY32L MPY_B MPY32L_B MPYS MPYS32L MPYS_B MPYS32L_B MAC MAC32L MAC_B MAC32L_B MACS MACS32L MACS_B MACS32L_B RESL0 RES0 RESHI RES1 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–294–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM MPY32CTL0 32 位硬件乘法器控制寄存器 0 15 14 13 12 11 10 9 8 保留 MPY DLY32 MPYDLY WRTEN 7 6 54 3 2 1 0 MPY OP2_32 MPY OP1_32 MPYDLY32 Bit9 MPYMx MPY SAT MPY FRAC 保留 MPYC 写模式延迟 0 写操作延迟直到 64 位结果(RES0~RES3)有效 1 写操作延迟直到 32 位结果(RES0~RES3)有效 MPYDLYWRTEN Bit8 延迟写使能 所有对 MPY32 寄存器的写操作延迟到 64 位 (MPYDLY32=0)或 32 位(MPYDLY32=1)结果就绪。 0 写操作不延迟 MPYOP2_32 Bit7 MPYOP1_32 Bit6 MPYMx Bit5-4 MPYSAT Bit3 1 写操作延迟 乘法器操作数 2 的宽度 l 16 位 l 32 位 乘法器操作数 1 的宽度 8、16 位 9、32 位 乘法器模式 l MPY 乘法 l MPYS 有符号数乘法 Ø MAC 乘加 Ø MACS 有符号乘加 饱和模式 l 饱和模式禁止 l 饱和模式使能 MPYFRAC Bit2 MPYC Bit0 小数模式 10 小数模式禁止 11 小数模式使能 乘法器的进位位。如果未选择饱和模式或者小数模 式,该位被当作乘法结果的第 33 位或者第 65 位,因为 当切换到饱和模式或者小数模式时该位不变化。 0 结果没有进位 1 结果有进位 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–295–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 第16章 REF REF 模块是一个通用的参考系统,该系统可以为给定芯片内可用的其他子系统如:模数转换、数模转 换、比较器等提供参考电压。本章讲述 REF 模块。 16.1 REF简介 REF模块负责产生芯片内各种模拟外设所用的关键参考电压。这些外设包括下述外设但又不限于此,如 ADC12_A,DAC12_A,LCD_B及COMP_B等模块,具体与芯片型号有关。其核心是所有其他参考一个源于质子 或正向增益能级的能带隙。REFGEN子系统包括能带隙、能带隙偏置以及产生系统可用的3个主要电压 1.5 V,2.0 V和2.5 V的正向增益能级缓冲。此外,能带隙缓冲在使能情况下也是可以使用的。 REF 模块的特征包括: l 具有良好 PSRR(电源抑制比)、良好的温度系数及高精度的集中产生平衡式能 带隙 l 用户可选择的内部参考电压:1.5V、2.0V、2.5V l 产生的能带隙电压可用于系统复位 l 具有低功耗特性 l 具有良好向下兼容性 REF 的模块框图如图 16-1。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–296–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 16.2 工作原理 图 16-1REF 系统框图 REF 模块为整个系统的各种外设模块提供必要的参考电压,主要包括含 ADC12_A、DAC12_A、LCD_B 或 COMP_B 的芯片,但是不限制于这些。 REFGEN 子系统包括一个高性能的能带隙,这个能带隙具有非常好的精度(出厂时已经校准),低的温 度系数,及在低功耗模式下的高 PSRR(电源抑制比)。这个能带隙电压通过一个正向的电压放大器来产生 三个参考电压:1.5V、2.0V 及 2.5V。一次只能选择一个电压。REFGEN 子系统的一个输出是可变的参考基 准。这个可变参考基准可以给系统其他部分提供 1.5V、2.0V 或 2.5V。REFGEN 的另一个输出提供一个具有 能带隙缓冲的参考基准,该参考基准可以为整个系统中的模块提供参考源。此外,REFGEN 还可以为 DAC12_A 模块提供必需的参考电压。最后,REFGEN 子系统还包括一个来源于能带隙的温度传感器电路。ADC 可以使 用这个温度传感器来测量与温度成比例的电压。 16.2.1 低功耗操作 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–297–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM REF 模块支持如 LCD 发生器的低功耗应用。有很多的应用系统不需要有非常精确的参考电压,相对于 数据转换来说,电源还是首先要考虑的。为了支持各种应用,能带隙要能工作在采样模式下。在采样模式 下,能带隙电路通过工作在适当占空比的 VLO 来进行计时,这可以在降低精度的情况下,明显减少能带隙 电路的平均功耗。不工作在采样模式时,能带隙处在静态模式,此时的功耗处于最高,但是精度也最高。 模块可以通过自身单独的请求信号线产生静态模式或采样模式请求。这样,模块就可以为其操作选择 恰当地模式。当任何活动模块请求静态模时,都会使所有其他模块采用静态模式,而不论其他模块是否请 求了采样模式。换句话说,静态模式比采样模式的优先级高。16.2.2 REFCTL REFCTL 提供了一种对来自集中化的寄存器参考系统的控制方式。默认情况下,REFCTL 作为参考系统 的首要控制寄存器。以前的芯片中,在 ADC12_A 模块提供了配置参考系统的必要控制位 ADC12REFON, ADCREF2_5,ADC12TCOFF,ADC12REFOUT,ADC12SR 及 ADC12REFBURST。ADC12SR 及 ADC12REFBURST 对 ADC12 来说是比较特殊的,所以没有包含在 REFCTL 中。所有旧的型号芯片的控制位仍然可用于配置参考系统, 通过清除 REFMSTR 位允许退步兼容。这种情况下,不用考虑 REFCTL 寄存器位。 置位参考主位(REFMSTR=1)后,可以通过 REFCTL 寄存器来控制参考系统,这是默认配置。在这种模 式下,不需要考虑旧的型号芯片的 ADC12REFON,ADCREF2_5,ADC12TCOFF 及 ADC12REFOUT 位。ADC12SR 及 ADC12REFBURST 由于是 ADC12_A 模块的特殊位,所以仍可以通过 ADC12_A 模块控制。如果 REFMSRT=0,则 不必考虑 REFCTL 的所有设置,参考系统完全由 ADC12_A 模块的旧型号芯片控制位控制。表 16-1 列举了 REFCTL 位及对 REF 模块的影响。 表 16-1 默认情况下(REFMSTR=1)的参考系统配置 REF 寄存器配置 功能 REFON 设置此位将使能包括 REF 模块中的能带隙、能带隙偏置电路及 1.5V/2.0V/2.5V 的输出缓冲的 REFGEN 子系统。该位置位时,不管是 否有模块产生请求,REFGEN 系统都将一直处于使能状态。只有当没 有任何模块产生请求的情况下,清除该位时,将禁止 REFGEN 系统。 REFVSEL 当 REFON 置位或有模块需要 REFGEN 时,选择 1.5V、2.0V 及 2.5V 输 出选择。 REFOU 该位用于选择是否允许通过外部输出缓冲输出选中的参考电压到器 件的外部引脚。 REFTCOFF 为降低功耗,设置此位将禁止温度传感器。 表 16-2 总结了 ADC12_A 模块控制位及对 REF 的影响,更多详细内容可参考 ADC12_A 模块相关章节。 注意:尽管 REF 模块可以通过 ADC12_A 位作为参考系统的控制位,推荐使用新 REFCTL 寄存器,并将原来 的代码移植。这可以区分参考系统与 ADC12_A 的逻辑划分,使将来的产品划分更自然。 表 16-2 ADC12 对参考系统控制(REFMSTR=0) ADC12_A 寄存器配置 功能 ADC12REFON 此位置位将使能 REFGEN 子系统,该子系统包括能带隙、能带隙偏置 电路及 1.5V/2.0V/2.5V 的输出缓冲。当置位时,不管是否有模块产 生请求,REFGEN 系统都将一直保持使能状态。只有当所有模块都没 有请求 REFGEN 时,清除此位将禁止 REFGEN 子系统。 ADC12REF2_5 当 ADC12REFON=1 时,置位该位将选择 2.5V 参考,清除该位将选择 1.5V 参考。 ADC12REFOUT 置位该位,将使能通过外部输出缓冲输出选中的参考电压到芯片的外 部引脚。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–298–页 共 423 页 ADC12TCOFF LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 置位该位将禁止温度传感器以降低功耗 按照先前所述,通过 ADC12_A 控制的 ADC12REFBURST 对参考系统有一些影响。不管 REFCTL 或 ADC12_A 是否控制参考系统,该位都有效。当 REFON=1 且 REFMSTR=1 或 ADC12REFON = 1 且 REFMSTR = 0 时, 设 置 ADC12REFBURST=1 将 使 能 突 发 模 式 。 在 突 发 模 式 下 , 仅 在 数 据 转 换 的 过 程 中 使 能 内 部 缓 冲 (ADC12REFOUT=0)或外部缓冲(ADC12REFOUT=1),为了降低功耗在其他情况将自动禁止。 注意:原来 ADC12_A 中的 ADC12REF2_5 位仅用于选择 1.5V 或 2.5V。为选择 2.0V,必须使用 REFVSEL 控制 位(REFMSTR=1)。 16.2.3 请求参考系统 参考系统中,存在三个基本参考系统请求。每个模块可以利用这些请求信号从参考系统中获得适当的 响应。这三个基本请求分别是:REFGENREG、REFBGREQ 及 REFMODEREQ。用户代码不需要交叉执行,模块可 以自动选择适当的请求。 参考请求信号 REFGENREQ 是 REFGEN 子系统的输入信号。该信号是系统中各参考基准情况下,需要电 压参考的模块产生请求的逻辑或结果。当模块需要参考电压时,将产生相应的 REFGENREQ 信号。一旦产生 REFGENREQ 信号,REFGEN 子系统将处于使能状态。一定时间后,各参考电压即可达到稳定可用状态。REFVSEL 的设置决定在各参考基准下产生哪一个电压。 除 REFGENREQ 外,还有第二个参考请求信号,REFBGREQ。REFBGREQ 信号是需要能带隙参考基准的各模 块产生请求的逻辑或结果。一旦 REFBGREQ 发出请求,将使能在前一请求中没有使能的能带隙及其偏置电 路及局部缓冲。 REFMODEREQ 请求信号将能带隙及其偏置电路配置在采样或静止操作模式。这个信号是各模拟模块的请 求逻辑与的结果。实际上,REFMODEREQ 仅在产生 REFGENREQ 或 REFBGREQ 的情况下才产生,否则可以不用 考虑。当 REFMODEREQ=1 时,能带隙工作在采样模式。当模块发出相应的 REFMODEREQ 信号时,此时请求能 带隙工作在采样模式。由于 REFMODEREQ 是各请求的逻辑与结果,任何模块请求静态模式,将使能带隙工 作在静态模式下。BGMODE 位可以用来指示当前操作是在静态模式还是采样模式。 16.2.3.1 REFBGACT,REFGENACT,REFGENBUSY 使用参考基准的任何模块都会引起 REFCTL 寄存器的 REFGENACT 置位。该位为只读,可以指示用户判 断 REFGEN 处于活动模式还是关闭状态。同样,当一个或多个模块使用能带隙参考基准的任何时间,REFBGACT 都是活动的,可向用户指示 REFBG 处于活动模式还是关闭状态。 产生 REFGENBUSY 信号时,表示有模块正在使用参考电压,不能改变任何配置。例如:当 ADC12_A 转 换期间,参考电压是不能变化的。当 ADC12_A 正处于转换期间(ENC=1)或 DAC12_A(DAC12AMPx>1 及 ADC12SREFx=0)正在转换时,产生 REFGENBUSY。产生 REFGENBUSY 时,对 REFCTL 寄存器写保护。这样可以 阻止在任何转换期间禁止操作或改变参考电压。请注意,如果参考电压控制使用原先的 ADC12_A 控制位, 对 DAC12_A 没有上述保护。如果在 DAC12_A 正在使用参考系统时改变 ADC12_A 的配置,将会影响到 DAC12_A 转换。 16.2.3.2 ADC12_A 有ADC12_A模块的芯片,ADC12_A模块有两个局部缓冲。大的缓冲可用于驱动各参考基准下提供给芯片 外部的参考电压。由于可以选择突发模式,同时需要驱动芯片外部的大直流负载,这个缓冲电源消耗较大。 当REFON=1、REFOUT=1及ADC12REFBURST=0时,大缓冲可以连续出于使能状态。当ADC12REFBURST=1时,只 有在ADC转换过程中时,才使能缓冲,在转换完成时,将自动关闭缓冲以降低功耗。此外,当REFON=1及 REFOUT=1时,将自动禁止第二个小缓冲。这种情况下,大缓冲的输出通过内部的模拟开关连接到电容阵列 上。这样可以确保在整个系统中使用相同的参考电压。如果REFON=1及REFOUT=0,内部缓冲用于ADC转换, 大缓冲将被禁止。同样可以通过配置ADC12REFBURST=1使内部的小缓冲工作在突发模式下。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–299–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 16.2.3.3 DAC12_A 有些芯片含有 DAC12_A 模块。DAC12_A 可以使用各参考基准的 1.5V、2.0V 或 2.5V 来作为它的参考电 压。DAC12_A 模块可以直接通过模块自身的设置来直接请求参考电压。基本上,如果使能了 DAC 并且选择 了内部参考电压,将从 REF 模块来请求参考电压。另外,按照以前所述,设置 REFON=1(REFMSTR=1)或 ADC12REFON=1(REFMSTR=0)都可以使能各参考基准,而不依赖于 ADC12_A 的控制位。 REFGEN 子系统可以为 DAC12_A 模块提供多种分频后的参考电压。DAC12_A 需要将各参考电压的/2 或/3, 这项选择是取决于 DAC12_A 模块(DAC12IR、DAC12OG)的控制位,由 REF 模块自动处理。 当 DAC12_A 选择 AVCC 或 VEREF+作为它的参考时,DAC12_A 内部有/2 和/3 电阻串,可在 DAC12IR 及 DAC12OG 设置基础上确定参考电压范围。 16.2.3.4 LCD_B 具有LCD模块的芯片将使用到LCD_B模块,LCD_B模块需要参考电压用于产生适当的LCD电压。REFGEN子 系统中的能带隙参考源可用于这项功能。当LCD_B模块中的LCDON=1时使能LCD模块。此时LCD模块会产生 REFBGREQ请求信号。缓冲能带隙将用于LCD_B模块的能带隙参考基准。 16.3 REF寄存器 表16-3为REF寄存器列表。基地址可以参考芯片数据手册,地址偏移量见表16-3。 表 16-3 REF 寄存器 寄存器 缩写 读写类型 访问形式 初始状态 FERCTL0 REFCTL0 读/写 字 0080h REFCTL0_L 读/写 字节 80h REFCTL0_H 读/写 字节 00h REFCTL0,REF 控制寄存器 0 15 14 13 12 保留 R0 7 REFMST R rw-(1) 6 保留 r-(0) 5 4 REFVSEL rw-(0) rw-(0) 11 BGMOD E r-(0) 3 REFTCO FF rw-(0) 10 REFGEN BUSY r-(0) 2 保留 r-(0) 9 REGBG ACT r-(0) 1 REFOUT rw-(0) 8 REFGEN ACT r-(0) 0 REFON rw-(0) 只有REFGENBUSY = 0时可修改。 BGMODE BIT11 REFGENBUSY BIT10 REFBGACT BIT9 能带隙模式,只读。 0:静态模式 1:采样模式 参考发生器忙,只读。 0:参考发生器不忙 1:参考发生器忙 参考能带隙活动指示,只读。 0:能带隙参考缓冲不在活动状态 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–300–页 共 423 页 REFGENACT REFMSTR REFVSEL REFTCOFF REFOUT REFON LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 1:能带隙参考缓冲在活动状态 BIT8 参考发生器活动指示,只读 0:参考发生器不在活动状态 1:参考发生器在活动状态 BIT7 REF 主控制位 0:参考系统由 ADC12_A 模块的原先的控制位来控制 1:参考系统有 REFCTL 寄存器来控制,不用考虑 ADC12_A 模块中相同的寄存器位 BIT5~4 参考电压选择 00:产生参考请求或 REFON=1 时,使用 1.5V 01:产生参考请求或 REFON=1 时,使用 2.0V 1X:产生参考请求或 REFON=1 时,使用 2.5V BIT3 温度传感器禁止 0:温度传感器允许 1:温度传感器禁止以节省电源消耗 BIT1 参考输出缓冲 0:禁止参考电压输出到外部 1:参考电压可以输出到外部。如果 ADC12REFBURST=0 或 使能 DAC12_A 时,可连续输出。当 ADC12REFBURST=1 只在 ADC12_A 转换过程时可输出 BIT0 参考电压使能 0:如果没有参考电压请求将禁止参考电压 1:使能参考电压 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–301–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 第17章 ADC12_A 模块 ADC12_A 模块是高性能 12 位模数转换器。本章将主要讲述 ADC12_A 模块的操作。 17.1 ADC12_A 简介 17.2 ADC12_A 的操作 17.3 ADC12_A 寄存器 17.1 ADC12_A 介绍 ADC12_A 模块支持快速 12 位模数转换。该模块具有一个 12 位的逐次渐进(SAR)内核,采样选择控制, 参考电压发生器(只针对 MSP430F54xx,在其他芯片内单独的 REF 模块)和 16 个字的转换控制缓冲区。转 换控制缓冲区允许没有 CPU 干预的情况下,多达 16 路独立 ADC 采样值进行转换和保存。 ADC12_A 特性有: 14、高于 200ksps 的最大转换率 15、单调无丢失编码的 12 位转换 16、采样周期可由软件或定时器编程控制的采样保持功能 17、软件或定时器启动转换 18、可通过软件选择的片上参考电压(MSP430F54xx:1.5V 或者 2.5V,其它芯片:1.5V,2.0V 或者 2.5V) 19、可通过软件选择的内部或外部参考 20、12 个单独配置的外部输入通道 21、内部温度传感器,AVCC,外部参考电压的转换通道 22、正或负参考电压通道可独立选择 23、可选的转换时钟源 24、单通道单次,单通道多次,序列通道,序列通道多次的转换模式 25、ADC 内核和参考电压都可以单独关闭(仅仅针对 MSP430F54xx,其它芯片详见 REF 模块说明) 26、快速响应 18 路 ADC 中断的中断向量寄存器 27、16 位转换结果存储寄存器 ADC12_A 的框图如图 17-1 所示。在 MSP430F54xx 芯片中,参考电压发生器位于 ADC12_A 模块中。在 其他芯片中,参考电压发生器位于参考电压模块中(详见数据手册)。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–302–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM A MODOSC 是 UCS 模块的一部分。更多的信息请参考 UCS 章节。 B 有效时钟源信息请参考数据手册。 图 17-1 ADC12_A 模块框图 17.2 ADC12_A 操作 通过软件对 ADC12_A 模块进行配置。下面部分将讨论 ADC12_A 的配置和操作。 17.2.1 12 位 ADC 内核 ADC 内核将一个模拟输入信号转换为 12 位的数字信号,并将其结果存储在转换存储器中。该内核采 用两个可编程/选择的电压(VR+和 VR-)作为转换的上限和下限。当输入信号大于或等于 VR+时,数字输出 (NADC)为最大值(0FFFh),而当输入信号小于者等于 VR-时,输出为 0。在转换控制存储器中定义输入通 道和参考电压(VR+和 VR-)。ADC 转换结果 Nadc 的计算公式为: Nadc = 4095 × (Vin-VR -)⁄(VR +-VR -) ADC12_A 内核可通过两个寄存器 ADC12CTL0 和 ADC12CTL1 来进行配置,通过 ADC12ON 位使能 内核。在不需要转换时可以关闭 ADC12_A 以节省功耗。除很少例外,只有当 ADC12ENC = 0 时才能修改 ADC12_A 控制位。在执行转换前 ADC12ENC 必须置 1。 17.2.1.1 选择转换时钟 当使用脉冲采样模式时,ADC12CLK 用来作为转换时钟及生成采样周期。ADC12_A 时钟源可以由 ADC12DIV 位控制进行预分频和 ADC12SSELx 位控制进行分频。使用 ADC12DIVx 位和 ADC12DIV 位, 输入时钟能够被 1-32 分频。ADC12CLK 时钟源可从 SMCLK,MCLK,ACLK 和 MODOSC 中选择。 框图中的 ADC12OSC 是指来自 UCS 的 MODOSC5 MHz 振荡器,且会随着芯片、供电电压和温度的 不同而有所变化。详见具体芯片数据手册的 ADC12OSC 部分。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–303–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 用户必须确保在转换结束前所选择的 ADC12CLK 是活动的。如果在转换的过程中时钟关闭,那么不 能完成本次转换操作,结果也是无效的。 17.2.2 ADC12_A 输入和多路复用器 模拟输入多路复用器选择 12 路外部和 4 路内部模拟信号作为转换通道。输入多路复用器是先开后合 型的,这样可以减少通道切换时引入的噪声(见图 17-2)。输入多路复用器也是一个 T 型的开关以尽量减 少通道间的耦合。那些未被选用的通道则将与 AD 模块隔离,中间节点与模拟地相连,可以使寄生电容接 地,消除串扰。 ADC12_A 使用电荷再分配的方法。当输入信号在内部切换时,切换动作可能导致输入信号的瞬间变 化,这个瞬间变化在产生错误的转换之前就会衰减、稳定。 图 17-2 模拟多路复用器 17.2.2.1 选择模拟端口 ADC12_A 的模拟输入与数字端口引脚复用。当模拟信号应用到数字门电路时,会产生从 VCC 到 GND 的 寄生电流。如果输入电压接近门电路的转换电平,将产生寄生电流。禁止端口引脚的数字部分,可消除寄 生电流,从而减少总电流消耗。PySELx 位具有禁止端口引脚输入输出缓冲的能力。 ;Py.0 和 Py.1 配置为模拟输入 BIS.B #3h,&PySEL ;Py.1 和 Py.0 ADC12_A 功能 17.2.3 电压参考发生器 MSP430F54XX 的 ADC12_A 模块包括一个内置的参考电压,这个参考电压有两个可选的电压等级 1.5V 和 2.5V。每一个参考电压都可以作为内部参考电压或输出到外部引脚 Vref+。 其他芯片的 ADC12_A 模块都有单独的参考模块,它可以给 ADC12_A 提供 3 个可选电压等级,1.5V, 2.0V 和 2.5V。每一个参考电压都可以作为内部参考电压或输出到外部引脚 Vref+。 设置 ADC12REFON = 1,将使能 ADC12_A 模块的参考电压。当 ADC12REF2_5=1 时,内部参考电压 为 2.5V。当 ADC12REF2_5=0 时,参考电压为 1.5V。参考模块在不使用时可以关闭以降低功耗。带 REF 模块的芯片可使用 ADC12_A 模块中的控制位或者 REF 模块中的控制寄存器控制供给 ADC 的参考电压。 REF 模块的默认寄存器设置,定义了参考电压的设置。REF 模块中的控制位 REFMSTR 用于把控制权给 ADC12_A 参考控制寄存器的设置。如果寄存器的 REFMSTR 位设置为 1(默认值),REF 模块寄存器控制 参考电压设置。如果 REFMSTR 位设置为 0,ADC12_A 参考设置将定义 ADC12_A 模快的参考电压。 外部电压可以通过 VREF+/VeREF+和 VREF-/VeREF 引脚分别提供 VR+和 VR-。只有在 REFOUT=1,同 时需要在外部引脚上输出参考电压时,外部才需要一个储能电容。 17.2.3.1 内部参考电压的低功耗特性 ADC12_A 内部参考发生器是为低功耗应用而设计的。参考发生器包括一个带隙电压源和一个独立的 缓冲器。每个系列芯片的功耗及建立时间在具体芯片的数据手册中有详细说明。当 ADC12REFON = 1 时, 使能带隙电压源和缓冲器,当 ADC12REFON =0 时,两者都禁止。 当 ADC12REFON = 1 及 REFBURST = 1 时,如果没有转换,缓冲区将自动禁止,当需要时才自动使 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–304–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 能。当缓冲器禁止时,它不消耗任何功耗。在这种情况下,带隙电压源仍保持使能状态。 REFBURST 位控制参考缓冲器的操作。当 REFBURST=1 时,如果 ADC12_A 处于非转换状态,缓冲 器将自动禁止,需要时才自动重新使能。当 REFBURST = 0 时,参考缓冲器处于一直打开的状态。如果 REFOUT = 1,这将允许参考电压持续输出到芯片外部。 内部参考缓冲器也有可配置的转换速度和功耗。当最大转换速率低于 50 ksps 时,设置 ADC12SR=1 能降低缓冲器大约 50%的电流消耗。 17.2.4 自动断电 ADC12_A 是为低功耗系统应用而设计的。当 ADC12_A 没有处于转换状态时,内核将自动禁止,当 需要时能自动重新使能。MODOSC 也可在需要时自动使能,不需要时禁止。 17.2.5 采样转换时序 采样输入信号 SHI 的上升沿将启动模数转换。SHI 信号源可以通过 SHSx 位选择,包括下面内容: 28、ADC12SC 位 29、三个定时器输出(定时器时钟源信息请参考芯片数据手册) ADC12_A 支持 8 位、10 位及 12 位分辨率模式,可以通过 ADC12RES 位选择。模数转换分别需要 9、 11、及 13 个 ADC12CLK 周期。SHI 信号源的极性可以通过 ADC12ISSH 位反转。SAMPCON 信号控制采 用周期和启动转换。当 SAMPCON 信号为高时,表示正处在采样过程,SAMPCON 由高到低转换将启动 模数转换。ADC12SHP 定义了两种不同的采样时序方法,扩展采样时序和脉冲采样时序。SHI 源可用时钟 请参考具体芯片数据手册。 17.2.5.1 扩展采用模式 当 ADC12SHP = 0 时,选择扩展采样模式。SHI 信号直接控制 SAMPCON,并定义采样周期 tsample 的长度。当 SAMPCON 为高时,采样运行。与 ADC12CLK 同步后,SAMPCON 信号高向低的跳变将启动 转换(图 17-3)。 图 17-3 扩展采样模式 17.2.5.1 脉冲采样模式 当 ADC12SHP = 1 时,选择脉冲采样模式。SHI 信号用于触发采样定时器。ADC12CTL0 寄存器 中的 ADC12SHT0x 和 ADC12SHT1x 控制采样定时器的间隔,该间隔定义 SAMPCON 的采样周期 tsample。 在与 AD12CLK 同步后,采样定时器保持 SAMPCON 在一个编程间隔 tsample 的时间内为高。总采样时间 为 tsample 加上 tsync 的时间(见图 17-4)。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–305–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM ADC12SHTx 位选择 4 倍的 ADC12CLK 作为采样时间。ADC12SHT0x 位选择 ADC12MCTL0 到 ADC12MCTL7 的采样时间,ADC12SHT1x 选择 ADC12MCTL8 到 ADC12MCTL15 的采样时间。 图 17-4 脉冲采样模式 17.2.5.1 采样时序注意事项 当 SAMPCON = 0 时,所有的 Ax 输入都是高阻态。当 SAMPCON = 1 时,在采样时间 tsample 内, 选择的 Ax 输入可以等效于一个 RC 低通滤波器,如图 17-5 所示。从输入源看,可看作内部多路器的输入 电阻 Ri(最大 1.8kΩ)与电容 Ci(最大 25 pF)串联。对于精确的 n 位(n 是转换分辨率的位数)转换来 说,电容 Ci 的电压 Vc 必须被充到源电压 VS 的 1/2 LSB 范围内。 图 17-5 模拟输入等效电路 源电阻 Rs 和 Ri 影响 tsample。下面的公式可以计算 n 位转换所需的最小采样时间 tsample: tsample > (Rs + Ri) × ln(2^(n+1)) × Ci + 800ns 替代上面给出的 Ri 和 Ci 值,该方程变为: tsample > (Rs + 1.8 kΩ) ×ln(2^(n+1))×25pF + 800ns 例如,对于 12 位的转换,如果 RS 为 10K,tsample 必须大于 3.46μs。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–306–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 17.2.6 转换存储器 有 16 个 ADC12MEMx 转换存储寄存器用于存储转换结果。每个 ADC12MEMx 都可通过相关的 ADC12MCTLx 控制寄存器来配置。SREFx 位定义参考电压,INCHx 位选择输入通道。当使用了序列通道 转换模式时,ADC12EOS 位来定义了转换序列结束。使用序列转换模式时,ADC12EOS 位定义序列的结 束,ADC12MCTL15 的 ADC12EOS 没有置位时,转换将按照从 ADC12MEM15 到 ADC12MEM0 的序列 来进行。 CSTARTADDX 位定义任意转换中所用到的第一个 ADC12MCTLx。如果是单通道单次转换模式或者单 通道多次转换模式,CSTARTADDx 用于指向所用的单一 ADC12MCTLx。 如果选择序列通道模式或者序列通道多次转换模式,CSTARTADDx 指向序列中第一个 ADC12MCTLx 位置。当每次转换完成后,指针自动增加到序列的下一个 ADC12MCTLx。序列一直继续到处理最后的控 制字节:ADC12MCTLx 中的 ADC12EOS。 当转换结果写到选择的 ADC12MEMEx 时,ADC12IFGx 寄存器中相应的标志将置位。 转换结果 ADC12MEMx 又两种存储格式。当 ADC12DF=0 时,转换结果是右对齐的无符号数。对于 8 位、10 位及 12 位分辨率,ADC12MEMx 的高 8 位、6 位及 4 位总是 0。当 ADC12DF=1 时,转换结果是 左对齐,以补码形式存储。对于 8 位、10 位及 12 位分辨率,在 ADC12MEMx 中相应的低 8 位、6 位及 4 位总是 0。总结如表 17-1 所示。 表 17-1 ADC12_A 转换结果格式 模拟输入电压 ADC12DF ADC12RES 理论值 ADC12MEMx -VREF 0 到+VREF 0 00 0~255 0000~00FFH 01 0~1023 0000~03FFH 0 10 0~4095 0000~0FFFH 1 00 -128~127 8000~7F00H 1 01 -512~511 8000~7FC0H 1 10 -2048~2047 8000~7FF0H 17.2.7 ADC12_A 转换模式 ADC12_A 有 4 种操作模式,可以通过 CONSEQx 位选择,如表 17-1 所示,所有的状态图假定是 12 位转换。 表 17-2 转换模式总结 ADC12CONSEQx 模式 操作 00 单通道单次转换 一个单通道转换一次 01 序列通道单次转换 一个序列通道转换一次 10 单通道多次转换 一个单通道重复转换 11 序列通道多次转换 一个序列通道重复转换 17.2.7.1 单通道单次转换模式 一个单通道进行一次采样和转换。ADC 转换结果写入由 CSTARTADDx 位定义的 ADC12MEMx。图 17-6 所示为单通道单次转换的流程。当 ADC12SC 触发一次转换时,可以通过 ADC12SC 位连续触发转换。 当使用其它的触发源时,ADC12ENC 必须在每次转换后翻转。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–307–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图 17-6 单通道单次转换模式 17.2.7.2 序列通道单次转换模式 通道序列进行一次采样和转换。ADC 转换结果写入由 CSTARTADDx 位定义的以 ADCMEMx 开始的 转换存储器中。ADC12EOS 置 1 时的通道测量后,序列停止。图 17-7 所示为序列通道单次转换模式。当 ADC12SC 触发一次转换,ADC12SC 能够连续触发转换。当使用其它的触发源时,ADC12ENC 必须在每 个转换序列后进行翻转。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–308–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图 17-7 序列通道单次转换模式 17.2.7.3 单通道多次转换 一个单通道连续进行采样和转换。ADC 转换结果写入由 CSTARTADDx 位定义的 ADC12MEMx。由于 只使用一个 ADC12MEMx,下一转换将覆盖结果,所以在每次转换完成后必须读出结果。图 17-8 所示为 单通道多次转换模式。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–309–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图 17-8 序列通道单次转换模式 17.2.7.4 序列通道多次转换 序列通道进行多次采样和转换。ADC 转换结果写入由 CSTARTADDx 位定义的以 ADCMEMx 开始的 转换存储寄存器。在 ADC12EOS 置位的测量及触发信号触发下一序列后,序列结束。图 17-9 所示为序列 通道多次转换模式。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–310–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图 17-9 序列通道多次转换模式 17.2.7.5 使用多路采样转换(ADC12MSC)位 要将转换器配置为能够自动且尽可能快地进行连续转换,可以使用多路采样转换功能。当 ADC12MSC = 1,CONSEQx > 0 并且使用采样定时器时,SHI 信号的第一个上升沿触发第一次转换。前一次的转换完 成时,将自动地触发连续转换。忽略 SHI 信号的其他上升沿,直到序列通道单次转换模式中的序列转换完 毕,或者在单通道多次转换模式或序列通道多次转换模式中的 ADC12ENC 位翻转。使用 ADC12MSC 位时, ADC12ENC 位的功能不变。 17.2.7.6 停止转换 如何停止 ADC12_A 操作与操作模式有关。推荐按照下面的操作,停止正在进行的一个转换或者转换 序列: 30、在单通道单次转换模式下复位 ADC12ENC 将立即停止转换,此时转换结果是不可预料的。为了得到 正确的结果,清除 ADC12ENC 位之前,应不断查询 BUSY 位直到为 0。 31、在单通道多次转换模式下,复位 ADC12ENC 可在当前转换结束时停止转换器。 32、在序列通道多次转换或序列通道单次转换模式下,复位 ADC12ENC 可在序列结束时停止转换器。 33、在任何操作模式下,设置 CONSEQx = 0,及复位 ADC12ENC 位都会立即停止转换。转换结果不可预 料。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–311–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 注意:序列模式下没有置位 ADC12EOS 如果序列模式下没有设置 ADC12EOS 位,复位 ADC12ENC 不能停止该序列。为了停止该序列, 应首先选择单通道模式,然后复位 ADC12ENC。 17.2 .8 使用 内部 集成的温度传感器 要使用片上的温度传感器,用户需要选择模拟输入通道 INCHx = 1010。就像选择外部通道一样,需要 进行其它的寄存器配置,包括参考电压选择,转换存储寄存器等。MSP430F54xx 系列芯片中,温度传感器 在 ADC12_A 模块中,而在其它芯片中,温度传感器则是 REF 模块的一部分。 温度传感器典型的传递函数如图 17-10 所示,该传递函数仅仅作为一个示例,实际的参数可以参考具 体芯片的数据手册。当使用温度传感器时,采样周期必须大于 30us。温度传感器的偏移误差可能比较大, 在实际大部分应用中需要进行校准。实际使用的温度校准值见 TLV 描述符(请参考具体芯片的数据手册)。 选择温度传感器会自动地开启片上参考电压发生器作为温度传感器的电源。但是,它不能使能 VREF+ 输出或者影响转换参考电压的选择。转换温度传感器的参考电压选项和其它通道相同。 图 17-10 典型的温度传感器传递参数 17.2.9 ADC12_A 接地和噪声的考虑 与其他高分辨率 ADC 一样,为了消除接地回路、不必要的寄生效应和噪声,必须采用 PCB 布局和接 地技术。 当 A/D 的回路电流流经与其它模拟或数字电路的公共回路时,会形接地回路。如果不注意,该电流会 产生一个不必要的微小偏置电压,该电压将叠加到参考电压或者 ADC 的输入电压上。图 17-11 所示的连 接方法可以避免这种情况。 除了接地,数字开关或开关电源在电源线上的纹波和噪声,会影响转换结果。建议使用模拟和数字地 分开只在一点相连的无噪声设计,以提高转换分辨率。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–312–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图 17-11 ADC12_A 接地和噪声考虑 17.2.10 ADC12_A 中断 ADC12_A 有 18 个中断源: 34、ADC12IFG0-ADC12IFG15 35、ADC12OV,ADC12MEMx 溢出 36、ADC12TOV,ADC12_A 转换时间溢出 当 ADC12MEMx 存储寄存器载入转换结果的时候,相应的 ADC12IFGx 位置位。如果相应的 ADC12IEx 位和 GIE 位置位,将产生中断请求。如果未读出前一次转换结果前,又将转换结果写入 ADC12MEMx, ADC12OV 条件产生。如果当前转换完成前产生另一个采样转换请求,产生 ADC12TOV 条件。当单通道 模式一个转换完成后,或序列通道转换模式一个序列通道转换完成后,将触发 DMA。 17.2.10.1 ADC12IV,中断向量发生器 所有的 ADC12_A 中断源按照优先次序组合,共用一个中断向量。中断向量寄存器 ADC12IV 用于判 断哪个使能的 ADC12_A 中断源产生了中断请求。 具有最高优先级的 ADC12_A 中断在 ADC12IV 寄存器里产生一个数值(见寄存器说明)。该数值加到 程序计数器(PC)上,程序自动进入相应的软件服务程序。禁止 ADC12_A 中断不影响 ADC12IV 的值。 如果 ADC12TOV 条件和 ADC12OV 条件中的其中一个,在挂起的中断中优先级最高,任何对 ADC12IV 寄存器的读或写访问,都会自动复位 ADC12TOV 条件或 ADC12OV 条件。两者都没有可用的中断标志。 对 ADC12IV 的访问不会复位 ADC12IFGx 标志。通过访问相应 ADC12MEMx 寄存器,可以自动复位 ADC12IFGx,也可以通过软件复位。 如果在响应一个中断服务子程序后有另一个中断请求处于挂起状态,则会产生另一个中断。例如,当 中断服务程序访问 ADC12IV 寄存器时,ADC12OV 和 ADC12IFG3 中断都处于挂起状态,ADC12OV 中断 条件将自动复位。在中断服务程序的 RETI 指令执行完后,ADC12IFG3 产生另一个中断。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–313–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 17.2.10.2 ADC12_A 中断处理软件示例 下面的软件示例所示为 ADC12IV 的推荐使用和操作方法。ADC12IV 值加到 PC 指针上,系统从而跳 转到相应的处理程序。 右边边缘的数字表示每条指令所必需的 CPU 周期。不同中断源的软件执行时间包括中断等待时间和 中断返回周期,但是不包括任务处理本身。等待时间为: 37、ADC12IFG0–ADC12IFG14,ADC12TOV,和 ADC12OV:16 周期 38、ADC12IFG15:14 周期 ADC12IFG15 中断处理程序所示的方法用于在 ADC12IFG15 处理过程中,立即检测是否产生了更高优先级 中断。如果另一个 ADC12_A 中断挂起,这样可以节省 9 个周期的时间。 ; ADC12.中断处理程序 INT_ADC12 ;进入中断处理程序 ADD &ADC12IV,PC ;偏移量加到 PC RETI ;向量 0: 无中断 JMP ADOV ;向量 2: ADC 溢出 JMP ADTOV ;向量 4: ADC 定时溢出 JMP ADM0 ;向量 6: ADC12IFG0 ... ;向量 8-32 JMP ADM14 ;向量 34: ADC12IFG14 ; ;ADC12IFG15 处理程序从这里开始,不需要 JMP. ; ADM15 MOV &ADC12MEM15,xxx ;复制结果,标志复位 ... ;需要其他的指令? JMP INT_ADC12 ;检测其他挂起中断 ; ;ADC12IFG14-ADC12IFG1 处理程序运行到此 ; ADM0 MOV &ADC12MEM0,xxx ;复制结果,标志复位 ... ;需要其他的指令? RETI ;返回 ; ADTOV ... ;处理转换时间溢出 RETI ;返回 ; ADOV ... ;处理 ADCMEMx 溢出 RETI ;返回 17.3 ADC12_A 寄存器 ADC12_A 寄存器如表 17-3 所列。ADC12_A 的基地址可以在具体芯片的数据手册中找到。ADC12_A 寄 存器的地址偏移量在表 17-3 中给出。 寄存器 缩写 读写类型 访问形式 初始状态 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–314–页 共 423 页 ADC12_A 控制器 0 ADC12_A 控制器 1 ADC12_A 控制器 2 ADC12_A 中断标志 ADC12_A 中断向量 ADC12_A 存储器 0 ADC12_A 存储器 1 ADC12_A 存储器 2 ADC12_A 存储器 3 ADC12_A 存储器 4 ADC12_A 存储器 5 ADC12_A 存储器 6 ADC12_A 存储器 7 ADC12_A 存储器 8 ADC12_A 存储器 9 LSD SCIENCE & TECHNOLOGY CO.,LTD. ADC2CTL0 ADC2CTL0_L ADC2CTL0_H ADC2CTL1 ADC2CTL1_L ADC2CTL1_H ADC2CTL2 ADC2CTL2_L ADC2CTL2_H ADC12IFG ADC12IFG_L ADC12IFG_H ADC2IV ADC2IV_L ADC2IV_H ADC12MEM0 ADC12MEM0_L ADC12MEM0_H ADC12MEM1 ADC12MEM1_L ADC12MEM1H ADC12MEM2 ADC12MEM2_L ADC12MEM2_H ADC12MEM3 ADC12MEM3_L ADC12MEM3_H ADC12MEM4 ADC12MEM4_L ADC12MEM4_H ADC12MEM5 ADC12MEM5_L ADC12MEM5_H ADC12MEM6 ADC12MEM6_L ADC12MEM6_H ADC12MEM7 ADC12MEM7_L ADC12MEM7_H ADC12MEM8 ADC12MEM8_L ADC12MEM8_H ADC12MEM9 ADC12MEM9_L ADC12MEM9_H 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读 读 读 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 利尔达科技有限公司 WWW.LIERDA.COM 字 字节 字节 字 字节 字节 字 字节 字节 字 字节 字节 字 字节 字节 字 字节 字节 字 字节 字节 字 字节 字节 字 字节 字节 字 字节 字节 字 字节 字节 字 字节 字节 字 字节 字节 字 字节 字节 字 字节 字节 0000h 00h 00h 0000h 00h 00h 0000h 00h 00h 0000h 00h 00h 0000h 00h 00h 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–315–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM ADC12_A 存储器 10 ADC12MEM10 读/写 字 ADC12MEM10_L 读/写 字节 ADC12MEM10_H 读/写 字节 ADC12_A 存储器 11 ADC12MEM11 读/写 字 ADC12MEM11_L 读/写 字节 ADC12MEM11_H 读/写 字节 ADC12_A 存储器 12 ADC12MEM12 读/写 字 ADC12MEM12_L 读/写 字节 ADC12MEM12_H 读/写 字节 ADC12_A 存储器 13 ADC12MEM13 读/写 字 ADC12MEM13_L 读/写 字节 ADC12MEM13_H 读/写 字节 ADC12_A 存储器 14 ADC12MEM14 读/写 字 ADC12MEM14_L 读/写 字节 ADC12MEM14_H 读/写 字节 ADC12_A 存储器 15 ADC12MEM15 读/写 字 ADC12MEM15_L 读/写 字节 ADC12MEM15_H 读/写 字节 ADC12_A 存储控制器 0 ADC12MCTL0 读/写 字节 ADC12_A 存储控制器 1 ADC12MCTL1 读/写 字节 ADC12_A 存储控制器 2 ADC12MCTL2 读/写 字节 ADC12_A 存储控制器 3 ADC12MCTL3 读/写 字节 ADC12_A 存储控制器 4 ADC12MCTL4 读/写 字节 ADC12_A 存储控制器 5 ADC12MCTL5 读/写 字节 ADC12_A 存储控制器 6 ADC12MCTL6 读/写 字节 ADC12_A 存储控制器 7 ADC12MCTL7 读/写 字节 ADC12_A 存储控制器 8 ADC12MCTL8 读/写 字节 ADC12_A 存储控制器 9 ADC12MCTL9 读/写 字节 ADC12_A 存储控制器 10 ADC12MCTL10 读/写 字节 ADC12_A 存储控制器 11 ADC12MCTL11 读/写 字节 ADC12_A 存储控制器 12 ADC12MCTL12 读/写 字节 ADC12_A 存储控制器 13 ADC12MCTL13 读/写 字节 ADC12_A 存储控制器 14 ADC12MCTL14 读/写 字节 ADC12_A 存储控制器 15 ADC12MCTL15 读/写 字节 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 未定义 ADC12 控制寄存器 0(ADC12CTL0) 15 14 13 12 ADC12SHT1x 7 6 5 4 ADC12 ADC12 ADC12 ADC12 MSC REF2_5V REFON ON 11 3 ADC12 OVIE 10 9 ADC12SHT0x 2 1 ADC12 ADC12 TOVIE ENC 8 0 ADC12 SC ADC12EN=0 时,才可以修改。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–316–页 共 423 页 ADC12SHT1x ADC12SHT0x ADC12MSC ADC12REF2_5V ADC12REFON ADC12ON ADC12OVIE ADC12TOVIE LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM Bits15-12 Bits11-8 ADC12_A 采样保持时间。这些位定义寄存器 ADC12MEM8 到 ADC12MEM15 的采样周期的 ADC12CLK 数。 ADC12_A 采样保持时间。这些位定义寄存器 ADC12MEM0 到 ADC12MEM7 的采样时间的 ADC12CLK 数。 ADC12SHTx 位 ADC12CLK 周期 0000 4 0001 8 0010 16 0011 32 0100 64 0101 96 0110 128 0111 192 1000 256 1001 384 1010 512 1011 768 1100 1024 1101 1024 1110 1024 1111 1024 Bit7 ADC12_A 多路采样转换。适用于序列转换或者重复转换模 式 0 每次采样转换,都需要一个 SHI 信号的上升沿触发采 样定时器。 1 仅首次转换需要有 SHI 信号的上升沿触发采样定时 器,而后采样转换将在前一次转换完成后自动进行。 Bit6 ADC12_A 参考电压发生器。ADC12REFON 位必须置 1。 0 1.5V 1 2.5V Bit5 ADC12_A 参考电压打开。在有 REF 模块的芯片中,只有 REF 模块的 REFMSTR 位置 0 时, 该位才有效。在 F54xx 系列的芯片中,REF 模块不可用。 0 内部参考电压关闭 1 内部参考电压打开 Bit4 ADC12_A 打开。 0 ADC12_A 关闭 1 ADC12_A 打开 Bit3 ADC12MEMx 溢出中断使能位。为了使能中断,GIE 位必 须置位。 0 溢出中断禁止 1 溢出中断使能 Bit2 ADC12_A 转换时间溢出中断使能。为了使能中断,GIE 位 必须置位。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–317–页 共 423 页 ADC12ENC ADC12SC LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 0 转换时间溢出中断禁止 1 转换时间溢出中断使能 Bit1 ADC12_A 转换使能 0 ADC12_A 禁止 1 ADC12_A 使能 Bit0 ADC12_A 转换启动位。软件控制采样转换启动。 ADC12SC 和 ADC12ENC 位可以在一条指令中置位。 ADC12SC 自动复位。 0 没有启动采样转换 1 启动采样转换 ADC12CTL1,ADC12 控制寄存器 1 15 14 13 12 11 10 9 ADC12CSTARTADDx ADC12SHSx ADC12SHP 7 6 5 4 3 2 1 ADC12DIVx ADC12SSELx ADC12CONSEQx 8 ADC12ISSH 0 ADC12BUSY ADC12ENC=0 时,才可以修改。 ADC12CSTARTADDx Bits15-12 ADC12_A 转换开始地址。这些位选择哪个转换存储 寄存器用于单次转换或序列转换。 对应于 ADC12MEM0 到 ADC12MEM15,CSTARTADDx 的值是 0 到 0Fh,。 ADC12SHSx Bits11-10 ADC12_A 采样保持触发源选择。 00 ADC12SC 位 01 定时器源(精确时间和位置参考芯片数据手册) 10 定时器源(精确时间和位置参考芯片数据手册) 11 定时器源(精确时间和位置参考芯片数据手册) ADC12SHP Bit9 ADC12_A 采样保持脉冲模式选择。该位选择采样信 号(SAMPCON)的来源是采样定时器的输出, 或直接是采样输入信号。 0 SAMPCON 信号来自采样输入信号 1 SAMPCON 信号来自采样定时器 ADC12ISSH Bit8 ADC12_A 采样保持信号反转 0 采样输入信号没有反转 1 采样输入信号反转 ADC12DIVx Bits7-5 ADC12_A 时钟分频 000 /1 001 /2 010 /3 011 /4 100 /5 101 /6 ADC12SSELx Bits4-3 110 /7 111 /8 ADC12_A 时钟源选择 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–318–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM ADC12CONSEQx Bits2-1 ADC12BUSY Bit0 ADC12CTL2,ADC12 控制寄存器 2 15 14 13 7 ADC12 TCOFF 6 保留 54 ADC12 RES 00 MODCLK 01 ACLK 10 MCLK 11 SMCLK ADC12_A 转换序列模式选择 00 单通道单次转换模式 01 序列通道单次转换模式 10 单通道重复转换模式 11 序列通道重复转换模式 ADC12_A 忙标志。该位表明正在进行采样或转换 操作。 0 没有操作 1 序列正在进行采样或转换 12 11 保留 3 2 ADC12DF ADC12SR 10 9 1 ADC12REFOUT 8 ADC12PDIV 0 ADC12 REFBURST ADC12ENC=0,才可以修改。 ADC12PDIV Bit8 ADC12_A 预分频。该位对选择的 ADC12_A 时钟源预分频。 0 /1 预分频 1 /4 预分频 Bit7 ADC12_A 温度传感器关闭。如果该位置位,温度传感器将 ADC12TCOFF 关闭。该位用于降低功耗。 Bit5-4 ADC12_A 分辨率。这几位决定了转换结果的分辨率。 00 8 位(9 个时钟周期的转换时间) ADC12RES 01 10 位(11 个时钟周期的转换时间) 10 12 位(13 个时钟周期的转换时间) 11 保留 ADC12DF Bit3 ADC12_A 数据读回格式。数据总是以二进制无符号格式 存储。 0 二进制无符号格式。理论上模拟输入电压-VREF 结果位 0000h,模拟输入电压+VREF 结果为 0FFFh。 1 有符号二进制补码形式,左对齐。理论上模拟输入电压 -VREF 结果位 8000h,模拟输入电压+VREF 结果位 7FF0h。 ADC12SR Bit2 ADC12_A 采样速率。该位选择最大采样率下的参考电压缓 冲 驱动能力。ADC12SR 置位,可以减少参考电压缓冲的电 流消耗。 0 参考电压缓冲支持的最大速率到 200 ksps 1 参考电压缓冲支持的最大速率到 50 ksps ADC12REFOUT Bit1 参考电平输出 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–319–页 共 423 页 ADC12REFBURST LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 0 参考电平输出关闭 1 参考电平输出打开 Bit0 参考电压突发。ADC12REFOUT 必须置位。 0 参考电压缓冲是连续开 1 只有在采样转换期间参考电压打开 ADC12MEMx,ADC12_A 转换存储寄存器 15 14 13 12 11 10 9 8 0 0 0 0 转换结果 7 6 5 4 3 2 1 0 转换结果 转换结果 Bits11-0 12 位 转 换 结 果 右 对 齐 。 Bit11 是 最 高 有 效 位 。 在 12 位 结 果 模式下,位 15-12 为 0;在 10 位模式下,位 15-10 为 0;在 8 位模 式下,位 15-8 为 0。对转换存储寄存器写操作将会破坏结果。如果 ADC12DF=0,选择使用这种格式。 ADC12MEMx,ADC12_A 转换存储寄存器,补码格式 15 14 13 12 11 10 9 8 转换结果 7 转换结果 6 5 4 3 2 1 0 转换结果 0 0 0 0 Bits15-4 12 位 转 换 结 果 是 左 对 齐 的 , 补 码 格 式 。 位 15 是 最 高有效位。在 12 位模式下,位 3-0 为 0,在 10 位模式下,位 5-0 为 0,在 8 位模式下,位 7-0 位为 0。如果 ADC12DF=1,选择使用 这种格式。数据以右对齐的格式存储,读取时转换为左对齐的二进 制补码格式。 ADC12MCTLx,ADC12_A 转换存储控制寄存器 7 6 5 4 3 ADC12EOS ADC12SREFx 2 1 0 ADC12INCHx ADC12EOS ADC12ENC=0 时,才可以修改。 Bit7 序列结束。表明一个序列的最后一次转换。 0 序列没有结束 1 序列结束 ADC12SREFx Bits6-4 参考电压选择 000 VR+ = AVCC,VR- = AVSS 001 VR+ = VREF+,VR- = AVSS 010 VR+ = VeREF+,VR- = AVSS 011 VR+ = VeREF+,VR- = AVSS 100 VR+ = AVCC,VR- = VREF-/ VeREF- 101 VR+ = VREF+,VR- = VREF-/ VeREF- 110 VR+ = VeREF+,VR- = VREF-/ VeREF 111 VR+ = VeREF+,VR- = VREF-/ VeREF- 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–320–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM ADC12INCHx Bits3-0 输入通道选择 0000 A0 0001 A1 0010 A2 0011 A3 0100 A4 0101 A5 0110 A6 0111 A7 1000 VeREF+ 1001 VREF-/VeREF1010 温度补偿二极管 1011 (AVCC – AVSS) / 2 1100 A12 1101 A13 1110 A14 1111 A15 ADC12IE,ADC12_A 中断使能寄存器 15 14 13 12 11 10 9 8 ADC12IE15 ADC12 ADC12 ADC12 ADC12 ADC12 ADC12 ADC12 IE14 IE13 IE12 IE11 IE10 IE9 IE8 7 6 5 4 3 2 1 0 ADC12IE7 ADC12 ADC12I ADC12I ADC12I ADC12I ADC12I ADC12IE0 IE6 E5 E4 E3 E2 E1 ADC12IEx Bits15-0 中断使能。这些位使能或禁止 ADC12IFGx 位的中断请求。 0 中断禁止 1 中断使能 ADC12IFG,ADC12_A 中断标志寄存器 15 14 13 12 11 10 9 8 ADC12 ADC12 ADC12 ADC12 ADC12 ADC12 ADC12 ADC12 IFG15 IFG14 IFG13 IFG12 IFG11 IFG10 IFG9 IFG8 7 6 5 4 3 2 1 0 ADC12 ADC12 ADC12 ADC12 ADC12 ADC12 ADC12 ADC12 IFG7 IFG6 IFG5 IFG4 IFG3 IFG2 IFG1 IFG0 ADC12IFGx Bits15-0 ADC12MEMx 中断标志.当相应的 ADC12MEMx 载入转换结 果时这些位置位。当对相应的 ADC12MEMx 进行访问时,这些 位复位,或通过软件复位。 0 没有中断挂起 1 有中断挂起 ADC12IV,ADC12_A 中断向量寄存器 15 14 13 12 11 10 9 0 0 0 0 0 0 0 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 8 0 第–321–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 7 6 5 4 3 2 1 0 0 0 ADC12IVx 0 ADC12IV x Bits15-0 ADC12_A 中断向量值。 ADC12_A 值 中断源 000h 无中断产生 002h ADC12MEMx 溢出 004h 转换时间溢出 006h ADC12MEM0 中断标志 008h ADC12MEM1 中断标志 00Ah ADC12MEM2 中断标志 00Ch ADC12MEM3 中断标志 00Eh ADC12MEM4 中断标志 010h ADC12MEM5 中断标志 012h ADC12MEM6 中断标志 014h ADC12MEM7 中断标志 016h ADC12MEM8 中断标志 018h ADC12MEM9 中断标志 01Ah ADC12MEM10 中断标志 01Ch ADC12MEM11 中断标志 01Eh ADC12MEM12 中断标志 020h ADC12MEM13 中断标志 022h ADC12MEM14 中断标志 024h ADC12MEM15 中断标志 中断标志 ADC12IFG0 ADC12IFG0 ADC12IFG0 ADC12IFG0 ADC12IFG0 ADC12IFG0 ADC12IFG0 ADC12IFG0 ADC12IFG0 ADC12IFG0 ADC12IFG0 ADC12IFG0 ADC12IFG0 ADC12IFG0 ADC12IFG0 ADC12IFG0 中断优先级 最高 最低 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–322–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 第18章 COMP_B Comp_B 是一个模拟电压比较器,本章将主要讲述 COMP_B,COMP_B 涵盖了多达 16 通道的通用比较器功 能。 18.1 Comp_B 介绍 18.2 Comp_B 使用 18.3 Comp_B 寄存器 18.1 COMP_B概述 Comp_B 模块支持精确的 SLOPE 模数转换,电压监控及外部模拟信号管理。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–323–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM Comp_B 模块主要特性有: l 正向反向终端输入多路选择器 l 通过软件选择比较器输出的 RC 滤波 l 可输出到 TA 的捕获输入 l 软件控制端口输入缓冲 l 具有中断能力 l 可选的参考电压发生器、电压磁滞发生器 l 参考电压输入可选择共用参考电压 l 超低功耗的比较模式 l 低功耗模式支持中断驱动测量系统 Comp_B 模块的框图如图 18-1 所示。 图 18-1 Comp_框图 18.2 COMP_B 的使用 Comp_B 模块可通过用户软件配置,该模块的配置和使用将在下面部分中进行讨论。 18.2.1 比较器 比较器对正和负输入终端的模拟信号进行比较。如果正端信号大于负端,则比较器输出 CBOUT 为高。 可以通过 CBON 位来关闭或打开比较器。为了降低功耗,在不使用比较器时,应当关闭比较器。当比较器 关闭时,CBOUT 总是为低。比较器的偏置电流可编程控制。 18.2.2 模拟输入开关 CBIPSELx 及 CBIMSELx 位,用于选择两个比较器输入终端与相应端口管脚之间连接还是断开。比较器 的输入终端可以分别进行控制。CBIPSELx/CBIMSELx 位允许: l 将外部信号连接到比较器的正端或负端 l 内部参考电压到相应输出端口管脚选择一个路径 l 将外部电流源应用到比较器的正端或负端 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–324–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM l 内部多路选择器的两个端口到外部的映射 为避免信号失真,内部使用 T 型开关。 注意:比较器输入连接 当比较器打开时,输入端口应该连接到信号、电源或地,否则悬空的电平将产生不可预料的中断, 增加电流功耗。 CBEX 位控制输入多路选择器,改变比较器正端或负端输入信号的顺序。另外,当比较器终端顺序 发生改变时,比较器输出信号也发生反转,这使用户可以检测或补偿比较器输入端的偏置电压。 18.2.3 端口逻辑 当与比较器通道相关的 Px.y 引脚用作比较器输入时,可以通过 CBIPSELx 或 CBIMSELx 位禁止数字器 件。输入多路选择器每次只能选择比较器输入管脚的其中之一作为比较器的输入。 18.2.4 输入短路开关 CBSHORT 位可以短路 COMP_B 输入,这可以用于构建比较器的简单采样保持,如图 18-2 所示。 图 18-2 Comp_B 采样保持 所需的采样时间与采样电容(Cs)、与短路开关串联的输入开关电阻及外部电阻(Rs)的大小成比例。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–325–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 总内部电阻典型值在 1KΩ范围内,采样电容 CS 应该大于 100pF。采样电容 Cs 充电的时间常数 Tau 按照下 面的公式计算, Tau = (Ri + Rs)* Cs 所需精度不同,采样时间应当为 3~10 个 Tau。采样时间为 3 个 Tau 时,采样电容充电达到输入信号电压值 的 95%。采样时间为 5 个 Tau 时,采样电容充电达到输入信号电压值的 99%。10 个 Tau 的采样电压,对于 12 位精度已经足够了。 18.2.5 输出滤波器 比较器输出可以与内部滤波器一起使用,也可单独使用。当控制位 CBF 置位时,输出使用片上的 RC 滤波器。滤波器的延迟可以在四个不同阶段进行调整。 如果比较器输入端的电压差比较小,则所有的比较器输出处于震荡状态。信号线、电源线及系统的其 他部分内或者之间的内部和外部寄生效应和交叉耦合,造成了这种结果,如图 18-3 所示。比较器输出端 的震荡降低了精度及比较结果的分辨率。使用输出滤波器能够降低比较器震荡相关的差错。 图 18-3 RC 滤波器在比较器输出端的响应 18.2.6 参考电压发生器 COMP_B 参考电压的框图如图 18-4 所示。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–326–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图 18-4 参考电压发生器框图 参考电压发生器用于产生用于比较器任意输入端的 VREF。CBREF1X(REF1)及 CBREF0X(REF0)位控 制参考电压发生器的输出。CBRSEL 位选择使用 VREF 的比较器终端。如果外部信号用于两个比较器输入端, 应当关闭内部参考电压发生器,从而降低电流消耗。参考电压发生器可以产生芯片的 VCC 或精确内部集成 参考电压的小数部分。CBOUT 为 1 时,使用 Vref1,CBOUT 为 0 时,使用 Vref0。这可以在不使用外部器件 的情况下产生磁滞。 18.2.7 COMP_B,端口禁止寄存器CBPD 比较器的输入输出功能与数字 CMOS 门 I/O 口管脚复用。当模拟信号用于数字 CMOS 门时,会产生从 VCC 流到 GND 的寄生电流。如果输入电压在门限电平附近,则产生寄生电流。禁止端口引脚缓冲功能,可以消 除寄生电流,因此也就可以降低总的电流功耗。 当 CBPDx 置位时,可以禁止相应的 Px.y 输入缓冲,如图 18-5 所示。当电流消耗比较重要时,必须通 过相关的 CBPDx 位禁止连接模拟信号的任何 Px.yS 引脚。 通过 CBIPSEL 或 CBIMSEL 位选择比较器多路选择器的输入管脚时,不论相关 CBPDx 位的状态如何,都 将自动禁止该管脚的输入缓冲。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–327–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图 18-5 CMOS 反相器/缓冲的传输特性及功率消耗 18.2.8 COMP_B 的中断 一个中断标志及中断矢量与 COMP_B 相关。中断标志 CBIFG,在比较器输出的上升沿或下降沿时都会置 位,上升沿或下降沿由 CBIES 位选择。如果 CBIE 及 GIE 位都置位,CBIFG 标志将产生中断请求。 18.2.9 使用COMP_B测量电阻元件 使用单斜边模数转换,COMP_B 可以用于精确测量电阻元件。例如,使用热敏电阻,将热敏电阻的放电时间 与如图 18-6 所示的参考电阻的放电时间进行比较,可以把温度转换成数字数据。参考电阻 Rref 与 Rmeas 进行比较。 图 18-6 温度测量系统 用于计算 Rmeas 感应温度的资源如下: ·两个数字 I/O 口对电容充放电 ·I/O 口置位电容充电,复位放电 ·通过 CBPDx 位,将没有使用的 I/O 口切换到高阻态 ·一个输出通过 Rref 使电容进行放电 ·一个输出通过 Rmeas 对电容进行充放电 ·比较器正输入端连接到电容正极 ·比较器负输入端连接参考电压,如 0.25*VCC ·输出滤波器应当最小化开关噪声 ·CBOUT 用于定时器 A 的 CCI1B,捕获电容放电时间 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–328–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 可以测量的不止一个电阻,其他的元件可以通过可用的 I/O 口连接到 CB0 上,并且在不使用时,切换 到高阻态。 热敏电阻测量是建立在比例换算原理上的,两次电容放电时间的比率如图 18-7 所示进行计算。 图 18-7 测温系统的时序 在转换过程中,VCC 电压及电容值应该保持不变,但是不是很重要,因为在比率中,它们抵消了。 18.3 COMP_B 寄存器 Comp_B 寄存器如表 18-1 所列。寄存器的基地址在具体芯片的数据手册中可以找到。 寄存器 缩写 读写类型 偏移地址 初始状态 COMP_B 控制寄存器 0 CBCTL0 读/写 0000 0000 COMP_B 控制寄存器 1 CBCTL1 读/写 0002 0000 COMP_B 控制寄存器 2 CBCTL2 读/写 0004 0000 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–329–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM COMP_B 控制寄存器 3 COMP_B 中断寄存器 COMP_B 中断矢量字 CBCTL3 CBINT CBIV 读/写 读/写 读 0006 000C 000E 0000 0000 0000 COMP_B 控制寄存器 0 15 14 CBMEN RW-0 R-0 13 保留 R-0 12 11 R-0 RW-0 10 9 CBIMSEL RW-0 RW-0 8 RW-0 7 CBIPEN RW-0 CBIMEN CBIMSEL CBIPEN CBIPSEL 6 5 4 3 2 1 保留 CBIPSEL R-0 R-0 R-0 RW-0 RW-0 RW-0 BIT15 比较器 V_通道输入使能 0 选择的 V_通道输入禁止 1 选择的 V_通道输入使能 BIT11~8 如果CBIMEN=1,比较器V_通道输入使能 BIT7 比较器V+通道输入使能 0选择的V+通道输入禁止 1 选择的V+通道输入使能 Bits 3-0 如果CBIMEN=1,比较器V+通道输入使能 0 RW-0 COMP_B 控制寄存器 1(CBCTL1) 15 14 13 12 11 10 9 8 R-0 7 Reserved R-0 6 R-0 5 CBMRVS RW-0 4 CBMRVL RW-0 3 CBON RW-0 2 CBPWRMD RW-0 RW-0 1 0 CBFDLY CBEX CBSHORT CBIES CBF CBOUTPOL CBOUT RW-0 RW-0 RW-0 RW-0 RW-0 RW-0 RW-0 RW-0 CBMRVS Bit 12 如果CBRS = 00, 01,或10,该位定义是否在VREF0或VREF1之间 选择比较器输出。 0 比较器输出状态在VREF0或VREF1之间选择 1 CBMRVL在VREF0或VREF1之间选择 CBMRVL Bit 11 CBMRVS置1时,该位有效。 0 如果CBRS = 00, 01或 10,选择VREF0。 1 如果CBRS = 00, 01或 10,选择VREF1。 CBON Bit 10 0 关闭 打开。 该位打开比较器。当比较器关闭时,Comp_B不耗电。 1 打开 CBPWRMD Bits 9-8 电源模式。不是所有的产品都支持所有的模式。详细信息参考芯 片数据手册。 00高速模式(可选) 01 正常模式(可选) 10 超低功耗模式(可选) 11 保留 CBFDLY Bits 7-6 滤波延时。滤波延时可以在4个步骤中选择。详细信息请参考 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–330–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 芯片数据手册。 00 450 ns 01 900 ns典型滤波延时 10 1800 ns典型滤波延时 11 3600 ns典型滤波延时 CBEX Bit 5 交换。该位交换比较器0输入和比较器0输出反转的顺序。 CBSHORT Bit 4 输入短路。该位将正输入端和负输入端短路。 0 输入不短路 1 输入短路 CBIES Bit 3 为CBIIFG和CBIFG选择中断沿 0 CBIFG选择上升沿,CBIIFG选择下降沿 1 CBIFG选择下降沿,CBIIFG选择上升沿 CBF Bit 2 输出滤波。 0 Comp_B 输出没有滤波。 1 Comp_B 输出滤波。 CBOUTPOL Bit 1 输出极性。该位定义CBOUT极性。 0 没有反转。 1 反转。 CBOUT Bit 0 输出值。该位反映了Comp_B输出值。对该位写操作不影响比较 器的输出。 COMP_B 控制寄存器 2(CBCTL2) 15 14 13 12 11 10 9 8 CBREFACC CBREFL CBREF1 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 7 6 5 4 3 2 1 0 CBRS CBRSEL CBREF0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 CBREFACC Bit 15 参考精度。只有CBREFL > 0,产生参考电压请求。 0 静止模式 1时钟模式(低功耗,低精度) CBREFL Bits 14-13 参考电压。 00 禁止参考放大器。没有参考电压请求。 01 选择1.5 V作为复用参考电压输入。 10 选择2.0 V作为复用参考电压输入。 11 选择2.5 V作为复用参考电压输入。 CBREF1 Bits 12-8 参考电阻tap1.该寄存器定义CBOUT=1时,电阻串的tap. CBRS Bits 7-6 参考电压源。该位定义参考电压选自VCC还是精确复用参考电压。 00 参考电路没有消耗电流。 01 VCC 应用到电阻负载。 10 复用参考电压应用到电阻负载。 11复用参考电压应用到VCREF。电阻负载关闭。 CBRSEL Bit 5 参考电压选择。该位选择VCCREF应用到哪一个终端。 当CBEX = 0时: 0 VREF应用到正端。 1 VREF应用到负端。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–331–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 当CBEX = 1时: 0 VREF应用到负端。 1 VREF应用到正端。 CBREF0 Bits 4-0 参考电阻tap0。这个寄存器定义CBOUT=0时电阻串的tap. COMP_B 控制寄存器 3(CBCTL3) 15 14 13 12 11 10 9 8 CBPD15 CBPD14 CBPD13 CBPD12 CBPD11 CBPD10 CBPD9 CBPD8 rw-(0) 7 rw-(0) 6 rw-(0) 5 rw-(0) 4 rw-(0) 3 rw-(0) 2 rw-(0) 1 rw-(0) 0 CBPD7 CBPD6 CBPD5 CBPD4 CBPD3 CBPD2 CBPD1 CBPD0 rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) CBPDx Bit 15-0 禁止端口。这些位可以单独禁止与Comp_B相关端口管脚的输入缓 CBPDx 位禁止比较器通道X的端口。 0 使能输入缓冲。 1 禁止输入缓冲。 COMP_B 控制寄存器(CBINT) 15 14 13 12 11 10 9 8 Reserved CBIIE CBIE r-0 r-0 r-0 r-0 r-0 r-0 rw-0 7 6 5 4 3 2 1 rw-0 0 Reserved CBIIFG CBIFG r-0 Reserved Bits 15-10 CBIIE Bit 9 CBIE Bit 8 Reserved Bits 7-2 CBIIFG Bit 1 出过渡。 CBIFG Bit 0 渡。 r-0 r-0 r-0 r-0 r-0 rw-0 rw-0 保留。读取值总是为0。 Comp_B 输出中断使能极性反转。 0 禁止中断。 1 使能中断。 Comp_B输出中断使能。 0 禁止中断。 1 使能中断。 保留。读取值总是为0。 Comp_B输出反转中断标志。CBIES位定义了置位该位时的输 0 没有中断挂起。 1 输出中断挂起 Comp_B 输出中断标志CBIES位定义了置位该位时的输出过 0 没有中断挂起。 1 输出中断挂起. 冲。 Comp_B中断向量字寄存器(CBIV) 15 14 13 12 11 10 9 0 0 0 0 0 0 0 r0 r0 r0 r0 r0 7 6 5 4 3 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 r0 r0 2 1 Fax:0571-89908080 8 0 r0 0 第–332–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 0 0 0 0 0 CBIV 0 r0 r0 r0 r0 r0 r-(0) r-(0) r0 CBIV Bits 15-0 Comp_B中断向量字寄存器.该向量寄存器只反映中断使能位置位的 中 断向量.读取CBIV寄存器,将清除挂起的优先级最高的中断标志. CBIV内容 中断源 中断标志 中断优先级 00h 无中断挂起 – – 02h CBOUT中断t CBIFG 最高 04h CBOUT中断反转极性 CBIIFG 最低 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–333–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 第19章 USCI-UART 通用串行通信接口(USCI)带有一个硬件模块,支持多种串行通信模式。本章将讨论异步 UART 模式的 操作。 目录: 19.1 USCI 概述 19.2 USCI 介绍:UART 模式 19.3 USCI 操作:UART 模式 19.4 USCI 存储器:UART 模式 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–334–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 19.1 USCI概述 通用串行通信接口(USCI)模块支持多种串行通信模式。不同的 USCI 模块支持不同的模式。不同 USCI 模块名称中含有不同的字母。例如,USCI_A 不同于 USCI_B,等等。如果同一芯片中有 1 个以上相同的 USCI 模块,以递增的数字命名这些模块。例如,如果 1 个芯片有两个 USCI_A 模块,可将它们命名为 USCI_A0 和 USCI_A1。可以参阅具体芯片的数据手册来确定芯片上含有的 USCI 模块。 USCI_Ax 模块支持: l UART 模式 l IrDA 通信的脉冲整形 l LIN 通信的自动波特率检测 l SPI 模式 USCI_Bx 模块支持: l IIC 模式 l SPI 模式 19.2 USCI介绍:UART模式 在异步模式下,USCI_Ax 模块通过两个外部引脚 UCAxRXD 和 UCAxTXD 将芯片连接到外部系统。当 UCSYNC 位清零时,选择 UART 模式。 UART 模块特征包括: l 带奇校验、偶校验或非奇偶校验的 7 或 8 位数据 l 独立的发送和接收移位寄存器 l 独立的发送和接受缓冲寄存器 l 最低位优先或最高位优先的数据发送和接收 l 多处理器系统的内置空闲线路和地址位通信协议 l 用于自动从 LPMx 模式唤醒的接收机起始边沿检测 l 波特率可编程控制,支持小数波特率调制 l 用于错误检测和抑制的状态标志 l 用于地址检测的状态标志 l 发送和接收的独立中断能力 图 19-1 所示为 USCI_Ax 配置为 UART 模式时的框图。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–335–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图 19-1 USCI_Ax 框图:UART 模式(UCSYNC = 0) 19.3 USCI操作:UART模式 在 UART 模式下,USCI 以与其他芯片异步的位速率发送和接收字符。每个字符的时序建立在所选的 USCI 波特率基础上。发送和接收功能采用相同的波特率频率。 19.3.1 USCI初始化和复位 PUC 或置位 UCSWRST,可以使 USCI 复位。PUC 后,UCSWRST 位自动置位,这使 USCI 保持在复 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–336–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 位状态。UCSWRST 位置位,将使 UCRXIE,UCTXIE,UCRXIFG,UCRXERR,UCBRK,UCPE,UCOE, UCFE,UCSTOE 和 UCBTOE 位复位,UCTXIFG 位置位。清除 UCSWRST 将释放 USCI,使其进入操作 状态。 注意:初始化或重新配置 USCI 模块 推荐使用以下过程,进行初始化或重新配置: 1.置位 UCSWRST (BIS.B #UCSWRST,&UCAxCTL1) 2 设置 UCSWRST=1,初始化所有的 USCI 寄存器(包括 UCAxCTL1) 3.配置端口 4.软件清除 UCSWRST(BIC.B #UCSWRST,&UCAxCTL1) 5.通过 UCRXIE 和/或 UCTXIE 使能中断(可选) 19.3.2 字符格式 UART 的字符格式(见图 19-2),包括一个起始位,7 或 8 位数据位,一个奇/偶/非奇偶校验位,地址 位(地址位模式),以及 1 或 2 个停止位。UCMSB 位控制传送方向,选择低位或高位优先,UART 通讯的典 型选择是低位优先。 图 19-2 字符格式 19.3.3 异步通信格式 两个芯片进行异步通信时,对协议来说,不需要多处理器格式。当 3 个或更多个芯片通信时,USCI 支 持线路空闲和地址位多处理器通信格式。 19.3.3.1 线路空闲多处理器模式 当 UCMODEx=01 时,选择线路空闲多处理器格式。发送或接收线路的空闲时间将数据块分隔(见图 19-3)。 在字符的 1 或 2 个停止位后接收到 10 个或更多连续符号时,此时检测到接收线路空闲。接收到空闲线路 后,波特率发生器将一直关闭,直到检测到下一个开始边沿。当检测到空闲线路时,UCIDLE 位置位。 在线路空闲期后接收到的第一个字符是一个地址字符。UCIDLE 位用作每个字符块的地址标签,在线路 空闲多处理器格式下,当接收到地址字符时置位。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–337–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图 19-3 线路空闲格式 在线路空闲多处理器格式中,UCDORM 位用来控制数据的接收。UCDORM=1 时,所有的非地址字符 are assembled,但不传送到 UCAxRXBUF,不产生中断。当接收到地址字符时,该字符传送到 UCAxRXBUF 中,UCRXIFG 置位,当 UCRXEIE=1 时,使用的错误标志置位。UCRXEIE=0 且接收到有帧错误或奇偶校 验错误的地址字符时,该地址字符不会传送到 UCAxRXBUF,UCRXIFG 位不置位。 用户可以通过软件验证接收到的地址,为了继续接收数据,必须复位 UCDORM。如果 UCDORM 保 持置位,只能接收到地址字符。如果在接收字符期间清除 UCDORM,接收中断标志将会在接收完成时置 位。UCDORM 位不会通过 USCI 硬件自动修改。 对于线路空闲多处理器格式,为了在 UCAxTXD 上产生地址标识符,USCI 可以产生 1 个精确的空闲 周期。双缓冲 UCTXADDR 标志,可以指示载入 UCAxTXBUF 的下一个字符是否以 11 位的线路空闲为前 导符的。产生起始位时,UCTXADDR 自动清除。 发送空闲帧 下面过程中发送了 1 个空闲帧,用于指示相应数据之前的地址符: l 置位 UCTXADDR,然后向 UCAxTXBUF 写入地址字符。UCAxTXBUF 必须准备好接收新数 据(UCTXIFG = 1)。 这将产生一个精确的 11 位空闲周期,其后为地址字符。当地址字符从 UCAxTXBUF 传送到移位 寄存器时,UCTXADDR 自动复位。 l 将期望的数据字符写入 UCAxTXBUF。UCAxTXBUF 必须准备好接收新数据(UCTXIFG = 1)。 只要移位寄存器准备好接收新数据,写入到 UCAxTXBUF 的数据立即传送到移位寄存器并发送。 地址和数据之间或数据之间传输时,不能超出空闲线路时间。否则,发送的数据将被误认为是一个地 址。 19.3.3.2 地址位多处理器模式 当 UCMODEx=10 时,选择地址位多处理器模式。处理的每个字符包括一个作为地址指示符的附加位 (见图 19-4)。字符块的第一个字符中有一个置位的地址位,用于指示该字符为一个地址。当接收到的字 符有置位的地址位且传送到 UCAxRXBUF 时,USCI 的 UCADDR 置位。 在地址位多处理器模式下,UCDORM用于控制数据的接收。UCDORM位置位时,地址位为0的数据字符 are assembled,但并不传送到UCAxRXBUF,不会产生中断。当接收到包含置位的地址位的字符时,传 送该字符到UCAxRXBUF,UCRXIFG置位,当UCRXEIE=1时,所有的错误标志置位。当UCRXEIE=0,接 收到有帧错误或奇偶校验错误的地址字符时,该地址字符不会传送到UCAxRXBUF,UCRXIFG位不置位。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–338–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 用户可以通过软件验证接收到的地址,为了继续接收数据,必须复位 UCDORM。如果 UCDORM 保 持置位,则只能接收到地址位为 1 的字符。UCDORM 位不能通过 USCI 硬件自动修改。 UCDORM=0 时,所有接收到的字符都将使接收中断标志 UCRXIFG 置位。如果在接收字符期间, UCDORM 清零,在接收完成后,接收中断标志将置位。 对于地址位多处理器模式下的地址传送,字符的地址位由 UCTXADDR 位控制。在 UCTXADDR 的值 装载到从 TXBUF 中传输到发送移位寄存器的字符地址位。产生开始位时,UCTXADDR 自动清零。 图 19-4 地址位多处理器模式 打断的接收和产生 UCMODEx = 00,01,或 10 时,不论奇偶校验、地址模式、或其它字符设置如何,当所有的数据、奇 偶校验及停止位为低时,接收机将检测到中断。当检测到中断时,UCBRK 位置位。如果打断中断使能位 (UCBRKIE)置位,接收中断标志 UCRXIFG 将也置位。这种情况下,由于所有的数据都为 0,UCAxRXBUF 值为 0h。 为发送一个打断,先置位 UCTXBRK 位,然后将 0h 写入 UCAxTXBUF。UCAxTXBUF 必须准备好接 收新新数据 (UCTXIFG=1)。此时将产生一个所有位都为低的打断。当产生开始位时,UCTXBRK 自动 清零。 19.3.4 自动波特率检测 UART 模式下设置 UCMODEx = 11 时,选择自动波特率检测功能。对于自动波特率检测来说,一个数 据帧将以一个包含打断和同步字段的同步序列为前导。当接收到 11 个或更多个连续的 0(空格)时,将检 测到打断。如果打断的长度超过 21 位时长时,打断超时错误标志 UCBTOE 置位。接收打断/同步字段时, USCI 不能发送数据。打断之后的同步字段如图 19-5 所示。 图 19-5 自动波特率检测—打断/同步序列 为了 LIN 一致性,字符格式应当设置成 8 位数据,低有效位开始,无奇偶校验,1 个停止位。地址位 无效。 一个字节字段内的同步字段由数据 055h 组成(见图 19-6)。同步是建立在对这种模式的第一个下降沿 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–339–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 和最后一个下降沿之间的时间测量基础上的。如果通过置位 UCABDEN,使能自动波特率检测时,发送波 特率发生器将用于时间测量。否则,将接收这种格式,而不进行测量。测量的结果发送到波特率控制寄存 器 UCAxBR0,UCAxBR1 和 UCAxMCTL。如果同步字段的长度超出了可测量时间,同步超时错误标志 UCSTOE 置位。 图 19-6 自动波特率检测—同步字段 在这种模式下,UCDORM 位用于控制数据的接收。当 UCDORM 置位时,接收所有字符,但并不传 送到 UCAxRXBUF,也不产生中断。当检测到一个打断/同步字段时,UCBRK 标志置位。打断/同步字段 之后的字符传送到 UCAxRXBUF 中,同时 UCRXIFG 中断标志置位。任何可用的错误标志也将置位。如果 UCBRKIE 置位,接收到打断/同步时,将置位 UCRXIFG。可以通过软件或读取接收缓冲器 UCAxRXBUF, 复位 UCBRKIE。 当接收到一个打断/同步字段时,为了继续接收数据,用户软件必须复位 UCDORM。如果 UCDORM 一直保持置位状态,只能接收下一个打断/同步字段之后的字符。UCDORM 位不能通过 USCI 硬件自动修 改。 当 UCDORM=0 时,所有接收的字符都将会位接收中断标志 UCRXIFG。如果在字符接收期间 UCDORM 清零,接收完成之后接收中断标志置位。 用于检测波特率的计数器值限制在 07FFFh (32767)。这意味着在过采样模式下,可检测的最小波特率 为 488 Baud,而在低频模式下为 30 Baud。 自动波特率检测模式可用于具有限制的全双工通信系统。当接收打断/同步字段时,USCI 不能发送数 据,如果接收到带有帧错误的 0h 字节时,这个期间传输的任何数据将受到破坏。后一种情况可以通过检 测接收到的数据和 UCFE 位来发现。 19.3.4.1 发送一个打断/同步字段 发送一个打断/同步字段的过程如下: 1.设置 UMODEx = 11,置位 UCTXBRK。 2.将 055h 写入 UCAxTXBUF。UCAxTXBUF 必须准备好接收新数据(UCTXIFG=1)。 这会产生一个 13 位的打断字段,该字段后是一个打断分隔符和同步字符。打断分隔符的长度由 UCDELIMx 位控制。当同步字符由 UCAxTXBUF 传输到移位寄存器时,UCTXBRK 自动复位。 3.将期望的数据字符写入 UCAxTXBUF。UCAxTXBUF 必须准备好接收新数据 (UCTXIFG=1)。 只要移位寄存器准备好接收新数据,写入到 UCAxTXBUF 的数据将立即传输到到移位寄存器中并且进 行发送。 19.3.5 IrDA编码和解码 当 UCIREN 置位时,将使能 IrDA 编码器和解码器,IrDA 编码器和解码器将为 IrDA 通信整形提供硬 件位。 19.3.5.1 IrDA编码 编码器为来自 UART 传输比特流的每个 0 发送一个脉冲(见图 19-7)。脉冲持续时间由 UCIRTXPLx 位决 定,具体规定了 UCIRTXCLK 选择的的½时钟周期数。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–340–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图 19-7 UART 和 IrDA 的数据格式 为了设置 IrDA 标准需要的 3/16 位周期的脉冲时间,通过 UCIRTXCLK=1 选择 BITCLK16 时钟,通过 UCIRTXPLx=6 - 1=5 将脉冲长度设置为 6 个½时钟周期。 UCIRTXCLK= 0 时,BRCLK 基础上的脉冲长度 tPULSE 的计算公式如下: UCIRTXPLx = tPULSE × 2 × fBRCLK – 1 UCIRTXCLK= 0 时,预分频器 UCBRx 必须设置成大于或等于 5 的值。 19.3.5.1 IIrDA 解码 当 UCIRRXPL= 0 时,解码器检测高脉冲。否则,将检测低脉冲。除了模拟尖峰滤波器外,通过置位 UCIRRXFE,可以使能另外一个可编程数字滤波器。当 UCIRRXFE 置位时,只有超过编程滤波长度的脉冲 才可以通过,滤除短脉冲。编程滤波长度 UCIRRXFLx 的计算公式如下: UCIRRXFLx = (tPULSE – tWAKE) × 2 × fBRCLK – 4 其中: tPULSE = 最小接收脉冲宽度 tWAKE = 任何低功耗模式的唤醒时间。当芯片处于活动模式时为 0。 19.3.6 自动错误检测 抑制脉冲干扰可以防止 USCI 意外启动。UCAxRXD 上小于抗尖峰脉冲时间 tT(大约 150ns)的任何 脉冲将被忽略(参数请参考具体芯片的数据手册)。 当 UCAxRXD 的低电平时间超过 tt 时,开始位采用多数表决方法。如果采用多数表决法检测有效开始 位失败,USCI 停止接收字符,等待 UCAxRXD 上的下一次低电平。为防止出现位错误,字符的每一位也 采用多数表决方法。 接收字符时,USCI 模块自动检测帧错误,奇偶校验错误,溢出错误和打断状态。当检测到相应的状 态时,将置位 UCFE,UCPE,UCOE 和 UCBRK 位。当错误标志 UCFE,UCPE 或 UCOE 置位时,UCRXERR 也置位。错误状态如表 19-1 所述。 表 19-1 接收错误状态 错误条件 错误标志 描述 帧错误 UCFE 当检测到停止位的低电平时,产生帧错误。当使用两个停止位 时,两个位都用来检测帧错误。当检测到帧错误时,UCFE 位置 位。 奇偶校验错误 UCPE 奇偶校验错误是指字符中 1 的个数与奇偶校验位的值不匹配。 当字符中包含地址位时,地址位也参加奇偶校验计算。当检测 到奇偶校验错误时,UCPE 位置位。 接收溢出 UCOE 读出前一个字符之前,将字符写入 UCAxRXBUF 时,产生溢出错 误。产生溢出错误时,UCOE 位置位。 打断 UCBRK 不使用自动波特率检测时,当所有的数据、校验位和停止位为 低时,检测到打断。当检测到打断状态时,UCBRK 位置位。如 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–341–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 果打断中断使能位 UCBRKIE 置位,打断状态也可置位中断标志 UCRXIFG。 当 UCRXEIE = 0 时,如果检测到一个帧错误或奇偶校验错误,UCAxRXBUF 没有接收到字符。当 UCRXEIE = 1 时,字符接收到 UCAxRXBUF,将置位任何可用的错误位。 当 UCFE、UCPE、UCOE、UCBRK 或 UCRXERR 中的任何一个置位时,该位将保持置位直到用户软 件使其复位或读取 UCAxRXBUF 值。UCOE 必须通过读 UCAxRXBUF 复位。否则,它将不能正常工作。 为了可靠地检测溢出,建议采用下面的流程。接收到字符后,UCAxRXIFG 置位,首先读取 UCAxSTAT, 检测包括溢出标志 UCOE 的错误标志。接着读取 UCAxRXBUF。如果在对 UCAxSTAT 和 UCAxRXBUF 读 访问期间,重新写入 UCAxRXBUF,将会清除除 UCOE 之外的所有错误标志。因此,为检测到这种状态, 读取 UCAxRXBUF 后应当检测 UCOE 标志。注意,在这种情况下 UCRXERR 标志不置位。 19.3.7 使能USCI接收 清除 UCSWRST 位时,可以使能 USCI 模块,接收机准备接收数据,并处于空闲状态。接收波特率发 生器处在就绪状态,但是没有计时,也不会产生任何时钟信号。 起始位的下降沿使能波特率发生器,UART 状态机检测有效起始位。如果没有检测到有效的起始位, UART 状态机将回到空闲状态,波特率发生器再次关闭。如果检测到有效的起始位,将接收到一个字符。 当设置 UCMODEx=01 选择线路空闲多处理器模式时,UART 状态机将在接收到一个字符之后检测空 闲线路。如果检测到一个起始位,将会接收另外一个字符。否则 UCIDLE 标志,将在接收到 10 个 1 之后 置位,UART 状态机将回到空闲状态,波特率发生器关闭。 19.3.7.1 接收数据抑制尖峰 尖峰脉冲抑制可以防止 USCI 意外启动。USCI 将忽略 UCAxRXD 上任何小于抗尖峰脉冲 Tt(大约 150ns)的脉冲,其后的操作如图 19-8 所示(参数请参考芯片的数据手册)。 图 19-8 抑制尖峰,USCI 接收关闭 当脉冲尖峰时间比 Tt 长或在 UCAxRXD 产生有效起始位时,USCI 开始接收操作且采用多数表决法(见 图 19-9)。如果多数表决法没有检测到一个有效的开始位,USCI 将停止接收字符。 图 19-9 尖峰抑制,USCI 是活动的 19.3.8 使能USCI发送 清除 UCSWRST 位,将使能 USCI 模块,发送机准备发送数据,并处于空闲状态。发送波特率发生器 处在就绪状态,但是没有计时,也不会产生任何时钟信号。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–342–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 通过向 UCAxTXBUF 写入数据,可以启动发送。此时,将使能波特率发生器,发送移位寄存器为空以 后的下一个 BITCLK 时,UCAxTXBUF 的数据将移入发送移位寄存器。当 UCAxTXBUF 可以写入新数据 时,UCTXIFG 置位。 在前一个字节发送结束时,只要 UCAxTXBUF 内有新的有效数据,发送就将继续。如果前一个数据发 送完毕时,在 UCAxTXBUF 里没有新数据,发送机将返回空闲状态,波特率发生器关闭。 19.3.9 产生UART波特率 USCI 波特率发生器可以从非标准源频率中产生标准的波特率。可以通过 UCOS16 位选择系统提供的两 种操作模式。波特率可以通过使用 BRCLK 产生。根据 UCSSELx 设置,BRCLK 可以作为外部时钟 UCAxCLK 或 内部时钟 ACLK 或 SMCLK 的时钟源。 19.3.9.1 产生低频波特率 当 UCOS16=0 时选择低频模式。该模式允许从低频时钟源产生波特率(例如从 32768Hz 晶振产生 9600 波特)。通过使用较低的输入频率,可以降低模块的功耗。在高频和高分频设置下使用这种模式,将会使 多数表决在逐渐缩小的窗口中执行,因此会降低多数表决法的优势。 在低频模式下,波特率发生器使用 1 个预分频器和 1 个调制器产生位时钟时序。这种组合下,产生波 特率时支持小数分频。在这种模式下,最大的 USCI 波特率是 UART 源时钟频率 BRCLK 的 1/3。 每一位的时序如图 19-10 所示。对于接收的每一位,为了确定该位的值,采用多数表决法。这些采样 发生在 N/2 – 1/2,N/2 和 N/2 + 1/2 个 BRCLK 周期处,这里 N 是每个 BITCLK 的 BRCLKs 的数值。 图 19-10 在 UCOS16=0 时的 BITCLK 波特率时序 调制是建立在如表 19-2 所示的 UCBRSx 设置基础上的。表中 1 个 1 表示 m= 1,相应的 BITCLK 周期 是一个 BRCLK 周期,它比 m=0 时的 BITCLK 周期长。调制在 8 位后进行,但以新的开始位重新启动。 表 19-2 BITCLK 调制模式 UCBRSx Bit0 Bit1 Bit2 Bit3 Bit4 Bit5 Bit6 Bit7 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 2 0 1 0 0 0 1 0 0 3 0 1 0 1 0 1 0 0 4 0 1 0 1 0 1 0 1 5 0 1 1 1 0 1 0 1 6 0 1 1 1 0 1 1 1 7 0 1 1 1 1 1 1 1 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–343–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 19.3.9.2 产生过采样波特率 当 UCOS16=1 时,选择过采样模式。该模式支持在较高输入时钟频率下对 UART 位流采样。在多数表决 方法的结果总是一个位时钟周期的 1/16 位置。当使能 IrDA 编码器和解码器时,这种模式也支持带有 3/16 位时间的 IrDA 脉冲。 该模式使用一个预分频器和调制器产生 BITCLK16 时钟,该时钟比 BITCLK 快 16 倍。这种组合方式支 持波特率产生时 BITCLK16 和 BITCLK 的小数分频。在这种情况下,最大的 USCI 波特率是 UART 源时钟频率 BRCLK 的 1/16。当 UCBRx 设置为 0 或 1 时,将忽略第一级分频器和调制器,BRCLK 等于 BITCLK16—在这种 情况在,BITCLK16 没有调制,因此将忽略 UCBRFx 位。 BITCLK16 调制是建立在如表 19-3 所示的 UCBRFx 设置基础上的。表中 1 个 1 表示相应的 BITCLK16 周 期是一个 BRCLK 周期,它比 m=0 时的 BITCLK16 周期长。以每一个新位时序开始调制。 BITCLK 调制是建立在如前所述的 UCBRSx 设置(见表 19-2)基础上的。 表 19-3 BITCLK16 调整模式 UCBRFx 在上一个 BITCLK 的下降沿后 BITCLK16 位的次序 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 00h 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01h 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 02h 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 03h 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 04h 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 05h 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 06h 0 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 07h 0 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 08h 0 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 09h 0 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 0Ah 0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 0Bh 0 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0Ch 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 0Dh 0 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 0Eh 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0Fh 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 19.3.10 设置波特率 对于给定的 BRCLK 时钟源,所使用的波特率将决定分频因子 N: N = fBRCLK/波特率 分频因子 N 通常不是一个整数值,因此至少需要一个分频器和一个调制器来尽可能接近分频因子。 如果 N 值等于或大于 16,可以通过置位 UCOS16 选择过采样波特率产生模式。 19.3.10.1 设置低频波特率模式 在低频模式下,分频因子的整数部分通过预分频器实现: UCBRx = INT(N) 小数部分由带有下面 nominal 公式的调制器实现: UCBRSx = round( ( N – INT(N) ) × 8 ) 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–344–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM UCBRSx 计数值增 1 或减 1,可给任何给定位一个较小的最大比特误差。为了检测是不是这种情况,对 于每个 UCBRSx 设置的每一位都必须经过详细的误差计算。 19.3.10.2 设置过采样波特率模式 在过采样模式下,预分频器设置为: UCBRx = INT(N/16) 第一阶调制器设置为: UCBRFx = round( ( (N/16) – INT(N/16) ) × 16 ) 当需要更高精度时,UCBRSx 调制器可以实现从 0 到 7 的值。对于给定位,为了找到最低的最大误码 率设置,对于带有初始 UCBRFx 设置和增 1 或减 1 的 UCBRFx 设置的 UCBRSx 从 0 到 7 的所有设置,都 必须经过详细的误差计算。 19.3.11 发送位时序 每个字符时序是单个位时序的和。使用波特率发生器的调制特性可以减少累计误码。单个位误差可以 通过下面的步骤计算。 19.3.11.1 低频波特率模式下位时序 在低频模式下, 在 UCBRx 和 UCBRSx 设置基础上,计算 i 位的长度 Tbit,TX[i]: Tbit,TX [i] = (1/fBRCLK )(UCBRx + m UCBRSx [i]) 此处: mUCBRSx [i] =表 19-2 中位 i 的调制 19.3.11.2 过采样波特率模式位时序 在过采样波特率模式下,在波特率发生器 UCBRx、UCBRFx 和 UCBRSx 设置基础上,计算 i 位的长度 Tbit,TX[i]: ∑ Tbit,TX [i] = 1 f CRCLK ((16 + mUCBRSx [i]) × UCBRx + 15 j=0 m UCBFx [j]) 此处: 15 ∑ mUCBRFx [j] =表15-3中对应行中1的和。 j=0 mUCBRSx [i] =表19-2中位i的调制值 结束位时间 Tbit,TX[i]的结果等于所有以前和当前位时间的和。 i ∑ Tbit,TX [i] = Tbit,TX [j] j=0 为了计算位误差,将该时间与理想位时间 t bit,ideal,TX[i] 相比较: t bit,ideal,TX[i] = (1/Baudrate)(i + 1) 归一化误差与理想位时间(1/baudrate)之比的结果为: 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–345–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM ErrorTX [i] = (t bit,TX [i] − t bit,ideal,TX [i]) × Baudrate×100% 19.3.12 接收位时序 接收时序错误包含两个错误源。第一个是位与位之间的时序错误,与发送位时序错误类似。第二个是 产生的起始边沿和 USCI 模块识别的开始边沿之间的错误。图 19-11 所示为 UCAxRXD 引脚的数据和内部波 特率时钟之间的异步时序错误。这导致一个附加的同步错误。同步错误 tSYNC 在–0.5 BRCLKs 和+ 0.5 RCLKs 之间,且不依赖于所选择的波特率产生模式。 图 19-11 接收错误 理想的采样时间 t bit,ideal,RX[i] 是在位周期的中间: t [i] bit,ideal,RX = (1/Baudrate)(i + 0.5) 根据发送时序部分所示的公式,实际的采样时间 tbit,RX[i] 等于前面所有位的总和,加上当前位 i 一半 的 BITCLK,再加上同步错误 tSYNC 。 在低频波特率模式下 tbit,RX[i] 的计算如下: ∑ t bit,RX[i] = tSYNC + i −1 j= 0 Tbit, RX [j] + 1 f BRCLK (INT( 1 2 UCBRx) + mUCBRSx [i]) 此处: Tbit,RX[i] = (1/fBRCLK )(UCBRx + mUCBRSx [i]) 。 mUCBRSx [i] =表 19-2 中 i 的调制值。 对于过采样波特率模式,位 i 的采样时间 tbit,RX[i] 计算如下: ∑ ∑ tbit,RX[i] = tSYNC + i-1 Tbit,RX[i] + j=0 1 f BRCLK 7+m UCBRSx [i] ((8 + mUCBRSx [i]) × UCBRx + mUCBRFx [j]) j=0 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–346–页 共 423 页 此处: LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM ∑ Tbit,RX[i] = 1 f BRCLK ((16 + mUCBRSx [i]) × UCBRx + 15 j=0 mUCBRFx [j]) 7+mUCBRSx [i] ∑ mUCBRFx [j] =表 19-3 中对应行从 0 列到(7+ mUCBRSx [i] )列中 1 的总和。 j=0 mUCBRSx [i] =表 19-2 中位 i 的调制值。 归一化误差与理想位时间(1/baudrate)之比的结果为: ErrorRX[i] = (tbit,RX[i] − tbit,ideal,RX[i]) × Baudrate ×100% 19.3.13 典型的波特率和误差 32768Hz 晶振作为 ACLK 和典型 SMCLK 频率情况下,UCBRx,UCBRSx,和 UCBRFx 的标准波特率数据列表 如表 19-4 和 19-5 所列。请确保所选择的 BRCLK 频率不会超出芯片最大 USCI 输入频率(见芯片数据手册)。 接收错误是累计时间相对每位中间的理想扫描时间。(versus)误差最大的情况是接收到 1 个 8 位字 符,该字符带奇偶校验及包含同步误差的停止位。 发送错误是累计时间相对每一位的理想时间。(Versus)误差最大的情况是发送 1 个带奇偶检验位和停 止位的 8 位字符。 表 19-4 常用波特率及其设置和误差 UCOS16=0 BRCLK 频率 TX 最大误差 波特率 UCBRx UCBRSx UCBRFx (Hz) (%) RX 最大误差 (%) 32,768 1200 27 2 0 -2.8 1.4 -5.9 2 32,768 2400 13 6 0 -4.8 6 -9.7 8.3 32,768 4800 6 7 0 -12.1 5.7 -13.4 19 32,768 9600 3 3 0 -21.1 15.2 -44.3 21.3 1,000,000 9600 104 1 0 -0.5 0.6 -0.9 1.2 1,000,000 19200 52 0 0 -1.8 0 -2.6 0.9 1,000,000 38400 26 0 0 -1.8 0 -3.6 1.8 1,000,000 57600 17 3 0 -2.1 4.8 -6.8 5.8 1,000,000 115200 8 6 0 -7.8 6.4 -9.7 16.1 1,048,576 9600 109 2 0 -0.2 0.7 -1 0.8 1,048,576 19200 54 5 0 -1.1 1 -1.5 2.5 1,048,576 38400 27 2 0 -2.8 1.4 -5.9 2 1,048,576 57600 18 1 0 -4.6 3.3 -6.8 6.6 1,048,576 115200 9 1 0 -1.1 10.7 -11.5 11.3 4,000,000 9600 416 6 0 -0.2 0.2 -0.2 0.4 4,000,000 19200 208 3 0 -0.2 0.5 -0.3 0.8 4,000,000 38400 104 1 0 -0.5 0.6 -0.9 1.2 4,000,000 57600 69 4 0 -0.6 0.8 -1.8 1.1 4,000,000 115200 34 6 0 -2.1 0.6 -2.5 3.1 4,000,000 230400 17 3 0 -2.1 4.8 -6.8 5.8 4,194,304 9600 436 7 0 -0.3 0 -0.3 0.2 4,194,304 19200 218 4 0 -0.2 0.2 -0.3 0.6 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–347–页 共 423 页 4,194,304 4,194,304 8,000,000 8,000,000 8,000,000 8,000,000 8,000,000 8,000,000 8,000,000 8,388,608 8,388,608 8,388,608 8,388,608 12,000,000 12,000,000 12,000,000 12,000,000 12,000,000 12,000,000 12,000,000 16,000,000 16,000,000 16,000,000 16,000,000 16,000,000 16,000,000 16,000,000 16,777,216 16,777,216 16,777,216 16,777,216 20,000,000 20,000,000 20,000,000 20,000,000 20,000,000 20,000,000 20,000,000 BRCLK 频率 (Hz) 1,000,000 1,000,000 1,048,576 1,048,576 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 57600 72 7 0 -1.1 0.6 -1.3 1.9 115200 36 3 0 -1.9 1.5 -2.7 3.4 9600 833 2 0 -0.1 0 -0.2 0.1 19200 416 6 0 -0.2 0.2 -0.2 0.4 38400 208 3 0 -0.2 0.5 -0.3 0.8 57600 138 7 0 -0.7 0 -0.8 0.6 115200 69 4 0 -0.6 0.8 -1.8 1.1 230400 34 6 0 -2.1 0.6 -2.5 3.1 460800 17 3 0 -2.1 4.8 -6.8 5.8 9600 873 7 0 -0.1 0.06 -0.2 0,1 19200 436 7 0 -0.3 0 -0.3 0.2 57600 145 5 0 -0.5 0.3 -1 0.5 115200 72 7 0 -1.1 0.6 -1.3 1.9 9600 1250 0 0 0 0 -0.05 0.05 19200 625 0 0 0 0 -0.2 0 38400 312 4 0 -0.2 0 -0.2 0.2 57600 208 2 0 -0.5 0.2 -0.6 0.5 115200 104 1 0 -0.5 0.6 -0.9 1.2 230400 52 0 0 -1.8 0 -2.6 0.9 460800 26 0 0 -1.8 0 -3.6 1.8 9600 1666 6 0 -0.05 0.05 -0.05 0.1 19200 833 2 0 -0.1 0.05 -0.2 0.1 38400 416 6 0 -0.2 0.2 -0.2 0.4 57600 277 7 0 -0.3 0.3 -0.5 0.4 115200 138 7 0 -0.7 0 -0.8 0.6 230400 69 4 0 -0.6 0.8 -1.8 1.1 460800 34 6 0 -2.1 0.6 -2.5 3.1 9600 1747 5 0 -0.04 0.03 -0.08 0.05 19200 873 7 0 -0.09 0.06 -0.2 0.1 57600 291 2 0 -0.2 0.2 -0.5 0.2 115200 145 5 0 -0.5 0.3 -1 0.5 9600 2083 2 0 -0.05 0.02 -0.09 0.02 19200 1041 6 0 -0.06 0.06 -0.1 0.1 38400 520 7 0 -0.2 0.06 -0.2 0.2 57600 347 2 0 -0.06 0.2 -0.3 0.3 115200 173 5 0 -0.4 0.3 -0.8 0.5 230400 86 7 0 -1 0.6 -1 1.7 460800 43 3 0 -1.4 1.3 -3.3 1.8 表 19-5 常用波特率及其设置和误差 UCOS16=1 波特率 UCBRx UCBRSx UCBRFx TX 最大误差 (%) RX 最大误差 (%) 9600 6 0 8 -1.8 0 -2.2 0.4 19200 3 0 4 -1.8 0 -2.6 0.9 9600 6 0 13 -2.3 0 -2.2 0.8 19200 3 1 6 -4.6 3.2 -5 4.7 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–348–页 共 423 页 4,000,000 4,000,000 4,000,000 4,000,000 4,000,000 4,194,304 4,194,304 4,194,304 4,194,304 8,000,000 8,000,000 8,000,000 8,000,000 8,000,000 8,000,000 8,388,608 8,388,608 8,388,608 8,388,608 12,000,000 12,000,000 12,000,000 12,000,000 12,000,000 12,000,000 16,000,000 16,000,000 16,000,000 16,000,000 16,000,000 16,000,000 16,000,000 16,777,216 16,777,216 16,777,216 16,777,216 20,000,000 20,000,000 20,000,000 20,000,000 20,000,000 20,000,000 20,000,000 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 9600 26 0 1 0 0.9 0 1.1 19200 13 0 0 -1.8 0 -1.9 0.2 38400 6 0 8 -1.8 0 -2.2 0.4 57600 4 5 3 -3.5 3.2 -1.8 6.4 115200 2 3 2 -2.1 4.8 -2.5 7.3 9600 27 0 5 0 0.2 0 0.5 19200 13 0 10 -2.3 0 -2.4 0.1 57600 4 4 7 -2.5 2.5 -1.3 5.1 115200 2 6 3 -3.9 2 -1.9 6.7 9600 52 0 1 -0.4 0 -0.4 0.1 19200 26 0 1 0 0.9 0 1.1 38400 13 0 0 -1.8 0 -1.9 0.2 57600 8 0 11 0 0.88 0 1.6 115200 4 5 3 -3.5 3.2 -1.8 6.4 230400 2 3 2 -2.1 4.8 -2.5 7.3 9600 54 0 10 0 0.2 -0.05 0.3 19200 27 0 5 0 0.2 0 0.5 57600 9 0 2 0 2.8 -0.2 3 115200 4 4 7 -2.5 2.5 -1.3 5.1 9600 78 0 2 0 0 -0.05 0.05 19200 39 0 1 0 0 0 0.2 38400 19 0 8 -1.8 0 -1.8 0.1 57600 13 0 0 -1.8 0 -1.9 0.2 115200 6 0 8 -1.8 0 -2.2 0.4 230400 3 0 4 -1.8 0 -2.6 0.9 9600 104 0 3 0 0.2 0 0.3 19200 52 0 1 -0.4 0 -0.4 0.1 38400 26 0 1 0 0.9 0 1.1 57600 17 0 6 0 0.9 -0.1 1 115200 8 0 11 0 0.9 0 1.6 230400 4 5 3 -3.5 3.2 -1.8 6.4 460800 2 3 2 -2.1 4.8 -2.5 7.3 9600 109 0 4 0 0.2 -0.02 0.3 19200 54 0 10 0 0.2 -0.05 0.3 57600 18 0 3 -1 0 -1 0.3 115200 9 0 2 0 2.8 -0.2 3 9600 130 0 3 -0.2 0 -0.2 0.04 19200 65 0 2 0 0.4 -0.03 0.4 38400 32 0 9 0 0.4 0 0.5 57600 21 0 11 -0.7 0 -0.7 0.3 115200 10 0 14 0 2.5 -0.2 2.6 230400 5 0 7 0 2.5 0 3.5 460800 2 6 10 -3.2 1.8 -2.8 4.6 19.3.14 低功耗 UART 模式下使用 USCI 模块 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–349–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM USCI 模块提供低功耗模式下的自动时钟激活功能。当 USCI 时钟源由于设备处于低功耗模式不活动 时,无论时钟源的控制位如何设置,USCI 模块会在需要时激活时钟源。时钟将保持活动状态直到 USCI 模块返回空闲状态。USCI 模块返回到闲状态后,将反转时钟源控制位的设置。 19.3.15 USCI 中断 USCI 只有一个发送和接收共用的中断向量。USCI_Ax 和 USC_Bx 不共用中断向量。 19.3.15.1 USCI 发送中断操作 发射机置位 UCTXIFG 中断标志,这表明 UCAxTXBUF 已经准备好接收另一个字符。如果 UCTXIE 和 GIE 也置位的话,将产生中断请求。如果将字符写入 UCAxTXBUF,UCTXIFG 将自动复位。 PUC 之后或 UCSWRST = 1 时,UCTXIFG 置位。PUC 之后或 UCSWRST = 1 时,UCTXIE 复位。 19.3.15.2 USCI 接收中断操作 每接收到 1 个字符并将其载入到 UCAxRXBUF 时,UCRXIFG 中断标志置位。如果 UCTXIE 和 GIE 也置位的话,将产生中断请求。UCRXIFG 和 UCRXIE 可以通过系统复位 PUC 信号或 UCSWRST = 1 复位。 当读取 UCAxRXBUF 时,UCRXIFG 自动复位。 其它的中断控制特征包括: l 当 UCAxRXEIE = 0 时,错误字符将不会置位 UCRXIFG。 当UCDORM = 1,在多处理器模式下非地址字符将不会置位UCRXIFG。在纯Uart模式下,没有字符可置位 UCRXIFG。 l 当 UCBRKIE = 1,打断状态将置位 UCBRK 位和 UCRXIFG 标志。 19.3.15.3 UCAxIV,中断向量发生器 USCI 中断标志具有一定的优先次序,组合使用一个中断向量。中断向量寄存器 UCAxIV 用于确定产 生中断的标志。使能的具有最高优先级的中断在 UCAxIV 寄存器内产生一个数值,该数值可以加到程序计 数器上,从而自动跳转到相应的软件子程序处。禁止中断不会影响 UCAxIV 的值。 对 UCAxIV 寄存器的任何访问,读或写,将会自动复位挂起的优先级最高的中断标志。如果另一个中 断标志置位,在响应完第一个中断后,立即产生另一个中断。 UCAxIV 软件示例 下面的软件示例所示为 UCAxIV 的推荐使用方法。为了自动跳转到相应的程序处,将 UCAxIV 值加到 PC 上。下面给出的是 USCI_A0 的例程。 USCI_UART_ISR ADD &UCA0IV, PC RETI JMP RXIFG_ISR TXIFG_ISR ... RETI RXIFG_ISR ... ;将偏移量加到跳转表 ;Vector 0: 没有中断 ;Vector 2: RXIFG ;Vector 4: TXIFG ;开始 ;返回 ;Vector 2 ;开始 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–350–页 共 423 页 RETI LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM ;返回 19.4 USCI 寄存器:UART 模式 在UART模式下可使用的USCI寄存器如表19-6所列。基地址可以参考芯片的数据手册,偏移地址如表19-6 所列。 表 19-6. USCI_Ax寄存器 寄存器 缩写 寄存器类型 寄存器访问 地址偏移 初始状态 USCI_Ax 控制字 0 UCAxCTLW0 读/写 字 00h 0001h USCI_Ax 控制 1 UCAxCTL1 读/写 字节 00h 01h USCI_Ax 控制 0 UCAxCTL0 读/写 字节 01h 00h USCI_Ax 波特率控制字 UCAxBRW 读/写 字 06h 0000h USCI_Ax 波特率控制 0 UCAxBR0 读/写 字节 06h 00h USCI_Ax 波特率控制 1 UCAxBR1 读/写 字节 07h 00h USCI_Ax 调制器控制 UCAxMCTL 读/写 字节 08h 00h 保留-读取值为 0 读 字节 09h 00h USCI_Ax 状态寄存器 UCAxSTAT 读/写 字节 0Ah 00h 保留-读取值为 0 读 字节 0Bh 00h USCI_Ax 接收缓存 UCAxRXBUF 读/写 字节 0Ch 00h 保留-读取值为 0 读 字节 0Dh 00h USCI_Ax 发送缓存 UCAxTXBUF 读/写 字节 0Eh 00h 保留-读取值为 0 读 字节 0Fh 00h USCI_Ax 自动波特率控制 UCAxABCTL 读/写 字节 10h 00h 保留-读取值为 0 读 字节 11h 00h USCI_Ax 红外控制器 UCAxIRCTL 读/写 字 12h 0000h USCI_Ax 红外发送控制器 UCAxIRTCTL 读/写 字节 12h 00h USCI_Ax 红外接收控制器 UCAxIRRCTL 读/写 字节 13h 00h USCI_Ax 中断控制器 UCAxICTL 读/写 字 1Ch 0000h USCI_Ax 中断使能 UCAxIE 读/写 字节 1Ch 00h USCI_Ax 中断标志 UCAxIFG 读/写 字节 1Dh 00h USCI_Ax 中断向量 UCAxIV 读 字 1Eh 0000h USCI_Ax 控制寄存器 0(UCAxCTL0) 7 6 5 4 UCPEN UCPAR UCMSB UC7BIT 3 UCSPB 2 1 UCMODEx 0 UCSYNC rw-0 UCPEN UCPAR UCMSB rw-0 Bit7 Bit6 Bit5 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 奇偶检验使能 0 禁止奇偶校验。 1 使 能 奇 偶 校 验 。( UCAxTXD ) 产 生 奇 偶 校 验 位 , (UCAxRXD)接收到奇偶校验位。在地址位多处理器模 式下,地址位参与奇偶校验计算。 选择奇偶校验。当禁止奇偶校验时,不使用 UCPAR。 0 奇校验 1 偶校验 选择高位优先。控制发送和接收移位寄存器的方向。 0 低位优先 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–351–页 共 423 页 UC7BIT UCSPB UCMODEx UCSYNC LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 1 高位优先 Bit4 字符长度。选择 7 位或 8 位字符长度。 0 8 位数据 1 7 位数据 Bit3 选择停止位。停止位的个数。 0 1 个停止位 1 2 个停止位 Bits2-1 USCI 模式。当 UCSYNC = 0 时,UCMODEx 选择异步模 式。 00 UART 模式 01 空闲线路多处理器模式 10 地址位多处理器模式 11 自带动波特率检测的 UART 模式 Bit0 使能同步模式。 0 异步模式 1 同步模式 USCI_Ax 控制寄存器 1(UCAxCTL1) 7 6 5 4 3 2 1 0 UCSSELx UCRXEIE UCBRKIE UCDORM UCTXADDR UCTxBRK UCSWRST rw-0 rw-0 UCSSELx rw-0 Bits7-6 rw-0 rw-0 rw-0 rw-0 rw-1 USCI 时钟源选择。这些位选择 BRCLK 时钟源。 00 UCLK(外部 USCI 时钟) 01 ACLK 10 SMCLK UCRXEIE Bit5 UCBRKIE Bit4 UCDORM Bit3 UCTXADDR Bit2 11 SMCLK 接收错误字符中断使能。 0 不接收错误字符且不置位 UCRXIFG 1 接收错误字符,置位 UCRXIFG 接收打断字符中断使能 0 接收的打断字符不置位 UCRXIFG 1 接收的打断字符置位 UCRXIFG 睡眠。使 USCI 进入睡眠模式。 0 不睡眠。所有接收的字符置位 UCRXIFG。 1 睡眠。只有空闲线路或地址位作为前导的字符置位 UCRXIFG。带自动波特率检测的 UART 模式下,只有 打断和同步字段的组合可以置位 UCRXIFG。 发送地址。根据选择的多处理器模式,发送的下一帧为 地址。 UCTxBRK Bit1 0 发送的下一帧是数据 1 发送的下一帧是地址 发送打断。发送带发送缓冲器写入操作的打断。在自动 波特率检测的 UART 模式下,为了产生需要的中断/同步 字段,必须将 055h 写入 UCAxTXBUF。否则,必须将 0h 写入发送缓冲器。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–352–页 共 423 页 UCSWRST LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 0 发送的下一帧不是打断 1 发送的下一帧是打断或打断/同步 Bit0 软件复位使能 0 禁止。USCI 复位释放操作。 1 使能。USCI 逻辑保持在复位状态。 USCI_Ax 波特率控制寄存器 0(UCAxBR0) 7 6 5 4 3 2 1 0 UCBRx 低字节 rw rw rw rw rw USCI_Ax 波特率控制寄存器 1(UCAxBR1) rw rw rw 7 6 5 4 3 2 1 0 UCBRx 高字节 rw rw rw rw rw rw rw rw UCBRx 波特率发生器的时钟与预分频器设置 。UCAxBR0 + UCAxBR1 × 256 的16位值组成预分频器值UCBRx. USCI_Ax 调制控制寄存器(UCAxMCTL) 7 6 5 4 3 2 1 0 UCBRFx UCBRSx UCOS16 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 UCBRFx Bits7-4 第一级调制选择。当 UCOS16=1 时,这些位决定调制方式, UCOS16=0 时,将忽略这些位。表 19-3 所示为该调制模式。 UCBRSx Bits3-1 第二级调制选择。 这些位确定 BITCLK 的调制模式。表 19-2 所示 为该调制模式。 UCOS16 Bit0 过采样模式使能。 0 禁止 1 使能 USCI_Ax 状态寄存器(UCAxSTAT) 7 6 5 4 3 2 1 0 UCLISTEN UCFE UCOE UCPE UCBRK UCRXERR UCADDR UCBUSY UCLISTEN Bit 7 侦听使能。UCLISTEN位置位选择闭环回路模式。 0 禁止。 1 使能。 UCAxTXD内部反馈到接收器。 UCFE Bit6 帧错误标志 39、没有错误 1 接收到的带低停止位的字符。 UCOE Bit5 溢出错误标志。如果在读出前一字符之前,将字符传输到UCAxBUF, 该位置位。 当读取UCxRXBU时,UCOE 自动复位,禁止软件清除该位。 否 则,不能正确地工作。 0 没有错误 1 产生溢出错误 UCPE Bit4 奇偶校验错误标志。当UCPEN=0时,UCPE读取值为0。 0 没有错误 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–353–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 1 接收到带有就校验错误的字符 UCBRK Bit3 打断检测标志。 0 没有出现打断情况 1 产生打断条件 UCRXERR Bit2 该位表示接收到带有错误的字符。当UCRXERR = 1时,1个或更多错 误标志,UCFE、 UCPE或UCOE置位。 当读取UCAxRXBUF 时, 清 除UCRXERR。 UCADDR Bit1 地址位多处理器模式下接收到的地址。 读取UCAxRXBUF 时清除 UCADDR。 0 接收到的字符为数据 1 接收到的字符为地址 UCIDLE 空闲多处理器模式下,检测到空闲线路。读取UCAxRXBUF时,将清除UCIDLE。 0 没有检测到空闲线路 1 检测到空闲线路 UCBUSY Bit0 USCI忙。该位表示是否有发送或接收操作正在进行。 0 USCI 不活动状态。 1 USCI正在发送或接收 USCI_Ax 接收缓冲寄存器(UCAxRXBUF) 7 6 5 4 3 2 1 0 UCRXBUFx r r r r r r r r UCRXBUFx Bits7-0 接收数据缓冲器可以由用户访问,包括从接收移位寄存器最后接收 到的字符。对 UCAxRXBUF 进行读操作,将复位接收错误位,UCADDR 或 UCIDILE 及 UCRXIFG。7 位数据模式下,UCAxRXBUF 是低有效位 对齐,最高有效 位总是复位。 USCI_Ax 发送缓冲寄存器(UCAxTXBUF) 7 6 5 4 3 2 1 0 UCTXBUFx r r r r r r r r UCTXBUFx Bits7-0 发送数据缓冲器可以由用户访问,保持数据等待移入发送移位寄存器 并传输到 UCAxTXD。对 UCAxRXBUF 进行写操作,将清除 UCTXIFG。 数据,UCAxTXBUF 没有使用到,处于复位状态。 USCI_Ax IrDA 发送控制寄存器(UCAxIRTCTL) 对于 7 位 7 6 5 4 3 2 1 0 UCIRTXPLx UCIRTXCLK UCIREN rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 UCIRTXPLx Bits7-2 UCIRTXCLK Bit1 发送脉冲长度 脉冲长度tPULSE = (UCIRTXPLx + 1) / (2 × fIRTXCLK)。 IrDA发送脉冲时钟选择 0 BRCLK UCIREN Bit0 1 当UCOS16 = 1时,BITCLK16,否则为BRCLK。 IrDA 编码器/解码器使能 0 IrDA 编码器/解码器禁止 1 IrDA编码器/解码器使能 USCI_Ax IrDA 接收控制寄存器(UCAxIRRCTL) 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–354–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 7 6 5 4 3 UCIRRXFLx 2 1 0 UCIRRXPL UCIRRXFE rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 UCIRRXFLx Bits7-2 接收滤波器长度。接收的最小脉冲长度计算如下: UCIRRXPL Bit1 tMIN = (UCIRRXFLx + 4) / (2 × fIRTXCLK)。 IrDA 接收输入 UCAxRXD 极性 0 当检测到一个光脉冲时 IrDA 发送器发送一个高电平 1 当检测到一个光脉冲时 IrDA 发送器发送一个低电平 UCIRRXFE Bit0 IrDA 接收滤波器使能 0 接收滤波器禁止 1 接收滤波器使能 UCAxABCTL, USCI_Ax 自动波特率控制寄存器 7 6 保留 5 4 UCDELIMx 3 2 UCSTOE UCBTOE 1 保留 0 UCABDEN r-0 r-0 rw-0 rw-0 rw-0 rw-0 r-0 rw-0 保留 Bits 7-6 保留。 UCDELIMx Bits5-4 打断/同步分隔符长度 00 1 位时长 01 2 位时长 10 3 位时长 11 4 位时长 UCSTOE Bit3 同步字段超时错误 0 没有错误 1 同步字段的长度超出可测量时间 UCBTOE Bit2 打断超时错误。 0 没有错误 1 打断字段的长度超出 22 位时长 保留 UCABDEN Bits1 Bit0 保留。 自动波特率检测使能。 0 波特率检测禁止。不测量打断和同步字段长度。 1 波特率检测使能。测量打断和同步字段的长度,波特率 的 设置据此而改变。 USCI_Ax 中断使能寄存器(UCAxIE) 7 6 5 4 3 2 1 0 保留 UCTXIE UCRXIE r-0 r-0 r-0 r-0 r-0 r-0 保留 Bits 7-2 保留。 UCTXIE Bit1 发送中断使能。 0 禁止中断 1 使能中断 UCRXIE Bit0 接收中断使能。 0 禁止中断 1 使能中断 USCI_Ax 中断标志寄存器(UCAxIFG) 7 6 5 4 3 2 rw-0 rw-0 1 0 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–355–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 保留 UCTXIFG UCRXIFG r-0 r-0 r-0 r-0 r-0 r-0 rw-0 rw-0 保留 Bits 7-2 保留。 UCTXIFG Bit1 发送中断标志位。当 UCAxTXBUF 为空时 UCTXIFG 置位。 0 没有中断挂起 1 中断挂起 UCRXIFG Bit0 接收中断标志位。当 UCAxRXBUF 已经收到一个完整 的字符,UCRXIFG 置位。 0 没有中断挂起 1 中断挂起 USCI_Ax 中断向量寄存器(UCAxIV) 15 14 13 12 11 10 9 8 0 0 0 0 0 0 0 0 r0 r0 7 6 0 r0 5 0 r0 4 0 r0 3 0 r0 2 0 r0 r0 1 0 UCIVx 0 r0 UCIVx r0 Bits 15-0 r0 r0 r0 USCI 中断向量值 UCAxIV值 中断源 000h 无中断 0002h 数据接收 0004h 发送缓存空 r-0 中断标志 UCRXIFG UCTXIFG r-0 r0 中断优先级 最高 最低 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–356–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 第20章 USCI-SPI 通用串行通信接口(USCI)支持带有一个硬件模块的多种串行通信模式。本章主要讨论同步外围接口 (SPI)的操作。 41、USCI概述 42、USCI接收-SPI模式 43、USCI操作-SPI模式 44、USCI寄存器-SPI模式 20.1 USCI 概述 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–357–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 通用串行通信接口(USCI)模块支持多种串行通信模式。不同的USCI支持不同的模式。每一个不同的 USCI 模块以不同的字母(USCI)命名。例如,USCI-A 与 USCI-B 不同,等等。如果一个芯片内含有一个以上类型 相同的USCI模块,那么这些模块以递增的数字命名。例如,如果一个芯片有两个USCI-A模块,那么将它们 命名为USCI-A0和USCI-A1。请参考具体芯片的数据手册,确定哪些芯片含有哪些USCI模块。 USCI-Ax模块支持: 15)UART 模式 16)用于IrDA通信的脉冲整形 17)用于LIN通信的波特率自动检测 18)SPI 模式 提供USCI-Bx系列模块: 19)I2C模式 20)SPI模式 20.2 USCI 介绍:SPI 模式 在同步模式下,USCI通过3或4个线制将芯片连接到外部系统,这些线制为:UCxSIMO、UCxSOMI、UCxCLK 和UCxSTE。 当UCSYNC位置位时,通过UCMODEX位选择SPI模式(3或4脚)。 SPI 模式特性有: 1. 7~8 位的数据长度; 2. 最高有效位在前或者最低有效位在前的数据发送和接收; 3. 3脚或4脚的SPI操作 4. 主/从模式 5. 独立的发送和接收移位寄存器 6. 独立的发送和接收缓冲寄存器 7. 连续发送和接收操作 8. 可选的时钟极性和相位控制 9. 主模式下,时钟频率可编程 10. 独立的接收和发送中断能力 11. LPM4下的从模式操作 图20-1为配置为SPI模式的USCI框图。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–358–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图 20-1 USCI框图-SPI模式 20.3 USCI 的操作:SPI 模式 在 SPI 模式下,多个芯片之间使用由主机提供的共用时钟进行串行数据的发送和接收。另外一个线制 UCxSTE,由主机控制,使能芯片进行接收和发送数据。 3或4个信号用于SPI数据交换: 21)UCxSIMO从模式输入,主模式输出。主模式:UCxSIMO是数据输出线;从模式:UCxSIMO 是数据输入线。 22)UCxSOMI从模式输出,从模式输入。主模式:UCxSOMI 是数据输入线;从模式: UCxSOMI 是数据输出线 23)UCxCLK USCI SPI 时钟主模式:UCxCLK 为输出,从模式:UCxCLK为输入。 24)UCxSTE从发送使能。用于4线制模式,此时允许在1条总线上有多个主机,不能用于3线制模 式。表 20-1 说明了UCxSTE模式。 UCMODEx 表 20-1 UCxSTE 运行模式 UCxSTE 有效状态 UCxSTE 从机 主机 01 高 公司地址:杭州市登云路 425 号利尔达大厦 0 1 Tel:0571-88800000 不活动 活动 Fax:0571-89908080 活动 不活动 第–359–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 10 低 0 活动 不活动 1 不活动 活动 20.3.1 初始化及复位USCI PUC或 UCSWRST位 可 以 复 位 USCI。 PUC后, UCSWRST 位自动置位,使USCI保持在复位状态。 UCSWRST置位时,它将使UCRXIE、UCTXIE、UCRXIFG、UCOE和UCFE位复位,使UCTXIFG置位。清 除UCSWRST位将释放USCI,使其进入运行状态。 注意:初始化或重新配置 USCI 模块 推荐使用的USCI初始化/重置过程如下: 1、 置位UCSWRST=1; (BIS.B # UCSWRST,&UCxCTL1); 2、 通过UCSWRST=1初始化所有的USCI寄存器(包括 UCxCTL1)0(; 3、 配置端口; 4、 通过软件清除UCSWRST(BIC.B #UCSWRST,&UCxCTL1); 5、 通过 UCRXIE 和/或 UCTXIE 使能中断(可选))。 20.3.2 字符格式 SPI模式下的USCI模块支持7位和8位字符长度,可以通过UC7BIT位选择。7位数据模式下,UCXRXBUF 是低有效位对齐,最高有效位总是复位。UCMSB位控制数据传送的方向,选择LSB或MSB在前。 注意:默认的字符格式 默认的SPI字符传送是低位在前。与其他SPI接口进行通信时,可能需要高位在前的模式。 注意:图形的字符格式 本章所有的图形采用高位在前模式。 20.3.3 主模式 图 20-2 USCI主、外从 图 20 - 2所示为3和4线制配置时,USCI作为主机的连接。当数据传送到发送数据缓冲(UCXTXBUF)时,USCI 启动数据传输。当TX移位寄存器为空时,UCXTXBUF数据移入发送(TX)移位寄存器,启动 UCxSIMO的 数据传送, 该数据传送是高有效位还是低有效位在前,这取决于UCMSB设置。UCxSOMI的数据在相反的时钟沿 处 移 入 接 收 移 位 寄 存 器 。 当 接 收 到 字 符 时 , 接 收 数 据 从 接 收 ( RX ) 移 位 寄 存 器 移 入 接 收 数 据 缓 冲 器 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–360–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM UCxRXBUF,此时接收中断标 志UCRXIFG置位,这标志着数据的接收和发送已经完成。 发送中断标志UCTXIFG置位,表明数据已经从UCxTXBUF移入TX移位寄存器,UCxTXBUF已准备好 接收新数据。这并不表明发送或接收完成。 主模式下,为了UCSI模块接收数据,数据必须写入UCxTXBUF,因为接收和发送数据是同时操作的。 20.3.3.1 4 线制SPI主模式 在四线制主模式中,UCxSTE用于防止与另一主机产生冲突,并如表 20-1 所示控制主机。 当UCxSTE处于主机-非活动状态时: 25)UCxSIMO和UCxCLK设置为输入状态,并且不再驱动总线 26)错误位UCFE置位,表明存在违反通信完整性的情况,需要用户处理 27)内部状态器复位,终止移位操作 如果UCxSTE保持主机在不活动状态时,将数据写入UCxTXBUF中,UCxSTE一转换到主机-活动状态, 立即发送数据。如果UCxSTE转换到到主机-非活动状态,而致使正在进行的数据发送停止,那么UCxSTE转 换回到主机-活动状态时,数据必须再次写入UCxTXBUF。 在3线制主机模式下,不使用UCxSTE输入信号。 20.3.4 从模式 图 20-3 USCI作为从机和外部作为主机 图 20 - 2所示为3和4线制配置时,USCI作为从机的连接。UCxCLK用作SPI的时钟输入而且必须由外部主机提 供。数据传输速率由这个外部主机时钟决定而不是内部的位时钟发生器。UCxCLK开始前,写入UCxTXBUF 和移入TX移位寄存器的数据通过UCxSOMI发送。UCxSIMO端的数据在UCxCLK时钟的反向沿移入接收移 位寄存器,当接收到设置位数的数据时,移入UCxRXBUF内。当数据从RX移位寄存器移入UCxRXBUF时, UCRXIFG 中断 标志 置位 ,表 明数 据已 经接 收完成 。如 果在 新数 据移 入UCxRXBUF之 前, 没有 从 UCxRXBUF中读出前面已经接收的数据时,超越错误位UCOE置位。 20.3.4.1 4线制SPI从模式 在四线制从机模式下,从机使用UCxSTE位来使能接收或发送操作,该位状态由SPI主机提供。当UCxSTE 处于从模式活动状态时,从机正常操作。 当 UCxSTE 处于从机-不活动状态时: 28)停止UCxSIMO上任何正在进行的接收操作。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–361–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 29)UCxSOMI设置为输入方向。 30)移位操作停止,直到UCxSTE 转换到从机发送活动状态。 在三线制从机模式下,不使用UCxSTE输入信号。 20.3.5 使能SPI 当通过清除UCSWRST位,使能USCI模块时,USCI模块已准备好接收和发送。主模式下,位时钟发生 器已经准备就绪,但并没有时钟控制也不会产生任何时钟。从模式下,位时钟发生器禁止,主机提供时钟。 UCBUSY=1说明发送或接收操作正在进行。 PUC或置位UCSWRST,会立即禁止USCI,终止任何正在进行的传输。 20.3.5.1 使能发送 在主模式下,UCxTXBUF的写操作将激活位时钟发生器,开始发送数据。从模式下,当主机提供时钟 时,开始发送数据。在4线模式下,当UCxSTE处于从机-模式活动状态时,开始发送数据。 20.3.5.2 使能接收 当发送处于活动状态时,SPI 接收数据。接收和发送操作同时进行。 20.3.6 串行时钟控制 UCxCLK由SPI总线上的主机提供。UCMST=1时,位时钟由UCxCLK引脚的USCI位时钟发生器提供。 通 过 UCSSELx位选择用于产生位时钟的时钟。UCMST=0 时,USCI时钟由主机的UCxCLK引脚提供,此时不 使用位时钟发生器, 不考虑UCSSELx位。SPI的接收器和发送器并行操作,且数据传输使用同一个时钟源。 位速率控制寄存器(UCxxBR1和UCxxBR0)内UCBRx的16位值,是USCI时钟源BRCLK的分频因子。 主模式下能够产生的最大位时钟是BRCLK。SPI模式下不使用调制器,当USCI_A使用SPI模式时,应该清 除UCAxMCTL。 UCAxCLK/UCBxCLK频率公式如下 : fBITCLOCK=fBRCLK/UCBRx; 20.3.6.1 串行时钟的极性与相位 UCxCLK的极性和相位可通过USCI的UCCKPL和UCCKPH控制位独立配置。每种情况下的时钟如图 20-4所示。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–362–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图 20-4 USCI在UCMSB=1时的SPI时序 20.3.7 低功耗模式下使用SPI模式 USCI模块为带有低功耗模式的应用提供自动时钟激活功能。当USCI的时钟源由于芯片处于低功率模式 而处于不活动状态时,USCI模块会在需要的时候自动激活USCI时钟源,而不论时钟源的控制位如何设置。 在USCI模块回到空闲状态之前,时钟源一直保持活动状态。USCI模块返回空闲状态后,时钟源控制恢复到 控制位的设置。 在SPI从模式下,不需要内部时钟源,因为时钟由外部的主机提供。即使芯片处于LPM4模式,所有的时 钟都禁用的情况下,USCI也可以在SPI从模式下操作。接收和发送中断可以将CPU从任何低功耗模式下唤醒。 20.3.8 SPI中断 USCI只有一个中断向量,发送和接收共用该向量。USCI_Ax和USCI_Bx不共用同一个中断向量。 20.3.8.1 SPI发送中断操作 UCTXIFG由发送器置位,表明UCxTXBUF已经准备接收下一个字符。如果UCTXIE和GIE也置位,将产 生中断请求。如果将字符写入UCxTXBUF,UCTXIFG就会自动复位。PUC之后或UCSWRST=1时,UCTXIFG 置位,UCTXIE复位。 注意:SPI 模式下写数据到 UCxTXBUF 当 UCTXIFG=0 时写数据到UCxTXBUF,可能会导致错误的数据发送。 20.3.8.2 SPI 接收中断的运行 每次当接收到一个字符并把字符装载到UCxRXBUF时,UCRXIFG 中断标志置位。如果UCRXIE和GIE也 置位时,将产生一个中断请求。系统复位PUC 信号或UCSWRST=1时,UCRXIFG和UCRXIE复位。当读取 UCxRXBUF时,UCRXIFG会自动复位。 20.3.8.3 中断向量发生器:UCxIV USCI中断标志具有不同的优先级,它们组合共用一个中断向量。中断向量寄存器UCxIV用来决定哪个 标志请求中断。优先级最高的中断会在UcxIV寄存器内产生一个数字偏移量,这个偏移量累加到程序计数器 PC上,程序自动跳转到相应的软件程序处。禁止中断不会影响影响UcxIV值。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–363–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 对UCxIV寄存器的任何读或写访问,会复位挂起的优先级最高的中断标志。如果另一个中断标志置位, 在响应完之前的中断后,将立刻产生另一个中断。 UCxIV 软件编程实例: 下面的程序是UCxIV的推荐使用方法。UCxIV值累加到PC上,从而使系统自动跳转到相应的程序处。 下面的程序以USCI_B0模块为例: USCI-SPI-ISR ADD RETI JUMP RXIFG-ISR TXIFG-ISR … RETI RXIFG-ISR … RETI &UCB0IV,PC ; 把偏移地址加到跳转的表格上 ; 向量 0:没有中断 ; 向量 2:RXIFG ; 向量 4:TXIFG ; 中断任务开始执行 ; 返回 ; 向量 2 ; 中断任务开始执行 ; 返回 20.4 USCI 寄存器-SPI 模式 表20-2和20-3列出了SPI模式下可用的USCI寄存器。基地址可在具体芯片的数据手册中查看,地址偏移 量在表20-2和表20-3中列出。 表 20-2. USCI-Ax 寄存器 寄存器 缩写 寄存器类型 寄存器访问 地址偏移 初始状态 USCI_Ax控制字0 UCAxCTLW0 读/写 字 00h 0001h USCI_Ax 控制器1 UCAxCTL1 读/写 字节 00h 01h USCI_Ax 控制器0 UCAxCTL0 读/写 字节 01h 00h USCI_Ax波特率控制字 UCAxBRW 读/写 字 06h 0000h USCI_Ax波特率控制器0 UCAxBR0 读/写 字节 06h 00h USCI_Ax波特率控制器1 UCAxBR1 读/写 字节 07h 00h USCI_Ax调制器控制 UCAxMCTL 读/写 字节 08h 00h USCI_Ax 状态寄存器 UCAxSTAT 读/写 字节 0Ah 00h 保留-读值为0 读 字节 0Bh 00h USCI_Ax接收缓存 UCAxRXBUF 读/写 字节 0Ch 00h 保留-读值为0 读 字节 0Dh 00h USCI_Ax发送缓存 UCAxTXBUF 读/写 字节 0Eh 00h 保留-读值为0 读 字节 0Fh 00h USCI_Ax中断控制器 UCAxICTL 读/写 字 1Ch 0000h USCI_Ax中断使能 USCI_Ax中断标志 UCAxIE UCAxIFG 读/写 读/写 字节 字节 1Ch 00h 1Dh 00h USCI_Ax中断向量 UCAxIV 读 字 1Eh 0000h 表 20-3 USCI-Bx 寄存器 寄存器 缩写 寄存器类型 寄存器访问 地址偏移 初始状态 USCI_Bx控制字0 UCBxCTLW0 读/写 字 00h 0001h USCI_Bx 控制器1 UCBxCTL1 读/写 字节 00h 01h USCI_Bx 控制器0 UCBxCTL0 读/写 字节 01h 00h 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–364–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM USCI_Bx波特率控制字 UCBxBRW USCI_Bx波特率控制器0 UCBxBR0 USCI_Bx波特率控制器1 UCBxBR1 USCI_Bx调制器控制 UCBxMCTL USCI_Bx 状态寄存器 UCBxSTAT 保留-读值为0 USCI_Bx接收缓存 UCBxRXBUF 保留-读值为0 USCI_Bx发送缓存 UCBxTXBUF 保留-读值为0 USCI_Bx中断控制器 UCBxICTL USCI_Bx中断使能 UCBxIE USCI_Bx中断标志 UCBxIFG 读/写 读/写 读/写 读/写 读/写 读 读/写 读 读/写 读 读/写 读/写 读/写 字 字节 字节 字节 字节 字节 字节 字节 字节 字节 字 字节 字节 06h 0000h 06h 00h 07h 00h 08h 00h 0Ah 00h 0Bh 00h 0Ch 00h 0Dh 00h 0Eh 00h 0Fh 00h 1Ch 0000h 1Ch 00h 1Dh 00h USCI_Bx中断向量 UCBxIV 读 字 1Eh 0000h USCI-Ax 控制寄存器0(UCAxCTL0) USCI-Bx 控制寄存器0(UCBxCTL0) 7 6 5 4 3 2 1 0 UCCKPH UCCKPL UCMSB UC7BIT UCMST UCMODEx UCSYNC=1 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 (1) UCCKPH UCCKPL UCMSB UC7BIT UCMST UCMODEx UCSYNC rw-1 (2) Bit7 时钟相位选择 0 数据在第一个UCLK边沿改变,在下一个边沿捕获 1 数据在第一个UCLK边沿捕获,在下一个边沿改变 Bit6 时钟极性选择 0 不活动状态为低电平 1 不活动状态为高电平 Bit5 选择MSB在前。控制接收或发送移位寄存器的方向。 0 LSB在前 1 MSB在前 Bit4 字符长度选择。选择7或8位字符长度。 0 8位数据 1 7位数据 Bit3 选择主机模式。 0 从机模式 1 主机模式 Bits2-1 USCI模式。当UCSYNC=1时,UCMODEx位选择同步模式。 00 3线SPI 01 四线SPI,UCxSTE活动状态为高:当UCxSTE=1时,使能从机 10 四线SPI、UCxSTE活动状态为低:当UCxSTE=0时,使能从机 11 I2C模式 Bit0 使能同步模式。 0 异步模式 1 同步模式 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–365–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM (1) UCAxCTL0 (USCI_Ax) (2) UCBxCTL0 (USCI_Bx) USCI-Ax 控制寄存器1(UCAxCTL1) USCI-Bx 控制寄存器1(UCBxCTL1) 7 6 5 4 3 2 1 0 UCSSELx 未使用 UCSWRST rw-0 rw-0 rw-0 (1) rw-0 rw-0 rw-0 rw-0 rw-1 UCSSELx r0(2) Bits7-6 选择USCI时钟源。这些位在主模式下选择BRCLK时钟源。 UXCLK总是用于从模式下。 00 N/A 01 ACLK 未使用 Bits 5-1 UCSWRST Bit0 10 SMCLK 11 SMCLK 没有使用。 使能软件复位。 0 禁止。USCI复位释放。 1 使能,USCI逻辑保持在复位状态。 (1) UCAxCTL1 (USCI_Ax) (2) UCBxCTL1 (USCI_Bx) USCI-Ax 位速率控制寄存器0(UCAxBR0) USCI-Bx 位速率控制寄存器0(UCBxBR0) 7 6 5 4 3 2 1 0 UCBRx(低字节) rw rw rw rw rw rw rw rw USCI-Ax 位速率控制寄存器1(UCAxBR1) USCI-Bx 位速率控制寄存器1(UCBxBR1) 7 6 5 4 3 2 1 0 UCBRx(高字节) rw rw rw rw rw rw rw rw UCBRx Bits7-0 位时钟预分频器。 (UCxxBR0 + UCxxBR1 × 256)的16位值组成 UCBRX分频器的值UCBRx。 UCAxMCTL,USCI-Ax 模块控制寄存器 7 6 5 4 0 0 0 0 rw-0 rw-0 rw-0 rw-0 Bits 7-0 写入0。 USCI_Ax 状态寄存器(UCAxSTAT) USCI_Bx 状态寄存器(UCBxSTAT) 7 6 5 4 UCLISTEN UCFE UCOE rw-0 rw-0 rw-0 rw-0(1) r0 (2) 3 2 0 rw-0 rw-0 3 2 保留 rw-0(1) rw-0(1) r0 (2) r0 (2) 1 0 rw-0 1 srw-0(1) r0 (2) 0 0 0 rw-0 0 UCBUSY r-0 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–366–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM UCLISTEN Bit7 侦听使能。该位选择回路模式。 l 禁止 1 使能。发送器输出内部反馈到接收器。 UCFE Bit6 帧错误标志。该位表明 4 线制主模式下的总线冲突。3 线制主模式或 从模式下,不使用 UCFE。 0 没有错误 1 产生总线冲突。 UCOE Bit5 溢出错误标志。读出前已接收字符之前有字符传输到UCAxBUF时,该 位置位。读UCxRXBUF时,UCOE自动复位,禁止使用软件清除。否则, 确操作。 不能正 0 没有溢出错误 1 产生溢出错误。 未使用 Bits 4-1 没有使用。 UCBUSY Bit0 SCI 忙。该位表示正在进行接收或发送。 0 USCI 不活动 1 USCI正在接收或发送 (1) UCAxSTAT (USCI_Ax) (2) UCBxSTAT (USCI_Bx) USCI-Ax接收缓冲寄存器(UCAxRXBUF) USCI-Bx 的接收缓冲寄存器(UCBxRXBUF) 7 6 5 4 3 2 1 0 UCRXBUFx r r r r r r r r UCRXBUFx Bits7-0 用户可以访问数据接收缓冲器,包括从接收移位寄存器收到 的最后字符。读 UCxRXBUF 将复位接收错误位以及 UCRXIFG。在 7 位数据模式下,UCxRXBUF 低有效位对齐, 最 高有效位总是复位。 USCI-Ax 的发送缓冲寄存器(UCAxTXBUF) USCI-Bx 的发送缓冲寄存器(UCBxTXBUF) 7 6 5 4 3 2 1 0 rw rw UCTXBUFx rw rw rw rw rw rw UCTXBUFx Bits7-0 用户可以访问数据发送缓冲器,保持数据等待移入发 送移位寄存器并发送。发送缓冲器进行写数据操作,将清除 UCTXIFG。7 位模式下,最高有效位没有使用,处于复位 USCI-Ax 中断使能寄存器(UCAxIE) USCI-Bx 中断使能寄存器(UCBxIE) 状态。 7 6 5 4 3 保留 2 1 0 UCTXIE UCRXIE r-0 r-0 r-0 r-0 r-0 r-0 rw-0 rw-0 保留 UCTXIE Bits7-2 保留。 Bit1 使能发送中断. 0 禁止中断 1 使能中断 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–367–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM UCRXIE Bit0 使能接收中断. 0 禁止中断 1 使能中断 USCI_Ax 中断标志寄存器(UCAxIFG) USCI_Bx 中断标志寄存器(UCBxIFG) 7 6 5 4 3 2 1 0 保留 UCTXIFG UCRXIFG 保留 UCTXIFG Bits7-2 保留。 Bit1 发送中断标志位。当UCxTXBUF为空时,UCTXIFG置位。 0 无中断挂起 1 中断挂起 UCRXIFG Bit0 位。 接收中断标志。UCxRXBUF接收到1个完整字符时,UCRXIFG置 0 没有中断挂起 1 中断挂起 USCI-Ax 中断向量寄存器(UCAxIV) USCI-Bx 中断向量寄存器(UCBxIV) 15 14 0 0 r0 r0 7 6 0 0 r0 r0 UCIVx Bits15-0 13 12 11 0 0 0 r0 r0 r0 5 4 3 0 0 0 r0 r0 r0 USCI中断向量值 UCAxIV/ 中断源 UCBxIV值 00h 无中断 002h 接收数据 004h 发送缓存为空 10 9 0 0 r0 r0 2 1 UCIVx r-0 r-0 8 0 r0 0 0 r0 中断标志 中断优先级 UCRXIFG UCTXIFG 最高 最低 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–368–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 第21章 USCI-I2C 通用串行通信接口(USCI)支持带有一个硬件模块的多种串行通信模式,本章讨论I2C模式的操作。 21.1 USCI 概述 21.2 USCI 介绍:I2C 模式 21.3 USCI 操作:I2C模式 21.4 USCI 寄存器:I2C 模式 21.1 通用串行通信接口(USCI)概述 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–369–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM USCI模块支持多种串行通信模式。不同的USCI 模块支持不同的模式。每一个不同的USCI 模块以不 同的字母命名。例如,USCI_A与USCI_B不同等等。如果一个芯片内含有一个以上类型相同的USCI模块,那 么这些模块以递增的数字命名。例如,如果一个芯片有两个USCI-A模块,那么将它们命名为USCI-A0和 USCI-A1。请参考具体芯片的数据手册,确定哪些芯片含有哪些USCI模块。 USCI-Ax系列模块支持: l UART 模式 l 用于IrDA通信的脉冲整形; l 用于LIN通信的波特率自动检测; l SPI模式 USCI-Bx系列模块支持 l I2C模式 l SPI模式 21.2 USCI 介绍:I2C 模式 在I2C模式下,USCI模块通过两线式I2C串行总线连接,为芯片与其他I2C兼容芯片提供一个接口。连接 到I2C总线上的外部器件,通过两线式I2C接口与USCI模块进行串行发送与接收。 I2C模块的特性包括: Ø 与Philips半导体I2C规范v2.1兼容 Ø 7位和10位芯片寻址方式 Ø 全呼 Ø 开始/重新开始/停止 Ø 多主机发送/接收模式 Ø 从接收/发送模式 Ø 支持100kbps的标准模式和高达400kbps的快速模式 Ø 主机模式下UCxCLK频率可编程 Ø 为低功耗设计 Ø 用于LPMx模式自动唤醒的从接收器开始检测 Ø LPM4模式下的从模式操作 图 21-1 所示为配置为I2C模式的USCI框图。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–370–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图 21-1 USCI模块框图:I2C 模式 21.3 USCI 操作:I2C 模式 I2C模式支持任何兼容I2C的从/主芯片。图 21-2 所示为一个I2C总线的例子。每个 I2C芯片可以通过其 唯一的地址来识别,可以作为发送器或接收器来操作。当进行数据传输时,连接到I2C总线上的芯片可以当做 主芯片或从芯片。主芯片启动数据传输并产生时钟信号SCL。主芯片寻址到的任何芯片都可视为一个从芯 片。 I2C 数据通过串行数据线(SDA)和串行时钟线(SCL)进行通信。SDA 和 SCL 均为双向,必须使用一个 上拉电阻连接到正电源电压。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–371–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图 21-2 I2C总线连接图 注意:SDA 和SCL电平 禁止SDA和SCL引脚上拉到VCC电平以上。 21.3.1 初始化及复位USCI PUC或UCSWRST位置位,可置位USCI。PUC后,UCSWRST位将自动置位,并使USCI保持在复位状 态。为了选择I2C模式,UCMODEx位必须设置成11。模块进行初始化后,数据的发送或接收准备就绪。清 除UCSWRST,可以释放USCI,使其进入操作状态。 为避免发生意外情况,当UCSWRST置位时,需要对USCI模块进行配置或重新配置。在I2C模式下,置 位UCSWRST有下列作用: l I2C 通信停止 l SDA 和SCL处于高阻态 l UCBxI2CSTAT 的第0~6位清零 l 寄存器UCTXIE和UCRXIE清零 l UCTXIFG和UCRXIFG清零 l 所有其他位和寄存器保持不变 注意:初始化或重新配置 USCI模块 推荐使用的USCI模块初始化或重新配置步骤: 1、 置位 UCSWRST(BIS.B #UCSWRST,&UCxCTL1) 2、 通过UCSWRST=1初始化所有USCI寄存器包括 UCxCTL1) 3、 端口配置 4、 用软件清除 UCSWRST (BIC.B #UCSWRST,&UCxCTL1) 5、 使能中断(可选) 21.3.2 I2C串行数据 每一个数据位传输时,主芯片产生一个时钟脉冲。I2C模式下进行的是字节操作。如图21-3所示,先 发送数据的最高有效位。 START位之后的第一个字节包含一个7位从地址和R/W位。当R/W=0时,主机向从机发送数据;R/W=1 时,主机接收来自从机的数据。每个字节后的第九个SCL时钟时,接收机发送ACK位。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–372–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图 21-3 I2C模块数据传输 START条件和STOP条件,由主芯片产生,如图21-3所示。SCL为高时,SDA线上由高到低的跳变产生 一个START条件。SCL为高时,SDA线上由低到高的跳变产生一个STOP条件。START之后,总线忙位 UCBBUSY置位,STOP之后清零。SCL为高电平期间,SDA上的数据必须保持稳定(见图21-4)。只有在SCL 为低时,才可以改变SDA的高低状态,否则将会产生START和STOP条件。 21.3.3 I2C 寻址方式 图 21-4 I2C总线位传输 I2C模式支持7位和10位寻址模式。 21.3.3.1 7 位寻址 7位寻址格式中(见图21-5),第一个字节是7位从地址和R/W读写控制位。每个字节后,接收机发送ACK 位。 21.3.3.2 10 位寻址 图 21-5 I2C 模块 7 位寻址格式 10位寻址格式中(见图21-6),11110b加上10位从地址的高两位及R/W位组成第一个字节数据。每个字 节结束后,接收器发送ACK位。下一个为10位从地址的剩余8位,其后是ACK位和8位数据。带有USCI模 块的10位寻址模式的详细使用方法,请参考 I2C从机10位寻址模式和I2C主机10位寻址模式。 21.3.3.3 重复START条件 图 21-6 I2C模块10位寻址格式 主 机 可 以 在 没 有 停 止 传 输 时 , 通 过 产 生 重 复 的 START 条 件 , 改 变 SDA 上 数 据 流 的 方 向 。 这 称 为 RESTART。START后,按照R/W确定的新数据方向再次发出从芯片的地址。RESTART条件格式如图21-7 所 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–373–页 共 423 页 示。 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图 21-7 I2C模块带重复开始条件的寻址格式 21.3.4 I2C 模式下的操作方式 在I2C模式下,USCI模块可以工作在主发送模式,主接收模式,从发送模式或从接收模式。下面章节中 将会对这些模式进行讨论,使用了时间线,对这些模式进行说明。 图21-8 所示为如何理解这些时间线图形。主芯片发送的数据用灰色的矩形块表示,从芯片发送的数据 则用白色的矩形块表示。不论作为主机或从机,USCI发送的数据由较高的矩形表示。 USCI模块的操作,表示在带有箭头的灰色矩形块内,箭头表明操作发生在数据流的哪个位置。必须由 软件处理的操作,则由带箭头的白色矩形方块表示,箭头指向的是数据流中操作必须进行的位置。 图 21-8 I2C时间线图标符号 21.3.4.1 从芯片模式 通过设置UCMODEx=11,USCYNC=1及复位 UCMST位,选择I2C模式后,可将USCI模块配置成I2C从 机。 首先,为了接收I2C从机地址,必须通过清除UCTR位将USCI模块配置成接收模式。然后,根据接收到 的R/W位和从机地址,自动控制发送和接收操作。 通过UCBxI2COA寄存器对USCI模块从地址编程。UCA10 = 0时,选择7位寻址方式。UCA10=1,选择 10 位寻址方式。UCGCEN位选择是否对全呼进行响应。 当 在 总 线上检 测到START条件时,USCI模 块将接收发送过来的地 址,并将它与 存储在 UCBxI2C0A 中的地址相比较。若接收到的地址与USCI从机地址一致,则置位UCSTTIFG标志。 I2C 从芯片发送模式 当主机发送的从地址和其自身地址相同并且R/W为1时,从机进入发送模式。从机随着主机产生的时钟脉 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–374–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 冲信号在SDA上移动串行数据。从机不产生时钟,但是当发送完一个字节后需要CPU的干预时,从机能够 使SCL保持低电平。 如果主机 向 从机请求数据时,USCI模 块会自 动配 置为 发送模 式,UCTR和UCTXIFG置位。在要发送 的 第 一 个数 据 写入 到 发送 缓 存 UCBxTXBUF之 前 ,SCL时 钟 线 一 直 拉低 。然 后 ,应 答地 址 , 清 除 UCSTTIFG标 志 ,传 输 数 据 。一 旦 数 据 被 传 输 到 移 位 寄 存 器 ,UCTXIFG将 再 次 被 置 位 。 主 机 应 答数 据 后, 开 始传 输 写入 UCBxTXBUF的 下 一 个数 据 ,或 者 如果 缓 冲器 为 空, 在 新 数 据 写 入 UCBxTXBUF 之前,通 过 保 持 SCL为 低 , 使 应 答 周 期 内 总 线 停 止 。 如 果 主 机 在 发 送 STOP条 件 之 前 发 送 了 一 个 NACK信 号 , UCSTPIFG置 位 。 如 果 NACK发 送 之 后 , 主 机 发 送 重 复 的 START条 件 , USCI I2C状态机返回到地址 接 收 状 态 。 图 21-9所 示 为 从 机 发 送 操 作 。 I2C 从芯片接收模式 图21-9 I2C从机发送模式 当主机发送的从地址与自身地址相同,且接收到的R/W为0时,从机进入接收模式。从机接收模式下, SDA上接收到的串行数据随着主机产生的时钟脉冲移动。从芯片不产生时钟,但是当一个字节接收完毕后需 要CPU的干预时,从机可保持SCL为低电平。 如果从机需要接收主机发送过来的数据,USCI模块将自动配置为接收模式,并将UCTR位清除。在接 收完第一个数据字节后,接收中断标志UCRXIFG置位。USCI模块会自动应答接收到的数据,接收下一个数 据字节。 如果在接收结束时,没有将前面的数据从接收缓存UCBxRXBUF内读出,将通过保持SCL为低而使总 线停止。一旦读取出UCBxRXBUF的数据,新数据将立即传输到UCBxRXBUF,从机发送应答信号到主机, 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–375–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 接收下一个数据。 置位UCTXNACK,会导致从机在下一个应答周期内发送一个NACK信号给主机。即使UCBxRXBUF还 没有准备好接收最新数据,从机也发送NACK给主机。如果在SCL为低时置位UCTXNACK,将会释放总线, 并立即发送一个NACK信号,UCBxRXBUF将装载最后一次接收到的数据。由于没有读出之前的数据,这将 造成数据丢失。为避免数据的丢失,应在UCTXNACK置位之前读出UCBxRXBUF中的数据。 当主机产生一个STOP停止信号时,UCSTPIFG标志置位。 如果主机产生一个重复START条件,则USCI I2C状态机返回到地址接收状态。 图21-10所示为I2C从机接收操作。 I2C 从机10 位寻址模式 图 21-10 I2C从芯片接收模式 如图21-11所示,当UCA10=1时选择10位寻址模式。10位寻址模式下接收到整个地址后,从机处于接收 模式。USCI模块通过UCTR位清零时置位UCSTTIFG来表示上述情况。为了将从机切换到发送模式,主机 在发送R/W置位的地址的第一个字节时,发送一个重复START条件。如果之前通过软件清除UCSTTIFG 标志,此时UCSTTIFG将置位,USCI模块通过UCTR=1切换到发送模式。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–376–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 21.3.4.2 主模式 图 21-11 I2C从机10位寻址模式 通过设置UCMODEx=11,USCYNC=1,置位UCMST位,选择I2C模式,将USCI模块配置成I2C主模式。当主 机是多主机系统的一部分时,必须将UCMM置位,并将其自身地址编程写入UCBxI2COA寄存器。UCA10=0 时,选择7位寻址模式。UCA10=1时,选择10位寻址模式。UCGCEN位选择是否USCI模块对全呼作出反应。 I2C 主机发送模式 初始化之后,主发送模式通过下列方式启动:将目标从地址写入UCBxI2CSA,通过UCSLA10 位选择 从地址大小,为发送模式置位UCTR,为产生START条件置位UCTXSTT。 USCI 模块首先检测总线是否空闲,然后产生一个START条件,发送从机地址。当产生START条件时 UCTXIFG位置位,要发送的数据写到UCBxTXBUF。一旦有从机对地址作出应答,UCTXSTT位立即清零。 注意:在多主机系统下处理TXIFG 多主机系统下(UCMM=1),如果总线不可用,USCI模块将等待并检查总线是否空闲。 即 使 UCTXSTT 位已经置位,总线也可能处于不可用状态。在等待总线变为可用状态时, USCI可以在SCL时钟线操作 基础上更新TXIFG位。为了判断START条件是否已经发出,检 测 UCTXSTT 位 可 以 保 证 正 在 正 确 响 应 TXIFG位。 在发送从机地址的过程中,如果总线仲裁没有丢失,那么将发送写入到UCBxTXBUF中的数据。一旦 数据由缓冲区移入移位寄存器,UCTXIFG将再次置位。如果在应答周期之前,没有数据装载到UCBxTXBUF 中,那么总线将在应答周期内挂起,SCL保持低状态,直到数据写入UCBxTXBUF中。只要UCTXSTP位或 UCTXSTT位没有置位,将发送数据或挂起总线。 从机下一个应答信号之后,置位UCTXSTP可以产生一个STOP条件。如果在从机地址的发送过程中或 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–377–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 者当USCI模块等待UCBxTXBUF写入数据时,UCTXSTP置位,即使没有数据发送到从机,也会产生一个STOP 条件。如果发送的是单字节数据,在字节发送过程中或数据发送开始后,没有新数据写入UCBxTXBUF时, 必须置位UCTXSTP。否则,将只发送地址。当数据由发送缓冲器移到移位寄存器时,UCTXIFG将会置位, 这表示着数据传输已经开始,可以对UCTXSTP位进行置位操作。 置位UCTXSTT将会产生一个重复START条件。在这种情况下,为了配置发送器或接收器,可以复位或置位 UCTR,需要时可将一个不同的从地址写入UCBxI2CSA。 如果从机没有响应发送数据,未响应中断标志位UCNACKIFG将置位。主机必须对STOP条件或重复 START条件作出反应。如果数据已写入UCBxTXBUF中,那么将丢弃当前数据。如 果 这 个 数 据 必须 在 重 复 START条 件 后 发 送 , 必 须 重 新 将其写 入UCBxTXBUF中 。 UCTXSTT设置也将丢弃。为了触发重复 START条件,UCTXSTT必须再次置位。 图21-12 所示为I2C主机的发送操作。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–378–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM I2C 主接收模式 图 21-12 I2C主发送模式 初始化之后,通过下列操作启动主芯片接收模式:把目标从地址写入UCBxI2CSA寄 存 器,通过 UCSLA10 位选择从地址的大小,清除UCTR位来选择接收模式,置位UCTXSTT产生一个START条件。 USCI 模块首先检测总线是否空闲,然后产生一个START条件,然后发送从地址。一旦从芯片对地址作出 应答,UCTXSTT位立即清零。 当主机接收到从芯片对地址的应答信号后,主芯片将接收到从芯片发送的第一个数据字节并发送应答 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–379–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 信号,同时UCRXIFG标志置位。只要UCTXSTP和 UCTXSTT没有置位,主机将会接收到从机发送的数据。如 果 没 有读 取 UCBxRXBUF , 那 么 主 芯 片 将 在 最 后一 个 数 据位 的接收 过程中 挂起总 线 ,直 到 完 成 对 UCBxRXBUF的读取。 如果从芯片没有响应主机发送的地址,则未响应中断标志UCNACKIFG置位。主芯片必须以STOP 信 号或重复START条件来响应。 置位UCTXSTP,将会产生一个停止信号。UCTXSTP置位后,在接收到从机的数据后,将产生NACK 信号及紧随其后的STOP条件,或者如果USCI模块正在等待读取UCBxRXBUF,则立即产生。 如果主芯片只想接收一个单字节数据,那么接收字节时必须将UCTXSPT置位。在这种情况下,可以查 询UCTXSTT位,确定该位何时清零: BIS.B #UCTXSTT, &UCB0CTL1 ;发送START条件 POLL_STT BIT.B #UCTXSTT, &UCB0CTL1 ;查询UCTXSTT位 JC POLL_STT ;当清零时 BIS.B #UCTXSTP, &UCB0CTL1 ;发送STOP条件 置位 UCTXSTT, 将产生一个重复START条件。在这种情况下,可以通过对UCTR置位或复位来将其配 置为发送器或接收器,如果需要的话还可以将不同的从地址写入 UCBxI2CSA。 图21-13 所示为I2C主接收模式操作。 注意:没有重复START条件的连续传输 当执行没有重复START特性的连续I2C主传输时,必须在完成当前传输后才能进 行下一次初始化。这点可以通过在设置UCTXSTT = 1初始化下一次I2C传输之前, 保证 发送STOP条件标志UCTXSTP清零来实现。否则,可能会影响到当前的传输。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–380–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM I2C 主芯片10 位地址模式 图 21-13 I2C主机接收模式 当UCSLA10=1 时选择10位地址模式,如图21-14 所示。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–381–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图 21-14 I2C主机——10位寻址模式 21.3.4.3 总线仲裁 如果总线上有两个或更多个主发送器同时启动发送,就会启动仲裁程序。图2 1 -15所示为两个芯片间的 仲裁过程。仲裁进程使用由相互竞争的发送器提供的SDA上的数据。产生逻辑高电平的第一个主发送器, 被与其竞争的产生逻辑低电平的主发送器控制。以最低二进制值发送串行数据流的芯片,在总线仲裁进程 中有一定优先权。失去仲裁的主发送器将切换到从接收模式,并置位仲裁丢失标志UCALIFG。如果两个或 更多的芯片发送的第一个字节相同,将根据后续字节继续仲裁。 图 21-15 两个发送主机之间的仲裁 如果SDA上传送重复START条件或STOP条件时,正在进行总线仲裁,那么总线仲裁过程中涉及的主发 送器必须在格式帧的同一个位置,发送重复START或者STOP条件。 以下情况之间不允许总线仲裁: 45、重复START条件和数据位之间 46、STOP位和数据位之间 47、重复START位和STOP 位之间 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–382–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 21.3.5 I2C 时钟的产生与同步 I2C时钟SCL由I2C总线上的主机提供。当USCI处于主发送模式时,BITCLK由USCI位时钟发生器提供, 可以通过UCSSELx位选择时钟源。在从模式下,不使用位时钟发生器,且不考虑UCSSELx位。 寄存器 UCBxBR1和UCBxBR0中UCBRx的16位数据是USCI时钟源BRCLK的分频因子。在单主机模式下,可用的最 大位时钟是fBRCLK/4。在多主机模式下,最大位时钟为fBRCLK/8。BITCLK频率可由下面公式得到: fBITCLOCK=fBRCLK/UCBRx 产生的SCL时钟信号的最小高低电平宽度为: 当UCBRx为偶数时,tLOW,MIN=tHIGH,MIN=(UCBRx/2)/ fBRCLK 当UCBRx为奇数时,tLOW,MIN=tHIGH,MIN=(UCBRx-1/2)/ fBRCLK 选择USCI时钟源频率和预分频设置UCBRx时,必须满足I2C总线规定中的最小高低电平时间。 总线仲裁过程中,不同主机的时钟必须同步。最先在SCL总线上产生低电平的芯片,控制其他芯片,强 制其他芯片开始进入低电平阶段。低电平阶段最长的芯片使SCL保持低电平。其他芯片必须等到SCL释放, 才能开始进入高电平阶段。图21-16所示为时钟同步情况。这使得低速从机可以把高速主机速度降低。 图 21-16 仲裁期间两个I2C时钟发生器的同步 21.3.5.1 时钟伸展 USCI 模块支持时钟伸展,并按照操作模式部分中的说明,使用这个特性。 如果由于以下几种情况,USCI模块已经释放SCL,可以使用UCSCLLOW位检查是否有其他芯片拉低 SCL: 48、USCI处于主机活动模式下,连接的从机将SCL拉低。 49、USCI处于主机活动模式下,仲裁过程中其他主机将SCL拉低。 如果USCI模块由于等待发送写入UCBxTXBUF的数据,或是接收从UCBxRXBUF读取的数据,而把 SCL 总线拉低时,UCSCLLOW 位也处于活动状态。 因为逻辑检查到外部SCL并将其与内部产生的SCL相比较,所以UCSCLLOW位可能会随着SCL上升沿保 持短时间的置位状态。 21.3.6 低功耗模式下 USCI 模块中I2C模式的使用 USCI模块为使用低功耗模式的情况提供了自动时钟激活。当由于芯片处于低功耗模式,USCI时钟源处 于不活动状态时,不论时钟源的控制位如何设置,USCI模块会在需要时自动激活时钟。时钟一直保持活动 状态,直到USCI模块返回到空闲状态。USCI返回空闲状态后,时钟源控制将翻转控制位设置。 在I2C从模式下,由于时钟是由外部主芯片提供,所以并不需要内部时钟源。当芯片处于 LPM4状态下 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–383–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 且禁止所有内部时钟源时,USCI可以工作在I2C从模式下。接收或发送中断可以将CPU从任何一种低功耗模 式下唤醒。 21.3.7 I2C 模式下的 USCI 中断 USCI模块只有一个中断向量,该中断向量由发送、接收以及状态改变复用。USCI_Ax 和USCI_Bx不使用 同一个中断向量。 每个中断标志都有自己的中断允许位。GIE位置位时,如果使能一个中断,将会产生中断请求。在集成 有DMA控制器的芯片上,UCTXIFG和UCRXIFG标志将控制DMA传输。 21.3.7.1 I2C 发送中断操作 为了表明UCBxTXBUF已准备好接收另一个字符,发送器将置位UCTXIFG。如果此时UCTXIE和GIE 也已经置位,则会产生一个中断请求。当有字符写入UCBxTXBUF或接收到NACK信号时,UCTXIFG会自动 复位。当选择I2C模式且UCSWRST=1时,UCTXIFG置位。PUC后或UCSWRST=1时,UCTXIE复位。 21.3.7.2 I2C 接收中断操作 当接收到一个字节并将其装载到UCBxRXBUF时,UCRXIFG中断标志置位。如果此时UCRXIE和GIE都置位, 将产生一个中断请求。PUC后或UCSWRST=1时,UCRXIFG和UCTXIE复位。对UCxRXBUF进行读操作之后,UCRXIFG 会自动复位。 21.3.7.3 I2C 状态改变中断操作 表 21-1 对I2C的状态转换中断标志进行了说明。 表 21-1 I2C状态转换中断标志 中断标志 中断条件 UCALIFG 仲裁丢失。当同时开始两个或更多个数据发送,或者USCI工作在主模式 下,但是 系统内的另一主机将其作为从机寻 址时,仲裁可能丢失。当仲裁丢失时, UCALIFG位置位。当 UCALIFG位置位时,UCMST 位清零,I2C控制器将作为从芯片。 UCNACKIFG 无应答中断标志。当接收不到预期返回的应答信号时此标志置位。当 接收到START条件时,UCNACKIFG自动清零。 UCSTTIFG 检测到START条件标志。从模式下,当I2C模块接收到START条件及本机地 址时,该标志置位。UCSTTIFG只在从模式下使用,当接收到STOP条件时, 自动清零。 UCSTPIFG 检测到STOP条件标志。从模式下,当I2C模块检测到STOP条件时, UCSTPIFG 置 位。UCSTPIFG只在从模式下 使用,当接收到START条件时,自动清零。 21.3.7.4 UCBxIV,中断向量发生器 USCI中断标志有一定的优先级,共同使用一个中断向量。中断向量寄存器UCBxIV用来决定哪个标志位 请求了中断。使能的具有最高优先级的中断会在UCBxIV寄存器内产生一个数值,这个数值可以加到程序计数 器PC上,使之跳转到相应的服务分支程序。禁止的中断不会影响UCBxIV值。 对UCBxIV寄存器的任何读或写访问,将自动复位挂起的优先级最高的中断标志。 如果另一个中断标志置位,在响应完最初的中断后,将立即产生另一个中断。 UCBxIV软件示例 下面的示例所示为UCBxIV的推荐使用方法。UCBxIV值加到PC值上,系统自动跳转到适当的程序处。此例 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–384–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 中使用了USCI_B0。 USCI_I2C_ISR ADD &UCB0IV, PC ; 地址偏移加到跳转表 RETI ; Vector 0: 没有中断 JMP ALIFG_ISR ; Vector 2: ALIFG JMP NACKIFG_ISR ; Vector 4: NACKIFG JMP STTIFG_ISR ; Vector 6: STTIFG JMP STPIFG_ISR ; Vector 8: STPIFG JMP RXIFG_ISR ; Vector 10: RXIFG TXIFG_ISR ; Vector 12 ... RETI ; 此处开始 ; 返回 ALIFG_ISR ... ; Vector 2 ; 此处开始 RETI ; 返回 NACKIFG_ISR ... RETI ; Vector 4 ; 此处开始 ; 返回 STTIFG_ISR ... RETI ; Vector 6 ; 此处开始 ; 返回 STPIFG_ISR ... ; Vector 8 ; 此处开始 RETI ; 返回 RXIFG_ISR ; Vector 10 ... RETI ; 此处开始 ; 返回 21.4 USCI 寄存器:I2C模式 I2C模式下可用的USCI寄存器在表21-2 中列出,基地址可以在数据手册中找到,表21-2中列出了地址偏 移量。 表 21-2 USCI_Bx 寄存器 寄存器 缩写 寄存器类型 寄存器访问 地址偏移 USCI_Bx控制字0 UCBxCTLW0 读/写 字 00h USCI_Bx 控制器1 UCBxCTL1 读/写 字节 00h USCI_Bx 控制器0 UCBxCTL0 读/写 字节 01h USCI_Bx波特率控制字 UCBxBRW 读/写 字 06h USCI_Bx波特率控制器0UCBxBR0 读/写 字节 06h USCI_Bx波特率控制器1UCBxBR1 读/写 字节 07h USCI_Bx 状态寄存器 UCBxSTAT 读/写 字节 0Ah 保留-读取值为0 读 字节 0Bh USCI_Bx接收缓存 UCBxRXBUF 读/写 字节 0Ch 保留-读取值为0 读 字节 0Dh 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 初始状态 0101h 01h 01h 0000h 00h 00h 00h 00h 00h 00h 第–385–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM USCI_Bx发送缓存 保留-读取值为0 USCI_Bx I2C本机地址 USCI_Bx I2C从机地址 USCI_Bx中断控制 USCI_Bx中断使能 USCI_Bx中断标志 USCI_Bx中断向量 UCBxTXBUF UCBxI2COA UCBxI2CSA UCBxICTL UCBxIE UCBxIFG UCBxIV 读/写 读 读/写 读/写 读/写 读/写 读/写 读 字节 字节 字 字 字 字节 字节 字 0Eh 00h 0Fh 00h 10h 0000h 12h 0000h 1Ch 0200h 1Ch 00h 1Dh 02h 1Eh 0000h USCI_Bx 控制寄存器 0 (UCBxCTL0) 7 6 5 4 UCA10 UCSLA10 UCMM 未用 3 UCMST 2 1 UCMODEx=11 0 UCYNC=1 R/W-0 rw-0 UCA10 UCSLA10 UCMM 未用 UCMST rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 r-1 Bit7 本机地址模式选择 0 7位本机地址模式 1 10位本机地址模式 Bit6 从机地址模式选择 0 7位从机地址模式 1 10位从机地址模式 Bit5 多主机环境的选择 0 单主机环境。该系统内没有别的主机。禁止地址比较单元。 1 多主机环境。 Bit4 未用。 Bit3 主机模式选择。当一个主机在多主机环境下丢失仲裁时(UCMM = 1),UCMST 位自动复位,模块作为从机操作。 0 从机模式 1 主机模式 UCMODEx Bits2-1 USCI 模式。当UCSYNC=1时,UCMODEx位选择同步模式。 00 3线SPI 01 四线SPI(如果UCxSTE=1,使能主/从机) 10 四线SPI(如果UCxSTE=0,使能主/从机) 11 I2C模式 UCYNC Bit0 使能同步模式。 0 异步模式 1 同步模式 USCI_Bx控制寄存器1(UCBxCTL1) 7 6 5 4 3 UCSSELx 未用 UCTR UCTXNACK 2 UCTXSTP 1 0 UCTXSTT UCSWRST rw-0 rw-0 r0 rw-0 rw-0 rw-0 rw-0 UCSSELx Bits7-6 USCI 时钟源选择。这些位选择BRCLK时钟源。 00 UCLKI 01 ACLK 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 rw-1 第–386–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 10 SMCLK 11 SMCLK 未用 Bit5 未用。 UCTR Bit4 发送/接收。 0 接收 1 发送 UCTXNACK Bit3 发送NACK。当 NACK发送完毕后,UCTXNACK自动清零。 0 正常应答 1 产生 NACK信号 UCTXSTP Bit2 在主模式下发送STOP条件。在从模式下忽略该位。在主接收模式 下,NACK信号在STOP条件前。在产生STOP条件后,UCTXSTP自动 清 零。 0 无STOP条件产生 1 产生STOP条件 UCTXSTT Bit1 在主模式下发送START条件。在从模式下忽略该位。在主接收模式下, NACK信号在重复START条件之前。发送START条件和地址信息后, UCTXSTT自动清零。 0 不产生START条件 1 产生START条件 UCSWRST Bit0 使能软件复位。 0 禁止。USCI复位释放。 1 使能。USCI保持在复位状态。 USCI_Bx 波特率控制寄存器 0(UCBxBR0) 7 6 5 4 3 2 1 0 UCBRx(低字节) rw rw rw rw rw rw USCI_Bx 波特率控制寄存器 1(UCBxBR1) rw rw 7 6 5 4 3 2 1 0 UCBRx(高字节) rw rw rw rw rw rw rw rw UCBRx Bits 7-0 位时钟预分频器。UCxxBR0 + UCxxBR1 × 256的16位值组成预分频值UCBRx。 USCI_Bx 状态寄存器(UCBxSTAT) 7 6 5 4 3 2 1 0 未用 UCSCLLOW UCGC UCBBUSY 未用 rw-0 r-0 r-0 r-0 rw-0 rw-0 rw-0 rw-0 未用 Bit7 未用。 UCSCLLOW Bit6 SCL低电平 0 SCL为高 1 SCL为低 UCGC Bit5 接收到全呼地址。当接收到START条件时,自动清零。 0 没有接受到全呼地址 1 接收到全呼地址 UCBBUSY Bit4 总线忙 0 总线空闲 1 总线忙 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–387–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 未用 Bits3-0 未用。 USCI-Bx 的接收缓冲寄存器(UCBxRXBUF) 7 6 5 4 3 2 1 0 UCRXBUFx r r r r r r r r UCRXBUFx Bits7-0 用户可以访问数据接收缓冲器,包含从接收移位寄存器收到 的最后字符。UCxRXBUF 的读操作,将复位 UCRXIFG。 USCI-Bx 发送缓冲寄存器(UCBxTXBUF) 7 6 5 4 3 2 1 0 UCTXBUFx rw rw rw rw rw rw rw rw UCTXBUFx Bits7-0 用户可以访问数据发送缓冲器,它保存数据,等待移入发 送移位寄存器并发送。发送缓冲器写数据操作,将清除 UCTXIFG。 USCIBx I2C 本机地址寄存器9(UCBxI2COA) 15 14 13 12 11 10 9 8 UCGCEN 0 0 0 0 0 I2COAx rw-0 r0 r0 r0 r0 r0 rw-0 rw-0 7 6 5 4 3 2 1 0 I2COAx rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 UCGCEN Bit15 使能全呼响应。 0 不响应全呼 1 响应全呼 I2COAx Bits9-0 I2C本机地址。I2COAx位包含USCI_Bx I2C控制器的本地地址,地址右对 齐。在7位寻址模式下,Bit6是最高有效位,忽略Bit7-Bit9。 在10位寻址模式下,Bit9是最高有效位。 USCI_Bx I2C 从地址寄存器(UCBxI2CSA) 15 14 13 12 11 10 9 8 0 0 0 0 0 0 I2CSAx r0 r0 r0 r0 r0 r0 rw-0 rw-0 7 6 5 4 3 2 1 0 I2CSAx rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 I2CSAx Bits9-Bit0 I2C从机地址。I2CSAx包含了USCI_Bx寻址的外扩芯片的从地 址。这些位只有在USCI_Bx模块设置为主机模式下使用。在7 位 寻址模式下,Bit6是最高有效位,忽略Bit7-Bit9。在10位寻址 模式下,Bit9为最 高有效位。 USCI_Bx I2C中断使能寄存器(UCBxIE) 7 6 5 4 3 2 1 0 保留 UCNACKIE UCALIE UCSTPIE UCSTTIE UCTXIE UCRXIE 保留 Bits 7-6 保留。 UCNACKIE Bit5 使能无应答中断。 0 禁止中断 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–388–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 1 使能中断 UCALIE Bit4 使能仲裁丢失中断。 0 禁止中断 1 使能中断 UCSTPIE Bit3 使能STOP条件中断。 0 禁止中断 1 使能中断 UCSTTIE Bit2 使能START条件中断。 0 禁止中断 1 使能中断 UCTXIE Bit1 使能发送中断。 0 禁止中断 1 使能中断 UCRXIE Bit0 使能接收条件中断。 0 禁止中断 1 使能中断 USCI_Bx I2C 中断标志寄存器(UCBxIFG) 7 6 5 4 3 2 1 0 保留 UCNACKIFG UCALIFG UCSTPIFG UCSTTIFG UCTXIFG UCRXIFG r-0 r-0 保留 UCNACKIFG rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 Bits 7-6 保留。 Bit5 未收到应答中断标志。UCNACKIFG在接收到START条件之 后自动清零。 UCALIFG UCSTPIFG 0 无中断挂起 1 中断挂起 Bit4 总线仲裁丢失中断标志。 0 无中断挂起 1 中断挂起 Bit3 接收到停止位中断标志位。UCSTPIFG在接收到START条件 之后自动清零。 UCSTTIFG Bit2 自动清零。 0 无中断挂起 1 中断挂起 START条件中断标志位。UCSTTIFG在接收到STOP条件之后 UCTXIFG UCRXIFG 0 无中断挂起 1 中断挂起 Bit1 USCI发送中断标志位。UCNACKIFG在发送缓存 UCBxTXBUF为空时置位。 0 无中断挂起 1 中断挂起 Bit0 接收中断标志位。UCRXIFG会在接收完一个字符之后置 位。 0 无中断挂起 1 中断挂起 USCI_Bx中断向量寄存器(UCBxIV) 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–389–页 共 423 页 15 14 0 0 r0 r0 7 6 0 r0 r0 UCIVx Bits15-0 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 13 12 11 10 9 8 0 0 0 0 0 0 r0 r0 r0 r0 r0 r0 5 4 3 2 1 0 0 0 r0 r0 USCI中断向量值 0 r-0 UCIVx r-0 r-0 0 r0 UCBxIV值 000h 002h 004h 006h 008h 00Ah 00Ch 中断源 无中断源 仲裁丢失 无应答 接收到START条件 接收到STOP条件 接收到数据 发送缓存为空 中断标志 — UCALIFG UCNACKIFG UCSTTIFG UCSTPIFG UCRXIFG UCTXIFG 中断优先级 最高 最低 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–390–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 第 22 章 USB 模块 本章主要讨论在某些芯片中存在的USB模块。 22.1 USB介绍 22.2 USB操作 22.3 USB传输 22.4 寄存器 22.1 USB介绍 USB模块的特性包括: ·与USB2.0全速规范兼容 —具有集成USB收发器(PHY)的全速芯片(12MBPS) —多达8个输入和8个输出端点 —支持控制、中断和批量传输 —支持USB挂起、继续及远程唤醒 ·电源系统与PMM系统独立 —集成的3.3V LDO稳压器,能为整个MSP430及5V总线电压的系统电路提供足够的电压 —集成了为PHY及PLL供电的1.8V LDO稳压器 —可以选择总线供电或自供电 —3.3VLDO输出具有限流能力 —通过可能的USB电源实现MSP430的自供电(低/无电池电压) ·内部有48MHZ的USB时钟 —集成可编程PLL —使用低成本晶振实现高弹性输入时钟频率 ·1904个字节的专用USB端点缓冲空间,完全配置大小达到8个字节 ·具有62.5ns分辨率的时间戳发生器 ·当禁止USB时 —缓冲空间映射到通用RAM,为系统提供额外的2KB —USB接口引脚成为大电流通用I/O管脚 注意: 设备的使用 本章使用到了设备这个字。根据环境,这个字可以是两种含义中的一种。在USB环境下,它指的是作 为一个设备,功能或外设,USB规范所涉及到的,也就是可以连接到USB主机或集线器上的设备。在半导 体 环 境下,它涉及到一个集成电路,如MSP430。 为了避免混淆,本文档中的术语USB设备指的是USB环境下的意义。设备本身涉及到硅芯片,如MSP430。 图22-1所示为USB模块的逻辑框图。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–391–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图22-1. USB框图 22.2 USB模块操作 USB模块是一个全面的、与USB2.0规范兼容的全速USB设备。 USB引擎协调所有与USB有关的规则(traffic),主要包括USB SIE(串行接口引擎)、USB缓冲管理器 (UBM)。USB接收路径上接收到的所有traffic,进行串行化以后放置到USB缓冲RAM区内的接收缓冲。 缓冲RAM区内标记为“准备发送“的数据串行打包后发送给USB主机。 为了对传入的数据流进行采样,USB引擎需要一个精确的48MHZ时钟。这个时钟由来自系统晶振 (XT1/XT2)的PLL产生,需要一个大于1.5MHZ的晶振。然而,由于PLL非常灵活,可以适应较宽范围内的 频率,所以允许设计时使用大多数低成本的晶振。 注:有些芯片只支持低频操作模式下的XT1。PLL只支持高频率的输入时钟源,如:高频模式下 的XT1(HF)或XT2。对于此类芯片,只有XT2可以作为USB操作的PLL模块的输入,也支 持 高频模式下的XT1或BYPASS模式的XT2。可用时钟源的信息,可参考具体的芯片数据手 册。 USB接口和应用软件之间的数据交换在USB缓冲存储器进行。端点1到7也是在USB缓冲存储器进行定 义。CPU或DMA可以像访问RAM一样访问这个缓冲区。 22.2.1 USB收发器(PHY) 物理层接口(USB收发器)是直接由VUSB(3.3V)供电差分线路驱动器。这个线路驱动器直接连接 到构成USB接口信号机制的DP/DM引脚。 当PUSEL置位时,可将DP/DM配置为USB内核逻辑控制的USB驱动器。当该位清零时,这两个管脚就 变成了一对具有大电流通用IO口管脚“端口 U“。这种情况下,这些引脚可由UPCR寄存器控制。端口U 由区别于芯片DVCC的VUSB供电。不论是作为USB使用还是普通用法,如果没有使用到这些引脚,VUSB 供电必须适当,可以选择使用内部稳压器或外部电源。 22.2.1.1 PUR引脚D+上拉 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–392–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 当全速USB设备连接到USB主机时,为了使主机识别到USB设备的存在,必须上拉D+线(DP脚)。 MSP430 USB模块,通过一个可以激活上拉电阻的软件控制引脚实现上述功能。PUR_EN位控制激活上拉 电阻。如果不需要软件控制,可以将上拉电阻直接连接到VUSB。 22.2.1.2 损坏线路短路及箝位 USB设备必须可以连接到损坏的电缆上,such that it has developed shorts on either ground or VBUS.USB设备不应因此而有电气或物理方面的损坏。因此,MSP430的USB电源系统应具有限流机制,这 样当短接到地时,就可以限制收发器的电流。收发器接口本身就不再需要限流保护功能。 注意如果VUSB不是由集成稳压器供电,收发器上缺少限流器时,就意味着外部电源自身必须通过它 自己的限流方式允许这种方式的短路。 22.2.1.3 端口U控制 当PUSEL清零时,端口U管脚(PU0/PU1,分别对应于DP/DM) 作为通用大电流I/O脚使用。PUDIR 控 制使能端口U管脚上的两个输出。端口U管脚既可全为输出,或全作为输入。当配置位输入时,为了确定 输入值,可以对PUIN0/1脚进行读操作。当使能端口U输出时,PUIN0/1将会反映出输出情况。 当PUDIR置位时,端口U管脚作为输出,由PUOUT0/PUOUT1控制。当高电平驱动时,使用VBUS,可以比 设备上的其他I/O管脚上的驱动电流更大。 参数请参阅具体芯片的数据手册。PUDIR在默认情况下是清零 的。因此当禁止USB模块时,PU0/PU1变为高阻态状。 22.2.2 电源系统 USB电源系统组成双LDO稳压器(3.3 V和1.8 V),这允许可以使用USB主机的SB电源系统时,整个 MSP430由5V的VBUS供电。另外,电源系统只能给USB模块供电,或在完全自供电设备中不使用电源系 统。系统框图如图22-2所示。 图22-2USB电源系统 3.3V LDO接收VBUS的5 V,向收发器及VUSB引脚提供电源。采用这种启动可以阻止收发器相关的高 负载及阻止PLL载入一个使用中的本地系统电源。因此这对电池供电的设备来说非常有用。 1.8V LDO接收内部3.3V LDO或外部提供的VBUS脚的电源,为USB PLL和收发器供电。 USB模块内的 1.8V LDO与MSP430电源管理模块(PMM)内的LDO不相关。 LDO的输入和输出如图22-2所示。VBUS、 VUSB和V18需要连接外部电容。 系统内的V18脚不为其他组件供电,只为连接负载电容。 22.2.2.1 使能/禁止 置位/清除VUSBEN,可以使能/禁止3.3V LDO。 如果VBUS上的电压检测为低或不存在,即使已经使 能,LDO仍将停止。当VBUS提高到USB电源掉电电压以上时,将使能LDO参考电压和低电压检测。 当 VBUS提高到远远高于启动电压VLAUNCH时,将使能LDO模块(见图22-3)。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–393–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图22-3 USB上电/断电 相应地设置SLDOEN ,就可使能/禁止1.8V LDO。默认地,根据电源是否在VBUS上可用,可以自动 控制SLDOEN。SLDOAON控制该自动使能特性。如果VUSB由外部源提供,而不是通过集成的3.3V LDO, 记住VBUS上不是5 V,也不会自动使能1.8V LDO 。在这种情况下,VBUS必须连接到USB总线电源,或 清除SLDOAON位,置位SLDOEN。来自USB线的VBUS电源,在进入VBUS末端之前,应当直接通过二 极管。这可以阻止来自LDO输入的电流流入VBUS,使得MSP430容许1个仍有电气连接的暂停/无供电的 USB线。 22.2.2.2 通过VUSB,采用USB总线电源为MSP430的其他部分供电 3.3V LDO的输出可以通过DVCC,为整个MSP430供电。如果有这种必要,VUSB和DVCC应当在外 部连接起来。来自3.3V LDO的电源将作为DVCC(见图22-4)。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–394–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图22-4 VBUS为整个MSP430供电 采用这种连接,当VBUS提高到VLAUNCH以上时,MSP430允许自动为设备供电。 如果VCORE 上没有电 压,即设备没有供电(或在LPM5模式下),当VBUS提高到VLAUNCH以上时,3.3V和1.8V LDO都将自动打开。 注意如果DVCC是采用这种方式由VBUS驱动,且来自VBUS的电源可用,尝试使设备进入LPM5状态,将 导致设备立即重新供电。这是因为再次产生了上述的自动特性的条件(没有VCORE,但总线上电源可用 )。 产生的VCORE下降结果,将使系统立即再次上电。当DVCC由VUSB供电时,用户应当保证从VBUS分出的电 流保持在IDET之下。 22.2.2.3 通过VBS为系统其它组件供电 3.3-V LDO 有足够的电流能力,可以通过 VUSB 脚为整个 MSP430以及系统其它组件供电。如果设备 总是连接到 USB,可能不需要其它电源系统。如果反之 USB 设备采用电池供电,偶尔连接到 USB 上, 通过3.3V LDO 使用系统电源,将会减轻电池的消耗。另外,如果电池是可再充电的,可通过 VUSB 再次 充电。 22.2.2.4限流/过载保护 为了在短路状态期间保护收发器,3.3V LDO具有限流特性。 当LDO的输出值达到限流值IDET的短路/ 过载状态,这种状态将通过VUOVLIFG标志报告给软件。 如果发生这种状况,意味着USB操作可能由于供电不足变得不可靠。因此,软件可能希望停止USB操 作。如果OVLAOFF位置位,通过VUSBEN清零,自动停止USB操作。 过载状态下,VUSB和V18将低于它们的正常输出电压。 在DVCC由VUSB供电的情况下,只要短路/ 过载状态存在,将可能触发重复系统再启动。由于这个原因,检测到前一电源段上的过载之后,固件应当 避免再次使能USB,直到找出故障原因。 USB电源系统掉电电路由VBUS或DVCC中的较高电压供电。最后,用户应当保证从VBUS分出的电流 不超过IDET。 22.2.3 USB锁相环 (PLL) PLL提供了USB操作需要的低抖动、高精度时钟(见图22-5)。 图22-5 USB-PLL 模拟框图 通过UPCS位选择参考时钟源。这可以允许选择两个系统振荡时钟源中的一个作为参考时钟。为了产 生PLL更新时钟,UPQB 位控制的1个4位预分频计数器允许对参考时钟分频。UPMB 位在反馈路径上控 制分频,定义PLL的乘法因子(见公式11)。 fOUT = CLKSEL * (DIVM/DIVQ) 同时 (CLKSEL/DIVQ) = fUPD ≥ 1.5MHz (11) 这里: CLKSEL为选择的参考频率(XT1CLK 或 XT2CLK) DIVQ从表22-1得到。 DIVM表示UPMB字段值。 如果总线供电配置中使用USB操作,为了满足消耗电流不超过500uA的要求,禁止PLL是比较必要的。 UPLLEN位使能/禁止PLL。为了使能相位/频率鉴别器,PFDEN位必须置位。 失锁、信号丢失和范围超出 均被指示出且分别在中断标志OOLIFG、 LOSIFG、 OORIFG中标识化。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–395–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 注意: UCLKSEL位应当总是清零,这是默认操作。 所有其他组合保留,以后使用。 表22-1 USB-PLL预分频数 UPQB DIVQ 000 1 001 2 010 3 011 4 100 6 101 8 110 12 111 16 表22-2使用一般晶振产生48MHz的寄存器设置 CLKSEL(MHz) UPQB UPMB DIVQ DIVM CLKLOOP(MHz) UPLLCLK(MHz) ACCURACY(MHz) 1.5 000 011111 1 32 1.5 48 0 1.6 000 011101 1 30 1.6 48 0 1.7778 000 011010 1 27 1.7778 48 0 1.8432 000 011001 1 26 1.8432 47.92 -1570 1.8461 000 011001 1 26 1.8461 48 0 1.92 000 011000 1 25 1.92 48 0 2 000 010111 1 24 2 48 0 2.4 000 010011 1 20 2.4 48 0 2.6667 000 010001 1 18 2.6667 48 0 3 000 001111 1 16 3 48 0 3.2 001 011110 2 30 1.6 48 0 3.5556 001 011010 2 27 1.7778 48 0 3.579545 001 011010 2 27 1.79 48.32 6666 3.84 001 011001 2 25 1.92 48 0 4(1) 001 010111 2 24 2 48 0 4.1739 001 010110 2 23 2.086 48 0 4.1943 001 010110 2 23 2.097 48.23 4884 4.332 001 010101 2 22 2.166 47.652 -7250 4.3636 001 010101 2 22 2.1818 48 0 4.5 010 011111 3 32 1.5 48 0 4.8 001 010011 2 20 2.4 48 0 5.33(16/3) 001 010001 2 18 2.6667 48 0 5.76 010 011000 3 25 1.92 48 0 6 010 010111 3 24 2 48 0 6.4 011 011101 4 30 1.6 48 0 7.2 010 010011 3 20 2.4 48 0 7.68 011 011000 4 25 1.92 48 0 8(1) 010 010001 3 18 2.6667 48 0 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–396–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 9 010 001111 3 16 3 48 0 9.6 011 010011 4 20 2.4 48 0 10.66(32/3) 011 010001 4 18 2.667 48 0 12(1) 011 001111 4 16 3 48 0 12.8 101 011101 8 30 1.6 48 0 14.4 100 010011 6 20 2.4 48 0 16 100 010001 6 18 2.6667 48 0 16.9344 100 010000 6 17 2.8224 47.98 -400 16.94118 100 010000 6 17 2.8235 48 0 18 100 001111 6 16 3 48 0 19.2 101 010001 8 20 2.4 48 0 24(1) 101 001111 8 16 3 48 0 25.6 111 011101 16 30 1.6 48 0 32 111 010111 16 24 2.6667 48 0 (1)对于通过USB产品编程,工厂提供的BSL会自动检测该频率,详细情况请参考MSP430存储器编程用户指南。 22.2.3.1 更改分频值 选择需要的PLL频率时,为了避免产生虚假频率,必须同时更改UPQB (DIVQ)和UPMB (DIVM)值。 可 以对UPQB和UPMB进行计算,并写入到它们的缓冲器。当写入UPLLDIVB (UPQB)的高字节时,表示最终 更新UPQB和UPMB。 22.2.3.2 PLL 误差指示器 PLL可以检测3种类型的误差。如果4个连续更新周期频率校正在同一方向(如上/下)进行,则用失锁 (OOL)标明。如果16个连续更新周期频率校正在同一方向(如上/下)进行,则用信号丢失(LOS)标明。 如 果PLL不能锁定多于32个更新周期,则用超出范围(OOR)标明。如果产生错误,中断使能位使能时产生中 断,OOL、 LOS和OOR触发它们各自的中断标志(USBOOLIFG、 USBLOSIFG、USBOORIFG)。 22.2.3.3 PLL 启动顺序 为完成PLL的快速启动,推荐使用下面的顺序: 1. 使能VUSB和V18。 2. 等待2 ms,使外部电容充电,VBUS达到适当值。(在此期间,可以初始化USB寄存器和缓冲器)。 3. 激活PLL,采用需要的分频值。 4. 等待2 ms,检测PLL。如果PLL处于锁定状态,则准备就绪。 22.2.4 USB 控制器引擎 USB控制器引擎传输数据包,从USB主机传输到USB缓冲器,也将有效数据从缓冲器传输到USB 主机。控制器引擎有专门的、固定的输入端点0和输出端点0的缓冲器空间,输入端点0和输出端点0 默认作为控制传输的USB端点。 剩余的14个端点(7个输入和7个输出)可能由1个或跟过个分配给它们的USB缓冲器。所有的缓 冲器位于USB缓冲存储器。USB缓冲管理器和CUP与DMA都可以访问该多端存储器。 每个端点有一系列固定的说明如何使用端点的描述符寄存器(见图22-6)。通过设置描述符寄存器来 完成对每个端点的配置。这些数据结构位于USB缓冲存储器内,包含指向发送或接收的下一个存储缓冲器 的地址指针。 分配1个或2个数据缓冲器给高达64字节的端点,配置后不再需要软件介入。如果每个端点需要3个以 上缓冲器,在接收/发送过程中,软件必须改变运行状态的地址指针。 缓冲器空和满的同步通过使用确认标志完成。所有的事件由标志标明,当使能中断时,启动向量中断。 传输事件标识可以单独使能。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–397–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 图22-6数据缓冲器和描述符 22.2.4.1 USB串行接口引擎(SIE) SIE逻辑管理总线上接收和发送数据包的USB包协议要求。对于接收的数据包,SIE对包识别符字段(包 ID)进行解码,确定接收数据包的类型,保证包ID有效。对于要接收的令牌和数据包,SIE计算包循环冗余 检验(CRC) ,为了检验数据包在发送时没有被破坏,将该值与包含在数据包中的CRC进行比较。 对于要发送的令牌和数据包,SIE产生一个与数据包一起发送的CRC。对于要发送的数据包,SIE 也 产生同步字段(SYNC), 每个数据包的开始处为8位字段。另外,SIE为将要发送的所有数据包产生正确的包 ID。SIE另一个主要功能是接收或发送的数据包的全部串行到并行转换。 22.2.4.2 USB缓冲管理器(UBM) USB缓冲管理器提供了将SIE连接到USB端点缓冲器的控制逻辑。 UBM的主要功能之一就是对USB设备地址进行解码,确定主机是否正在对某USB设备寻址。 另外, 对端点地址字段和方向信号进行解码,确定主机正在寻址的具体USB端点。在USB传输方向和端点数的基 础上,UBM可以与一定的USB端点数据缓冲器之间对数据包进行写或读。 UBM可以使用每个输出端点配置寄存器的TOGGLE位,追踪成功完成的输出数据传输。 如果接收到 有效数据且数据包的ID与预想的包ID匹配,TOGGLE位翻转。同样,UBM也使用每个输入端点配置的 TOGGLE位追踪成功完成的输入数据传输。 如果完成有效数据发送,TOGGLE 位翻转。如果TOGGLE 位清零,数据包内的DATA0包ID将发送到主机。如果TOGGLE位置位,数据包内DATA1包ID将发送到主机。 关于USB传输的具体细节,请参阅22.3部分。 22.2.4.3 USB缓冲存储器 USB缓冲存储器包含所有端点和启动包的数据缓冲器。端点1-7的缓冲器是弹性的,USB缓冲配置寄 存器对它们进行定义,在USB缓冲存储器内也是(端点0由USB控制寄存器空间的寄存器定义)。开放存储 非常高效、弹性、非常有利,因为可以特定地使用这些端点。 USB缓冲管理器和CUP与DMA都可以访问该多端存储器。SIE 允许CPU/DMA 访问,但是保留优先 权。因此,如果由于SIE访问出现冲突,将使用等待状态延迟CPU/DMA访问。 当禁止USB模块时(USBEN = 0),缓冲存储器就像一般RAM一样。 当改变USBEN为的状态时(使能或 禁止USB模块), 不应当在4个时钟前和8个时钟后范围内访问USB缓冲存储器,如访问USB存储器一样再次 配置。 每个端点由6个配置寄存器(RAM为基础,从字的严格意义上来说,不是真正的寄存器)组成的块定 义。这些寄存器规定断电类型、缓冲器地址、缓冲器大小和数据包字节计数。它们定义了一个1904个字节 大小的端点缓冲空间。另外的24个字节分配到3个剩余的块:EP0_IN缓冲、EP0_OUT缓冲和SETUP包缓 冲(见表22-3)。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–398–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 存储器 表22-3USB缓冲存储器映射 缩写 访问类型 地址偏移 缓冲空间起始 STABUFF 读/写 0000h 可配置存储空间的1904个字节 ⋮ 读/写 ⋮ 缓冲空间结束 TOPBUFF 读/写 076Fh 读/写 0770h 输出端点0缓冲 USBOEP0BUF 读/写 ⋮ 读/写 0777h 读/写 0778h 输入端点0缓冲 USBIEP0BUF 读/写 ⋮ 读/写 077Fh 读/写 0780h 启动包块 USBSUBLK 读/写 ⋮ 读/写 0787h 软件可以根据需要的端点总数配置每个缓冲器。每个端点可能1个或2个缓冲。 与定义为USB RAM内存储入口的端点1-7的描述符寄存器不同,端点0由USB控制寄存器的4个寄存器 进行说明(2个输出,2个输入)。端点0没有基地址寄存器,因为这些地址是固定的。为了保持与端点n一 致,已经保存了位的位置。 22.2.4.4 USB精准时间戳 USB模块可以保存于某一USB事件相关的时间戳(见图22-7)。这对补偿软件的反应延时非常有用。时 间戳的值是建立在USBCLK驱动的USB模块内部定时器基础上的。 产生时间戳的事件可多达4个,可通过TSESEL位选择。当产生时间戳的事件发生时,USB定时器的 值传输到时间戳寄存器USBTSREG,因此事件的精确时刻被记录下来。触发源选项包括3个DMA通道的其 中之一,或软件驱动事件。USB定时器不能直接进行读访问。 另外,USB 定时器的值可用于产生周期性中断。因为USBCLK的频率可以不同于其他系统时钟,这 使周期性系统中断又多了另一个选项。UTSEL位选择对USB时钟的分频数。如果要触发中断向量,UTIE 必须置位。 帧数接收事件和伪起始帧时,时间戳寄存器设置为0。 TSGEN使能/禁止时间戳发生器。 图22-7 USB定时器和时间戳发生器 22.2.4.5 暂停/继续逻辑 USB 暂 停 / 继 续 逻 辑 检 测 USB 总 线 上 的 暂 停 和 继 续 信 号 。 这 些 事 件 的 标 志 分 别 为 SUSRIFG 和 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–399–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM RESRIFG,如果使能了中断(SUSRIE和RESRIE),它们将引起中断。 远程唤醒机制下,USB设备可使主机唤醒设备及继续设备操作。USBCTL寄存器的RWUP 位置位, 可以触发远程唤醒机制,更多信息见22.2.6 部分。 22.2.4.6复位逻辑 PUC复位USB模块逻辑。FRSTE=1时,如果USB主机触发总线上的USB复位,逻辑也将复位,USB复 位也将置位RSTRIFG标志。USB复位不能使USB缓冲存储器复位。 22.2.5 USB 向量中断 USB模块采用单一中断向量发生器寄存器,处理多个USB中断。 所有USB相关的中断源触发 USBVECINT向量,该向量包含一个可以识别中断源的6位向量值。每个中断源产生一个不同的可读偏移量 当没有中断挂起时,中断向量返回0。 读取中断向量寄存器将清除相应的中断标志,更新它的值。 优先级最高的中断返回值0002h,当读取中断向量寄存器时,优先级最低的中断返回003Eh。 对该寄存器 执行写操作,将清除所有的中断标志。 对于每个输入和输出端点,存在于USB传输中断指示使能。为了定义是否中断将标识化,软件可能使 该位置位。为了产生中断,必须置位相应的中断使能位和标志位。 表22-4 USB中断向量发生器 USBVECINT值 中断源 中断标志位 中断使能位 指示使能位 0000h 无中断 – – – 0002h USB-PWR drop ind. USBPWRCTL.VUOVLIFG USBPW RCTL.VUOVLIE – 0004h USB-PLL锁定错误 USBPLLIR.USBPLLOOLIFG USBPLLIR.USBPLLOOLIE – 0000h USB-PLL 信号错误 USBPLLIR.USBPLLOSIFG USBPLLIR.USBPLLLOSIE – 0002h USB-PLL范围错误 USBPLLIR.USBPLLOORIFG USBPLLIR.USBPLLOORIE – 0004h USB-PWR VBUS开 USBPWRCTL.VBONIFG USBPW RCTL.VBONIE – 0000h USB-PWR VBUS关 USBPWRCTL.VBOFFIFG USBPW RCTL.VBOFFIE – 0002h 保留 – – – 0004h USB时间戳事件 USBMAINTL.UTIFG USBMAINTL.UTIE – 0000h 0002h 输入端口0 输出端口0 USBIEPIFG.EP0 USBOEPIFG.EP0 USBIEPIE.EP0 USBOEPIE.EP0 USBIEPCNFG_0.USBIIE USBOEPCNFG_0.USBIIE 0004h RSTR中断 USBIFG.RSTRIFG USBIE.RSTRIE – 0000h SUSR中断 USBIFG.SUSRIFG USBIE.SUSRIE – 0002h RESR中断 USBIFG.RESRIFG USBIE.RESRIE – 0004h 保留 – – – 0000h 保留 – – – 0002h 输入端点1 USBIEPIFG.EP1 USBIEPIE.EP1 USBIEPCNF_1.USBIIE 0004h 输入端点2 USBIEPIFG.EP2 USBIEPIE.EP2 USBIEPCNF_2.USBIIE 0000h 输入端点3 USBIEPIFG.EP3 USBIEPIE.EP3 USBIEPCNF_3.USBIIE 0002h 输入端点4 USBIEPIFG.EP4 USBIEPIE.EP4 USBIEPCNF_4.USBIIE 0004h 输入端点5 USBIEPIFG.EP5 USBIEPIE.EP5 USBIEPCNF_5.USBIIE 0000h 输入端点6 USBIEPIFG.EP6 USBIEPIE.EP6 USBIEPCNF_6.USBIIE 0002h 输入端点7 USBIEPIFG.EP7 USBIEPIE.EP7 USBIEPCNF_7.USBIIE 0004h 输出端点1 USBOEPIFG.EP1 USBOEPIE.EP1 USBOEPCNF_1.USBIIE 0000h 输出端点2 USBOEPIFG.EP2 USBOEPIE.EP2 USBOEPCNF_2.USBIIE 0002h 输出端点3 USBOEPIFG.EP3 USBOEPIE.EP3 USBOEPCNF_3.USBIIE 0004h 输出端点4 USBOEPIFG.EP4 USBOEPIE.EP4 USBOEPCNF_4.USBIIE 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–400–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 0000h 输出端点5 USBOEPIFG.EP5 USBOEPIE.EP5 USBOEPCNF_5.USBIIE 0002h 输出端点6 USBOEPIFG.EP6 USBOEPIE.EP6 USBOEPCNF_6.USBIIE 0004h 输出端点7 USBOEPIFG.EP7 USBOEPIE.EP7 USBOEPCNF_7.USBIIE 22.2.6功耗 USB功能功耗比MSP430典型值大。由于大部分MSP430应用情况对电源比较敏感,保证连接到允许 VBUS供电的总线时只有重要的电源负载,这样MSP430 USB模块设计可以保护电池。 USB模块内消耗大部分电流的两个元件是接收器和PLL。 发送时接收器消耗大部分的功率,但是在不 活动状态下,也就是不发送数据时,接收器实际上只消耗非常小的功耗,就是IIDLE所表示的量。这部分电 流很小,以至于在由总线供电的应用中,在暂停模式期间保持接收器在活动状态而不出现问题。接收器在 获取发送需要的电流时,总是可以访问VBUS。 PLL消耗很大部分的电流。然而,当连接到主机时,它只需要保持活动状态即可,主机可以提供电源。 当禁止PLL时(例如,USB暂停期间),USBCLK 自动选择VLO作为时钟。 22.2.7 暂停和继续 所有的USB设备必须允许进入非活动状态,并可返回继续操作。 当设备暂停时,不允许来自USB的 VBUS电源消耗超出500500uA。暂停设备也必须监测总线上的继续事件。 主机通过在总线上创造一个多于3.0ms的常量空闲状态,初始化暂停状态。软件需要保证设备进入低 功耗暂停状态在10ms之内。USB 规范要求总线供电的暂停USB设备占用总线电流不能超出500 uA 。 22.2.7.1 进入暂停 当主机暂停USB设备时,将产生一个暂停中断(SUSRIFG)。从这点开始,软件有10 ms时间保证通过 VBUS从主机分出的电流不超过500uA。 对于大多数情况,使用集成的3.3 V LDO 。在这种情况下,应当采取下面的措施: • 通过清除UPLLEN (UPLLEN = 0),禁止PLL。 • 限制所有来自VBUS的电流,使来自VBUS的总电流等于500μA减去暂停电流ISUSPEND(参考芯片数据手 册)。 禁止PLL,消除了来自VBUS的电源的最大片上消耗。 在暂停期间,USBCLK自动将VLO(VLOCLK) 作为时钟源,这使得暂停时USB模块可以检测继续信号。 最好同时保证RESRIE位也置位,当主机使USB 设备继续时,将产生中断。如果需要,为了节省系统功耗,也可禁止高频晶振,但是因为它由DVCC供电, 并不会影响来自VBUS的电源。 22.2.7.2 进入继续模式 当USB设备处于暂停状态时,暂停/继续逻辑将检测到主机端上包括复位信号的任何非空闲信号,设备 将继续进行操作。RESRIFG将置位,这将产生一个USB中断。中断服务程序可用于继续USB操作。 22.3 USB传输 USB模块支持控制、批量和中断数据传输类型。按照USB规范,将端点0保留用于控制端点且为双向。 除了控制端点,USB模块可以支持多达7个输入端点和7个输出端点。这些额外的端点可以配置作为批量或 中断端点。软件处理所有的控制:批量和中断传输。 22.3.1控制传输 控制传输用于主机与USB设备间的配置、命令和状态通信。到USB设备的控制传输使用输入端点0和 输出端点0。控制传输的3中类型为控制写、没有数据阶段的控制写和控制读。 注意在将USB设备连接到 USB前必须初始化控制端点。 22.3.1.1 控制写传输 主机使用控制写传输向USB设备写数据。没有数据阶段传输的控制写传输由启动阶段传输和输入状态 阶段传输组成。对于这种类型的传输,写入到USB设备的数据包含在启动阶段传输数据包内的两个字节值 字段内。 写传输的阶段有: 启动阶段传输: 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–401–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 1. 通过适当配置USB端点配置模块,初始化输入端点0和输出端点0。 这需要进行以下设置:使能端点中断(USBIIE = 1)和使能端点(UBME = 1)。输入端点0和输出端点0的NAK 位必须清零。 2. 主机发送启动令牌包,地址到输出端点0的启动数据包紧随其后。如果无误地接收到数据,UBM将把数 据写入启动缓冲器,将USB状态寄存器内的启动阶段传输位置为1,向主机返回一个ACK握手信号,启动 阶段传输中断。 请注意:只要启动传输位(SETUP)置位,不论端点0的NAK或STALL位值为多少,UBM将 为任何数据阶段或状态阶段传输返回一个NAK握手信号。 3.软件响应中断,从缓冲器内读取启动数据包,对命令进行译码。对于不支持或无效的命令,在清除启动 阶段传输位之前,软件应当将输出端点0输入端点0、配置寄存器的STALL位置位。这将使设备在数据阶段 或状态阶段传输时返回一个STALL握手信号。对于控制写传输来说,主机用作第一次输出数据包的数据包 ID将会是DATA1包ID,TOGGLE位必须匹配。 数据阶段传输: 1.主机发送一个OUT令牌包,地址为输出端点0的数据包紧随其后。如果无误地接收到数据包,UBM将把 数据写入输出端点缓冲器(USBOEP0BUF),更新数据计数值,翻转TOGGLE位,置位NAK位,向主机返回 ACK握手信号,置位输出端点中断0标志(OEPIFG0)。 2. 软件响应中断,从输出端点缓冲器内读取数据包。为了读取数据包,软件首先需要获得USBOEPBCNT_0 寄存器内的数据计数值。读取数据包以后,为了允许接收来自主机的下一个数据包,软件应当清除NAK位。 3. 如果接收数据包时NAK位置位,UBM将简单向主机返回一个NAK握手信号。 如果接收数据包时STALL 位置位,UBM将简单向主机返回一个STALL握手信号。如果接收数据包时产生CRC或位填充错误,将没有 握手信号返回到主机。 状态阶段传输: 1. 对输入端点0,为使能向主机发送数据包,软件置位TOGGLE位,清除NAK位。注意对于状态阶段传输, 将向逐句发送一个带DATA1 ID的空数据包。 2. 主机发送一个地址为输入端点0的IN令牌包。接收到IN令牌包以后,UBM向主机发送空数据包。 如果 主机无误地接收到数据包,将返回ACK握手信号。UBM 然后将翻转TOGGLE位,置位NAK位。 3. 如果当接收到IN令牌包时,NAK位置位,UBM将简单向主机返回一个NAK握手信号。如果当接收到IN 令牌包时,STALL 位置位,UBM将简单向主机返回一个STALL 握手信号。如果没有接收到主机发送的握 手信号,UBM将再次发送同一数据包。 22.3.1.2 没有数据阶段传输的控制写传输 主机使用控制写传输向USB设备写数据。没有数据阶段传输的控制写传输由启动阶段传输和输入状态 阶段传输组成。对于这种类型的传输,写入到USB设备的数据包含在启动阶段传输数据包内的两个字节值 字段内。 没有数据阶段传输的控制写传输的阶段有: 启动阶段传输: 1. 通过适当配置USB端点配置模块,初始化输入端点0和输出端点0。 这需要进行以下设置:使能端点中断(USBIIE = 1)和使能端点(UBME = 1)。输入端点0和输出端点0的NAK 位必须清零。 2. 主机发送启动令牌包,地址到输出端点0的启动数据包紧随其后。如果无误地接收到数据,UBM将把数 据写入启动缓冲器,将USB状态寄存器内的启动阶段传输位置为1,向主机返回一个ACK握手信号,启动 阶段传输中断。 请注意:只要启动传输位(SETUP)置位,不论端点0的NAK或STALL位值为多少,UBM将 为任何数据阶段或状态阶段传输返回一个NAK握手信号。 3.软件响应中断,从缓冲器内读取启动数据包,对命令进行译码。对于不支持或无效的命令,在清除启动 阶段传输位之前,软件应当将输出端点0输入端点0、配置寄存器的STALL位置位。这将使设备在数据阶段 或状态阶段传输时返回一个STALL握手信号。读取数据包及对命令解码以后,软件应当清除中断,这将自 动清除启动阶段传输状态位。软件也应当置位输入端点0配置寄存器内的TOGGLE位。 对于控制读取传输 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–402–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 来说,主机用作第一次输入数据包的数据包ID将会是DATA1包ID。 • 状态阶段传输: 1. 对输出端点0,为使能向主机发送数据包,软件置位TOGGLE位,清除NAK位。注意对于状态阶段传输, 将向逐句发送一个带DATA1 ID的空数据包。 2. 主机发送一个地址为输入端点0的IN令牌包。接收到IN令牌包以后,UBM向主机发送空数据包。 如果 主机无误地接收到数据包,将返回ACK握手信号。UBM 然后将翻转TOGGLE位,置位NAK位,置位端点 中断标志。 3. 如果当接收到IN令牌包时,NAK位置位,UBM将简单向主机返回一个NAK握手信号。如果当接收到IN 令牌包时,STALL 位置位,UBM将简单向主机返回一个STALL 握手信号。如果没有接收到主机发送的握 手信号,UBM将再次发送同一数据包。 22.3.1.3 控制读传输 主机使用使用读控制传输,从USB设备读取数据。控制读传输由启动阶段传输、至少一个输入数据阶 段传输和一个输入状态阶段传输组成。 控制读传输的阶段传输为: • 启动阶段传输: 1. 通过适当配置USB端点配置模块,初始化输入端点0和输出端点0。这需要进行以下设置:使能端点中 断(USBIIE = 1)和使能端点(UBME = 1)。输入端点0和输出端点0的NAK位必须清零。 2. 主机发送启动令牌包,地址到输出端点0的启动数据包紧随其后。如果无误地接收到数据,UBM将把数 据写入启动缓冲器,将USB状态寄存器内的启动阶段传输位置为1,向主机返回一个ACK握手信号,启动 阶段传输中断。 请注意:只要启动传输位(SETUP)置位,不论端点0的NAK或STALL位值为多少,UBM将 为任何数据阶段或状态阶段传输返回一个NAK握手信号。 3. 软件响应中断,从缓冲器内读取启动数据包,对命令进行译码。对于不支持或无效的命令,在清除启动 阶段传输位之前,软件应当将输出端点0输入端点0、配置寄存器的STALL位置位。这将使设备在数据阶段 或状态阶段传输时返回一个STALL握手信号。读取数据包及对命令解码以后,软件应当清除中断,这将自 动清除启动阶段传输状态位。软件也应当置位输入端点0配置寄存器内的TOGGLE位。 对于控制读取传输 来说,主机用作第一次输入数据包的数据包ID将会是DATA1包ID。 数据阶段传输: 1. 通过软件将发送到主机的数据包写入输入端点0缓冲器。为了使能将数据发送到主机,软件也更新数据 计数值,然后清除输入端点0的NAK位。 2. 主机发送一个地址为输入端点0的IN令牌包。 接收到IN令牌后,UBM将数据包传输到主机。 如果主机 无误地接收到数据包,将返回ACK握手信号。UBM将置位NAK位,置位端点中断标志。 3.软件响应中断,准备向主机发送下一个数据包。 4.如果当接收到IN令牌包时,NAK位置位,UBM将简单地返回一个NAK握手信号到主机。如果当接收到IN 令牌包时STALL置位,UBM将简单返回一个STALL握手信号到主机。如果没有接收到来自主机的握手信号 包,UBM将准备再次发送同一数据包。 5. 软件继续发送数据包直到将所有数据发送到主机。 状态阶段传输: 1. 对输出端点0,为使能向主机发送数据包,软件置位TOGGLE位,清除NAK位。 2. 主机发送一个地址为输出端点0的OUT令牌包。如果无误地接收到数据包,UBM将更新数据计数值,翻 转TOGGLE位,置位NAK位,向主机返回一个ACK握手信号,置位端点中断标志。 3. 软件响应中断。如果成功完成状态阶段传输,软件应当清除中断和NAK位。 4. 如果当接收到输入数据包时NAK置位,UBM将简单地向主机返回一个NAK握手信号。如果当接收到输 入数据包时STALL置位,UBM将简单地向主机返回一个STALL握手信号。如果接收到数据包时产生CRC 或位填充错误,将没有握手信号返回到主机。 22.3.1.4 控制读传输 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–403–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 主机使用使用读控制传输,从USB设备读取数据。控制读传输由启动阶段传输、至少一个输入数据阶 段传输和一个输入状态阶段传输组成。 控制读传输的阶段传输为: • 启动阶段传输: 1. 通过适当配置USB端点配置模块,初始化输入端点0和输出端点0。这需要进行以下设置:使能端点中 断(USBIIE = 1)和使能端点(UBME = 1)。输入端点0和输出端点0的NAK位必须清零。 2. 主机发送启动令牌包,地址到输出端点0的启动数据包紧随其后。如果无误地接收到数据,UBM将把数 据写入启动缓冲器,将USB状态寄存器内的启动阶段传输位置为1,向主机返回一个ACK握手信号,启动 阶段传输中断。 请注意:只要启动传输位(SETUP)置位,不论端点0的NAK或STALL位值为多少,UBM将 为任何数据阶段或状态阶段传输返回一个NAK握手信号。 3. 软件响应中断,从缓冲器内读取启动数据包,对命令进行译码。对于不支持或无效的命令,在清除启动 阶段传输位之前,软件应当将输出端点0输入端点0、配置寄存器的STALL位置位。这将使设备在数据阶段 或状态阶段传输时返回一个STALL握手信号。读取数据包及对命令解码以后,软件应当清除中断,这将自 动清除启动阶段传输状态位。软件也应当置位输入端点0配置寄存器内的TOGGLE位。 对于控制读取传输 来说,主机用作第一次输入数据包的数据包ID将会是DATA1包ID。 数据阶段传输: 1. 通过软件将发送到主机的数据包写入输入端点0缓冲器。为了使能将数据发送到主机,软件也更新数据 计数值,然后清除输入端点0的NAK位。 2. 主机发送一个地址为输入端点0的IN令牌包。 接收到IN令牌后,UBM将数据包传输到主机。 如果主机 无误地接收到数据包,将返回ACK握手信号。UBM将置位NAK位,置位端点中断标志。 3.软件响应中断,准备向主机发送下一个数据包。 4.如果当接收到IN令牌包时,NAK位置位,UBM将简单地返回一个NAK握手信号到主机。如果当接收到IN 令牌包时STALL置位,UBM将简单返回一个STALL握手信号到主机。如果没有接收到来自主机的握手信号 包,UBM将准备再次发送同一数据包。 5. 软件继续发送数据包直到将所有数据发送到主机。 • 状态阶段传输: 1. 对输出端点0,为使能向主机发送数据包,软件置位TOGGLE位,清除NAK位。 2. 主机发送一个地址为输出端点0的OUT令牌包。如果无误地接收到数据包,UBM将更新数据计数值,翻 转TOGGLE位,置位NAK位,向主机返回一个ACK握手信号,置位端点中断标志。 3. 软件响应中断。如果成功完成状态阶段传输,软件应当清除中断和NAK位。 4. 如果当接收到输入数据包时NAK置位,UBM将简单地向主机返回一个NAK握手信号。如果当接收到输 入数据包时STALL置位,UBM将简单地向主机返回一个STALL握手信号。如果接收到数据包时产生CRC 或位填充错误,将没有握手信号返回到主机。 22.3.2中断传输 USB模块支持主机传入及传出两个方向的中断数据传输。如果设备具有一定的响应周期且需要发送或 接收较小数量的数据,选择中断传输类型最适合。输入端点1-7和输出端点1-7可配置为中断端点。 22.3.2.1中断输出传输 中断输出传输步骤如下: 1. 通过软件对适当的端点配置块进行编程,将输出端点的其中之一初始化为批量输出端点。这需要进行以 下设置:编程配置缓冲器大小和缓冲器基地址、选择缓冲器模式、使能端点中断、初始化翻转位、使能端 点及置位NAK位。 2. 主机发送输出令牌包,定位到输出端点的数据包紧随该令牌包。如果无误的接收到数据,UBM将把数 据写入端点缓冲器,更新数据计数值,翻转翻转位,置位NAK位,返回ACK握手信号到主机且置位端点中 断标志。 3. 软件响应中断,从缓冲器读取数据。为了读取数据包,软件首先需要得到数据计数值。读取数据包后, 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–404–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 为了允许接收下一个来自主机的数据包,软件应当清除中断及NAK位。 4. 如果接收数据包时NAK置位,UBM将简单地返回一个NAK握手信号给主机。如果接收数据包时STALL 置位,UBM将简单地返回一个STALL 握手信号给主机。 如果接收数据包时产生CRC或位填充错误,将没 有握手信号返回到主机。 在双缓冲模式下,UBM在以翻转位值为基础的X和Y缓冲器之间选择。 如果翻转位为0,UBM将会从 X缓冲器读取数据包。如果翻转位为1,UBM将会从Y缓冲器读取数据包。当接收到数据包时,软件通过读 取翻转值可以确定哪个缓冲器包含数据包。然而,当使用双缓冲模式时,软件对端点中断作出反映前,接 收到数据包并将其写入X和Y缓冲器的可能性是存在的。在这种情况下,简单地使用翻转位来确定哪个缓冲 器包含数据包是行不通的。所以在双缓冲模式下,软件应当读取X缓冲NAK位、Y缓冲NAK位和翻转位确 定缓冲器的状态。 22.3.2.2 中断输入传输 中断输入传输的步骤如下: 1.通过软件对适当的端点配置块进行编程,将输入端点的其中之一初始化为输入中断端点。这需要进行以 下设置:编程配置缓冲器大小和缓冲器基地址、选择缓冲器模式、使能端点中断、初始化翻转位、使能端 点及置位NAK位。 2. 通过软件将发送到主机的数据包写入缓冲器。为了使能发送到主机的数据包,软件也更新了数据计数值, 清除了NAK位。 3. 主机发送一个地址为输入端点的IN令牌包。接收到IN令牌包以后,UBM发送数据包到主机。 如果数据 包被主机无误地接收,将返回一个ACK握手信号。UBM然后对翻转位进行翻转,置位NAK位,置位端点中 断标志。 4. 软件响应中断并准备加过下一个数据包发送到主机。 5. 如果接收IN令牌包时NAK置位,UBM将简单地返回一个NAK握手信号给主机。如果接收数据包时STALL 置位,UBM将简单地返回一个STALL 握手信号给主机。如果没有接收到主机发送的握手信号包,UBM将 准备再次发送同一个数据包。 在双缓冲模式下,UBM在以翻转位值为基础的X和Y缓冲器之间选择。 如果翻转位为0,UBM将会从 X缓冲器读取数据包。如果翻转位为1,UBM将会从Y缓冲器读取数据包。 22.3.3 批量传输 USB模块支持主机传入及传出两个方向的批量数据传输。如果设备没有适当带宽却需要发送或接收大 量数据,选择批量传输类型最适合。输入端点1-7和输出端点1-7都可以配置为批量端点。 22.3.3.1批量输出传输 批量输出传输步骤为: 1. 通过软件对适当的端点配置块进行编程,将输出端点的其中之一初始化为批量输出端点。这需要进行以 下设置:编程配置缓冲器大小和缓冲器基地址、选择缓冲器模式、使能端点中断、初始化翻转位、使能端 点及置位NAK位。 2.主机发送输出令牌包,定位到输出端点的数据包紧随该令牌包。如果无误的接收到数据,UBM将把数据 写入端点缓冲器,更新数据计数值,翻转翻转位,置位NAK位,返回ACK握手信号到主机且置位端点中断 标志。 3. 软件响应中断,从缓冲器读取数据。为了读取数据包,软件首先需要得到数据计数值。读取数据包后, 为了允许接收下一个来自主机的数据包,软件应当清除中断及NAK位。 4. 如果接收数据包时NAK置位,UBM将简单地返回一个NAK握手信号给主机。如果接收数据包时STALL 置位,UBM将简单地返回一个STALL 握手信号给主机。 如果接收数据包时产生CRC或位填充错误,将没 有握手信号返回到主机。 在双缓冲模式下,UBM在以翻转位值为基础的X和Y缓冲器之间选择。 如果翻转位为0,UBM将会从 X缓冲器读取数据包。如果翻转位为1,UBM将会从Y缓冲器读取数据包。当接收到数据包时,软件通过读 取翻转值可以确定哪个缓冲器包含数据包。然而,当使用双缓冲模式时,软件对端点中断作出反映前,接 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–405–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 收到数据包并将其写入X和Y缓冲器的可能性是存在的。在这种情况下,简单地使用翻转位来确定哪个缓冲 器包含数据包是行不通的。所以在双缓冲模式下,软件应当读取X缓冲NAK位、Y缓冲NAK位和翻转位确 定缓冲器的状态。 22.3.3.2批量输入传输 批量输入传输步骤为: 1. 通过软件对适当的端点配置块进行编程,将输入端点的其中之一初始化为批量输入端点。这需要进行以 下设置:编程配置缓冲器大小和缓冲器基地址、选择缓冲器模式、使能端点中断、初始化翻转位、使能端 点及置位NAK位。 2. 通过软件将发送到主机的数据包写入缓冲器。为了使能发送到主机的数据包,软件也更新了数据计数值, 清除了NAK位。 3. 主机发送一个地址为输入端点的IN令牌包。接收到IN令牌包以后,UBM发送数据包到主机。 如果数据 包被主机无误地接收,将返回一个ACK握手信号。UBM然后对翻转位进行翻转,置位NAK位,置位端点中 断标志。 4. 软件响应中断且准备将下一数据包发送到主机。 5. 如果接收到IN令牌包时NAK位置位,UBM 将简单地返回一个NAK握手信号给主机。如果接收到IN令牌 包时STALL位置位,UBM 将简单地返回一个STALL握手信号给主机。如果没有接收到主机的握手信号包, UBM将再次传输同一个数据包。 在双缓冲模式下,UBM在以翻转位值为基础的X和Y缓冲器之间选择。 如果翻转位为0,UBM将会从 X缓冲器读取数据包。如果翻转位为1,UBM将会从Y缓冲器读取数据包。 22.4 寄存器 USB 寄存器空间可分成配置寄存器、控制寄存器和USB缓冲存储器。配置和控制寄存器为分布在外 围存储器内的物理寄存器,缓冲寄存器则位于RAM内。这些寄存器组的基地址请参考芯片的数据手册。 只有在使能USB模块时,可以对USB控制寄存器进行写操作。当禁止USB模块时,它不再使用RAM缓冲存 储器。该存储器作为2KB的RAM块进行操作,可以被CPU和DMA没有任何限制地使用。 22.4.1 USB配置寄存器 配置寄存器控制需要US连接的硬件功能,包括PHY、 PL和LDO。使用USBKEYPID寄存器,可以控 制允许或不允许访问配置寄存器。该寄存器可作为密码。当写入恰当的值9628h时,解除对配置寄存器的 锁定且使能访问。当寄存器值保持不变时,写入任何其他值将禁止访问。配置完成以后,要将其锁定。配 置寄存器如表22-5所列。所有的地址以偏移量形式表示,基地址可在具体芯片的数据手册中找到。所有的 寄存器可以字节和字方式访问。 寄存器 表22-5 USB配置寄存器 缩写 寄存器类型 地址偏移 初始状态 USB控制器密钥和编码寄存器 USB控制器配置寄存器 USB-PHY控制寄存器 USB-PW R控制寄存器 USB-PLL控制寄存器 USB-PLL分频缓冲寄存器 USB-PLL中断寄存器 USBKEYPID USBCNF USBPHYCTL USBPW RCTL USBPLLCTL USBPLLDIVB USBPLLIR 读/写 00h 读/写 02h 读/写 04h 读/写 08h 读/写 10h 读/写 12h 读/写 14h 0000h 0000h 0000h 1850h 0000h 0000h 0000h USBKEYPID, USB密钥寄存器 15 14 13 12 11 10 USBKEYPID(读值为A5h,写入时必须为96h) rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 7 6 5 4 3 2 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 9 8 rw-0 rw-0 1 0 第–406–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM USBKEYPID rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 USBKEYPID Bits 15-0 密钥寄存器。为了将其识别为有效密钥,写入值必须为9628h。 该位将配置寄存器“解除锁定”。如果 写入其他值,寄存器将被“锁定”。如果寄存器未锁定,读取时返回A528h。 USBCNF, USB模块配置寄存器 15 14 13 12 11 10 9 8 保留 r0 r0 r0 r0 r0 r0 r0 r0 7 6 5 4 3 2 1 0 FNTEN BLKRDY PUR_IN PUR_EN USB_EN r0 保留 FNTEN r0 Bits15-5 Bit 4 r0 rw-0 rw-0 r rw-0 rw-0 只有当USBEN = 1时可修改。 保留。读取值返回0。 DMA传输时的帧数接收触发使能。Frame number receive trigger enable for DMA transfers 0 帧数接收触发受阻。 BLKRDY Bit 3 1 帧数接收触发通过DMA门控。 批量传输准备,作为DMA传输信号 0 禁止DMA触发 1 USB总线接口能接手新的写传输时,就可以触发DMA PUR_IN Bit 2 PUR输入值。该位反映PUR上的输入值。该位可能用作开始USB-BSL编程的指示。PUR输入逻辑部分 PUR_EN 由VUSB供电。当VUSB为0时,PUR_IN返回0。 Bit 1 PUR管脚使能 0 PUR脚处于高阻状态 1 PUR脚驱动为高电平 USB_EN Bit 0 USB模块使能 0 禁止USB模块 1 使能USB模块 USBPHYCTL, USB-PHY 控制寄存器 15 14 13 12 11 保留 10 9 8 保留 保留 r0 r0 r0 r0 r0 r0 rw-0 rw-0 7 6 5 4 3 2 1 0 PUSEL 保留 PUDIR 保留 PUIN1 PUIN0 PUOUT1 PUOUT0 rw-0 r rw-0 rw-0 r r 只有当USBEN = 1时可修改。 保留 Bits15-10 保留。读取值返回0。 rw-0 rw-0 保留 PUSEL Bits 9-8 Bit 7 保留。写入时必须总是0。 USB端口功能选择。该位选择PU0/DP和PU1/DM管脚功能。 0 选择PU0和PU1功能 (通用IO) 保留 PUDIR Bit6 Bit 5 1 选择DP和DM功能(USB终端) 保留。 USB端口方向。该位控制PU0和PU1的方向。该位只有当PUSEL = 0时有效。 0 禁止PU0和PU1输出驱动。 1 使能PU0和PU1输出驱动。 保留 Bits4 保留。写入时必须总是0。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–407–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM PUIN1 Bit 3 PU1 输入数据。该位反映PU1终端的逻辑值。 PUIN0 Bit 2 PU0 输入数据。该位反映PU0终端的逻辑值。 PUOUT1 Bit 1 PU1 输出数据。当PU1配置成端口功能及PUDIR=1时,该位定义PU1的值。 PUOUT0 Bit 0 PU0输出数据。 当PU0配置成端口功能及PUDIR=1时,该位定义PU0的值。 USBPWRCTL, USB电源控制寄存器 15 14 13 12 11 10 9 保留 SLDOEN VUSBEN VBOFFIE VBONIE 8 VUOVLIE r0 r0 r0 rw-1 rw-1 rw-0 rw-0 rw-0 7 保留 r0 保留 SLDOEN VUSBEN VBOFFIE VBONIE VUOVLIE 保留 SLDOAON OVLAOFF USBDETEN USBBGVBV VBOFFIFG VBONIFG 6 SLDOAON 5 OVLAOFF 4 USBDETEN 3 保留 2 VBOFFIFG 1 VBONIFG 0 VUOVLIFG rw-1 rw-0 rw-1 r 只有当USBEN = 1时可修改。 Bits15-13 保留。读取值返回0。 rw-0 rw-0 rw-0 Bit 12 1.8 V (第二个) LDO使能。当该位置位时,使能LDO。 Bit 11 3.3-V LDO使能。当该位置位时,使能LDO。 Bit 10 VBUS "要关闭"中断使能。 0 禁止中断 1 使能中断 Bit 9 VBUS "要打开" 中断使能 0 禁止中断 1 使能中断 Bit 8 VUSB 超载指示中断使能 0 禁止中断 1 使能中断 Bit7 保留。读取值返回0。 Bit 6 1.8-V LDO 自动打开时能 0 LDO 需要通过SLDOEN手动打开 1 "VBUS要打开" 转变置位SLDOEN Bit 5 LDO超载自动关闭使能 0 3.3-V LDO超载时,LDO自动进入限流模式并保持直到信号停止 1 超载指示清除VUSBEN位 Bit 4 VBUS开/关使能位 0 USB 模块将不检测USB-PWR VBUS开关 1 USB 模块将检测USB-PWR VBUS开关 Bit 3 VBUS有效 0 VBUS无效 1 VBUS 有效且在允许范围内 Bit 2 VBUS "要关闭"中断标志。 该位表明VBUS低于启动电压。当读取USB中断寄存器相应的向量或中断 向量寄存器内写入值时,该位自动清零。 0 无中断挂起 1 中断挂起 Bit 1 VBUS "要打开"中断标志。该位表明VBUS增大到启动电压以上。 当读取USB中断向量寄存器的相应 向量或中断向量寄存器内写入值时,该位自动清零。 0 无中断挂起 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–408–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 1 中断挂起 VUOVLIFG Bit 0 VUSB超载中断标志。该位表明3.3V LDO进入到超载情况。 0 无中断挂起 1 中断挂起 USBPLLCTL, USB-PLL控制寄存器 15 14 13 12 11 10 保留 UPCS 保留 9 UPFDEN 8 UPLLEN r0 r0 r0 rw-0 r0 r0 7 6 5 4 3 2 UCLKSEL 保留 rw-0 rw-0 1 0 rw-0 rw-0 r0 r0 r0 r0 r0 只有当USBEN = 1时可修改。 保留 Bits15-11 保留。读取值返回0。 UPCS Bit 12 PLL时钟选择 0 选择XT1CLK作为参考时钟 1 选择XT2CLK作为参考时钟 保留 Bits11-10 保留。读取值返回0。 UPFDEN Bit 9 相位鉴频器(PFD)使能 0 禁止PFD 1 使能PFD UPLLEN Bit 8 PLL使能 0 禁止PLL 1 使能PLL UCLKSEL Bits 7-6 USB模块时钟选择。必须总是写入00。 UCLKSEL值 USB模块选择时钟 00 PLLCLK (默认) 01 保留 10 保留 11 保留 保留 Bits5-0 保留。读取值返回0。 USBPLLDIVB, USB-PLL时钟分频缓冲寄存器 15 14 13 12 11 10 9 保留 UPQB r0 r0 r0 r0 r0 rw-0 rw-0 7 6 5 4 3 2 1 保留 UPMB r0 r0 rw-0 rw-0 rw-0 rw-0 rw-0 只有当USBEN = 1时可修改。 保留 Bits15-11 保留。读取值返回0。 UPQB Bits 10-8 PLL预分频缓冲寄存器。这些位选择预分频值。该寄存器值写入后立即传送到UPQB。 UPQB值 预分频比率 r0 8 rw-0 0 rw-0 000 fUPD = fREF 001 fUPD = fREF / 2 010 011 fUPD = fREF / 3 fUPD = fREF / 4 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–409–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 100 fUPD = fREF / 6 101 fUPD = fREF / 8 110 fUPD = fREF / 12 111 fUPD = fREF / 16 保留 Bits7-6 保留。读取值返回0。 UPMB Bits 5-0 USB PLL反馈分频缓冲寄存器。这些位选择反馈分频器的值。当UPQB写入数据时,该寄存器的值自 动传送到UPMB 。 UPMB值 倍数因子 000000 反馈分频率: 1 000001 反馈分频率: 2 ⋮ ⋮ 111111 USBPLLIR, USB-PLL中断寄存器 反馈分频率: 64 15 14 13 12 11 10 9 8 保留 USBOORIE USBLOSIE USBOOLIE r0 r0 r0 r0 r0 rw-0 rw-0 rw-0 7 6 5 4 3 2 1 0 保留 USBOORIFG USBLOSIFG USBOOLIFG r0 r0 r0 r0 r0 只有当USBEN = 1时可修改。 保留 Bits15-11 保留。读取值返回0。 rw-0 rw-0 rw-0 USBOORIE Bit 10 PLL超出范围中断使能 0 禁止中断 1 是能中断 USBLOSIE Bit 9 PLL信号损失中断使能 0 禁止中断 1 是能中断 USBOOLIE Bit 8 PLL失锁中断使能 0 禁止中断 1 是能中断 保留 Bits7-13 保留。读取值返回0。 USBOORIFG Bit 2 PLL超出范围中断标志 0无中断挂起 1中断挂起 USBLOSIFG Bit 1 PLL信号损失中断标志 0 无中断挂起 1 中断挂起 USBOOLIFG Bit 0 PL失锁中断标志 0 无中断挂起 1 中断挂起 22.4.2 USB控制寄存器 控制寄存器影响对任何USB连接很重要的内核USB操作。这包括端点0、中断、总线地址、帧及时间戳。 操作寄存器内存在端点0以外的控制。与操作寄存器不同,控制寄存器实际上是物理寄存器,操作寄存器存 在于RAM,也可重新分配作通用。控制寄存器列在表22-6中。所有的地址以偏移量方式表达,基地址可以 在具体芯片的数据手册中找到。所有的寄存器可以字节和字方式访问。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–410–页 共 423 页 寄存器 端点0配置 中断 时间戳 基本USB控制 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 表22-6 USB控制寄存器 缩写 寄存器 地址 初始状态 类型 偏移 输入端点0:配置 输入端点0:字节计数 输出端点0:配置 输出端点0:字节计数 输入端点中断使能 输出端点中断使能 输入端点中断标志 输出端点中断标志 USBIEPCNF_0 USBIEPCNT_0 SBOEPCNF_0 USBOEPCNT_0 USBIEPIE USBOEPIE USBIEPIFG USBOEPIFG 读/写 00h 00h 读/写 01h 80h 读/写 02h 00h 读/写 03h 00h 读/写 0Eh 00h 读/写 0Fh 00h 读/写 10h 00h 读/写 11h 00h 中断向量寄存器 时间戳保持寄存器 时间戳寄存器 USB帧数 USB控制寄存器 USB中断使能寄存器 USB中断标志寄存器 功能地址寄存器 USBVECINT USBMAINT USBTSREG USBFN USBCTL USBIE USBIFG USBFUNADR 读/写 12h 读/写 16h 读/写 18h 读/写 1Ah 读/写 1Ch 读/写 1Dh 读/写 1Eh 读/写 1Fh 00h 0000h 0000h 0000h 0000h 00h 00h 00h USBIEPCNF_0 USB输入端点0配置寄存器 7 6 5 4 UBME 保留 TOGGLE 保留 3 STALL 2 USBIIE 1 0 保留 rw-0 r0 rw-0 r0 rw-0 rw-0 只有当USBEN = 1时可修改。 UBME Bit 7 UBM输入端点0使能 r0 r0 0 UBM不能使用该端点 1 UBM可以使用该端点 保留 TOGGLE 保留 Bit6 Bit 5 Bit4 保留。读取值返回0。 翻转位。由于配置端点不需要翻转,读取返回0。 保留。读取值返回0。 STALL Bit 3 USB 安装信号。当置位时,对任何发送到端点0的传输,硬件自动返回一个安装握手信号到主机。 下 一次启动传输将自动清除安装位。 USBIIE Bit 2 0 表明没有安装 1 表明有安装 USB传输中断标示使能。为了定义中断是否通常标识化,软件可能将该位置位。为了产生中断,相应 的中断标志必须置位(OEPIE)。 0 相应的中断标志将不置位 1 相应的中断标志将置位 保留 Bits1-0 保留。读取值返回0。 USBIEPBCNT_0 USB输入端点0字节计数寄存器 7 6 5 4 3 2 1 0 NAK 保留 CNT rw-0 r0 r0 r0 rw-0 rw-0 rw-0 rw-0 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–411–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM NAK Bit 7 只有当USBEN = 1时可修改。 无应答状态位。 为表明 EP-0输入缓冲器为空,成功由端点0传输到USB的UBM将该位置位。当该位 置位时,随后所有来自端点0的传输将产生一个与USB主机之间的握手信号。为了再次使能这个端点发 送另一个数据包到主机,该位必须由软件清零。 0 缓冲器内包含对主机有效的数据包。 1 缓冲器为空(随后发到主机请求接收到NAK信号)。 保留 Bits6-4 保留。读取值返回0。 CNT Bits 3-0 字节计数。当将新数据包写入缓冲器时,软件将置位EP-0缓冲器数据计数值。该4位数值包含数据包内 的字节数。 0000b到1000b,对于发送的0到8字节有效。 1001b到1111b为保留值(如果使用到,默认为8)。 USBOEPCNFG_0 USB输出端点0配置寄存器 7 6 5 4 3 UBME 保留 TOGGLE 保留 STALL 2 USBIIE 1 0 保留 rw-0 r0 rw-0 r0 rw-0 rw-0 只有当USBEN = 1时可修改。 UBME Bit 7 UBM 输出端点0使能 r0 r0 0 UBM不能使用该端点 1 UBM可以使用该端点 保留 Bit6 保留。读取值返回0。 TOGGLE Bit 5 翻转位。由于配置端点不需要翻转,读取返回0。 保留 Bit4 保留。读取值返回0。 STALL Bit 3 USB 安装信号。当置位时,对任何发送到端点0的传输,硬件自动返回一个安装握手信号到主机。 下 一次启动传输将自动清除安装位。 0 表明没有安装 1 表明有安装 USBIIE Bit 2 USB传输中断标示使能。为了定义中断是否通常标识化,软件可能将该位置位。为了产生中断,相应 的中断标志必须置位(OEPIE)。 0 相应的中断标志将不置位 1 相应的中断标志将置位 保留 Bits1-0 保留。读取值返回0。 USBOEPBCNT_0 USB输出端点0 字节计数寄存器 7 6 5 4 3 2 1 0 NAK 保留 CNT rw-0 NAK Bit 7 r0 r0 r0 rw-0 rw-0 rw-0 rw-0 只有当USBEN = 1时可修改。 无应答状态位。 为表明 EP-0缓冲器包含有效数据包及缓冲器数据计数值有效,成功由USB传输到端 点0末尾处的UBM将该位置位。当该位置位时,随后所有到端点0的传输将产生一个与USB主机之间的 握手信号。为了在此时能这个端点从主机接收另一个数据包,该位必须由软件清零。 0 缓冲器内没有有效数据。缓冲器已经准备好接收主机发出数据。 保留 Bits6-4 1 缓冲器包含来自主机的尚未获取的有效数据包(随后主机发出的请求接收到NAK信号)。 保留。读取值返回0。 CNT Bits 3-0 字节计数。当接收到端点0发送的新数据包时,UBM将该位置位。该4位数值包含数据缓冲器内接收到 的字节数。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–412–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 0000b到1000b,对于接收到的0到8字节有效。 1001b到1111b为保留值。 USBOEPIE, USB输入端点中断使能寄存器 7 6 5 4 3 2 1 0 IEPIE7 IEPIE6 IEPIE5 IEPIE4 IEPIE3 IEPIE2 IEPIE1 IEPIE0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 只有当USBEN = 1时可修改。 IEPIEn Bits 7-0 输入端点中断使能。这些位将使能/禁止是否一个事件可以触发中断,不影响事件是否被作标识。这通 过端点描述符中的中断标示使能位使能/禁止。 0 事件不产生中断 1 事件产生中断 USBOEPIE, USB输出端点中断使能寄存器 7 6 5 4 3 2 1 0 OEPIE7 OEPIE6 OEPIE5 OEPIE4 OEPIE3 OEPIE2 OEPIE1 OEPIE0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 只有当USBEN = 1时可修改。 OEPIEn Bits 7-0 输出端点中断使能。这些位将使能/禁止是否一个事件可以触发中断,不影响事件是否被作标识。这通 过端点描述符中的中断标示使能位使能/禁止。 0 事件不产生中断 1 事件产生中断 USBIEPIFG, USB输入端点中断标志寄存器 7 6 5 4 3 2 1 0 IEPIFG7 IEPIFG6 IEPIFG5 IEPIFG4 IEPIFG3 IEPIFG2 IEPIFG1 IEPIFG0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 只有当USBEN = 1时可修改。 OEPIFGn Bits 7-0 输入端点中断标志。当该端点成功完成传输时,这些位将由UBM进行置位。当置位时,将产生一个USB 中断。当MCU从与中断相应的USBVECINT寄存器中读数或当MCU将任何值写入中断向量寄存器时, 将会清除中断标志。中断标志也可以通过向相应位置写入0来清除。 USBOEPIFG, USB输出端点中断标志寄存器 7 6 5 4 3 2 1 0 OEPIFG7 OEPIFG6 OEPIFG5 OEPIFG4 OEPIFG3 OEPIFG2 OEPIFG1 OEPIFG0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 只有当USBEN = 1时可修改。 OEPIFGn Bits 7-0 输出端点中断标志。当输出端点成功完成传输时,相应的特定USB输出端口的输出端点中断标志位置 位。当任一位置位时,产生一个USB中断。当MCU从与中断相应的USBVECINT寄存器中读数或当MCU 将任何值写入中断向量寄存器时,将会清除中断标志。中断标志也可以通过向相应位置写入0来清除。 USBVECINT, USB中断向量寄存器 15 14 13 12 11 10 9 8 0 0 0 0 0 0 0 0 r0 r0 r0 r0 r0 r0 r0 r0 7 6 5 4 3 2 1 0 0 0 USBIV 0 r0 r0 r-0 r-0 r-0 r-0 r-0 r0 USBIV Bits 15-0 USB中断向量值。该寄存器只能作为一个字来进行访问。 当中断挂起时,读该寄存器将产生一个加到程序 计数器上处理相应事件的数值。对该寄存器的写操作将清除所有挂起的与USBEN无关的USB中断标志。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–413–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM USBIV 00h 中断源 中断标志 无中断挂起 中断优先级 — — 02h 见22.2.5部分 最高 3Eh 最低 USBMAINT, 时间戳保持寄存器 15 14 13 UTSEL 12 保留 11 TSE3 10 9 TSESEL 8 TSGEN rw-0 rw-0 rw-0 r0 7 6 5 4 保留 rw-0 rw-0 rw-0 rw-0 3 2 1 0 UTIE TSGEN r0 UTSEL 保留 TSE3 TSESEL r0 r0 r0 r0 r0 rw-0 只有当USBEN = 1时可修改。 Bits 15-13 选择USB定时器 UTSEL USB 定时器周期 大概频率 000 4096 μs ~250 Hz (244 Hz) 001 2048 μs ~ 500 Hz (488 Hz) 010 1024 μs ~ 1 kHz (977 Hz) 011 512 μs ~ 2 kHz (1953 Hz) 100 256 μs ~ 4 kHz (3906 Hz) 101 128 μs ~ 8 kHz (7812 Hz) 110 64 μs ~ 16 kHz (15625 Hz) 111 32 μs ~ 31 kHz (31250 Hz) Bit12 保留。读取值返回0。 Bit 11 时间戳事件#3位。该位允许软件驱动的时间戳事件的触发(当TSESEL=11)。 0 没有TSE3事件信号 1 TSE3事件信号 Bits 10-9 选择时间戳事件。如果在数据手册中没有注明,TSE[2:0]连接到DMA控制器的3个DMA通道。 rw-0 TSESEL Source of Timestamp Event 00 TSE0 (DMA0) 信号是有效地时间戳事件。 01 TSE1 (DMA1) 信号是有效地时间戳事件。 10 TSE2 (DMA2) 信号是有效地时间戳事件。 11 软件驱动时间戳事件。 TSGEN Bit 8 使能时间戳发生器。 0 禁止时间戳机制 1使能时间戳机制 保留 Bits7-2 保留。读取值返回0。 UTIE Bit 1 USB定时器中断使能位 0 禁止USB 定时器中断 1 使能USB 定时器中断 UTIFG Bit 0 USB 定时器中断标志 0无中断挂起 1 中断挂起 USBTSREG, USB时间戳寄存器 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–414–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 15 14 13 12 11 10 9 8 TVAL r-0 r-0 r-0 r-0 r-0 r-0 r-0 r-0 7 6 5 4 3 2 1 0 TVAL r-0 r-0 r-0 r-0 r-0 r-0 r-0 r-0 只有当USBEN = 1时可修改。 TVAL Bits 15-0 时间戳高寄存器。时间戳值由USB定时器的硬件进行更新。有效的时间戳触发信号使得当前定时器值锁存到 寄存器。 USBFN, USB帧数寄存器 15 14 13 12 11 10 9 8 保留 USBFN r0 r0 r0 r0 r0 r-0 r-0 r-0 7 6 5 4 3 2 1 0 USBFN r-0 r-0 r-0 r-0 r-0 r-0 r-0 r-0 保留 Bits15-11 保留。读取值返回0。 USBFN Bits 10-0 USB帧数寄存器。帧数位由硬件进行更新;接收到的USB帧起始包内带有帧数字段值的每个USB帧。 帧数 可以用作时间戳。如果MSP430的帧定时器没有锁定到USB主机的帧计时器,当产生伪起始帧时,帧数将从 前值自动增加。 USBCTL, USB 控制寄存器 7 6 5 4 3 2 1 0 保留 FEN RWUP FRSTE 保留 DIR r0 rw-0 rw-0 rw-0 r0 r0 r0 rw-0 只有当USBEN = 1时可修改。 保留 Bit7 保留。读取值返回0。 FEN Bit 6 功能使能位。为了使能USB设备对USB传输作出反应,该位需要置位。 如果该位没有置位,UBM将忽略所 有的USB 传输。USB复位可以清除该位(该位主要用于调试)。 0 禁止功能 1 使能功能 RWUP Bit 5 设备远程唤醒请求。为了请求用于产生USB上继续信号流的暂停/继续逻辑,软件对该位进行置位。当产生远 程唤醒时,该位用于退出USB的低功耗暂停状态。该位可以自清除。 0 写0没有作用 1 产生远程唤醒脉冲 FRSTE Bit 4 使能功能复位连接。该位用于选择是否USB的总线复位将造成USB模块的内部复位。 0 总线复位不造成模块复位 1 总线复位造成模块复位 保留 Bits3-1 保留。读取值返回0。 DIR Bit 0 数据对启动包中断状态位反应。为反映数据传输方向,软件必须对请求进行解码,对该位进行置位/清除操作。 0 USB数据输出(从主机到设备) 1 USB数据输入 (从设备到主机) USBIE, USB 中断使能寄存器 7 6 5 4 3 2 1 0 RSTRIE SUSRIE RESRIE 保留 SETUPIE 保留 STPOWIE rw-0 rw-0 rw-0 r0 r0 rw-0 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 r0 rw-0 第–415–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM RSTRIE Bit 7 只有当USBEN = 1时可修改。 USB复位中断使能。如果RSTRIFG位置位,将产生一个中断。 0 禁止功能复位中断。 1 使能功能复位中断。 SUSRIE Bit 6 暂停中断使能。如果SUSRIFG位置位,将产生一个中断。 0 禁止暂停中断 1 使能暂停中断 RESRIE Bit 5 继续中断使能。如果RESRIFG位置位,将产生一个中断。 0 禁止继续中断 1 使能继续中断 保留 Bits4-3 保留。读取值返回0。 SETUPIE Bit 2 启动中断使能。如果SETUPIFG位置位,将产生一个中断。 0 禁止启动中断 1 使能启动中断 保留 Bits1 保留。读取值返回0。 STPOWIE Bit 0 启动重写中断使能。如果STPOW IFG位置位,将产生一个中断。 0 禁止启动重写中断 1 使能启动重写中断 USBIFG, USB中断标志寄存器 7 RSTRIFG 6 SUSRIFG 5 RESRIFG 4 3 保留 2 SETUPIFG 1 保留 0 STPOWIFG rw-0 RSTRIFG rw-0 rw-0 r0 r0 rw-0 r0 rw-0 只有当USBEN = 1时可修改。 Bit 7 USB 复位请求位。通过硬件对主机作出反应该位置1,这将初始化USB端口复位。 USB复位造成USB模 块逻辑复位,但是不会影响该位。 SUSRIFG Bit 6 暂停请求位。通过硬件对主机/集线器的反应该位置位,这将造成一个全局性或选择性的暂停信号。 RESRIFG Bit 5 继续请求位。硬件对主机/集线器作出反应该位置位,导致继续执行。 保留 Bits4-3 保留。读取值返回0。 SETUPIFG Bit 2 接收到启动传输位。当接收到启动传输时,该位由硬件置位。只要该位置位,不论相应的NAK位值如何, 端点0上IN和OUT的传输将接收到NAK。 保留 Bits1 保留。读取值返回0。 STPOWIFG Bit 0 启动重写位。如果启动缓冲器内已有数据包时接收到启动包,该位由硬件置位。T USBFUNADR, USB操作地址寄存器 7 6 5 4 3 2 1 0 保留 FA6 FA5 FA4 FA3 FA2 FA1 FA0 r0 保留 rw-0 rw-0 rw-0 只有当USBEN = 1时可修改。 Bit7 保留。读取值返回0。 rw-0 rw-0 rw-0 rw-0 FA[6:0] Bits 6-0 操作地址(USB地址0到127)。这些位定义分配给该USB设备的当前设备地址。当接收到主机的设置地址命令 时,软件必须写入一个从0到127范围的值。 22.4.3 USB缓冲期寄存器及存储器 所有端点的数据缓冲器及定义端点1-7的寄存器,存储在USB RAM缓冲器存储器内。这样可以高效、 弹性地使用该存储器。该存储器区域作为USB缓冲存储器,且缓冲器描述符寄存器定义它的使用。 缓 冲存储器模块如表22-7中所列。寄存器在22-8中列出。所有的地址以偏移地址表达,基地址可以在具体芯 片的数据手册中找到。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–416–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 可以字节和字形式访问所有的存储器。 表22-7 USB缓冲存储器 存储器 缩写 访问类型 地址偏移 缓冲器空间开始 USBSTABUFF 读/写 0000h 1904个字节的可配置缓冲空间 … 读/写 … 缓冲期空间结束 USBTOPBUFF 读/写 076Fh 读/写 0770h 输出端点-0缓冲器 USBOEP0BUF 读/写 … 读/写 0777h 读/写 0778h 输入端点-0缓冲器 USBIEP0BUF 读/写 … 读/写 077Fh 读/写 0780h 启动包块 USBSUBLK 读/写 … 读/写 0787h 输出端点-1 输出端点-2 输出端点-3 输出端点-4 表22-8 USB缓冲器描述符寄存器 寄存器 缩写 配置寄存器 USBOEPCNF_1 X缓冲器基地址寄存器 USBOEPBBAX_1 X字节计数寄存器 USBOEPBCTX_1 Y缓冲器基地址寄存器 USBOEPBBAY_1 Y字节计数寄存器 USBOEPBCTY_1 X/Y缓冲器大小寄存器 USBOEPSIZXY_1 配置寄存器 USBOEPCNF_2 X缓冲器基地址寄存器 USBOEPBBAX_2 X字节计数寄存器 USBOEPBCTX_2 Y缓冲器基地址寄存器 USBOEPBBAY_2 Y字节计数寄存器 USBOEPBCTY_2 X/Y缓冲器大小寄存器 USBOEPSIZXY_2 配置寄存器 USBOEPCNF_3 X缓冲器基地址寄存器 USBOEPBBAX_3 X字节计数寄存器 USBOEPBCTX_3 Y缓冲器基地址寄存器 USBOEPBBAY_3 Y字节计数寄存器 USBOEPBCTY_3 X/Y缓冲器大小寄存器 USBOEPSIZXY_3 配置寄存器 USBOEPCNF_4 X缓冲器基地址寄存器 USBOEPBBAX_4 X字节计数寄存器 USBOEPBCTX_4 Y缓冲器基地址寄存器 USBOEPBBAY_4 Y字节计数寄存器 USBOEPBCTY_4 访问类型 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 地址偏移 0788h 0789h 078Ah 078Dh 078Eh 078Fh 0790h 0791h 0792h 0795h 0796h 0797h 0798h 0799h 079Ah 078Dh 079Eh 079Fh 07A0h 07A1h 07A2h 07A5h 0796h 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–417–页 共 423 页 输出端点-5 输出端点-6 输出端点-7 输入端点-1 输入端点-2 输入端点-3 输入端点-4 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM X/Y缓冲器大小寄存器 配置寄存器 X缓冲器基地址寄存器 X字节计数寄存器 Y缓冲器基地址寄存器 Y字节计数寄存器 X/Y缓冲器大小寄存器 USBOEPSIZXY_4 USBOEPCNF_5 USBOEPBBAX_5 USBOEPBCTX_5 USBOEPBBAY_5 USBOEPBCTY_5 USBOEPSIZXY_5 读/写 读/写 读/写 读/写 读/写 读/写 读/写 07A7h 07A8h 07A9h 07AAh 07ADh 07AEh 07AFh 配置寄存器 X缓冲器基地址寄存器 X字节计数寄存器 Y缓冲器基地址寄存器 Y字节计数寄存器 X/Y缓冲器大小寄存器 配置寄存器 X缓冲器基地址寄存器 X字节计数寄存器 Y缓冲器基地址寄存器 Y字节计数寄存器 X/Y缓冲器大小寄存器 配置寄存器 X缓冲器基地址寄存器 X字节计数寄存器 Y缓冲器基地址寄存器 Y字节计数寄存器 X/Y缓冲器大小寄存器 配置寄存器 X缓冲器基地址寄存器 X字节计数寄存器 Y缓冲器基地址寄存器 Y字节计数寄存器 X/Y缓冲器大小寄存器 配置寄存器 X缓冲器基地址寄存器 X字节计数寄存器 Y缓冲器基地址寄存器 Y字节计数寄存器 X/Y缓冲器大小寄存器 配置寄存器 X缓冲器基地址寄存器 USBOEPCNF_6 USBOEPBBAX_6 USBOEPBCTX_6 USBOEPBBAY_6 USBOEPBCTY_6 USBOEPSIZXY_6 USBOEPCNF_7 USBOEPBBAX_7 USBOEPBCTX_7 USBOEPBBAY_7 USBOEPBCTY_7 USBOEPSIZXY_7 USBIEPCNF_1 USBIEPBBAX_1 USBIEPBCTX_1 USBIEPBBAY_1 USBIEPBCTY_1 USBIEPSIZXY_1 USBIEPCNF_2 USBIEPBBAX_2 USBIEPBCTX_2 USBIEPBBAY_2 USBIEPBCTY_2 USBIEPSIZXY_2 USBIEPCNF_3 USBIEPBBAX_3 USBIEPBCTX_3 USBIEPBBAY_3 USBIEPBCTY_3 USBIEPSIZXY_3 USBIEPCNF_4 USBIEPBBAX_4 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 07B0h 07B1h 07B2h 07B5h 07B6h 07B7h 07B8h 07B9h 07BAh 07BDh 07BEh 07BFh 07C8h 07C9h 07CAh 07CDh 07CEh 07CFh 07D0h 07D1h 07D2h 07D5h 07D6h 07D7h 07D8h 07D9h 07DAh 07DDh 07DEh 07DFh 07E0h 07E1h X字节计数寄存器 Y缓冲器基地址寄存器 Y字节计数寄存器 X/Y缓冲器大小寄存器 USBIEPBCTX_4 USBIEPBBAY_4 USBIEPBCTY_4 USBIEPSIZXY_4 读/写 读/写 读/写 读/写 07E2h 07E5h 07E6h 07E7h 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–418–页 共 423 页 输入端点-5 输入端点-6 输入端点-5 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 配置寄存器 X缓冲器基地址寄存器 X字节计数寄存器 Y缓冲器基地址寄存器 Y字节计数寄存器 X/Y缓冲器大小寄存器 配置寄存器 X缓冲器基地址寄存器 X字节计数寄存器 Y缓冲器基地址寄存器 Y字节计数寄存器 X/Y缓冲器大小寄存器 配置寄存器 X缓冲器基地址寄存器 X字节计数寄存器 Y缓冲器基地址寄存器 Y字节计数寄存器 X/Y缓冲器大小寄存器 USBIEPCNF_5 USBIEPBBAX_5 USBIEPBCTX_5 USBIEPBBAY_5 USBIEPBCTY_5 USBIEPSIZXY_5 USBIEPCNF_6 USBIEPBBAX_6 USBIEPBCTX_6 USBIEPBBAY_6 USBIEPBCTY_6 USBIEPSIZXY_6 USBIEPCNF_5 USBIEPBBAX_5 USBIEPBCTX_5 USBIEPBBAY_5 USBIEPBCTY_5 USBIEPSIZXY_5 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 读/写 07E8h 07E9h 07EAh 07EDh 07EEh 07EFh 07F0h 07F1h 07F2h 07F5h 07F6h 07F7h 07F8h 07F9h 07FAh 07FDh 07FEh 07FFh USBOEPCNF_n, 输出端点-n配置寄存器 7 6 5 4 UBME 保留 TOGGLE DBUF 3 STALL 2 USBIIE 1 0 保留 rw UBME 保留 TOGGLE r0 rw rw rw rw r0 r0 只有当USBEN = 1时可修改。 Bit 7 使能UBM输出端点-n。该位通过软件置位/清零。 0 UBM不能使用该端点 1 UBM可使用该端点 Bit6 保留。读取值返回0。 Bit 5 翻转位。翻转位由UBM控制,且如果接收到有效数据包及数据包的包ID与预想的包ID匹配,将在成功进行输 出数据传输的结尾处翻转。 DBUF STALL Bit 4 使能双缓冲器。对于某一输出端点的USB传输来说,为了使能X和Y数据包缓冲器,可使该位置位。该位清零 时,只使用 单一缓冲器模式。在这种模式下,只使用X缓冲器。 0 只有主要缓冲器 (只有X缓冲器) 1 翻转位选择缓冲器 Bit 3 USB安装信号。为了安装端点传输,可置位该位。当置位时,端点0上接收到任何传输时,硬件将自动向主 机返回安装的握手信号。安装位可以由下一次安装传输自动清除。 0 表明没有安装 1 表明有安装 USBIIE Bit 2 使能USB传输中断标识。为定义中断一般是否有标志标示,可以对该位置位/清除。 为了产生中断,相应的 中断标志必须置位 (OEPIE)。 0 相应的中断标志不置位 1 相应的中断标志置位 保留 Bits1-0 保留。读取值返回0。 USBOEPBBAY_n, 输出端点-n X缓冲器基地址寄存器 7 6 5 4 3 2 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 1 0 第–419–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM ADR rw ADR rw rw rw rw rw rw rw 只有当USBEN = 1时可修改。 Bits 7-0 X缓冲器及地址。这些是Y缓冲器的基地址的高7位。11位总数的3位低有效位为0。这个值需要软件置位。 UBM使用该值作为给定传输的起始地址,传输末尾时不改变这个值。 USBOEPBCTX_n, 输出端点-n X-字节计数寄存器 只有当USBEN = 1时可修改。 NAK Bit 7 无应答状态位。为了表明USB的端点-n缓冲器包含一个有效数据包且缓冲器数据计数值有效,端点的数据传 输成功的USB末端置位NAK状态位。 当该位置位时,随后的所有来自那个端口的传输将导致NAK与主机的 握手回答包。为了再次使能该端口接收来自主机的另一个数据包,该位必须清零。 0 缓冲器没有有效数据。缓冲器准备好接收主机的输出包。 1 缓冲器包含来自主机的有效包,且已经探测出(随后的接收到NAK的主机发出请求) CNT Bits 6-0 X缓冲数据计数。当把新数据包写入到X缓冲器时,输出EP-n数据计数值置位。值设置为数据缓冲器内接收 到的字节数。 USBOEPBBAY_n, 输出端点-n Y缓冲器基地址寄存器 7 6 5 4 3 2 1 0 ADR rw ADR rw rw rw rw rw rw rw 只有当USBEN = 1时可修改。 Bits 7-0 Y缓冲器及地址。这些是Y缓冲器的基地址的高7位。11位总数的3位低有效位为0。这个值需要软件置位。 UBM使用该值作为给定传输的起始地址,传输末尾时不改变这个值。 USBOEPBCTY_n, 输出端点-n X-字节计数寄存器 7 6 5 4 3 2 1 0 NAK CNT rw NAK Bit 7 rw rw rw rw rw rw rw 只有当USBEN = 1时可修改。 无应答状态位。为了表明USB的端点-n缓冲器包含一个有效数据包且缓冲器数据计数值有效,端点的数据传 输成功的USB末端置位NAK状态位。 当该位置位时,随后的所有来自那个端口的传输将导致NAK与主机的 握手回答包。为了再次使能该端口接收来自主机的另一个数据包,该位必须清零。该位由USB的SW-init置位。 0 缓冲器没有有效数据。缓冲器准备好接收主机的输出包。 CNT Bits 6-0 1 缓冲器包含来自主机的有效包,且已经探测出(随后的接收到NAK的主机发出请求) Y缓冲数据计数。 当把新数据包写入到X缓冲器时,输出EP-n数据计数值置位。值设置为数据缓冲器内接收 到的字节数。 USBOEPSIZXY_n, 输出端点-n X/Y缓冲器大小寄存器 7 6 5 4 3 2 1 保留 SIZx r0 rw rw rw rw rw rw rw 只有当USBEN = 1时可修改。 保留 Bit7 保留。读取值返回0。 SIZx Bits 6-0 缓冲器大小计数。为了配置X和Y数据包缓冲器的大小,该位需要由软件置位。以此值为基础,将两个缓冲器 配置成相同大小。000:0000b 到100:0000b对于0到64字节为有效数值。 任何大于等于100:0001b的值将产 生不可预测的结果。 USBIEPCNF_n, Input Endpoint-n Configuration Register 7 6 5 4 3 UBME 保留 TOGGLE DBUF STALL 2 USBIIE 1 0 保留 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–420–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM rw r0 rw rw rw rw r0 r0 只有当USBEN = 1时可修改。 UBME Bit 7 使能端点-n的UBM。该值需要通过软件置位/清零。 0 UBM不能使用这个端点。 1 UBM可以使用这个端点。 保留 Bit6 保留。读取值返回0。 TOGGLE Bit 5 翻转位。翻转位由UBM控制,如果正在进行有效数据包的传输,在数据阶段传输的结尾处翻转。 如果该位 清零,DATA0包ID含在数据包中传输到主机。如果该位置位,DATA1包ID旱灾数据包中传输。 DBUF Bit 4 使能双缓冲器。对于某一输出端点来说,为了使能X和Y数据包缓冲器,可使该位置位。该位清零时,只使用 单一缓冲器模式。在这种模式下,只使用X缓冲器。 0 只有主要缓冲器 (只有X缓冲器) 1 翻转位选择缓冲器 STALL Bit 3 USB安装信号。为了安装端点传输,可置位该位。当置位时,端点0上接收到任何传输时,硬件将自动向主 机返回安装的握手信号。安装位可以由下一次安装传输自动清除。 0 表明没有安装 1 表明有安装 USBIIE Bit 2 使能USB传输中断标识。为定义中断一般是否有标志标示,可以对该位置位/清除。 为了产生中断,相应的 中断标志必须置位 (OEPIE)。 0 相应的中断标志不置位 1 相应的中断标志置位 保留 Bits1-0 保留。读取值返回0。 USBIEPBCTX_n,输入端点-n X缓冲基地址寄存器 7 6 5 4 3 2 1 0 rw ADR ADR rw rw rw rw rw rw rw 只有当USBEN = 1时可修改。 Bits 7-0 X缓冲器基地址。这些位是Y缓冲器基地址的高七位。 11位总数的3位低有效位为0。这个值需要软件置位。 UBM使用该值作为给定传输的起始地址,传输末尾时不改变这个值。 USBIEPBCTX_n, 输入端点-n X字节计数寄存器 7 6 5 4 3 2 1 0 NAK CNT rw rw rw rw rw rw rw rw 只有当USBEN = 1时可修改。 NAK Bit 7 无应答状态位。为了表明缓冲器的EP-n为空,端点的数据传输成功的USB末端置位NAK状态位。 对中断或 块端点来说,当该位置位时,随后的所有来自那个端口的传输将导致NAK与主机的握手回答包。为了使能该 端口向主机发送另一个数据包,该位必须清零。该位由USB的SW-init置位。 0 缓冲器包含一个对主机有效的数据包。 1 缓冲器为空(任何接收到NAK的主机请求) CNT Bits 6-0 X缓冲数据计数。 当将新数据包写入缓冲器时,EP-n Y缓冲数据计数值需要通过软件置位。对中断或块端点 传输来说,应该是数据包中字节的数量。000:0000b 到100:0000b 对于0到64字节为有效数值。任何大于等 于100:0001b的值将产生不可预测的结果。 USBIEPBBAY_n,输入端点-n Y缓冲基地址寄存器 7 6 5 4 3 2 1 0 ADR 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–421–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM rw ADR rw rw rw rw rw rw rw 只有当USBEN = 1时可修改。 Bits 7-0 Y缓冲器基地址。这些位是Y缓冲器基地址的高七位。 11位总数的3位低有效位为0。这个值需要软件置位。 UBM使用该值作为给定传输的起始地址,传输末尾时不改变这个值。 USBIEPBCTY_n, 输入端点-n Y字节计数寄存器 7 6 5 4 3 2 1 0 NAK CNT rw NAK Bit 7 rw rw rw rw rw rw rw 只有当USBEN = 1时可修改。 无应答状态位。为了表明缓冲器的EP-n为空,端点的数据传输成功的USB末端置位NAK状态位。 对中断或 块端点来说,当该位置位时,随后的所有来自那个端口的传输将导致NAK与主机的握手回答包。为了使能该 端口向主机发送另一个数据包,该位必须清零。该位由USB的SW-init置位。 0 缓冲器包含一个对主机有效的数据包。 1 缓冲器为空(任何接收到NAK的主机请求) CNT Bits 6-0 Y缓冲数据计数。 当将新数据包写入缓冲器时,EP-n Y缓冲数据计数值需要通过软件置位。对中断或块端点 传输来说,应该是数据包中字节的数量。000:0000b 到100:0000b 对于0到64字节为有效数值。任何大于等 于100:0001b的值将产生不可预测的结果。 USBIEPSIZXY_n,输入端点-n X/Y缓冲器大小寄存器 7 6 5 4 3 2 1 0 保留 SIZ r0 保留 SIZ rw rw rw rw rw rw rw 只有当USBEN = 1时可修改。 Bit 7 读取值返回0。 Bits 6-0 缓冲器大小计数。为了配置X和Y数据包缓冲器,该值需要通过软件设置。以此值为基础,将两个缓冲 器配置成相同大小。000:0000b 到100:0000b对于0到64字节为有效数值。 任何大于等于100:0001b 的值将产生不可预测的结果。 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–422–页 共 423 页 LSD SCIENCE & TECHNOLOGY CO.,LTD. 利尔达科技有限公司 WWW.LIERDA.COM 公司地址:杭州市登云路 425 号利尔达大厦 Tel:0571-88800000 Fax:0571-89908080 第–423–页 共 423 页

Top_arrow
回到顶部
EEWORLD下载中心所有资源均来自网友分享,如有侵权,请发送举报邮件到客服邮箱bbs_service@eeworld.com.cn 或通过站内短信息或QQ:273568022联系管理员 高进,我们会尽快处理。