MSP430x2xx 系列用户指南 (Rev. I) Users Guide

User Manual:

Open the PDF directly: View PDF PDF.
Page Count: 644 [warning: Documents this large are best viewed by clicking the View PDF Link!]

MSP430x2xx 系列
用户户指
Literature Number: ZHCU032I
December 2004Revised January 2012
内容
Preface ...................................................................................................................................... 21
1简介.................................................................................................................................. 23
1.1 架构 .......................................................................................................................... 24
1.2 灵活的时钟系统 ............................................................................................................ 24
1.3 嵌入式仿真 ................................................................................................................. 25
1.4 地址空间 .................................................................................................................... 25
1.4.1 闪存 / ROM ........................................................................................................ 25
1.4.2 RAM ................................................................................................................ 26
1.4.3 外设模块 ........................................................................................................... 26
1.4.4 特别功能寄存器(SFR) ............................................................................................ 26
1.4.5 内存组织 ........................................................................................................... 26
1.5 MSP430x2xx 系列改进和增强 ........................................................................................... 27
2系统统复位、、中断、、和运行行模................................................................................................. 28
2.1 系统复位和初始化 ......................................................................................................... 29
2.1.1 欠压复位 (BOR) ................................................................................................... 29
2.1.2 系统复位后的器件初始条件 ...................................................................................... 30
2.2 中断 .......................................................................................................................... 31
2.2.1 (不)可屏蔽中断 (NMI) ......................................................................................... 31
2.2.2 可屏蔽中断 ........................................................................................................ 34
2.2.3 中断处理 ........................................................................................................... 35
2.2.4 中断矢量 ........................................................................................................... 37
2.3 操作模式 .................................................................................................................... 38
2.3.1 进入和退出低功耗模式 ........................................................................................... 40
2.4 低功耗应用的原则 ......................................................................................................... 40
2.5 未使用引脚的连接 ......................................................................................................... 41
3 CPU ................................................................................................................................. 42
3.1 CPU 介绍 ................................................................................................................... 43
3.2 CPU 寄存器 ................................................................................................................ 44
3.2.1 程序计数器 (PC) .................................................................................................. 44
3.2.2 堆栈指针 (SP) ..................................................................................................... 45
3.2.3 堆栈寄存器 (SR) .................................................................................................. 45
3.2.4 常量发生器寄存器 CG1 CG2 ................................................................................ 46
3.2.5 通用寄存器 R4 R15 ............................................................................................ 47
3.3 寻址模式 .................................................................................................................... 47
3.3.1 寄存器模式 ........................................................................................................ 49
3.3.2 已索引模式 ........................................................................................................ 50
3.3.3 符号模式 ........................................................................................................... 51
3.3.4 绝对模式 ........................................................................................................... 52
3.3.5 间接寄存器模式 ................................................................................................... 53
3.3.6 间接自动递增模式 ................................................................................................ 54
3.3.7 立即模式 ........................................................................................................... 55
3.4 指令集 ....................................................................................................................... 56
3.4.1 双操作数(格式 I)指令 ......................................................................................... 57
3.4.2 单操作数(格式 II)指令 ......................................................................................... 58
3.4.3 跳转 ................................................................................................................. 59
2
内容
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
3.4.4 指令周期和长度 ................................................................................................... 60
3.4.5 指令集说明 ........................................................................................................ 62
3.4.6 指令集细节 ........................................................................................................ 64
4 CPUX .............................................................................................................................. 115
4.1 CPU 介绍 .................................................................................................................. 116
4.2 中断 ........................................................................................................................ 118
4.3 CPU 寄存器 ............................................................................................................... 119
4.3.1 程序计数器 (PC) ................................................................................................. 119
4.3.2 堆栈指针 (SP) ................................................................................................... 119
4.3.3 状态寄存器 (SR) ................................................................................................. 120
4.3.4 常数发生器寄存器(CG1 CG2.......................................................................... 122
4.3.5 通用寄存器(R4 R15..................................................................................... 123
4.4 寻址模式 ................................................................................................................... 125
4.4.1 寄存器模式 ....................................................................................................... 126
4.4.2 已索引的模式: .................................................................................................. 127
4.4.3 符号模式 .......................................................................................................... 131
4.4.4 绝对模式 .......................................................................................................... 136
4.4.5 间接寄存器模式 .................................................................................................. 138
4.4.6 间接自动递增模式 ............................................................................................... 139
4.4.7 立即模式 .......................................................................................................... 140
4.5 MSP430 MSP430X 指令 ............................................................................................ 142
4.5.1 MSP430 指令 .................................................................................................... 142
4.5.2 MSP430 扩展指令 ............................................................................................... 147
4.6 指令集说明 ................................................................................................................ 160
4.6.1 扩展指令二进制说明 ............................................................................................ 161
4.6.2 MSP430 指令 .................................................................................................... 163
4.6.3 MSP430X 扩展指令 ............................................................................................. 215
4.6.4 MSP430X 寻址指令 ............................................................................................. 256
5基本本时钟模模块+.................................................................................................................. 271
5.1 基本时钟模块+介绍 ..................................................................................................... 272
5.2 基本时钟模块+的操作 ................................................................................................... 274
5.2.1 低功耗应用的基本时钟模块+的特性 .......................................................................... 274
5.2.2 内部超低功耗低频振荡器 (VLO) ............................................................................... 275
5.2.3 LFXT1 振荡器 ................................................................................................... 275
5.2.4 XT2 振荡器 ....................................................................................................... 276
5.2.5 数控振荡器(DCO) ............................................................................................... 276
5.2.6 DCO 调制器 ...................................................................................................... 277
5.2.7 基本时钟模块+的故障安全操作 ............................................................................... 278
5.2.8 时钟信号的同步 .................................................................................................. 279
5.3 基本时钟模块+寄存器 ................................................................................................... 280
5.3.1 DCOCTLDCO 控制寄存器 .................................................................................. 281
5.3.2 BCSCTL1,基础时钟系统控制寄存器 1...................................................................... 281
5.3.3 BCSCTL2,基础时钟系统控制寄存器 2...................................................................... 282
5.3.4 BCSCTL3,基础时钟系统控制寄存器 3...................................................................... 283
5.3.5 IE1,中断使能寄存器 1......................................................................................... 284
5.3.6 IFG1,中断标志寄存器 1....................................................................................... 284
6 DMA 控制制器..................................................................................................................... 285
6.1 DMA 介绍 ................................................................................................................. 286
6.2 DMA 操作 ................................................................................................................. 288
6.2.1 DMA 寻址模式 ................................................................................................... 288
6.2.2 DMA 传输模式 ................................................................................................... 289
6.2.3 初始化 DMA 传输 ............................................................................................... 295
3
ZHCU032IDecember 2004Revised January 2012
内容
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
6.2.4 停止 DMA 传输 .................................................................................................. 296
6.2.5 DMA 通道的优先级 ............................................................................................. 297
6.2.6 DMA 传输周期 ................................................................................................... 297
6.2.7 使用带有系统中断的 DMA ..................................................................................... 297
6.2.8 DMA 控制器中断 ................................................................................................ 298
6.2.9 DMA控制器下使用 USCI_B I2C模块 ...................................................................... 298
6.2.10 DMA 控制器下使用 ADC12 ............................................................................... 298
6.2.11 DMA 控制器下使用 DAC12 ............................................................................... 299
6.2.12 DMA 控制器下写入闪存 ................................................................................... 299
6.3 DMA 寄存器 ............................................................................................................... 300
6.3.1 DDMACTL0DMA 控制寄存器 0............................................................................. 301
6.3.2 DDMACTL1DMA 控制寄存器 1............................................................................. 301
6.3.3 DMAxCTLDMA通道 x控制寄存器 ......................................................................... 302
6.3.4 DMAxSADMA 源地址寄存器 ................................................................................ 303
6.3.5 DMAxDADMA 目的地址寄存器 ............................................................................. 304
6.3.6 DMAxSZDMA 大小地址寄存器 ............................................................................. 304
6.3.7 DMAIVDMA 中断向量寄存器 ................................................................................ 305
7闪存存存储器器控制器.............................................................................................................. 306
7.1 闪存存储器介绍 ........................................................................................................... 307
7.2 闪存存储器分段 ........................................................................................................... 307
7.2.1 A............................................................................................................... 308
7.3 闪存存储器运行 ........................................................................................................... 309
7.3.1 闪存存储器时序发生器 ......................................................................................... 309
7.3.2 擦除闪存存储器 .................................................................................................. 310
7.3.3 写入闪存存储器 .................................................................................................. 313
7.3.4 写入或擦除期间的闪存存储器访问 ............................................................................ 318
7.3.5 停止一个写入或擦除周期 ....................................................................................... 318
7.3.6 边界读取模式 .................................................................................................... 319
7.3.7 配置和访问闪存存储器控制器 ................................................................................. 319
7.3.8 闪存存储器控制器中断 ......................................................................................... 319
7.3.9 编辑闪存存储器器件 ............................................................................................ 319
7.4 闪存存储器寄存器 ........................................................................................................ 321
7.4.1 FCTL1,闪存存储器控制寄存器 ............................................................................... 322
7.4.2 FCTL2,闪存存储器控制寄存器 ............................................................................... 322
7.4.3 FCTL3,闪存存储器控制寄存器 ............................................................................... 323
7.4.4 FCTL4,闪存存储器控制寄存器 ............................................................................... 324
7.4.5 IE1,中断启用寄存器1......................................................................................... 324
8数字I/O ........................................................................................................................... 325
8.1 数字 I/O 介绍 ............................................................................................................. 326
8.2 数字 I/O 运行 ............................................................................................................. 326
8.2.1 输入寄存器 PxIN ................................................................................................ 326
8.2.2 输出寄存器 PxOUT ............................................................................................. 326
8.2.3 方向寄存器 PxDIR .............................................................................................. 327
8.2.4 上拉/下拉电阻器使能寄存器PxREN .......................................................................... 327
8.2.5 功能选择寄存器 PxSEL PxSEL2 ........................................................................... 327
8.2.6 引脚振荡器 ....................................................................................................... 328
8.2.7 P1 P2 中断 ................................................................................................... 329
8.2.8 配置未使用的端口引脚 ......................................................................................... 330
8.3 输入 I/O 寄存器 ........................................................................................................... 331
9电源源电压监监控(SVS) ........................................................................................................ 333
9.1 电源电压监控器 (SVS) 介绍 ............................................................................................ 334
9.2 SVS 运行 .................................................................................................................. 335
9.2.1 配置 SVS ......................................................................................................... 335
4
内容
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
9.2.2 SVS 比较器运行 ................................................................................................. 335
9.2.3 更改 VLDx .................................................................................................... 335
9.2.4 SVS 运行范围 ................................................................................................... 336
9.3 SVS 寄存器 ............................................................................................................... 337
9.3.1 SVSCTL, SVS 控制寄存器 ..................................................................................... 338
10 安全全装置定定时+ (WDT+) .................................................................................................... 339
10.1 安全装置定时器+ (WDT+) 介绍 ........................................................................................ 340
10.2 安全装置定时器+操作 ................................................................................................... 342
10.2.1 安全装置定时器+计数器 ...................................................................................... 342
10.2.2 安全装置模式 ................................................................................................... 342
10.2.3 间隔定时器模式 ................................................................................................ 342
10.2.4 安全装置定时器+的中断 ...................................................................................... 342
10.2.5 安全装置定时器+时钟故障安全操作 ......................................................................... 343
10.2.6 在低功耗模式下的操作 ........................................................................................ 343
10.2.7 软件示例 ......................................................................................................... 343
10.3 安全装置定时器+寄存器 ................................................................................................ 344
10.3.1 WDTCTL,安全装置定时器+寄存器 ........................................................................ 345
10.3.2 IE1,中断使能寄存器 1....................................................................................... 346
10.3.3 IFG1,中断标志寄存器 1..................................................................................... 346
11 硬件件乘法器....................................................................................................................... 347
11.1 硬件乘法器介绍 ........................................................................................................... 348
11.2 硬件乘法器操作 ........................................................................................................... 348
11.2.1 操作数寄存器 ................................................................................................... 349
11.2.2 结果寄存器 ...................................................................................................... 349
11.2.3 软件示例 ......................................................................................................... 350
11.2.4 RESLO 的间接寻址 ............................................................................................ 351
11.2.5 使用中断 ......................................................................................................... 351
11.3 硬件乘法器寄存器 ........................................................................................................ 352
12 定时时器_A ......................................................................................................................... 353
12.1 定时器_A 介绍 ............................................................................................................ 354
12.2 定时器_A 的运行 ......................................................................................................... 355
12.2.1 16 位定时计数器 ............................................................................................... 355
12.2.2 启动定时器 ...................................................................................................... 356
12.2.3 定时器模式控制 ................................................................................................ 356
12.2.4 捕捉/比较区块 .................................................................................................. 360
12.2.5 输出单元 ......................................................................................................... 361
12.2.6 定时器_A 中断 .................................................................................................. 365
12.3 定时器_A 寄存器 ......................................................................................................... 367
12.3.1 TACTL,定时器_A 控制寄存器 .............................................................................. 368
12.3.2 TAR,定时器_A 寄存器 ....................................................................................... 369
12.3.3 TACCRx,定时器_A 捕捉/比较寄存器x..................................................................... 369
12.3.4 TACCTLx,捕捉/比较控制寄存器 ............................................................................ 370
12.3.5 TAIV,定时器_A 中断矢量寄存器 ............................................................................ 371
13 定时时器_B ......................................................................................................................... 372
13.1 定时器_B 的介绍 ......................................................................................................... 373
13.1.1 与定时器_A 的相似和不同之处 ............................................................................... 373
13.2 定时器_B 的操作 ......................................................................................................... 375
13.2.1 16 位定时器计数器 ............................................................................................. 375
13.2.2 启动定时器 ...................................................................................................... 375
13.2.3 定时器模式控制 ................................................................................................ 375
13.2.4 捕捉/比较块 ..................................................................................................... 379
13.2.5 输出单元 ......................................................................................................... 382
5
ZHCU032IDecember 2004Revised January 2012
内容
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
13.2.6 定时器_B 的中断 ............................................................................................... 386
13.3 定时器_B 的寄存器 ...................................................................................................... 388
13.3.1 定时器_B 的控制寄存器 TBCTL .............................................................................. 389
13.3.2 TBR,定时器_B 的寄存器 .................................................................................... 390
13.3.3 TBCCRx,定时器_B 的捕捉/比较寄存器 x................................................................. 390
13.3.4 TBCCTLx,捕获/比较控制寄存器 ............................................................................ 391
13.3.5 TBIV,定时器_B 的中断向量寄存器 ......................................................................... 392
14 通用用串行接接口(USI) ............................................................................................................ 393
14.1 USI 介绍 ................................................................................................................... 394
14.2 USI 运行 ................................................................................................................... 397
14.2.1 USI 初始化 ...................................................................................................... 397
14.2.2 USI 时钟生成 ................................................................................................... 397
14.2.3 SPI 模式 ......................................................................................................... 398
14.2.4 I2C模式 .......................................................................................................... 400
14.3 USI 寄存器 ................................................................................................................ 403
14.3.1 USICTL0USI 控制寄存器 0................................................................................ 404
14.3.2 USICTL1USI 控制寄存器 1................................................................................ 405
14.3.3 USICKCTLUSI 时钟控制寄存器 ........................................................................... 406
14.3.4 USICNTUSI 位计数器寄存器 .............................................................................. 406
14.3.5 USISRLUSI 低字节移位寄存器 ............................................................................ 407
14.3.6 USISRHUSI 高字节移位寄存器 ............................................................................ 407
15 通用用串行通通信接口口,UART 模式............................................................................................ 408
15.1 USCI 概述 ................................................................................................................. 409
15.2 USCI 介绍:UART 模式 ................................................................................................. 409
15.3 USCI 操作:UART 模式 ................................................................................................. 411
15.3.1 USCI 初始化和复位 ............................................................................................ 411
15.3.2 字符格式 ......................................................................................................... 411
15.3.3 异步通信格式 ................................................................................................... 411
15.3.4 自动波特率检测 ................................................................................................ 414
15.3.5 IrDA 编码和解码 ................................................................................................ 415
15.3.6 自动错误检测 ................................................................................................... 416
15.3.7 USCI 接收使能 ................................................................................................. 416
15.3.8 USCI 发送使能 ................................................................................................. 417
15.3.9 UART 波特率生成 .............................................................................................. 417
15.3.10 设置一个波特率 ............................................................................................... 419
15.3.11 发送位的时序 .................................................................................................. 420
15.3.12 接收位时序 .................................................................................................... 420
15.3.13 典型的波特率和错误 .......................................................................................... 422
15.3.14 在低功耗模式下 UART 模式中使用 USCI 模块 ........................................................... 424
15.3.15 USCI 中断 ..................................................................................................... 424
15.4 USCI 寄存器:UART 模式 .............................................................................................. 426
15.4.1 UCAxCTL0USCI_Ax 控制寄存器 0....................................................................... 427
15.4.2 UCAxCTL1USCI_Ax 控制寄存器 1....................................................................... 428
15.4.3 UCAxBR0USCI_Ax 波特率控制寄存器 0................................................................. 428
15.4.4 UCAxBR1USCI_Ax 波特率控制寄存器 1................................................................. 428
15.4.5 UCAxMCTLUSCI_Ax 调制控制寄存器 .................................................................... 429
15.4.6 UCAxSTATUSCI_Ax 状态寄存器 ......................................................................... 429
15.4.7 UCAxRXBUFUSCI_Ax 接收缓冲寄存器 .................................................................. 430
15.4.8 UCAxTXBUFUSCI_Ax 发送缓冲寄存器 .................................................................. 430
15.4.9 UCAxIRTCTLUSCI_Ax IrDA 发送缓冲寄存器 ........................................................... 430
15.4.10 UCAxIRRCTLUSCI_Ax IrDA 接收控制寄存器 ......................................................... 430
15.4.11 UCAxABCTLUSCI_Ax 自动波特率控制寄存器 ......................................................... 431
15.4.12 IE2,中断使能寄存器 2...................................................................................... 431
6
内容
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
15.4.13 IFG2,中断标志寄存器 2.................................................................................... 431
15.4.14 UC1IEUSCI_A1 中断使能寄存器 ........................................................................ 432
15.4.15 UC1IFGUSCI_A1 中断标志寄存器 ...................................................................... 432
16 通用用串行通通信接口口,SPI 模式式。............................................................................................ 433
16.1 USCI 概述 ................................................................................................................. 434
16.2 USCI 介绍:SPI 模式 .................................................................................................... 434
16.3 USCI 操作: SPI 模式 ..................................................................................................... 436
16.3.1 USCI 的初始化和复位 ......................................................................................... 436
16.3.2 字符格式 ......................................................................................................... 437
16.3.3 主控模式 ......................................................................................................... 437
16.3.4 受控模式 ......................................................................................................... 438
16.3.5 SPI 使能 ......................................................................................................... 439
16.3.6 穿行时钟控制 ................................................................................................... 439
16.3.7 使用 SPI 低功耗模式 ........................................................................................... 440
16.3.8 SPI 中断 ......................................................................................................... 440
16.4 USCI 寄存器:SPI 模式 ................................................................................................. 442
16.4.1 UCAxCTL0USCI_Ax 控制寄存器 0UCBxCTL0USCI_Bx 控制寄存器 0......................... 443
16.4.2 UCAxCTL1USCI_Ax 控制寄存器 1UCBxCTL1USCI_Bx 控制寄存器 1......................... 443
16.4.3 UCAxBR0USCI_Ax 比特率控制寄存器 0UCBxBR0USCI_Bx 比特率控制寄存器 0........... 444
16.4.4 UCAxBR1USCI_Ax 比特率控制寄存器 1UCBxBR1USCI_Bx 比特率控制寄存器 1........... 444
16.4.5 UCAxSTATUSCI_Ax 状态寄存器,UCBxSTATUSCI_Bx 状态寄存器 ............................. 444
16.4.6 UCAxRXBUFUSCI_Ax 接收缓冲寄存器,UCBxRXBUFUSCI_Bx 接收缓冲寄存器 ............. 444
16.4.7 UCAxTXBUFUSCI_Ax 发送缓冲寄存器,UCBxTXBUFUSCI_Bx 发送缓冲寄存器 .............. 445
16.4.8 IE2,中断使能寄存器 2....................................................................................... 445
16.4.9 IFG2,中断标志寄存器 2..................................................................................... 445
16.4.10 UC1IEUSCI_A1/USCI_B1 中断使能寄存器 ............................................................ 446
16.4.11 UC1IFGUSCI_A1/USCI_B1 中断标志寄存器 .......................................................... 446
17 通用用串行通通信接口口,I2C模式................................................................................................ 447
17.1 USCI 概述 ................................................................................................................. 448
17.2 USCI 介绍:I2C模式 .................................................................................................... 448
17.3 USCI 运行:I2C模式 .................................................................................................... 449
17.3.1 USCI 初始化和复位 ............................................................................................ 450
17.3.2 I2C串行数据 .................................................................................................... 450
17.3.3 I2C寻址模式 .................................................................................................... 451
17.3.4 I2C模块的运行模式 ............................................................................................ 452
17.3.5 I2C时钟的发生与同步 ......................................................................................... 462
17.3.6 在处于低功耗模式中的 I2C模式中使用 USCI 模块 ........................................................ 463
17.3.7 I2C模式下的 USCI 中断 ....................................................................................... 463
17.4 USCI 寄存器:I2C模式 .................................................................................................. 465
17.4.1 UCBxCTL0USCI_Bx 控制寄存器 0....................................................................... 466
17.4.2 UCBxCTL1USCI_Bx 控制寄存器 1....................................................................... 467
17.4.3 UCBxBR0, USCI_Bx 波特率控制寄存器 0.................................................................. 467
17.4.4 UCBxBR1, USCI_Bx 波特率控制寄存器 1.................................................................. 467
17.4.5 UCBxSTATUSCI_Bx 状态寄存器 ......................................................................... 468
17.4.6 UCBxRXBUFUSCI_Bx 接收缓冲寄存器 .................................................................. 468
17.4.7 UCBxTXBUFUSCI_Bx 发送缓冲寄存器 .................................................................. 468
17.4.8 UCBxI2COAUSCIBx I2C本地地址寄存器 ................................................................ 469
17.4.9 UCBxI2CSAUSCI_Bx I2C从器件地址寄存器 ............................................................ 469
17.4.10 UCBxI2CIEUSCI_Bx I2C中断使能寄存器 .............................................................. 469
17.4.11 IE2,中断使能寄存器 2...................................................................................... 470
17.4.12 IFG2,中断标志寄存器 2.................................................................................... 470
17.4.13 UC1IEUSCI_B1 中断使能寄存器 ........................................................................ 470
17.4.14 UC1IFGUSCI_B1 中断标志寄存器 ...................................................................... 471
7
ZHCU032IDecember 2004Revised January 2012
内容
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
18 USART 外设设接口,USART .......................................................................................... 472
18.1 USART 介绍:USART 模式 ............................................................................................ 473
18.2 USART 运行:UART 模式 .............................................................................................. 474
18.2.1 USART 初始化和复位 ......................................................................................... 474
18.2.2 字符格式 ......................................................................................................... 475
18.2.3 异步通信格式 ................................................................................................... 475
18.2.4 USART 接收使能 ............................................................................................... 478
18.2.5 USART 发送使能 ............................................................................................... 478
18.2.6 USART 波特率生成 ............................................................................................ 479
18.2.7 USART 中断 .................................................................................................... 485
18.3 USART 寄存器:UART 模式 ........................................................................................... 488
18.3.1 UxCTLUSART 控制寄存器 ................................................................................. 489
18.3.2 UxTCTLUSART 发送控制寄存器 .......................................................................... 490
18.3.3 UxRCTLUSART 接收控制寄存器 .......................................................................... 491
18.3.4 UxBR0USART 波特率控制寄存器 0...................................................................... 491
18.3.5 UxBR1USART 波特率控制寄存器 1...................................................................... 491
18.3.6 UxMCTLUSART 调制控制寄存器 ......................................................................... 492
18.3.7 UxRXBUFUSART 接收缓冲寄存器 ....................................................................... 492
18.3.8 UxTXBUFUSART 发送缓冲寄存器 ........................................................................ 492
18.3.9 ME1,模块使能寄存器 1...................................................................................... 492
18.3.10 ME2,模块使能寄存器 2.................................................................................... 492
18.3.11 IE1,中断使能寄存器 1...................................................................................... 493
18.3.12 IE2,中断使能寄存器 2...................................................................................... 493
18.3.13 IFG1,中断标志寄存器 1.................................................................................... 493
18.3.14 IFG2,中断标志寄存器 2.................................................................................... 494
19 USART 外设设接口,SPI 式。............................................................................................. 495
19.1 USART 介绍:SPI 模式 ................................................................................................. 496
19.2 USART 操作:SPI 模式 ................................................................................................. 498
19.2.1 USART 的初始化和复位 ....................................................................................... 498
19.2.2 主控模式 ......................................................................................................... 499
19.2.3 受控模式 ......................................................................................................... 499
19.2.4 SPI 使能 ......................................................................................................... 500
19.2.5 串行时钟控制 ................................................................................................... 501
19.2.6 SPI 中断 ......................................................................................................... 503
19.3 USART 寄存器:SPI 模式 .............................................................................................. 505
19.3.1 UxCTLUSART 控制寄存器 ................................................................................. 506
19.3.2 UxTCTLUSART 发送控制寄存器 .......................................................................... 506
19.3.3 UxRCTLUSART 接收控制寄存器 .......................................................................... 507
19.3.4 UxBR0USART 波特率控制寄存器 0...................................................................... 507
19.3.5 UxBR1USART 波特率控制寄存器 1...................................................................... 507
19.3.6 UxMCTLUSART 调制控制寄存器 ......................................................................... 507
19.3.7 UxRXBUFUSART 接收缓冲寄存器 ....................................................................... 507
19.3.8 UxTXBUFUSART 发送缓冲寄存器 ........................................................................ 508
19.3.9 ME1,模块使能寄存器 1...................................................................................... 508
19.3.10 ME2,模块使能寄存器 2.................................................................................... 508
19.3.11 IE1,中断使能寄存器 1...................................................................................... 508
19.3.12 IE2,中断使能寄存器 2...................................................................................... 509
19.3.13 IFG1,中断标志寄存器 1.................................................................................... 509
19.3.14 IFG2,中断标志寄存器 2.................................................................................... 509
20 OA ................................................................................................................................. 510
20.1 OA 介绍 ................................................................................................................... 511
20.2 OA 操作 ................................................................................................................... 512
8
内容
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
20.2.1 OA 放大器 ....................................................................................................... 513
20.2.2 OA 输入 ......................................................................................................... 513
20.2.3 OA 输出和反馈路线 ............................................................................................ 513
20.2.4 OA 配置 ......................................................................................................... 513
20.3 OA 寄存器 ................................................................................................................. 519
20.3.1 OAxCTL0,运算放大器控制寄存器 0........................................................................ 520
20.3.2 OAxCTL1,运算放大器控制寄存器 1........................................................................ 521
21 比较较器_A+ (Comparator_A+) .............................................................................................. 522
21.1 比较器_A+ 介绍 .......................................................................................................... 523
21.2 比较器_A+ 的操作 ........................................................................................................ 524
21.2.1 比较器 ........................................................................................................... 524
21.2.2 输入模拟开关 ................................................................................................... 524
21.2.3 输入短路开关 ................................................................................................... 525
21.2.4 输出滤波器 ...................................................................................................... 525
21.2.5 基准电压发生器 ................................................................................................ 526
21.2.6 比较器A+,端口禁用寄存器CAPD ........................................................................... 526
21.2.7 比较器_A+ 的中断 .............................................................................................. 527
21.2.8 比较器_A+ 用于测量电阻元件 ................................................................................ 527
21.3 比较器_A+ 寄存器 ........................................................................................................ 529
21.3.1 CACTL1,比较器_A+ 控制寄存器1.......................................................................... 530
21.3.2 CACTL2,比较器_A+,控制寄存器 ......................................................................... 531
21.3.3 CAPD,比较器_A+,端口禁用寄存器 ....................................................................... 531
22 ADC10 ............................................................................................................................ 532
22.1 ADC10 介绍 ............................................................................................................... 533
22.2 ADC10 的运行 ............................................................................................................ 535
22.2.1 10 ADC 内核 ................................................................................................ 535
22.2.2 ADC10 输入和多路器 .......................................................................................... 535
22.2.3 基准电压产生器 ................................................................................................ 536
22.2.4 自动关断 ......................................................................................................... 536
22.2.5 采样和转换时序 ................................................................................................ 536
22.2.6 转换时间 ......................................................................................................... 538
22.2.7 ADC10 数据传输控制器 ....................................................................................... 543
22.2.8 使用集成温度传感器 ........................................................................................... 548
22.2.9 ADC10 接地和噪声考虑 ....................................................................................... 549
22.2.10 ADC10 中断 ................................................................................................... 550
22.3 ADC10 寄存器 ............................................................................................................ 551
22.3.1 ADC10CTL0ADC10 控制寄存器0......................................................................... 552
22.3.2 ADC10CTL1ADC10 控制寄存器1......................................................................... 554
22.3.3 ADC10AE0,模拟(输入)使能控制寄存器 0.............................................................. 555
22.3.4 ADC10AE1,模拟(输入)使能控制寄存器 1(仅适用于 MSP430F22xx........................... 555
22.3.5 ADC10MEM,转换存储寄存器,二进制格式 ............................................................... 555
22.3.6 ADC10MEM,转换存储寄存器,2补码格式 ............................................................... 556
22.3.7 ADC10DTC0,数据传输控制寄存器 0...................................................................... 556
22.3.8 ADC10DTC1,数据传输控制寄存器 1...................................................................... 556
22.3.9 ADC10SA,数据传输的开始地址寄存器 .................................................................... 557
23 ADC12 ............................................................................................................................ 558
23.1 ADC12 介绍 ............................................................................................................... 559
23.2 ADC12 的操作 ............................................................................................................ 561
23.2.1 12 ADC 内核 ................................................................................................ 561
23.2.2 ADC12 输入和多路复用器 .................................................................................... 561
23.2.3 基准电压产生器 ................................................................................................ 562
23.2.4 采样和转换时序 ................................................................................................ 562
23.2.5 转换存储器 ...................................................................................................... 564
9
ZHCU032IDecember 2004Revised January 2012
内容
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
23.2.6 ADC12转换模式 ................................................................................................ 564
23.2.7 使用集成温度传感器 ........................................................................................... 569
23.2.8 ADC12 接地和噪声考虑 ....................................................................................... 570
23.2.9 ADC12 中断 .................................................................................................... 571
23.3 ADC12 寄存器 ............................................................................................................ 573
23.3.1 ADC12CTL0ADC12 控制寄存器 0........................................................................ 574
23.3.2 ADC12CTL1ADC12 控制寄存器 1........................................................................ 576
23.3.3 ADC12MEMxADC12 转换存储器寄存器 ................................................................. 577
23.3.4 ADC12MCTLxADC12转换存储控制寄存器 .............................................................. 577
23.3.5 ADC12IEADC12 中断使能寄存器 ......................................................................... 578
23.3.6 ADC12IFGADC12 中断标志寄存器 ....................................................................... 578
23.3.7 ADC12IVADC12 中断向量寄存器 ......................................................................... 579
24 TLV 结构......................................................................................................................... 580
24.1 TLV 介绍 .................................................................................................................. 581
24.2 支持的标签 ................................................................................................................ 581
24.2.1 DCO 校准 TLV 结构 ........................................................................................... 582
24.2.2 TAG_ADC12_1 校准 TLV结构 ............................................................................... 583
24.3 检查段 A的完整性 ....................................................................................................... 585
24.4 分解段 ATLV 结构 ................................................................................................... 585
25 DAC12 ............................................................................................................................ 586
25.1 DAC12 介绍 ............................................................................................................... 587
25.2 DAC12 运行 ............................................................................................................... 589
25.2.1 DAC12 内核 .................................................................................................... 589
25.2.2 DAC12 基准 .................................................................................................... 589
25.2.3 更新 DAC12 电压输出 ......................................................................................... 589
25.2.4 DAC12_xDAT 数据格式 ....................................................................................... 590
25.2.5 DAC12 输出放大器的失调校准 ............................................................................... 590
25.2.6 编组多个 DAC12 模块 ......................................................................................... 591
25.2.7 DAC12 中断 .................................................................................................... 592
25.3 DAC12 寄存器 ............................................................................................................ 593
25.3.1 DAC12_xCTLDAC12 控制寄存器 ......................................................................... 594
25.3.2 DAC12_xDATDAC12 数据寄存器 ......................................................................... 595
26 SD16_A ........................................................................................................................... 596
26.1 SD16_A 介绍 ............................................................................................................. 597
26.2 SD16_A 操作 ............................................................................................................. 599
26.2.1 ADC 芯片 ....................................................................................................... 599
26.2.2 模拟输入范围和 PGA .......................................................................................... 599
26.2.3 基准电压发生器 ................................................................................................ 599
26.2.4 自动断电 ......................................................................................................... 599
26.2.5 模拟输入对选择 ................................................................................................ 599
26.2.6 模拟输入特性 ................................................................................................... 600
26.2.7 数字滤波器 ...................................................................................................... 601
26.2.8 转换存储寄存器:SD16MEM0 ............................................................................... 605
26.2.9 转换时间 ......................................................................................................... 606
26.2.10 使用集成的温度转换器。 .................................................................................... 606
26.2.11 中断处理 ....................................................................................................... 607
26.3 SD16_A 寄存器 ........................................................................................................... 609
26.3.1 SD16CTLSD16_A 控制寄存器 ............................................................................ 610
26.3.2 SD16CCTL0, SD16_A 控制寄存器 0........................................................................ 611
26.3.3 SD16INCTL0SD16_A 输入控制寄存器 ................................................................... 612
26.3.4 SD16MEM0SD16_A 转换存储寄存器 .................................................................... 613
26.3.5 SD16AESD16_A 模拟输入使能寄存器 ................................................................... 613
10
内容
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
26.3.6 SD16IVSD16_A 中断向量寄存器 .......................................................................... 613
27 SD24_A ........................................................................................................................... 614
27.1 SD24_A 介绍 ............................................................................................................. 615
27.2 SD24_A 的操作 ........................................................................................................... 617
27.2.1 ADC 芯片 ....................................................................................................... 617
27.2.2 模拟输入范围和可编程增益放大器 (PGA) ................................................................... 617
27.2.3 基准电压发电机 ................................................................................................ 617
27.2.4 自动断电 ......................................................................................................... 617
27.2.5 模拟输入对的选择 .............................................................................................. 617
27.2.6 模拟输入特性 ................................................................................................... 618
27.2.7 数字滤波器 ...................................................................................................... 619
27.2.8 转换存储寄存器:SD24MEMx ............................................................................... 623
27.2.9 转换时间 ......................................................................................................... 624
27.2.10 使用预置的转换操作 .......................................................................................... 626
27.2.11 使用集成温度传感器 .......................................................................................... 628
27.2.12 中断处理 ....................................................................................................... 629
27.3 SD24_A 寄存器 ........................................................................................................... 632
27.3.1 SD24CTLSD24_A 控制寄存器 ............................................................................ 633
27.3.2 SD24CCTLxSD24_A 通道 x控制寄存器 ................................................................. 634
27.3.3 SD24INCTLxSD24_A 通道 x输入控制寄存器 ........................................................... 635
27.3.4 SD24MEMxSD24_A 通道 x的转换存储寄存器 ......................................................... 636
27.3.5 SD24PRExSD24_A 通道 x的预置寄存器 ................................................................ 636
27.3.6 SD24AESD24_A 的模拟输入使能寄存器 ................................................................. 636
27.3.7 SD24IVSD24_A 中断向量寄存器 .......................................................................... 637
28 内嵌嵌式仿仿真真模(EEM) ....................................................................................................... 638
28.1 EEM 说明 ................................................................................................................. 639
28.2 EEM 构建模块 ............................................................................................................ 641
28.2.1 触发器 ........................................................................................................... 641
28.2.2 触发序列发生器 ................................................................................................ 641
28.2.3 状态储存(内部跟踪缓冲器) ................................................................................ 641
28.2.4 时钟控制 ......................................................................................................... 641
28.3 嵌入式仿真模块的配置 .................................................................................................. 642
修订订历史记记录............................................................................................................................. 643
11
ZHCU032IDecember 2004Revised January 2012
内容
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
图片片列
1-1. MSP430 架构 .............................................................................................................. 24
1-2. 内存映射 .................................................................................................................... 25
1-3. 位、字节和字位于字节格式的存储器内 ................................................................................. 26
2-1. 加电复位和加电清零电路原理图 ......................................................................................... 29
2-2. 欠压时序 .................................................................................................................... 30
2-3. 中断优先级 ................................................................................................................. 31
2-4. (不)可屏蔽中断源的方框图 ............................................................................................ 32
2-5. NMI 中断处理器............................................................................................................ 34
2-6. 中断处理 .................................................................................................................... 35
2-7. 从中断返回 ................................................................................................................. 36
2-8. 'F21x1 器件的典型流耗与运行模式间的关系 ........................................................................... 38
2-9. 针对基本时钟系统的运行模式 ............................................................................................ 39
3-1. CPU 方框图 ................................................................................................................ 44
3-2. 程序矜计数器............................................................................................................... 44
3-3. 堆栈计数器 ................................................................................................................. 45
3-4. 堆栈用法 .................................................................................................................... 45
3-5. PUSH SP-POP SP序列................................................................................................... 45
3-6. 状态寄存器位............................................................................................................... 46
3-7. 寄存器字节/字节寄存器运行 .............................................................................................. 47
3-8. 操作数取操作............................................................................................................... 54
3-9. 双操作数指令格式 ......................................................................................................... 57
3-10. 单操作数指令格式 ......................................................................................................... 58
3-11. 跳转指令格式............................................................................................................... 59
3-12. 内核指令映射............................................................................................................... 62
3-13. 递减重叠 .................................................................................................................... 80
3-14. 主程序中断 ................................................................................................................ 100
3-15. 目的操作数-算术左移 .................................................................................................... 101
3-16. 目的操作数-进位左移 .................................................................................................... 102
3-17. 目的操作数-算术右移 .................................................................................................... 103
3-18. 目的操作数-进位右移 .................................................................................................... 104
3-19. 目的操作数-字节交换 .................................................................................................... 111
3-20. 目的操作数-符号扩展 .................................................................................................... 112
4-1. MSP430X CPU 方框图 .................................................................................................. 117
4-2. 存储在堆栈上用于中断的 PC ........................................................................................... 118
4-3. 程序计数器 ................................................................................................................ 119
4-4. 针对 CALLA PC 堆栈存储 ........................................................................................... 119
4-5. 堆栈指针................................................................................................................... 120
4-6. 堆栈用法................................................................................................................... 120
4-7. 堆栈上的 PUSH.A 格式.................................................................................................. 120
4-8. PUSH SPPOP SP 序列............................................................................................... 120
4-9. SR ...................................................................................................................... 121
4-10. 寄存器-字节/字节-寄存器操作........................................................................................... 123
4-11. 寄存器-字操作 ............................................................................................................ 123
4-12. -寄存器操作 ............................................................................................................ 124
4-13. 寄存器-地址字操作 ....................................................................................................... 124
4-14. 地址--寄存器操作 ...................................................................................................... 125
4-15. 64KB 中的已索引模式................................................................................................ 127
12
图片列表
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
4-16. 上部存储器中的已索引模式 ............................................................................................. 128
4-17. 针对已索引模式的上溢和下溢 .......................................................................................... 129
4-18. 64KB 中的符号模式运行那个........................................................................................ 132
4-19. 上部存储器内的符号模式运行 .......................................................................................... 133
4-20. 针对符号模式的上溢和下溢 ............................................................................................. 134
4-21. MSP430 双操作数指令格式............................................................................................. 142
4-22. MSP430 单操作数指令 .................................................................................................. 143
4-23. 条件跳转指令的格式 ..................................................................................................... 144
4-24. 针对寄存器模式的扩展字................................................................................................ 147
4-25. 针对非寄存器模式的扩展位 ............................................................................................. 149
4-26. 针对扩展寄存器/寄存器指令的示例 .................................................................................... 149
4-27. 针对扩展立即/已索引指令的示例 ....................................................................................... 150
4-28. 扩展格式 I指令格式...................................................................................................... 152
4-29. 存储器中的 20 位地址 ................................................................................................... 152
4-30. 扩展格式 II 指令格式..................................................................................................... 153
4-31. PUSHM/POPM 指令格式 ............................................................................................... 154
4-32. RRCMRRAMRRUM RLAM 指令格式......................................................................... 154
4-33. BRA 指令格式 ............................................................................................................ 154
4-34. CALLA 指令格式 ......................................................................................................... 154
4-35. 递减交迭................................................................................................................... 180
4-36. 一个 RET 指令之后的堆栈 .............................................................................................. 199
4-37. 目的操作数-算术左移位.................................................................................................. 201
4-38. 目的操作数-进位左移位.................................................................................................. 202
4-39. 算术右旋 RRA.B RRA.W ............................................................................................ 203
4-40. 通过进位 RRC.B RRC.W 右旋...................................................................................... 204
4-41. 交换存储器中的字节 ..................................................................................................... 211
4-42. 交换寄存器中的字节 ..................................................................................................... 211
4-43. 用算术的方法左移 - RLAM[.W] RLAM.A........................................................................... 237
4-44. 目的操作数-算术左移位.................................................................................................. 238
4-45. 目的操作数-进位左移位.................................................................................................. 239
4-46. 算术右旋 RRAM[.W] RRAM.A ...................................................................................... 240
4-47. 算术右旋 RRAX (.B.A) - 寄存器模式 ................................................................................ 242
4-48. 算术右旋 RRAX (.B.A) - 非寄存器模式 ............................................................................. 242
4-49. 通过进位 RRCM[.W] RRCM.A 右旋................................................................................ 243
4-50. 通过进位 RRCX (.B.A) 右旋-寄存器模式 ........................................................................... 245
4-51. 通过进位 RRCX (.B.A) 右旋-非寄存器模式......................................................................... 245
4-52. 右旋无符号 RRUM[.W] RRUM.A ................................................................................... 246
4-53. 右旋无符号 RRUN (.B.A) - 寄存器模式 ............................................................................. 247
4-54. 交换字节 SWPBX.A 寄存器模式 ....................................................................................... 251
4-55. 在存储器中交换 SWPBX.A 字节 ....................................................................................... 251
4-56. 交换字节 SWPBX[.W] 寄存器模式 ..................................................................................... 252
4-57. 在存储器中交换 SWPBX[.W] 字节 ..................................................................................... 252
4-58. 符号扩展 SXTX.A ........................................................................................................ 253
4-59. 符号扩展 SXTX[.W] ...................................................................................................... 253
5-1. 基本时钟模块+框图 MSP430F2xx ................................................................................. 273
5-2. 基本时钟模块+框图 — MSP430AFE2xx ............................................................................. 274
5-3. LFXT1 振荡器的关闭信号 ............................................................................................... 275
5-4. XT2 振荡器的关闭信号 .................................................................................................. 276
5-5. DCO 的开/关控制 ........................................................................................................ 276
13
ZHCU032IDecember 2004Revised January 2012
图片列表
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
5-6. 典型的 DCOX 范围和 RSELx 的阶跃.................................................................................. 277
5-7. 调制器模式 ................................................................................................................ 278
5-8. 振荡器故障逻辑........................................................................................................... 279
5-9. MCLK DCOCLK 切换至 LFXT1CLK............................................................................ 279
6-1. CAN 控制器结构图....................................................................................................... 287
6-2. DMA 寻址模式 ............................................................................................................ 288
6-3. DMA 单次传输的状态图 ................................................................................................. 290
6-4. DMA 块传输的状态图.................................................................................................... 292
6-5. DMA 突发块传输的状态图 .............................................................................................. 294
7-1. 闪存存储器模块方框图 .................................................................................................. 307
7-2. 闪存存储器段,32KB 示例.............................................................................................. 308
7-3. 闪存存储器时序发生器方框图 .......................................................................................... 309
7-4. 擦除周期时序 ............................................................................................................. 310
7-5. 闪存存储器内的擦除周期................................................................................................ 311
7-6. 来自 RAM 内的擦除周期 ................................................................................................ 312
7-7. 字节/字写入时序.......................................................................................................... 313
7-8. 从闪存发起一个字节/字写入 ............................................................................................ 314
7-9. RAM 中发起一个字节/字写入 ....................................................................................... 315
7-10. 块写入周期时序........................................................................................................... 316
7-11. 块写入流程 ................................................................................................................ 317
7-12. 用户开发的编程解决方案................................................................................................ 320
8-1. 使用引脚振荡器的示例电路和配置 ..................................................................................... 328
8-2. 典型引脚振荡频率 ........................................................................................................ 329
9-1. SVS 结构图 ............................................................................................................... 334
9-2. SVS 运行水平和掉电/复位电路......................................................................................... 336
10-1. 安全装置定时器+方框图 ................................................................................................ 341
11-1. 硬件乘法器方框图 ........................................................................................................ 348
12-1. 定时器_A 的方框图 ...................................................................................................... 355
12-2. 上数模式................................................................................................................... 356
12-3. 上数模式标志设置 ........................................................................................................ 357
12-4. 连续模式................................................................................................................... 357
12-5. 连续模式标志置位 ........................................................................................................ 357
12-6. 连续模式下的时间间隔 .................................................................................................. 358
12-7. 上数/下数模式............................................................................................................. 358
12-8. 上数/下数模式标志置位.................................................................................................. 359
12-9. 在上数/下数模式中的输出单元.......................................................................................... 359
12-10. 捕捉信号 (SCS = 1)...................................................................................................... 360
12-11. 捕捉周期................................................................................................................... 361
12-12. 输出举例在单调增加模式中的定时器................................................................................ 362
12-13. 输出举例在连续模式中的定时器 ..................................................................................... 363
12-14. 输出举例在上数/下数模式中的定时器 ............................................................................... 364
12-15. 捕捉/比较 TACCR0 中断标志........................................................................................... 365
13-1. 定时器_B 的方框图 ...................................................................................................... 374
13-2. 增模式 ..................................................................................................................... 376
13-3. 增模式标志的置位 ........................................................................................................ 376
13-4. 连续模式................................................................................................................... 376
13-5. 连续模式标志的置位 ..................................................................................................... 377
13-6. 连续模式时间间隔 ........................................................................................................ 377
13-7. /减模式 .................................................................................................................. 378
14
图片列表
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
13-8. /模式标志的置位 ....................................................................................................... 378
13-9. /减模式的输出单元 .................................................................................................... 379
13-10. 捕获信号 (SCS = 1)...................................................................................................... 379
13-11. 捕获循环................................................................................................................... 380
13-12. 输出示例,定时器处于增模式 .......................................................................................... 383
13-13. 输出示例,定时器处于连续模式........................................................................................ 384
13-14. 输出示例,定时器处于增/减模式 ....................................................................................... 385
13-15. 捕捉/比较 TBCCR0 中断标志........................................................................................... 386
14-1. USI 方框图:SPI 模式................................................................................................... 395
14-2. USI 方框图:I2C模式.................................................................................................... 396
14-3. SPI 时序 ................................................................................................................... 398
14-4. 针对 7SPI 数据的数据调整 ......................................................................................... 399
15-1. USCI_Ax 框图:UART 模式 (UCSYNC=0)........................................................................... 410
15-2. 字符格式................................................................................................................... 411
15-3. 空闲线格式 ................................................................................................................ 412
15-4. 地址位多处理器格式 ..................................................................................................... 413
15-5. 自动波特率监测-暂停/同步序列......................................................................................... 414
15-6. 自动波特率监测-同步域.................................................................................................. 414
15-7. UART IrDA 数据格式的关系......................................................................................... 415
15-8. 去毛刺脉冲抑制,USCI 接收未开始 ................................................................................... 417
15-9. 毛刺脉冲抑制,USCI 启动 .............................................................................................. 417
15-10. BITCLK 波特率用 UCOS16=0 定时.................................................................................... 418
15-11. 接收错误................................................................................................................... 421
16-1. USCI 方框图: SPI 模式 .................................................................................................. 435
16-2. USCI 主控模式和外部受控模式 ........................................................................................ 437
16-3. USCI 从器件和外部主器件 ............................................................................................. 438
16-4. UCMSB=1 时的 USCI SPI 时序........................................................................................ 440
17-1. USCI 方框图:I2C模式.................................................................................................. 449
17-2. I2C总线连接框图 ......................................................................................................... 450
17-3. I2C模块数据传输 ......................................................................................................... 451
17-4. I2C总线上的位传输................................................................................................... 451
17-5. I2C模块 7位寻址格式 .................................................................................................. 451
17-6. I2C模块 10 位寻址格式.................................................................................................. 451
17-7. I2C模块重复起始条件的寻址格式 ...................................................................................... 452
17-8. I2C时序线路图例 ......................................................................................................... 452
17-9. I2C受控发送器模式 ...................................................................................................... 453
17-10. I2C受控接收器模式 ...................................................................................................... 455
17-11. I2C从器件 10 位寻址模式 ............................................................................................... 456
17-12. I2C主控发送器模式 ...................................................................................................... 458
17-13. I2C主控接收器模式 ...................................................................................................... 460
17-14. I2C主器件 10 位寻址模式 ............................................................................................... 461
17-15. 在两个主控发送器之间的仲裁 .......................................................................................... 461
17-16. 在仲裁期间两个 I2C时钟发生器的同步 ................................................................................ 462
18-1. USART 方框图:UART 模式 ........................................................................................... 474
18-2. 字符格式................................................................................................................... 475
18-3. 空闲线路格式 ............................................................................................................. 476
18-4. 地址位多处理器格式 ..................................................................................................... 477
18-5. 接收器使能状态图 ........................................................................................................ 478
18-6. 发送器使能状态图 ........................................................................................................ 479
15
ZHCU032IDecember 2004Revised January 2012
图片列表
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
18-7. MSP430 波特率发生器 .................................................................................................. 479
18-8. BITCLK 波特率时序...................................................................................................... 480
18-9. 接收错误................................................................................................................... 483
18-10. 发送中断操作 ............................................................................................................. 485
18-11. 接收中断操作 ............................................................................................................. 485
18-12. 干扰抑制,USART 接收未开始......................................................................................... 487
18-13. 干扰抑制,USART 激活................................................................................................. 487
19-1. USART 方框图:SPI 模式 .............................................................................................. 497
19-2. USART 主器件和外部从器件 ........................................................................................... 499
19-3. USART 从器件和外部主器件 ........................................................................................... 500
19-4. 主器件发送使能状态结构图 ............................................................................................. 500
19-5. 从器件发送使能状态结构图 ............................................................................................. 501
19-6. SPI 主器件接收使能状态结构图 ........................................................................................ 501
19-7. SPI 从器件接收使能状态结构图 ........................................................................................ 501
19-8. SPI 波特率发生器 ........................................................................................................ 502
19-9. USART SPI 时序 ......................................................................................................... 502
19-10. 发送中断操作 ............................................................................................................. 503
19-11. 接收中断操作 ............................................................................................................. 504
19-12. 接收中断状态图........................................................................................................... 504
20-1. OA 方框图................................................................................................................. 512
20-2. 两运放差分放大器 ........................................................................................................ 515
20-3. 两运放差分放大器 OAx 的相互连接.................................................................................... 516
20-4. 三运放差分放大器 ........................................................................................................ 517
20-5. 三运放差分放大器 OAx 的相互连接.................................................................................... 518
21-1. 比较器_A+ 方框图........................................................................................................ 523
21-2. 比较器_A+ 的采样和保持 ............................................................................................... 525
21-3. 在比较器输出端的 RC 滤波器响应 ..................................................................................... 526
21-4. 一个 CMOS 反相器/缓冲器中的传输特性和功耗 ..................................................................... 526
21-5. 比较器_A+ 的中断系统 .................................................................................................. 527
21-6. 温度测量系统 ............................................................................................................. 527
21-7. 温度测量系统的时序 ..................................................................................................... 528
22-1. ADC10 方框图 ............................................................................................................ 534
22-2. 模拟多路复用器........................................................................................................... 535
22-3. 采样时序................................................................................................................... 537
22-4. 模拟输入等效电路 ........................................................................................................ 537
22-5. 单通道单次转换模式 ..................................................................................................... 539
22-6. 通道序列模式 ............................................................................................................. 540
22-7. 单通道重复模式........................................................................................................... 541
22-8. 通道的重复序列模式 ..................................................................................................... 542
22-9. 一个块传输 ................................................................................................................ 544
22-10. 在一个块传输模式中的数据传输控制状态图表 ....................................................................... 545
22-11. 两个块传输 ................................................................................................................ 546
22-12. 在两个块传输模式中的数据传输控制状态图表 ....................................................................... 547
22-13. 典型的温度传感器传输功能 ............................................................................................. 549
22-14. ADC10 接地和噪声考虑(内部VREF................................................................................. 549
22-15. ADC10 接地和噪声考虑(外部VREF................................................................................. 550
22-16. ADC10 中断系统 ......................................................................................................... 550
23-1. ADC12 方框图 ............................................................................................................ 560
23-2. 模拟多路复用器........................................................................................................... 561
16
图片列表
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
23-3. 扩展的采样模式........................................................................................................... 563
23-4. 脉冲采样模式 ............................................................................................................. 563
23-5. 模拟输入等效电路 ........................................................................................................ 564
23-6. 单通道,单次转换模式 .................................................................................................. 565
23-7. 通道序列模式 ............................................................................................................. 566
23-8. 单通道重复模式........................................................................................................... 567
23-9. 通道的重复序列模式 ..................................................................................................... 568
23-10. 典型的温度传感器传输功能 ............................................................................................. 570
23-11. ADC12 接地和噪声考虑 ................................................................................................. 571
25-1. DAC12 反馈图 ............................................................................................................ 588
25-2. 输出电压与 DAC12 数据,12 位,直节二进制模式。............................................................... 590
25-3. 输出电压与 DAC12 数据,12 位,2补码模式 ....................................................................... 590
25-4. 负偏移 ..................................................................................................................... 591
25-5. 正偏移 ..................................................................................................................... 591
25-6. DAC12 组更新举例,定时器_A3 触发器 ............................................................................. 592
26-1. SD16_A 方框图........................................................................................................... 598
26-2. 模拟输入等效电路 ........................................................................................................ 600
26-3. 梳状滤波器的频率响应,OSR = 32.................................................................................... 601
26-4. 数字滤波器阶跃响应和转换点 .......................................................................................... 602
26-5. 数字滤波器输出的使用位................................................................................................ 604
26-6. 输入电压与数字输出的关系 ............................................................................................. 605
26-7. 单通道操作 ................................................................................................................ 606
26-8. 典型的温度传感器传递函数 ............................................................................................. 607
27-1. SD24_A 模块框图........................................................................................................ 616
27-2. 模拟输入等效电路 ........................................................................................................ 618
27-3. OSR= 32 的梳状滤波器的频率响应.................................................................................... 620
27-4. 数字滤波器的阶跃响应和转换点........................................................................................ 620
27-5. 已使用位的数字滤波器输出 ............................................................................................. 622
27-6. 输入电压与数字输出 ..................................................................................................... 624
27-7. 单通道操作 -示例 ........................................................................................................ 625
27-8. 集合通道操作 -示例 ..................................................................................................... 626
27-9. 转换延迟预置-示例 ...................................................................................................... 627
27-10. 使用预置的转换的开始 -示例........................................................................................... 627
27-11. 预至和通道同步........................................................................................................... 628
27-12. 典型的温度传感器传输函数 ............................................................................................. 629
28-1. 嵌入式仿真模块 (EEM) 的大应用....................................................................................... 640
17
ZHCU032IDecember 2004Revised January 2012
图片列表
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
图表表列
1-1. MSP430x2xx 系列改进和增强 ........................................................................................... 27
2-1. 中断源、标志、和矢量 .................................................................................................... 37
2-2. 针对基本时钟系统的运行模式 ............................................................................................ 39
2-3. 未使用引脚的连接 ......................................................................................................... 41
3-1. 状态寄存器位的说明....................................................................................................... 46
3-2. 常量发生器 CG1CG2 的值............................................................................................. 46
3-3. /目的操作数寻址模式 ................................................................................................... 48
3-4. 寄存器模式说明 ............................................................................................................ 49
3-5. 已索引模式说明 ............................................................................................................ 50
3-6. 符号模式说明............................................................................................................... 51
3-7. 绝对模式说明............................................................................................................... 52
3-8. 间接模式说明............................................................................................................... 53
3-9. 间接自动递增模式说明 .................................................................................................... 54
3-10. 立即模式说明............................................................................................................... 55
3-11. 双操作数指令............................................................................................................... 57
3-12. 单操作数指令............................................................................................................... 58
3-13. 跳转指令 .................................................................................................................... 59
3-14. 中断和复位周期 ............................................................................................................ 60
3-15. 格式 II 指令周期和长度.................................................................................................... 60
3-16. 格式 I指令周期和长度 .................................................................................................... 61
3-17. MSP430 指令集............................................................................................................ 62
4-1. SR 位说明................................................................................................................. 121
4-2. 常数发生器 CG1CG2 的值 ........................................................................................... 122
4-3. /目的寻址 ............................................................................................................... 125
4-4. MSP430 双操作数指令 .................................................................................................. 143
4-5. MSP430 单操作数指令 .................................................................................................. 143
4-6. 条件跳转指令 ............................................................................................................. 144
4-7. 仿真指令................................................................................................................... 144
4-8. 中断、返回、和复位周期以及长度 ..................................................................................... 145
4-9. MSP430 格式 II 指令周期和长度 ....................................................................................... 145
4-10. MSP430 格式 I指令周期和长度........................................................................................ 146
4-11. 针对寄存器模式的扩展字的说明........................................................................................ 147
4-12. 针对非寄存器模式的扩展字的说明 ..................................................................................... 149
4-13. 扩展双操作数指令 ........................................................................................................ 151
4-14. 扩展单操作数指令 ........................................................................................................ 153
4-15. 扩展仿真指令 ............................................................................................................. 155
4-16. 寻址指令,在 20 位寄存器数据上运行 ................................................................................ 156
4-17. MSP430X 格式 II 指令周期和长度 ..................................................................................... 157
4-18. MSP430X 格式 I指令周期和长度 ...................................................................................... 158
4-19. 寻址指令周期和长度 ..................................................................................................... 159
4-20. MSP430X 的指令映射 ................................................................................................... 160
5-1. 基本时钟模块+寄存器.................................................................................................... 280
6-1. DMA 传输模式 ............................................................................................................ 289
6-2. DMA 触发操作 ............................................................................................................ 295
6-3. 通道的优先级 ............................................................................................................. 297
6-4. 最大单次传输 DMA 周期 ............................................................................................... 297
6-5. DMA 寄存器............................................................................................................... 300
18
图表列表
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
7-1. 擦除模式................................................................................................................... 310
7-2. 写入模式................................................................................................................... 313
7-3. BUSY=1 时的闪存访问 .................................................................................................. 318
7-4. 闪存存储器寄存器 ........................................................................................................ 321
8-1. PxSEL PxSEL2 ....................................................................................................... 327
8-2. 数字 I/O 寄存器........................................................................................................... 331
9-1. SVS 寄存器 ............................................................................................................... 337
10-1. 安全装置定时器+寄存器 ................................................................................................ 344
11-1. OP1 的各地址 ............................................................................................................ 349
11-2. RESHI 的内容 ............................................................................................................ 349
11-3. SUMEXT 的内容 ......................................................................................................... 349
11-4. 硬件乘法器寄存器 ........................................................................................................ 352
12-1. 定时器模式 ................................................................................................................ 356
12-2. 输出模式................................................................................................................... 362
12-3. 定时器_A3 寄存器........................................................................................................ 367
13-1. 定时器模式 ................................................................................................................ 375
13-2. TBCLx 加载事件.......................................................................................................... 381
13-3. 比较锁存器的操作模式 .................................................................................................. 381
13-4. 输出模式................................................................................................................... 382
13-5. 定时器_B 的寄存器 ...................................................................................................... 388
14-1. USI 寄存器 ................................................................................................................ 403
14-2. USI 寄存器的字访问.................................................................................................. 403
15-1. 接收错误条件 ............................................................................................................. 416
15-2. BITCLK 的调制模式...................................................................................................... 418
15-3. BITCLK 的调制模式...................................................................................................... 419
15-4. 常用波特率,设置,和错误,UCOS16= 0............................................................................ 422
15-5. 常用波特率,设置,和错误,UCOS16=1............................................................................. 423
15-6. USCI_A0 控制和状态寄存器............................................................................................ 426
15-7. USCI_A1 控制和状态寄存器............................................................................................ 426
16-1. UCxSTE 的操作 .......................................................................................................... 436
16-2. USCI_A0 USCI_B0 控制状态寄存器 ............................................................................... 442
16-3. USCI_A1 USCI_B1 控制状态寄存器 ............................................................................... 442
17-1. 状态更改中断标志 ........................................................................................................ 463
17-2. USCI_B0 控制和状态寄存器............................................................................................ 465
17-3. USCI_B1 控制和状态寄存器............................................................................................ 465
18-1. 接收错误条件 ............................................................................................................. 478
18-2. 常用的波特率,波特率数据和误差 ..................................................................................... 484
18-3. USART0 控制和状态寄存器 ............................................................................................ 488
18-4. USART1 控制和状态寄存器 ............................................................................................ 488
19-1. USART0 控制和状态寄存器 ............................................................................................ 505
19-2. USART1 控制和状态寄存器 ............................................................................................ 505
20-1. OA 输出配置 .............................................................................................................. 513
20-2. OA 模式选择 .............................................................................................................. 513
20-3. 两运放差分放大器控制寄存器设置 ..................................................................................... 515
20-4. 两运放差分放大器增益设置 ............................................................................................. 515
20-5. 三运放差分放大器控制寄存器设置 ..................................................................................... 517
20-6. 三运放差分放大器增益设置 ............................................................................................. 517
20-7. OA 寄存器................................................................................................................. 519
21-1. 比较器_A+ 寄存器........................................................................................................ 529
19
ZHCU032IDecember 2004Revised January 2012
图表列表
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
22-1. 转换模式概述 ............................................................................................................. 538
22-2. 最大 DTC 周期时间 ...................................................................................................... 548
22-3. ADC10 寄存器 ............................................................................................................ 551
23-1. 转换模式概述 ............................................................................................................. 564
23-2. ADC12 寄存器 ............................................................................................................ 573
24-1. 示例区段 A结构........................................................................................................... 581
24-2. 支持的标签(器件专用)................................................................................................ 582
24-3. DCO 校准数据(器件专用)............................................................................................ 582
24-4. TAG_ADC12_1 的校准数据(器件专用) ............................................................................ 583
25-1. DAC12 满量程范围(VREF=VeREF+VREF+........................................................................... 589
25-2. DAC12 寄存器 ............................................................................................................ 593
26-1. 高输入阻抗缓冲器 ........................................................................................................ 600
26-2. 采样电容................................................................................................................... 601
26-3. 数据格式................................................................................................................... 605
26-4. 转换模式汇总 ............................................................................................................. 606
26-5. SD16_A 寄存器........................................................................................................... 609
27-1. 高输入阻抗缓冲器 ........................................................................................................ 618
27-2. 采样电容................................................................................................................... 619
27-3. 数据格式................................................................................................................... 623
27-4. 转换模式总结 ............................................................................................................. 624
27-5. SD24_A 寄存器........................................................................................................... 632
28-1. 2xx 嵌入式仿真模块的配置 ............................................................................................. 642
20
图表列表
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Preface
ZHCU032IDecember 2004Revised January 2012
请先先阅
关于于本手册
本手册介绍了 MSP430x2xx 器件系列的模块和外设。 每个讨论都给出了一般意义上的模块或外设。 目前所
展示的并没有涵盖器件上所有模块或外围设备的所有特性和功能。 此外,在器件系列之间,在其严格的实施
中模块或外围设备可能会有所不同,或在一个单独的器件或器件系列上可能无法完全实施。
引脚功能,内部信号连接和操作参数都因器件不同而各异。 有关这些细节,用户应该查阅《器件专用数据
表》。
德州州仪(TI) 提供供的相关关文
有关相关文档,请参阅网站 http://www.ti.com/msp430
FCC 警告
本设备仅限于在实验室测试环境中使用。 其会产生、使用并能够发出射频能量,且尚未经过测试,不确定是
否符合 FCC 规则第 15 部分 J子部分有关计算设备的限制,该限制可用于针对射频干扰提供合理的保护。
在其它环境中操作该设备可能会对无线电通讯造成干扰,在此情况下,用户必须自行承担为更正此干扰而需
采取的任何相关措施的费用。
命名名规
程序示例,以一个特殊字体显示。
术语语表
ACLK 辅助时钟 请参阅
基本时钟模块
ADC 模数转换器
BOR 掉电复位 请参阅
系统复位,中断,和运行模式
引导加载程 引导加载程序 有关应用报告请参阅www.ti.com/msp430
(BSL)
CPU 中央处理单元 请参阅RISC 16
CPU
DAC 数模转换器
DCO 数字控制振荡器 请参阅
基本时钟模块
dst 目的 请参阅RISC 16
CPU
FLL 频率锁定环路 请参阅 MSP430x4xx 系列用户指南中的FLL+
GIE 通用中断使能 请参阅
系统复位,中断,和操作模式
INT (N/2) N/2 的整数部分
I/O 输入/输出 请参阅
数字
I/O
ISR 中断服务子程序
LSB 最低有效位
LSD 最低有效位数
LPM 低功耗模式 请参阅
系统复位,中断,和操作模式
MAB 存储器地址总线
MCLK 主时钟 请参阅
基本时钟模块
21
ZHCU032IDecember 2004Revised January 2012
请先阅读
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
寄存器位惯例
www.ti.com.cn
MDB 存储器数据总线
最高有效位 最高有效位
MSD 最高有效位数
NMI (不)可屏蔽中断 请参阅
系统复位,中断,和操作模式
PC 程序计数器 请参阅RISC 16
CPU
POR 加电复位 请参阅
系统复位,中断,和操作模式
PUC 加电清零 请参阅
系统复位,中断,和操作模式
RAM 随机存取存储器
SCG 系统时钟发生器 请参阅
系统复位,中断,和操作模式
SFR 特殊功能寄存器
SMCLK 子系统主时钟 请参阅
基础时钟模块
SP 堆栈指针 请参阅RISC 16
CPU
SR 状态寄存器 请参阅RISC 16
CPU
src 源 请参阅RISC 16
CPU
TOS 栈顶 请参阅RISC 16
CPU
WDT 安全装置定时器 请参阅
安全装置定时器
寄存存器位惯惯例
每个寄存器用一个键表示出每个单独的位的可用性,以及初始条件:
寄存存器位的的可用性性和初始始条
键 可可访访问
rw 读取/写入
r只读
r0 读取为 0
r1 读取为 1
w只写入
w0 写入为 0
w1 写入为 1
(w) 没有寄存器位被执行;在一个脉冲中写入一个 1结果。 寄存器
位始终读取为 0
h0 由硬件清零
h1 由硬件置位
-0,-1 PUC 后的条件
-(0),-(1) POR 后的条件
22
请先阅读
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Chapter 1
ZHCU032IDecember 2004Revised January 2012
简介
本章对 MSP430 的架构进行了说明。
Topic ........................................................................................................................... Page
1.1 架构................................................................................................................. 24
1.2 灵活活的时钟钟系.................................................................................................. 24
1.3 嵌入入式仿仿真........................................................................................................ 25
1.4 地址址空........................................................................................................... 25
1.5 MSP430x2xx 系列列改进和和增............................................................................... 27
23
ZHCU032IDecember 2004Revised January 2012
简介
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
ACLK
Bus
Conv.
Peripheral
MAB 16-Bit
MDB 16-Bit
MCLK
SMCLK
Clock
System
Peripheral Peripheral
Peripheral
Peripheral Peripheral Peripheral
Watchdog
RAM
Flash/
RISC CPU
16-Bit
JTAG/Debug
ACLK
SMCLK
ROM
MDB 8-Bit
JTAG
架构
www.ti.com.cn
1.1 架构
MSP430 包含一个 16 位精简指令集 (RISC) CPU,外设,和一个灵活的时钟系统,这些器件通过一个非纽
曼共同存储器地址总线 (MAB) 和一个存储器数据总线 (MDB) 互连(请见1-1)。 通过将一个最新 CPU
与模块化存储器映射模拟和数字外设搭配使用,MSP430 为要求严格的混合信号应用提供解决方案。
MSP430x2xx 系列的特性包括:
超低功耗架构延长了电池寿命
0.1µA RAM 保持模式
0.8µA 实时时钟模式
– 250μA/MIPS 工作模式
非常适合于精准测量的高性能模拟
针对测量电阻式元件的比较器栅极定时器
16 RISC CPU 可使用一小部分代码来实现全新应用。
大寄存器文件去除了工作文件瓶颈
紧凑内核设计减少了功耗和成本
针对最新高级编程进行了优化
只有 27 个内核指令和 7个寻址模式
扩展矢量化中断功能
系统内可编程闪存允许灵活代码变化、字段升级和数据记录
1-1. MSP430 架构
1.2 灵活活的时钟钟系
时钟系统专门为电池供电类应用而设计。 由一个普通 32kHz 时钟晶振来直接驱动一个低频辅助时钟
(ACLK)ACLK 可被用于一个后台实时时钟自我唤醒功能。 一个集成的高速数控振荡器 (DCO) 可为 CPU
和高度外设所使用的主控时钟 (MCLK) 供源。 通过设计,DCO 被激活并且 1MHz 时,稳定时间少于 2µs
基于 MSP430 的解决方案在极短突发中高效使用高性能 16 RISC CPU
24
简介
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
0FFE0h
Interrupt Vector Table
Flash/ROM
RAM
16-Bit Peripheral Modules
8-Bit Peripheral Modules
Special Function Registers
0FFFFh
0FFDFh
0200h
01FFh
0100h
0FFh
010h
0Fh
0h
Word/Byte
Word/Byte
Word
Byte
Byte
Word/Byte
10000h
Flash/ROM
1FFFFh
Access
Word/Byte
www.ti.com.cn
嵌入式仿真
低频辅助时钟=超低功耗待机模式
高速主控时钟=高性能信号处理
1.3 嵌入入式仿仿真
专用嵌入式仿真逻辑位于器件本身并且在无需额外系统资源的情况下可通过 JTAG 进行访问。
嵌入式仿真的优势包括:
支持非侵入式开发和全速执行时的调试,断点,和一个应用中的单步执行。
系统内开发具有与最终应用一样的特性。
混合信号完整性被保留并且不受线缆接口的影响。
1.4 地址址空
MSP430 非纽曼架构具有一个与特殊功能寄存器 (SFR),外设,RAM 和闪/ ROM 存储器共用的地址空
间,显示在1-2中。 特定存储器映射请参阅器件专用数据表。 代码访问一直在偶数地址上执行。 数据可
作为字节或字进行访问。
现在可寻址存储器空间为 128KB
1-2. 内存存映
1.4.1
/ ROM
闪存 / ROM 的开始地址取决于出现的 闪存 / ROM 的数量并且由器件改变。 针对具有少于 60KB 闪存 /
ROM 的器件,闪存 / ROM 的末尾地址为 0x0FFFF。闪存可被用于代码和数据。 字或字节表可在闪存 /
ROM 中存储和使用,而无需在使用前,将它们复制到 RAM
25
ZHCU032IDecember 2004Revised January 2012
简介
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
15
7
14
6
. . Bits . .
. . Bits . .
9
1
8
0
Byte
Byte
Word (High Byte)
Word (Low Byte)
xxxAh
xxx9h
xxx8h
xxx7h
xxx6h
xxx5h
xxx4h
xxx3h
地址空间
www.ti.com.cn
中断矢量表被映射到闪存 / ROM 地址空间的上部 16 字,在这里,具有最高优先级的中断矢量位于最高闪存
/ ROM 字地址(0x0FFFE)
1.4.2 RAM
RAM 0200h 开始。 RAM 的末尾地址取决于出现的 RAM 的数量并且由器件改变。 RAM 可被用于代码和
数据。
1.4.3
设模模块
外设模块被映射到地址空间。 从 0100 01FFh 的地址空间为 16 位外设模块所保留。 这些模块应该通过字
指令访问。 如果使用字节指令,那么只允许偶数地址,并且结果的高字节一直为 0
010h 0FFh 的地址空间为 8位外设模块所保留。 应该使用字节指令访问这些模块。 使用字指令的字
节读取访问导致高字节内的无法预计的数据。 如果字数据被写入一个字节模块,那么只有低字节被写入外设
寄存器,高字节被忽略。
1.4.4
特别别功功能能寄寄存存器
(SFR)
SFR 中配置 某些外设功能。 SFR 位于地址空间的较低16 个字节内,并且采用字节的形式。 只能使用字
节指令来访问 SFR。 适用的 SFR 位请参阅器件专用数据表。
1.4.5
内存存组组织
字节位于偶数或者奇数地址内。 字只位于1-3中显示的偶数地址内。 当使用字指令时,只可使用偶数地
址。 一个字的低字节一直为一个偶数地址。 高字节位于下一个奇数地址。 例如,如果一个数据字位于地址
xxx4h 上,那么那个数据字的低字节位于地址xxx4h 上,而那个字的高字节位于地址 xxx5h 上。
1-3. 位、、字节和和字位于于字节格格式的存存储器内
26
简介
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
MSP430x2xx
系列改进和增强
1.5 MSP430x2xx 系列列改改进进和和增增强
1-1突出强调了对 MSP430x2xx 系列的改进和增强。 在下面的章节中详细讨论了改进和增强,或者显示
在器件专用数据表中的改进的器件参数。
1-1. MSP430x2xx 系列列改进和和增
主题题 改改进和增增强
所有 MSP430x2xx 器件都包含掉电复位。
复位 PORIFG RSTIFG 标志已经被添加到 IFG1 中来表明复位的原因。
从地址范围 0x0000-0x01FF 内的一个取指令将复位器件。
所有 MSP430x2xx 器件集成了安全装置 Timer+ 模块 (WDT+)WDT+ 确保针对定时器的时
安全装置定时器 钟源永远不被禁用。
LFXT1 振荡器有处于 LF模式中的可选的负载电容器。
LFXT1 支持处于 LF 模式中的高达 16MHz 的晶振。
LFXT1 包括处于 LF 模式中的振荡器故障检测。
XIN XOUT 引脚是 20 28 引脚器件上的共用功能引脚。
基本时钟系统 在某些器件上不支持 DCO 的外部 ROSC特性。 在这个情况下,软件不应该设定 BCSCTL2
存器内的 LSB。详细信息请参阅器件专用数据表。
DCO 运行频率已经被大大提升。
DCO 温度稳定性已经被大大改进。
信息存储器有 4个每个大小为 64 字节的段。
ALOCKA 位单独锁定。
• LOCKA位保护所有信息不被批量擦除。
段擦除可由一个中断来中断。
闪存存储器 可使用一个中断来中止闪存升级。
闪存编程电压已经被降低到 2.2V
编程/擦除电压已经被减少。
时钟故障中止一个闪存升级。
所有端口有集成的上拉/下拉电阻器。
数字 I/O P2.6 P2.7 功能已经被添加到 20 28 引脚器件。这些是与 XIN XOUT 共用的功能。 如
果需要晶振操作,那么软件一定不能清除用于这些引脚的 P2SELx 位。
Comparator_A Comparator_A 已经用一个全新的输入复用器扩展了输入功能。
LPM3 3V 时的典型流耗已经被减少了大约 50%
低功率 DCO 启动时间已经被大大减少。
运行频率 3.3V 时的最大运行频率为 16MHz
一个不正确的密码会引起一个批量擦除。
引导加载程序 (BSL) • BSL进入序列更加稳健耐用以防止意外进入和擦除。
27
ZHCU032IDecember 2004Revised January 2012
简介
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Chapter 2
ZHCU032IDecember 2004Revised January 2012
系统统复位、、中断、、和运行行模
本章对 MSP430x2xx 系统复位、中断、和运行模式进行了说明
Topic ........................................................................................................................... Page
2.1 系统统复位和和初始化............................................................................................... 29
2.2 中断................................................................................................................. 31
2.3 操作作模........................................................................................................... 38
2.4 低功功耗应用用的原则............................................................................................... 40
2.5 未使使用引脚脚的连接............................................................................................... 41
28
系统复位、中断、和运行模式
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
POR
Latch
S
R
PUC
Latch
S
R
Resetwd1
Resetwd2
S
S
Delay
RST/NMI
WDTNMI
WDTTMSEL
WDTQn
WDTIFG
EQU
MCLK
POR
PUC
S
(from flash module)
KEYV
SVS_POR
0 V
VCC
0 V
Brownout
Reset
From watchdog timer peripheral module
Devices with SVS only
S
Invalid instruction fetch
~50 µs
www.ti.com.cn
系统复位和初始化
2.1 系统统复复位位和和初初始始化
显示在2-1中的系统复位电路提供一个加电复位 (POR) 和一个加电清零 (PUC) 信号。不同的事件触发这
些信号,而不同的初始条件的存储在取决于哪个信号被生成。
2-1. 加电电复位和和加电清清零电路路原理图
一个 POR 是一个器件复位。 只有下列事件生成一个 POR
为器件加电
当配置复位模式中时,RST/NMI 上的一个低电平信号
PORON=1 时,一个 SVS 低电平条件。
当一个 POR 被生成时,将一直生成一个 PUC,但是 PUC 不会生成一个 POR。以下事件触发一个 PUC
一个 POR 信号
只在安全装置模式中时的安全装置定时器过期
安全定时器安全密钥违反
一个闪存存储器安全密钥违反
0h 01FFh 外设地址范围内的一个 CPU 取指令
2.1.1
欠压压复复位
(BOR)
当一个电源电压被应用或者从 VCC端子上移除时,欠压复位电路检测低电源电压。 欠压复位电路通过在电源
被应用或移除时触发一个 POR 信号来复位器件。 运行电平显示在2-2中。
VCC超过VCC(启动)电平时,POR 信号被激活。 它在 VCC超过V(B_IT+)阀值前保持有效并且推迟 t(BOR)消失的时
间。延迟 t(BOR)可被延长以自使用一个缓慢的斜升VCC。 滞后 Vhys(B_IT-)确保电源电压必下降至低于 V(B_IT-)来从
欠压复位电路中生成其它 POR 信号。
29
ZHCU032IDecember 2004Revised January 2012
系统复位、中断、和运行模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
t(BOR)
VCC(start)
VCC
V(B_IT−)
Set Signal for
POR circuitry
V(B_IT+)
Vhys(B_IT−)
系统复位和初始化
www.ti.com.cn
2-2. 欠压压时
由于 V(B-IT-)电平远远高于 POR 电路的V最小值电平,BOR 为电源故障提供一个复位,在电源故障中 VCC有下
降到低于 V最小值。 参数请参阅器件专用数据表。
2.1.2
系统统复复位位后后的的器件初初始始条条件
一个 POR 之后,初始 MSP430 条件为:
RST/NMI 引脚在复位模式中被配置。
I/O 引脚被切换至
数字
I/O一章所描述的输入模式。
其它外设模块和寄存器被如本手册中它们各自章节所描述的那样被初始化。
状态寄存器 (SR) 被复位。
在安全装置模式中,安全装置定时器加电有效。
程序计数器 (PC) 被载入包含在复位矢量位置(0FFFEh) 内的地址。 如果复位矢量内容为 0FFFFh,为了
实现最小功耗,此器件将被禁用。
2.1.2.1 软件件初始化
一个系统复位后,用户软件必须针对应用要求初始化 MSP430。 必须进行以下操作:
初始化 SP,通常至 RAM 的顶部
将安全装置初始化为应用要求的那样。
将外设模块配置为应用要求的那样。
此外,安全装置定时器、振荡器故障、和闪存存储器标志可被评估以确定复位源。
30
系统复位、中断、和运行模式
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Bus
Grant
Module
1
Module
2
WDT
Timer
Module
m
Module
n
1 2 1 2 1 2 1 2 1
NMIRS
GIE
CPU
OSCfault
Reset/NMI
PUC
Circuit
PUC
WDT Security Key
Priority High Low
MAB − 5LSBs
GMIRS
Flash Security Key
Flash ACCV
www.ti.com.cn
中断
2.2 中断
中断优先级是固定的并且由2-3中显示的连接链中的模块安排来定义。 距离 CPU/NMIRS 越近的模块,其
优先级越高。中断优先级确定当多于一个中断在同时等待时,采用哪一个中断。
中断有三个类型:
系统复位
(不)可屏蔽 NMI
可屏蔽
2-3. 中断断优先级
2.2.1
(不不))可可屏屏蔽蔽中
(NMI)
(不)可屏蔽 NMI 中断不由通用中断使能位 (GIE) 屏蔽,但是由单独中断使能位 (NMIIEACCVIEOFIE)
启用。 当一个 NMI 中断被接受时,所有 NMI 中断使能位被自动复位。 程序在存储在(不)可屏蔽中断矢
量,0FFFCh 上开始执行。 用户软件必须设定中断所需的NMI 中断使能位来被再次启用。 针对 NMI 源的方
框图显示在2-4中。
可由三个源来生成一个(不)可屏蔽 NMI 中断:
配置在 NMI模式时的,RST/NMI上的边沿
一个振荡器故障出现
一个到闪存存储器的方位违反
31
ZHCU032IDecember 2004Revised January 2012
系统复位、中断、和运行模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Flash Module
KEYV
System Reset
Generator
BOR
POR PUC
WDTQn EQU
PUC
POR
PUC POR
NMIRS
Clear
SWDTIFG
IR
Q
WDTIE
Clear
IE1.0
PUC
POR
IRQA
WDTTMSEL
Counter
IFG1.0
WDTNMI
WDTTMSEL
WDTNMIES
Watchdog Timer Module
Clear
S
IFG1.4
PUC
Clear
IE1.4
PUC
NMIIFG
NMIIE
S
IFG1.1
Clear
IE1.1
PUC
OFIFG
OFIE
OSCFault
NMI_IRQA
IRQA: Interrupt Request Accepted
RST/NMI
S
FCTL3.2
Clear
IE1.5
ACCVIFG
ACCVIE
PUC
ACCV
WDT
S
IFG1.2
POR
PORIFG
Clear
S
IFG1.3
RSTIFG
POR
SVS_POR
中断
www.ti.com.cn
2-4. (不不)可屏屏蔽中断断源的方方框
32
系统复位、中断、和运行模式
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
中断
2.2.1.1 复位/ NMI 引脚
加电时,RST/NMI 引脚在复位模式中被配置。 RST/NMI 引脚的功能在安全装置控制寄存器WDTCTL 中被
选择。 如果RST/NMI 引脚被设定为复位功能,CPU RST/NMI 引脚被保持在低电平时被保持在复位状
态。 在输入改变为一个高电平状态后,CPU 在存储于复位矢量,0FFFEh 上执行程序,并且 RSTIFG 标志
被置位。
如果RST/NMI 引脚由用户软件配置为 NMI功能,一个由 WDTNMIIES 位选择的信号边沿在 NMIIE 位被置位
时生成一个 NMI 中断。 RST/NMI 标志 NMIIFG 也被置位。
:保持RST/NMI 为低低电
当在 NMI 模式中进行配置时,一个生成 NMI 事件的信号不应将RST/NMI 保持在引脚低电平。
如果一个 PUC NMI信号为低电平时从一个不同源出现,器件将保持在复位状态,这是因为
一个 PUC RST/NMI 引脚改为复位功能。
:修改WDTNMIES
NMI 模式被选择并且 WDTNMIES 位被改变,可生成一个 NMI,这取决于 RST/NMI 引脚上
的实际电平。 当 NMI 边沿选择位在选择 NMI 模式前被改变,那么 不生成 NMI
2.2.1.2 闪存存访访问违违反
当一个闪存访问违反出现时,一个 ACCVIFG 标志被设定。 通过设置 ACCVIE 位,闪存访问违反可被启用
来生成一个 NMI 中断。 然后,ACCVIFG 标志可被 NMI 中断处理例程测试以确定 NMI 是否由一个闪存访问
违反引起。
2.2.1.3 振荡荡器故障
振荡器故障信号警告一个晶体振荡器可能的错误条件。 振荡器故障可被启用来通过设置 OFIE位来生成一个
NMI 中断。 然后可用 NMI 中断处理例程来测试 OFIFG 标志以确定 NMI 是否由一个振荡器故障引起。
一个 PUC 信号能够触发一个振荡器故障,这是因为 PUC LFXT1 切换为LF 模式,从而关闭了 HF
式。 PUC 信号也关闭 XT2振荡器。
33
ZHCU032IDecember 2004Revised January 2012
系统复位、中断、和运行模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
中断
www.ti.com.cn
2.2.1.4 NMI 中断处理理器示例
NMI 中断是一个多源中断。 一个 NMI 中断自动复位 NMIIEOFIE ACCVIE 中断使能位。 用户 NMI 处理
例程复位中断标志并且按照2-5中显示的应用需求来重新启用中断使能位
2-5. NMI 中断断处理器
:ACCVIENMIIE,和OFIE来启用 NMI 中断
为了避免嵌套式 NMI 中断,ACCVIENMIIE,和 OFIE 使能位不应在一个 NMI 中断例程内被
置位。
2.2.2
可屏屏蔽蔽中中断
可屏蔽中断由具有中断功能的外设引起,其中包括间隔定时器模式中的安全装置定时器上溢。 每个可屏蔽中
断源可被一个中断使能位单独禁用,或者所有可屏蔽中断可由状态寄存器 (SR) 内的通用中断使能 (GIE)
禁用。
在本手册中相关的外设模块章节中讨论了每个单独的外设中断。
34
系统复位、中断、和运行模式
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Item1
Item2
SP TOS
Item1
Item2
SP TOS
PC
SR
Before
Interrupt
After
Interrupt
www.ti.com.cn
中断
2.2.3
中断断处处理
当外设请求一个中断并且外设中断使能位和 GIE 位被置位时,中断出了力例程被请求。 只需设定单独使能
位即可请求(不)可屏蔽中断。
2.2.3.1 中断断接
中断延迟为 5周期 (CPUx) 6周期 (CPU),从接受一个中断请求开始并且持续到中断处理例程的第一条指
令开始执行,如2-6所示。 中断逻辑执行以下操作:
1. 任何当前执行的指令完成。
2. 指向下一条指令的 PC 被压入堆栈。
3. SR 被压入堆栈。
4. 如果在最后一个指令执行期间由多个中断出现,那么具有最高优先级的中断被选中并等待被处理。
5. 在单一源标志上,中断请求标志自动复位。对于软件处理,多个源标志保持被设定。
6. SR 被清除。 这将终止任何低功耗模式。 由于 GIE 位被清除,之后的中断被禁用。
7. 中断矢量的内容被载入到 PC:程序继续在中断处理例程所处的地址上执行。
2-6. 中断断处
35
ZHCU032IDecember 2004Revised January 2012
系统复位、中断、和运行模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Item1
Item2
SP TOS
Item1
Item2
SP TOS
PC
SR
Before After
PC
SR
Return From Interrupt
中断
www.ti.com.cn
2.2.3.2 从中中断返回
中断处理例程由以下指令终止:
RETI(从中断处理例程返回)
从中断返回需要花费 5个周期 (CPU) 或者 3个周期 (CPUx) 来执行下列操作并在2-7中进行了说明。
1. 带有所有之前设置的 SR 从堆栈中弹出。 所有GIECOUOFF 等之前的设置现在有效,无论中断处理例
程期间使用的是什么设置。
2. PC 从堆栈弹出并且开始在其被中断的位置开始执行。
2-7. 从中中断返回
2.2.3.3 中断断嵌
如果 GIE 位在中断处理例程中内置位,则中断嵌套被启用。 当中断嵌套被启用,任何在中断处理例程期间
出现的中断将中断例程,无论中断的优先级是什么。
36
系统复位、中断、和运行模式
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
中断
2.2.4
中断断矢矢量
中断矢量和加电起动地址位于地址范围 0FFFFh 0FFC0h 内,与2-1中描述的相同。 一个矢量由用户
使用相应中断处理例程的 16 位地址进行编辑。 完整中断矢量列表请参与器件专用数据表。
建议为每个分配给一个模块的中断矢量提供一个中断处理例程。 一个假中断处理例程可以只包含 RETI
令,并且几个中断矢量可指向它。
如果需要,未分配的中断矢量可被用于常规程序代码。
某些模块使能位、中断使能位、和中断标志位于SFR 内。 SFR 位于较低的地址范围并且用字节格式执行。
必须使用字节指令来访问 SFRSFR配置请参阅器件专用数据表。
2-1. 中断断源、标标志、和和矢
中断断源 中断断标志 系系统统中 字地地址 优先先级
PORIFG
加电、外部复位、安全装置、闪存密码、 RSTIFG 复位 0FFFEh 31,最高
非法取指令 WDTIFG
KEYV
NMIIFG ()可屏蔽
NMI,振荡器故障,闪存存储器访问违法 OFIFG ()可屏蔽 0FFFCh 30
ACCVIFG ()可屏蔽
器件专用 0FFFAh 29
器件专用 0FFF8h 28
器件专用 0FFF6h 27
安全装置定时器 WDTIFG 可屏蔽 0FFF4h 26
器件专用 0FFF2h 25
器件专用 0FFF0h 24
器件专用 0FFEEh 23
器件专用 0FFECh 22
器件专用 0FFEAh 21
器件专用 0FFE8h 20
器件专用 0FFE6h 19
器件专用 0FFE4h 18
器件专用 0FFE2h 17
器件专用 0FFE0h 16
设备专用 0FFDEh 15
器件专用 0FFDCh 14
器件专用 0FFDAh 13
器件专用 0FFD8h 12
器件专用 0FFD6h 11
器件专用 0FFD4h 10
器件专用 0FFD2h 9
器件专用 0FFD0h 8
器件专用 0FFCEh 7
器件专用 0FFCCh 6
器件专用 0FFCAh 5
器件专用 0FFC8h 4
器件专用 0FFC6h 3
器件专用 0FFC4h 2
器件专用 0FFC2h 1
器件专用 0FFC0h 0,最低
37
ZHCU032IDecember 2004Revised January 2012
系统复位、中断、和运行模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
315
AM
300
270
225
180
135
90
45
0
LPM0 LPM2 LPM3 LPM4
200
55 32
17 11 0.9 0.7 0.1 0.1
VCC = 3 V
VCC = 2.2 V
Operating Modes
ICC/µA at 1 MHz
操作模式
www.ti.com.cn
2.3 操作作模模式
MSP430 系列设计用于超低功耗应用并且使用不同的运行模式,这些模式显示在2-9中。
运行模式考虑了三个不同的模式:
超低功耗
速度和数据吞吐量
独立外设流耗最小化
2-8显示了 MSP430 典型流耗。
2-8. 'F21x1 器件件的的典型流流耗与运运行模式式间的关关系
使用状态寄存器内的 CPUOFFOSCOFFSCG0 SCG1 位来配置低功耗模式 04。在状态寄存器内
包含 CPUOFFOSCOFFSCG0 SCG1 控制位的优势在于现有的运行模式在中断处理例程期间被保存
在堆栈内。 如果中断处理例程期间保存的 SR值未改变,程序流返回到之前的运行模式。 通过操作堆栈内的
保存的 SR 值而不是中断处理例程,程序流可返回至一个不同的运行模式。 可使用任何指令来访问模式控制
位和堆栈。
当设置任一模式控制位时,所选的运行模式立即生效(请见2-9)。 在时钟被激活前,带有被禁用时钟的
外设运行被禁用。 也可使用它们各自的控制寄存器设置来禁用外设。 所有 I/O 端口引脚和 RAM / 寄存器未
改变。 通过所有被启用的中断可实现唤醒。
38
系统复位、中断、和运行模式
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Active Mode
CPU Is Active
Peripheral Modules Are Active
LPM0
CPU Off, MCLK Off,
SMCLK On, ACLK On
CPUOFF = 1
SCG0 = 0
SCG1 = 0
CPUOFF = 1
SCG0 = 1
SCG1 = 0
LPM2
CPU Off, MCLK Off, SMCLK
Off, DCO Off, ACLK On
CPUOFF = 1
SCG0 = 0
SCG1 = 1 LPM3
CPU Off, MCLK Off, SMCLK
Off, DCO Off, ACLK On
DC Generator Off
LPM4
CPU Off, MCLK Off, DCO
Off, SMCLK Off,
ACLK Off
DC Generator Off
CPUOFF = 1
OSCOFF = 1
SCG0 = 1
SCG1 = 1
RST/NMI
NMI Active
PUC RST/NMI is Reset Pin
WDT is Active
POR
WDT Active,
Security Key Violation
WDT
Time Expired, Overflow WDTIFG = 1
WDTIFG = 1
RST/NMI
Reset Active SVS_POR
WDTIFG = 0
LPM1
CPU Off, MCLK Off,
DCO off, SMCLK On,
ACLK On
DC Generator Off if DCO
not used for SMCLK
CPUOFF = 1
SCG0 = 1
SCG1 = 1
www.ti.com.cn
操作模式
2-9. 针对对基本时时钟系统统的运行行模
2-2. 针对对基本时时钟系统统的运行行模
SCG1 SCG0 OSCOFF CPUOFF 模式CPU 和时钟状状态
0 0 0 0 激活 CPU 被激活,所有被启用的时钟被激活
0 0 0 1 LPM0 CPUMCLK 被禁用,SMCLKACLK 被激活
CPUMCLK 被禁用。 如果数控振荡器 (DCO) 不被用于
0 1 0 1 LPM1 SMCLKDCO DC 生成器被禁用。 ACLK 被激活。
CPUMCLKSMCLKDCO 被禁用。 DC 生成器保持
1 0 0 1 LPM2 启用。ACLK 被激活。
CPUMCLKSMCLKDCO 被禁用。 DC 生成器被禁
1 1 0 1 LPM3 用。 ACLK被激活。
1 1 1 1 LPM4 CPU 和所有时钟被禁用。
39
ZHCU032IDecember 2004Revised January 2012
系统复位、中断、和运行模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
低功耗应用的原则
www.ti.com.cn
2.3.1
进入入和和退退出出低低功耗模模式
一个被启用的中断事件将 MSP430 从任一低功耗模式中唤醒。程序流如下:
进入中断处理例程:
PC SR 被存储在堆栈上
– CPUOFFSCG1 OSCOFF 位被自动复位
用于从中断处理例程返回的选项:
原先的 SR 从堆栈中弹出,从而恢复之前的运行模式。
存储在堆栈中的 SR 位可在中断处理例程内被修改,当 RETI 指令被执行时,返回之前的运行模式。
; Enter LPM0 ExampleBIS #GIE+CPUOFF,SR ; Enter LPM0; ... ; Program stops here;; Exit LPM0
Interrupt Service RoutineBIC #CPUOFF,0(SP) ; Exit LPM0 on RETIRETI; Enter LPM3 ExampleBIS
#GIE+CPUOFF+SCG1+SCG0,SR ; Enter LPM3; ... ; Program stops here;; Exit LPM3 Interrupt Service
RoutineBIC #CPUOFF+SCG1+SCG0,0(SP) ; Exit LPM3 on RETIRETI
2.4 低功功耗耗应应用用的的原原则
通常,减少功耗的最重要的因素是使用 MSP430 时钟系统来大大增加 LPM3 内的时间。 具有一个实时时钟
功能并且所有中断有效的 LPM3 功耗的典型值少于 2µA。一32kHz 手表晶振用于 ACLK 并且CPU
DCO(通常关闭)计时,此 DCO 有一个 1µs 的唤醒时间。
使用中断来唤醒处理器并控制程序流。
应该只在需要时打开外设。
使用低功耗集成外设模块来取代软件启动的功能。例如 Timer_A Timer_B 可自动生成 PWM 并且捕捉
外部时序,而无需CPU 资源。
计算出的转移和快速表查询应该用来取代标志轮询和长软件计算。
由于开销,应避免频繁的子例程和函数调用。
对于较长的软件例程,应使用单周期 CPU 寄存器。
40
系统复位、中断、和运行模式
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
未使用引脚的连接
2.5 未使使用用引引脚脚的的连连接
2-3中列出了所有未使用引脚的正确连接。
2-3. 未使使用引脚脚的连接
引脚脚 电电势 注释
AVCC DVCC
AVSS DVSS
VREF+ 断开
VeREF+ DVSS
VREF-/VeREF- DVSS
只适用于专用 XIN 引脚。 带有共用 GPIO 功能的 XIN 引脚应该被编程为 GPIO 并且按
XIN DVCC Px.0 Px.7 建议的那样设置。
只适用于 XOUT 引脚。 带有共用 GPIO功能的 XOUT 引脚应该被编程为 GPIO 并且按
XOUT 断开 Px.0 Px.7 建议的那样设置。
只适用于 X2IN 引脚。 带有共用 GPIO功能的 X2IN 引脚应该被编程为 GPIO 并且按照
XT2IN DVSS Px.0 Px.7 建议的那样设置。
只适用于 X2OUT 引脚。 带有共用 GPIO功能的 X2OUT 引脚应该被编程为 GPIO 并且
XT2OUT 断开 按照 Px.0 Px.7 建议的那样设置。
Px.0 Px.7 断开 用启用的上拉/下拉电阻器来切换端口功能、输出方向或输入
RST/NMI DVCC VCC 带有 10nF (2.2nF(1))下拉电容的 47kΩ上拉电阻器
测试 断开 20xx21xx22xx 器件
TDO 断开
TDI 断开
TMS 断开
TCK 断开
(1) 当使用带有 Spy-Bi-Wire(两线制)接口,处于 Spy-Bi-Wire 模式或者处于 4线制模式,具有诸如FET 接口或者 GANG 编程器的
TI 工具的器件时,下拉电容器的值不应超过 2.2nF
41
ZHCU032IDecember 2004Revised January 2012
系统复位、中断、和运行模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Chapter 3
ZHCU032IDecember 2004Revised January 2012
CPU
本章对 MSP430 CPU,寻址模式,和指令集进行了说明。
Topic ........................................................................................................................... Page
3.1 CPU 介绍.......................................................................................................... 43
3.2 CPU 寄存存器....................................................................................................... 44
3.3 寻址址模........................................................................................................... 47
3.4 指令令集.............................................................................................................. 56
42 CPU ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
CPU
介绍
3.1 CPU 介绍
CPU 包含特别针对最新编程技术而设计的特性,例如计算分支,表处理,和高级语言,诸如 C语言的使
用。在不分页的情况下,CPU 能够寻址整个地址范围。
CPU 特性包括:
具有 27 条指令和 7个寻址模式的 RISC
与可使用每个寻址模式的每条指令的正交架构。
包括程序计数器、状态寄存器、和堆栈指针的完全寄存器访问。
单周期寄存器运行。
大尺寸 16 位寄存器文件减少了到存储器的取指令。
16 位地址总线可实现直接访问和整个存储器范围上的分支。
16 位数据总线可实现对字宽自变量的操作。
常量发生器提供最多六个立即值并少了代码尺寸。
无需中间寄存器保持的直接存储器到存储器传输。
字和字节寻址和指令格式。
3-1中显示了 CPU 的方框图。
43
ZHCU032IDecember 2004Revised January 2012 CPU
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
015
MDB − Memory Data Bus Memory Address Bus − MAB
16
Zero, Z
Carry, C
Overflow, V
Negative, N
16−bit ALU
dst src
R8 General Purpose
R9 General Purpose
R10 General Purpose
R11 General Purpose
R12 General Purpose
R13 General Purpose
R14 General Purpose
R15 General Purpose
R4 General Purpose
R5 General Purpose
R6 General Purpose
R7 General Purpose
R3/CG2 Constant Generator
R2/SR/CG1 Status
R1/SP Stack Pointer
R0/PC Program Counter 0
0
16
MCLK
CPU
寄存器
www.ti.com.cn
3-1. CPU 方框框图
3.2 CPU 寄存存器
CPU 包含十六个 16 位寄存器。 R0R1R2,和 R3 有专用功能。 R4 R15 是针对普通用途的工作寄
存器。
3.2.1
程序序计计数数器
(PC)
16 位程序计数器 (PC/R0) 指向将被执行的下一条指令。 每个指令使用偶数数量的字节(2个,4个或 6
个),并且 PC 相应的递增。 64KB 地址空间内的指令访问在字边界上执行,并且PC 与偶数地址对齐。
3-2显示了程序计数器。
3-2. 程序序矜计数数器
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
程序计数器位 15 1 0
44 CPU ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
SP1
SPold
SP1
PUSH SP
The stack pointer is changed after
a PUSH SP instruction.
SP1
SP2
POP SP
The stack pointer is not changed after a POP SP
instruction. The POP SP instruction places SP1 into the
stack pointer SP (SP2=SP1)
I3
I1
I2
I3
0xxxh
0xxxh − 2
0xxxh − 4
0xxxh − 6
0xxxh − 8
I1
I2
SP
0123h SP
I1
I2
I3 SP
PUSH #0123h POP R8Address
0123h
www.ti.com.cn
CPU
寄存器
可用所有指令和寻址模式对 PC 寻址。 几个示例:
MOV #LABEL,PC ; Branch to address LABELMOV LABEL,PC ; Branch to address contained in
LABELMOV @R14,PC ; Branch indirect to address in R14
3.2.2
堆栈栈指指针
(SP)
堆栈指针 (SP/R1) CPU 用来存储子例程调用和中断的返回地址。 它使用一个先递减、后递增机制。 此
外,SP可由软件用所有指令和寻址模式使用。3-3显示了 SPSP 由用户初始化进 RAM,并且与偶数地
址对齐。
3-4显示了堆栈用法。
3-3. 堆栈栈计数器
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
堆栈计数器位 15 1 0
MOV 2(SP),R6 ; Item I2 -
> R6MOV R7,0(SP) ; Overwrite TOS with R7PUSH #0123h ; Put 0123h onto TOSPOP R8 ; R8 =
0123h
3-4. 堆栈栈用
SP 用作一个到 PUSH POP 指令的自变量的特殊情况在3-5中进行了说明和显示。
3-5. PUSH SP-POP SP序列
3.2.3
堆栈栈寄寄存存器
(SR)
堆栈寄存器 (SR/R2),被用作一个源或者目的寄存器,可被用在只能用字指令进行寻址的寄存器模式。 寻址
模式的剩余组合被用来支持常量寄存器。3-6显示了 SR 位。
45
ZHCU032IDecember 2004Revised January 2012 CPU
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
CPU
寄存器
www.ti.com.cn
3-6. 状态态寄存器器位
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
OSC CPU
被保留 V SCG1 SCG0 GIE N Z C
OFF OFF
rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0
3-1描述了状态寄存器位。
3-1. 状态态寄存器器位的说说明
位 说说明
V溢出位 当一个算术运算的结果溢出带符号变量范围时,这个位被置位。
在以下情况时置位:
ADD(.B)MADDC(.B)
+=
+=
否则复位
在以下情况时置位:
SUB(.B)MSUBC(.B)MCMP(.B)
-=
-=
否则复位
SCG1 系统时钟生成器 1。当置位时,关闭 SMCLK
SCG0 系统时钟生成器 0。当置位时,如果DCOCLK 未用于 MCLK SMCLK,关闭 DCO dc 生成器。
OSCOFF 振荡器关闭。 当置位时,如果LFXT1CLK 没有被用于 MCLK SMCLK,关闭 LFXT1 晶体振荡器。
CPUOFF CPU 关闭。 当置位时,关闭 CPU
GIE 通用中断使能。 当置位时,启用可屏蔽中断。 当置位时,所有可屏蔽中断被禁用。
N负位。 当一个字节或者字运算的结果为负时置位,当结果不为负时清除。
字运算:N被设定为结果的位 15 的值。
字节运算:N被设定为结果的位 7的值。
Z零位。 当一个字节或字运算的结果为 0时置位,当结果不为 0时清除。
C进位位。 当一个字节或字运算的结果产生一个进位时置位,并且当没有出现进位时清除。
3.2.4
常量量发发生生器器寄寄存
CG1
CG2
常量发生器寄存器 R2R3 生成的六个常用常量,无需额外的 16 位程序代码字。 用源寄存器寻址模式
(As) 选择常量,如3-2所示。
3-2. 常量量发生器CG1CG2
寄存存器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 0FFFFh -1,字处理
常量发生器的优势在于:
无需特殊指令
对于六个常量无需代码字
无需代码存储器访问来检索常量
46 CPU ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Unused
High Byte Low Byte
Byte
Register-Byte Operation
0h
High Byte Low Byte
Byte
Byte-Register Operation
Register
Memory Register
Memory
www.ti.com.cn
寻址模式
如果六个常量中的一个被用作一个立即源操作数,汇编程序自动使用常量发生器。 寄存器 R2 R3,在常
量模式中使用,不能被显式寻址;它们运行为只源寄存器。
3.2.4.1 常量量发生器-展指指令
MSP430 RISC 指令集只有 27 条指令。 然而,常量发生器使得 MSP430 汇编程序支持 24 条附加,仿真
指令。 例如,单操作数指令
CLR dst
用相同的长度仿真双操作数指令:
MOV R3,dst
其中 #0 被汇编程序取代,而 R3 As=00 时使用。
INC dst
被替换为:
ADD 0(R3),dst
3.2.5
通用用寄寄存存器
R4
R15
12 个寄存器,R4-R15,为通用寄存器。 所有这些寄存器可被用作数据寄存器、地址指针、或者索引值并且
可用字节或字指令进行访问,如3-7所示。
3-7. 寄存存器字节/节寄寄存器运运行
示例例寄存器器字节运运行行 示例字字节寄存存器运行
R5=0A28Fh R5=01202h
R6=0203h R6=0223h
Mem(0203h)=012h Mem(0223h)=05Fh
ADD.B R5,0(R6) ADD.B @R6,R5
08Fh 05Fh
+012h +002h
0A1h 00061h
Mem(0203h)=0A1h R5=00061h
C=0Z=0N=1 C=0Z=0N=0
(寄存器的低字节) (已编址字节)
+(已编址字节) +(寄存器的低字节)
->(已编址字节) ->(寄存器的低字节,零至高字节)
3.3 寻址址模模式
针对源操作数的七个寻址模式和针对目的操作数的四个寻址模可在完整地址空间寻址。 3-3中的位数量描
述了 As(源)和 Ad(目的)模式位的内容。
47
ZHCU032IDecember 2004Revised January 2012 CPU
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
寻址模式
www.ti.com.cn
3-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指令,Rn 递增 2
11/- 立即模式 #N 此指令之后的字包含立即常量 N。间接自动递增模式 @PC+
使用。
在下面的小节中详细解释了七个寻址模式。 大多数示例显示了针对源和目的的同样的寻址模式,但是在一个
指令中可使用源和目的寻址模式的任一有效组合。
:标签EDE
TONI
TOM
LEO
的使使用
在整个 MSP430 文档中,EDETONITOM LEO 被用作普通标签。它们只是标签。 它们
没有特别的含义。
48 CPU ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
0A023hR10
R11
Before: After:
PC
0FA15h
PCold
0A023hR10
R11
PC PCold + 2
0A023h
www.ti.com.cn
寻址模式
3.3.1
寄存存器器模模式
3-4中描述了寄存器模式。
3-4. 寄存存器模式式说
汇编编程序代代码ROM
MOV R10,R11 MOV R10,R11
长度: 一个或两个字
运行: R10 的内容移动到R11R10 不受影响。
注释: 对于源和目的有效
示例: MOV R10,R11
:寄存存器器中中的的数数据
寄存器中的数据可使用字或字节指令访问。 如果字节指令被使用,结果中高字节一直为 0。 根
据字节指令的结果来处理状态位。
49
ZHCU032IDecember 2004Revised January 2012 CPU
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
00006h
Address
Space
00002h
04596h PC
0FF16h
0FF14h
0FF12h
0xxxxh
05555h
01094h
01092h
01090h 0xxxxh
0xxxxh
01234h
01084h
01082h
01080h 0xxxxh
01080h
0108Ch
R5
R6
0108Ch
+0006h
01092h
01080h
+0002h
01082h
Register
Before:
00006h
Address
Space
00002h
04596h
PC
0FF16h
0FF14h
0FF12h
0xxxxh
01234h
01094h
01092h
01090h 0xxxxh
0xxxxh
01234h
01084h
01082h
01080h 0xxxxh
01080h
0108Ch
R5
R6
Register
After:
0xxxxh
寻址模式
www.ti.com.cn
3.3.2
已索索引引模模式
3-5中描述了已索引模式。
3-5. 已索索引模式式说
汇编编程序代代码ROM内容
MOV 2(R5)M6(R6) MOV X(R5)MY(R6)
X=2
Y=6
长度: 两个或三个字
运行: 移动源地址的内容(R5+2 的内容)到目的地址(R6+6 的内容)。 源和目的寄存器(R5 R6)不受影响。 在已
索引模式中,程序计数器被自动递增,这样继续执行下一条程序指令。
注释: 针对源和目的有效
示例: MOV 2(R5)M6(R6);
50 CPU ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
011FEh
Address
Space
0F102h
04090h PC
0FF16h
0FF14h
0FF12h
0xxxxh
0A123h
0F018h
0F016h
0F014h 0xxxxh
0xxxxh
05555h
01116h
01114h
01112h 0xxxxh
0FF14h
+0F102h
0F016h
0FF16h
+011FEh
01114h
Register
Before:
011FEh
Address
Space
0F102h
04090h
PC
0FF16h
0FF14h
0FF12h
0xxxxh
0A123h
0F018h
0F016h
0F014h 0xxxxh
0xxxxh
0A123h
01116h
01114h
01112h 0xxxxh
Register
After:
0xxxxh
www.ti.com.cn
寻址模式
3.3.3
符号号模模式
3-6中描述了符号模式。
3-6. 符号号模式说说明
汇编编程序模模式ROM内容
MOV EDEMTONI MOV X(PC)MY(PC)
X=EDE-PC
Y=TONI-PC
长度: 两个或三个字
运行: 移动源地址 EDE的内容(PC+X 的内容)到目的地址 TONIPC+Y 的内容) 指令之后的字包含 PC 和源或目的地
址间的差异。 汇编计算机并且自动插入偏移 XY。 借助于符号模式,程序计数器 (PC)被自动递增,这样继续执
行下一条程序指令。
注释: 针对源和目的有效
示例:
MOV EDE,TONI ;Source address EDE = 0F016h;Dest. address TONI = 01114h
51
ZHCU032IDecember 2004Revised January 2012 CPU
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
01114h
Address
Space
0F016h
04292h PC
0FF16h
0FF14h
0FF12h
0xxxxh
0A123h
0F018h
0F016h
0F014h 0xxxxh
0xxxxh
01234h
01116h
01114h
01112h 0xxxxh
Register
Before:
01114h
Address
Space
0F016h
04292h
PC
0FF16h
0FF14h
0FF12h
0xxxxh
0A123h
0F018h
0F016h
0F014h 0xxxxh
0xxxxh
0A123h
01116h
01114h
01112h 0xxxxh
Register
After:
0xxxxh
寻址模式
www.ti.com.cn
3.3.4
绝对对模模式
3-7中对绝对模式进行了说明。
3-7. 绝对对模式说说明
汇编编程序代代码ROM内容
MOV &EDEM&TONI MOV X(0)MY(0)
X=EDE
Y=TONI
长度: 两个或三个字
运行: 移动源地址的内容到目的地址 TONI。 指令之后的字包含源和目的地址的绝对地址。 借助于绝对模式,PC 被自动
递增,这样继续执行下一条程序指令。
注释: 针对源和目的有效
示例:
MOV &EDE,&TONI ;Source address EDE = 0F016h;Dest. address TONI = 01114h
这个寻址模式主要用于硬件外设模块,这些模块位于绝对、固定地址上。 这些是使用绝对模式的寻址来确保
软件可移植性(例如,位置独立代码)。
52 CPU ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
0000h
Address
Space
04AEBh PC
0FF16
h
0FF14h
0FF12h
0xxxxh
05BC1h
0xxxxh
0xxh
012h
0xxh
0FA33h
002A7h
R10
R11
Register
Before:
0000h
Address
Space
04AEBh
PC
0FF16h
0FF14h
0FF12h
0xxxxh
05BC1h
0FA34h
0FA32h
0FA30h 0xxxxh
0xxh
05Bh
002A8h
002A7h
002A6h 0xxh
0FA33h
002A7h
R10
R11
Register
After:
0xxxxh
0xxxxh
0xxxxh 0xxxxh
0FA34h
0FA32h
0FA30h
002A8h
002A7h
002A6h
www.ti.com.cn
寻址模式
3.3.5
间接接寄寄存存器器模模式
3-8中说明了间接寄存器模式。
3-8. 间接接模式说说明
汇编编程序代代码ROM内容
MOV @R10M0(R11) MOV @R10M0(R11)
长度: 一个或两个字
运行: 移动源地址的内容(R10 的内容)到目的地址(R11 的内容)。 寄存器不被修改。
注释: 针对源操作数有效。 用 0(Rd) 替代目的操作数。
示例: MOV.B @R10M0(R11)
53
ZHCU032IDecember 2004Revised January 2012 CPU
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Instruction Address Operand
+1/ +2
00000h
Address
Space
04ABBh PC
0FF16h
0FF14h
0FF12h
0xxxxh
05BC1h
0FA34h
0FA32h
0FA30h 0xxxxh
0xxxxh
01234h
010AAh
010A8h
010A6h 0xxxxh
0FA32h
010A8h
R10
R11
Register
Before: Address
Space
0xxxxh
05BC1h
0FA34h
0FA32h
0FA30h 0xxxxh
0xxxxh
05BC1h
010AAh
010A8h
010A6h 0xxxxh
0FA34hR10
R11
Register
After:
0xxxxh
0xxxxh
0FF18h
00000h
04ABBh
PC
0FF16h
0FF14h
0FF12h
0xxxxh
0xxxxh
0FF18h
010A8h
寻址模式
www.ti.com.cn
3.3.6
间接接自自动动递递增增模
3-9中描述了间接自动递增。
3-9. 间接接自动递递增模式式说
汇编编程序代代码ROM 内容
MOV @R10+M0(R11) MOV @R10+M0(R11)
长度: 一个或两个字
运行: 移动源地址的内容(R10 的内容)到目的地址(R11 的内容)。 对于一个字节操作,寄存器 R10 被递增 1,或者在
取指令之后针对字操作递增 2;它在无需开销的情况下指向下一个地址。 这对于表处理十分有用。
注释: 针对源操作数有效。 用 0(Rd) 加上第二指令 INCD Rd 替代目的操作数。
示例: MOV @R10+M0(R11)
在操作数被取出后,寄存器自动增量发生。3-8显示了这一过程。
3-8. 操作作数取操操作
54 CPU ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
01192h
Address
Space
00045h
040B0h PC
0FF16h
0FF14h
0FF12h
0xxxxh
01234h
0xxxxh
0FF16h
+01192h
010A8h
Register
Before:
01192h
Address
Space
00045h
040B0h
PC
0FF16h
0FF14h
0FF12h
0xxxxh
010AAh
010A8h
010A6h 0xxxxh
Register
After:
0xxxxh
0FF18h
010AAh
010A8h
010A6h
00045h
www.ti.com.cn
寻址模式
3.3.7
立即即模模式
3-10中描述了立即模式。
3-10. 立即即模式说说明
汇编编程序代代码ROM内容
MOV #45hMTONI MOV @PC+MX(PC)
45
X=TONI-PC
长度: 两个或三个字
如果 CG1 CG2 的内容可被使用,则少一个字。
运行: 移动包含在指令后的字中的立即内容45h 到目的地址 TONI。 当取源时,程序计数器指向指令后的字并且将内容移
动到目的。
注释: 针对一个源操作数有效。
示例: MOV #45hMTONI
55
ZHCU032IDecember 2004Revised January 2012 CPU
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集
www.ti.com.cn
3.4 指令令集
完整 MSP430 指令集包含 27 条内核指令和 24 个仿真指令。 内核指令是具有唯一运行代码(由 CPU
码)的指令。仿真指令是简化写入和读取的指令,但是本身不带有运行代码,反之,它们自动被汇编程序用
等效的内核指令所取代。 使用仿真指令不会影响代码或性能。
有三个内核指令格式:
双操作数
单操作数
跳转
通过使用 .B .W 扩展名,所有单操作数和双操作数指令可以为字节或字指令。 字节指令可被用于访问字
节数据或字节外设。 字指令被用于访问字数据或字外设。 如果不使用扩展名,指令是一个字指令。
一个指令的源和目的由以下字段定义:
src 源操作数由 As S-reg 定义
dst 目的操作数由 Ad D-seg 段定义
As 寻址位负责源 (src) 使用的寻址模式。
S-reg 针对源 (src) 的工作寄存器
Ad 寻址位负责用于目的 (dst) 的寻址模式
D-reg 针对目的 (dst) 的工作寄存器
B/W 字节或字操作:
0:字操作
1:字节操作
:目的的地地址
在存储器映射的任一位置目的地址有效。 然而,当使用一个修改目的内容的指令时,用户必须
确保目的地址可写入。 例如,一个被屏蔽的 ROM 位置将是一个有效的目的地址,但是内容不
可修改,所有指令的结果将丢失。
56 CPU ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集
3.4.1
双操操作作数数((格格式
I
)指指令
3-9解释了双操作数指令格式。
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
操作代码 S-Reg Ad B/W As D-Reg
3-9. 双操操作数指指令格式
3-11列出并说明了双操作数指令。
3-11. 双操操作数指指令
状态态位
S-Reg
助记记符符 运
D-Reg V N Z C
srcdst - - - -
MOV(.B) src,dst
src+dstdst * * * *
ADD(.B) src,dst
src+dst+Cdst * * * *
ADDC(.B) src,dst
dst+.not.src+1dst * * * *
SUB(.B) src,dst
dst+.not.src+Cdst * * * *
SUBC(.B) src,dst
dst-src * * * *
CMP(.B) src,dst
src+dst+Cdst(十进制) ****
DADD(.B) src,dst
src .and. dst 0 * * *
BIT(.B) src,dst
not.src.and. dstdst - - - -
BIC(.B) src,dst
src .or. dstdst - - - -
BIS(.B) src,dst
src .xor. dstdst * * * *
XOR(.B) src,dst
src.and. dstdst 0 * * *
AND(.B) src,dst
*状态位被影响
-状态位不受影响
0状态位被清除
1状态位被置位
:指令CMP SUB
指令CMPSUB完全一样,除了存储结果。 对于BITAND指令也是如此。
57
ZHCU032IDecember 2004Revised January 2012 CPU
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集
www.ti.com.cn
3.4.2
单操操作作数数((格格式
II
)指指令
3-10解释了单操作数指令格式。
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
操作代码 B/W Ad D/S-Reg
3-10. 单操操作数指指令格式
3-12列出并说明了单操作数指令。
3-12. 单操操作数指指令
状态态位
S-Reg
助记记符符 运
D-Reg V N Z C
CMSB.......LSBC ****
RRC(.B) dst
MSBMSB....LSBC 0 * * *
RRA(.B) dst
SP-2SPsrc@SP - - - -
PUSH(.B) src
交换字节 ----
SWPB dst
SP-2SPPC+2@SP - - - -
CALL dst
dstPC
TOSSRSP+2SP * * * *
RETI
TOSPCSP+2SP
78........15 0 * * *
SXT dst
*状态位被影响
状态位不受影响
0状态位被清除
1状态位被置位
CALL 指令可使用所有寻址模式。 如果使用符号模式(地址)、立即模式 (#N)、绝对模式 (&EDE) 或者已索
引模式 x(RN),之后的字包含地址信息。
58 CPU ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集
3.4.3
跳转
3-11显示了条件跳转指令格式。
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
操作代码 C 10 PC 偏移
3-11. 跳转转指令格格式
3-13列出并说明了跳转指令。
3-13. 跳转转指
助记记符S-RegD-Reg 运行
如果零位被置位则跳转至标签
JEQ/JZ Label
如果零位被复位则跳转至标签
JNE/JNZ Label
如果进位位被置位则跳转至标签
JC Label
如果进位位被复位则跳转至标签
JNC Label
如果负位被置位则跳转至标签
JN Label
如果(N .XOR. V)=0 则跳转到标签
JGE Label
如果(N .XOR. V)=1 则跳转到标签
JL Label
无条件跳转到标签
JMP Label
条件跳转支持相对于 PC 的程序分支,并且不影响状态位。 相对于跳转指令上的 PC 值,可能的跳转范围为
-511 +512 字之间。 10 位程序计数器偏移被认为是一个带符号的 10 位值,此值被加倍并且加到程序计
数器中。
PC= PC之前+2+PC偏移x2
59
ZHCU032IDecember 2004Revised January 2012 CPU
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集
www.ti.com.cn
3.4.4
指令令周周期期和和长长度
一条指令所需的 CPU 时钟周期取决于指令格式和使用的寻址模式-而非指令本身。 时钟周期的数量参考
MCLK
3.4.4.1 中断断和复位位周
3-14列出了用于中断开销和复位的 CPU 周期。
3-14. 中断断和复位位周
操作 周期期的数量量 指指令的长长度
从中断 (RETI) 返回 5 1
接受的中断 6 -
WDT复位 4 -
复位(RST/NMI) 4 -
3.4.4.2 格式II(单操作作数)指指令周期期和长度
3-15列出了所有格式 II指令寻址模式的长度和 CPU 周期。
3-15. 格式II 指令周期期和长度
周期期的数量
RRARRC
寻址址模SWPBSXT 压栈 调用用 指令的的长
Rn 1 3 4 1 SWPB R5
@Rn 3 4 4 1 RRC @R9
@Rn+ 3 5 5 1 SWPB @R10+
#N (请见注释) 4 5 2 M M #0F000h
X(Rn) 4 5 5 2 M M 2(R7)
EDE 4 5 5 2 M M EDE
&EDE 4 5 5 2 SXT &EDE
:指令令格格式II 立即即模模式
不要在目的字段中使用带有立即模式的 RRARRCSWPBSXT 在立即模式中使用这些指令会
导致一个无法预计的程序运行。
3.4.4.3 格式II(跳转))指令周周期和长长度
所有跳转指令要求一个代码字,并且花费两个 CPU 周期来执行,无论是否发生跳转。
60 CPU ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集
3.4.4.4 格式I双操操作数))指令周周期和长长度
3-16列出了所有格式 I指令寻址模式的长度和 CPU 周期。
3-16. 格式I指令周期期和长度
寻址址模
Src Dst 周期期的数量量 指指令的长长度 示例
Rn Rm 1 1 MOV R5MR8
PC 2 1 BR R9
x(Rm) 4 2 M M R5M4(R6)
EDE 4 2 M M R8MEDE
&EDE 4 2 MOV R5M&EDE
@Rn Rm 2 1 M@R4MR5
PC 2 1 BR @R8
x(Rm) 5 2 M M @R5M8(R6)
EDE 5 2 MOV @R5MEDE
&EDE 5 2 M M @R5M&EDE
@Rn+ Rm 2 1 M M @R5+MR6
PC 3 1 BR @R9+
x(Rm) 5 2 M M @R5M8(R6)
EDE 5 2 MOV @R9+MEDE
&EDE 5 2 M M @R9+M&EDE
#N Rm 2 2 M M #20MR9
PC 3 2 BR #2AEh
x(Rm) 5 3 M M #0300hM0(SP)
EDE 5 3 M M #33MEDE
&EDE 5 3 M M #33M&EDE
x(Rn) Rm 3 2 M M 2(R5)MR7
PC 3 2 BR 2(R6)
TONI 6 3 M M 4(R7)MTONI
x(Rm) 6 3 M M 4(R4)M6(R9)
&TONI 6 3 M M 2(R4)M&TONI
EDE Rm 3 2 MEDEMR6
PC 3 2 BR EDE
TONI 6 3 CMP EDEMTONI
x(Rm) 6 3 M M EDEM0(SP)
&TONI 6 3 M M EDEM&TONI
&EDE Rm 3 2 M M &EDEMR8
PC 3 2 BRA &EDE
TONI 6 3 M M &EDEMTONI
x(Rm) 6 3 M M &EDEM0(SP)
&TONI 6 3 M M &EDEM&TONI
61
ZHCU032IDecember 2004Revised January 2012 CPU
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
0xxx
4xxx
8xxx
Cxxx
1xxx
14xx
18xx
1Cxx
20xx
24xx
28xx
2Cxx
30xx
34xx
38xx
3Cxx
4xxx
5xxx
6xxx
7xxx
8xxx
9xxx
Axxx
Bxxx
Cxxx
Dxxx
Exxx
Fxxx
RRC RRC.B SWPB RRA RRA.B SXT PUSH PUSH.B CALL RETI
000 040 080 0C0 100 140 180 1C0 200 240 280 2C0 300 340 380 3C0
JNE/JNZ
JEQ/JZ
JNC
JC
JN
JGE
JL
JMP
MOV, MOV.B
ADD, ADD.B
ADDC, ADDC.B
SUBC, SUBC.B
SUB, SUB.B
CMP, CMP.B
DADD, DADD.B
BIT, BIT.B
BIC, BIC.B
BIS, BIS.B
XOR, XOR.B
AND, AND.B
指令集
www.ti.com.cn
3.4.5
指令令集集说说明
指令映射显示在3-12中,而完整指令集汇总于3-17中。
3-12. 内核核指令映映射
3-17. MSP430 指令令集
助记记符 说明V N Z C
ADC(.B) (1) dst C加至目的 dst+Cdst * * * *
ADD(.B) srcMdst 将源加至目的 src+dstdst * * * *
ADDC(.B) srcMdst 将源和 C加至目的 src+dst+Cdst * * * *
AND(.B) srcMdst 将源和目的进行与操作 src.and. dstdst 0 * * *
BIC(.B) srcMdst 清除目的中的位 not.src.and.dstdst - - - -
BIS(.B) srcMdst 设定目的中的位 src.or. dstdst - - - -
BIT(.B) srcMdst 测试目的中的位 src.and.dst 0 * * *
BR (1) dst 分支至目的 dstPC - - - -
M M dst 调用目的 PC+2stackdstPC - - - -
CLR(.B) (1) dst 清零目的 0dst - - - -
CLRC (1) 清零 C 0C - - - 0
CLRN (1) 清零 N 0N - 0 - -
CLRZ (1) 清零 Z 0Z - - 0 -
CMP(.B) srcMdst 比较源和目的 dst-src * * * *
DADC(.B) (1) dst 十进制加 C到目的 dst+Cdst(十进制) ****
DADD(.B) srcMdst 将源和 C十进制加入dst src+dst+Cdst(十进制) ****
(1) 仿真指令
62 CPU ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集
3-17. MSP430 指令令集(continued)
助记记符 说明V N Z C
DEC(.B) (1) dst 递减目的 dst-1dst * * * *
DECD(.B) (1) dst 双递减目的 dst-2dst * * * *
DINT (1) 禁用中断 0GIE - - - -
EINT (1) 启用中断 1GIE - - - -
INC(.B) (1) dst 递增目的 dst+1dst * * * *
INCD(.B) (1) dst 双递增目的 dst+2dst * * * *
INV(.B) (1) dst 反转目的 .not.dstdst * * * *
JC/JHS M M 如果 C置位则跳转,如果高于或相等则 ----
跳转
JEQ/JZ M M 如果等于则跳转,如果 Z被置位则跳转 ----
JGE M M 如果大于或等于则跳转 ----
JL M M 如果少于则跳转 ----
JMP M M 跳转 PC+2×offsetPC - - - -
JN M M 如果 N被置位则跳转 ----
JNC/JLO M M 如果 C未被设定则跳转,如果低于则跳 ----
JNE/JNZ M M 如果不等于则跳转,如果 Z未被置位则 ----
跳转
MOV(.B) srcMdst 将源移动到目的 srcdst - - - -
NOP (2) 无操作 ----
POP(.B) (2) dst 将项目从堆栈弹出至目的 @SPdstSP+2SP - - - -
PUSH(.B) src 将源压入堆栈 SP-2SPsrc@SP - - - -
RET (2) 从目的返回 @SPPCSP+2SP - - - -
RETI 从中断返回 ****
RLA(.B) (2) dst 算术左旋转 ****
RLC(.B) (2) dst 通过 C左旋转 ****
RRA(.B) dst 算术右旋转 0 * * *
RRC(.B) dst 通过 C右旋转 ****
SBC(.B) (2) dst 将非(C)从目的中减去 dst+0FFFFh+Cdst * * * *
SETC (2) 置位 C 1C - - - 1
SETN (2) 置位 N 1N - 1 - -
SETZ (2) 置位 Z 1Z - - 1 -
SUB(.B) srcMdst 从目的中减去源 dst+.not.src+1dst * * * *
SUBC(.B) srcMdst dst 中减去源和非 (C) dst+.not.src+Cdst * * * *
SWPB dst 交换字节 ----
SXT dst 扩展符 0 * * *
TST(.B) (2) dst 测试目的 dst+0FFFFh+1 0 * * 1
XOR(.B) srcMdst 异或源和目的 src .xor. dstdst * * * *
(2) 仿真指令
63
ZHCU032IDecember 2004Revised January 2012 CPU
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集
www.ti.com.cn
3.4.6
指令令集集细细节
3.4.6.1 ADC
*ADC[.W] 将进位加至目的
*ADC.B 将进位加至目的
句法ADC dst or ADC.W dst ADC.B dst
运行dst+Cdst
仿仿真ADDC #0,dst ADDC.B #0,dst
说明进位位 (C) 被加入到目的操作数中。 目的之前的内容丢失。
状态态位N:如果结果为负则置位,否则复位
Z:如果结果为零则置位,否则复位
C:如果 dst 0FFFFh 0000 递增则置位,否则复位
如果 dst 0FFh 00 递增则置位,否则复位
V:如果一个算术溢出发生则置位,否则复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例R13 指向的 16 位计数器被加至R12 指向的 32 位计数器。
ADD @R13,0(R12) ; Add LSDsADC 2(R12) ; Add carry to MSD
示例R13 指向的 8位计数器被加至R12 指向的 16 位计数器。
ADD.B @R13,0(R12) ; Add LSDsADC.B 1(R12) ; Add carry to MSD
64 CPU ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集
3.4.6.2
ADD[.W] 将源加至目的
ADD.B 将源加至目的
句法ADD src,dst or ADD.W src,dst
ADD.B src,dst
运行src+dstdst
说明源操作数被加至目的操作数。 源操作数不受影响。 目的之前的内容丢失。
状态态位N:如果结果为负则置位,否则复位
Z:如果结果为零则置位,否则复位
C:如果结果有一个进位则置位,否则清零
V:如果一个算术溢出发生则置位,否则复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例R5 增加 10。 进位时执行到 TONI 的跳转。
ADD #10,R5JC TONI ; Carry occurred...... ; No carry
示例R5 增加 10。 进位时执行到 TONI 的跳转。
ADD.B #10,R5 ; Add 10 to Lowbyte of R5JC TONI ; Carry occurred, if (R5)
246 [0Ah+0F6h]...... ; No carry
65
ZHCU032IDecember 2004Revised January 2012 CPU
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集
www.ti.com.cn
3.4.6.3 ADDC
ADDC[.W] 将源和进位加至目的
ADDC.B 将源和进位加至目的
句法ADDC src,dst or ADDC.W src,dst ADDC.B src,dst
运行src+dst+Cdst
说明源操作数和进位位 (C) 被加至目的操作数。源操作数不受影响。 目的之前的内容丢失。
状态态位N:如果结果为负则置位,否则复位
Z:如果结果为零则置位,否则复位
C:如果结果的 MSB 有一个进位则置位,否则复位
V:如果一个算术溢出发生则置位,否则复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例R13 指向的 32 位计数器被加至 32 位计数器,R13 内指针之上的 11 个字(20/2+2/2)
ADD @R13+,20(R13) ; ADD LSDs with no carry inADDC @R13+,20(R13) ; ADD
MSDs with carry... ; resulting from the LSDs
示例R13 指向的 24 位计数器被加至 24 位计数器,R13 内指针之上的 11 个字。
ADD.B @R13+,10(R13) ; ADD LSDs with no carry inADDC.B @R13+,10(R13) ;
ADD medium Bits with carryADDC.B @R13+,10(R13) ; ADD MSDs with carry...
; resulting from the LSDs
66 CPU ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集
3.4.6.4
AND[.W] 源和目的进行与操作
AND.B 源和目的进行与操作
句法AND src,dst or AND.W src,dst AND.B src,dst
运行src .AND. dst dst
说明源操作数和目的操作数进行逻辑与操作。 结果被放置在目的中。
状态态位N:如果结果 MSB 被设定则置位,如果未被设定则复位
Z:如果结果为零则置位,否则复位
C:如果结果不为零则置位,否则复位 (=.NOT. 零位)
V:复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例R5 中的位被用作一个针对由 TOM 寻址的字的掩码 (#0AA55h)。如果结果为零,一个分支
指令将指向标签 TONI
MOV #0AA55h,R5 ; Load mask into register R5AND R5,TOM ; mask word
addressed by TOM with R5JZ TONI ; ...... ; Result is not zero;;; or;;AND
#0AA55h,TOMJZ TONI
示例掩码 #0A5h 的位于 TOM 的低字节逻辑与。 如果结果为零,一个分支指令被指向标签
TONI
AND.B #0A5h,TOM ; mask Lowbyte TOM with 0A5hJZ TONI ; ...... ; Result is
not zero
67
ZHCU032IDecember 2004Revised January 2012 CPU
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集
www.ti.com.cn
3.4.6.5 BIC
BIC[.W] 清除目的中的位
BIC.B 清除目的中的位
句法BIC src,dst or BIC.W src,dst BIC.B src,dst
运行.NOT.src .AND. dstdst
说明被反转的源操作数与目的操作数进行逻辑与。结果被放置在目的中。 源操作数不受影响。
状态态位状态位不受影响。
模式式位OSCOFFCPUOFF GIE 不受影响。
示例RAM LEO 的六个 MSB 被清零。
BIC #0FC00h,LEO ; Clear 6 MSBs in MEM(LEO)
示例RAM 字节 LEO 的五个 MSB 被清零。
BIC.B #0F8h,LEO ; Clear 5 MSBs in Ram location LEO
68 CPU ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集
3.4.6.6 BIS
BIS[.W] 设定目的中的位
BIS.B 设定目的中的位
句法BIS src,dst or BIS.W src,dst BIS.B src,dst
运行src.OR. dstdst
说明源操作数和目的操作数被逻辑与。 结果被放置在目的中。 源操作数不受影响。
状态态位状态位不受影响。
模式式位OSCOFFCPUOFF GIE 不受影响。
示例RAM TOM 的六个 LSB 被置位。
BIS #003Fh,TOM ; set the six LSBs in RAM location TOM
示例RAM 字节 TOM 的三个 MSB 被置位。
BIS.B #0E0h,TOM ; set the 3 MSBs in RAM location TOM
69
ZHCU032IDecember 2004Revised January 2012 CPU
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集
www.ti.com.cn
3.4.6.7
BIT[.W] 测试目的中的位
BIT.B 测试目的中的位
句法BIT src,dst or BIT.W src,dst
运行src.AND. dst
说明源和目的操作数被逻辑与。 结果至影响状态位。 源和目的操作数不受影响。
状态态位N:如果结果的 MSB 被设定则置位,否则复位
Z:如果结果为零则置位,否则复位
C:如果结果不为零则复位,否则复位 (.NOT. 零位)
V:复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例如果 R8 的位 9被设定,一个分支指令被指向标签 TOM
BIT #0200h,R8 ; bit 9 of R8 set?JNZ TOM ; Yes, branch to TOM... ; No,
proceed
示例如果 R8 的位 3被设定,一个分支指令被指向标签 TOM
BIT.B #8,R8JC TOM
示例一个串行通信接收位 (RCV) 被测试。 由于进位位在使用 BIT 指令来测试一个单一位时等
于被测试位的状态,进位位被随后的指令使用;读取指令信息被移入寄存器RECBUF
; ; Serial communication with LSB is shifted first:; xxxx xxxx xxxx
xxxxBIT.B #RCV,RCCTL ; Bit info into carryRRC RECBUF ; Carry -
> MSB of RECBUF; cxxx xxxx...... ; repeat previous two
instructions...... ; 8 times; cccc cccc; ^ ^; MSB LSB; Serial
communication with MSB shifted first:BIT.B #RCV,RCCTL ; Bit info into
carryRLC.B RECBUF ; Carry -
> LSB of RECBUF; xxxx xxxc...... ; repeat previous two
instructions...... ; 8 times; cccc cccc; | ; MSB LSB
70 CPU ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集
3.4.6.8 BRBRANCH
*BRBRANCH 分支指令到.......... 目的
句法BR dst
运行dstPC
仿仿真MOV dst,PC
说明一个无条件分支指令被指向 64K 地址空间内的任一地址。 可使用所有源寻址模式。 分支
指令是一个字指令。
状态态位状态位不受影响。
示例给出了所有寻址模式的示例。
BR #EXEC ; Branch to label EXEC or direct branch (e.g. #0A4h); Core instruction
MOV @PC+,PCBR EXEC ; Branch to the address contained in EXEC; Core instruction
MOV X(PC),PC; Indirect addressBR &EXEC ; Branch to the address contained in
absolute ; address EXEC; Core instruction MOV X(0),PC; Indirect addressBR R5 ;
Branch to the address contained in R5; Core instruction MOV R5,PC; Indirect R5BR
@R5 ; Branch to the address contained in the word ; pointed to by R5.; Core
instruction MOV @R5+,PC; Indirect, indirect R5BR @R5+ ; Branch to the address
contained in the word pointed ; to by R5 and increment pointer in R5 afterwards.;
The next time--S/W flow uses R5 pointer--
it can ; alter program execution due to access to; next address in a table
pointed to by R5; Core instruction MOV @R5,PC; Indirect, indirect R5 with
autoincrementBR X(R5) ; Branch to the address contained in the address ; pointed
to by R5 + X (e.g. table with address ; starting at X). X can be an address or a
label; Core instruction MOV X(R5),PC; Indirect, indirect R5 + X
71
ZHCU032IDecember 2004Revised January 2012 CPU
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集
www.ti.com.cn
3.4.6.9 调用
调用子例程
句法CALL dst
运行dsttmp dst 被评估和保存
SP-2SP
PC@SP PC 被更新至 TOS
tmpPC dst 被保存至 PC
说明64K 地址空间内的任一地址上进行子例程调用。 所有寻址模式均可使用。 返回地
址(之后指令的地址)被存储在堆栈上。 调用指令是一个字指令。
状态态位状态位不受影响。
示例给出了所有寻址模式的示例。
CALL #EXEC ; Call on label EXEC or immediate address (e.g. #0A4h); SP-2 -
> SP, PC+2 -> @SP, @PC+ -
> PCCALL EXEC ; Call on the address contained in EXEC; SP-2 -> SP, PC+2 -
>SP, X(PC) -
> PC; Indirect addressCALL &EXEC ; Call on the address contained in
absolute address ; EXEC; SP-2 -> SP, PC+2 -> @SP, X(0) -
> PC; Indirect addressCALL R5 ; Call on the address contained in R5; SP-
2 -> SP, PC+2 -> @SP, R5 -
> PC; Indirect R5CALL @R5 ; Call on the address contained in the word ;
pointed to by R5; SP-2 -> SP, PC+2 -> @SP, @R5 -
> PC; Indirect, indirect R5CALL @R5+ ; Call on the address contained in
the word ; pointed to by R5 and increment pointer in R5.; The next time
S/W flow uses R5 pointer; it can alter the program execution due to;
access to next address in a table pointed to by R5; SP-2 -> SP, PC+2 -
> @SP, @R5 -
> PC; Indirect, indirect R5 with autoincrementCALL X(R5) ; Call on the
address contained in the address pointed; to by R5 + X (e.g. table with
address starting at X); X can be an address or a label; SP-2 -
> SP, PC+2 -> @SP, X(R5) -> PC; Indirect, indirect R5 + X
72 CPU ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集
3.4.6.10 CLR
*CLR[.W] 清零目的
*CLR.B 清零目的
句法CLR dst or CLR.W dst CLR.B dst
运行0dst
仿仿真MOV #0,dst MOV.B #0,dst
说明目的操作数被清零。
状态态位状态位不受影响。
示例RAM TONI 被清零。
CLR TONI ; 0 -> TONI
示例寄存器 R5 被清零。
CLR R5
示例RAM 字节 TONI 被清零。
CLR.B TONI ; 0 -> TONI
73
ZHCU032IDecember 2004Revised January 2012 CPU
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集
www.ti.com.cn
3.4.6.11 CLRC
*CLRC 清零进位位
句法CLRC
运行0C
仿仿真BIC #1,SR
说明进位位 (C) 被清零。 清零进位指令是一条字指令。
状态态位N:不受影响
Z:不受影响
C:被清零
V:不受影响
模式式位OSCOFFCPUOFF GIE 不受影响。
示例R13 指向的 16 位计数器被加至R12 指向的 32 位计数器。
CLRC ; C=0: defines startDADD @R13,0(R12) ; add 16=bit counter to low
word of 32=bit counterDADC 2(R12) ; add carry to high word of 32=bit
counter
74 CPU ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集
3.4.6.12 CLRN
*CLRN 清零负位
句法CLRN
运行0N
或者
(.NOT.src .AND. dstdst)
仿仿真BIC #4,SR
说明常量 04h 被反转 (0FFFBH) 并且与目的操作数逻辑与。 结果被放置在目的中。 清零负位
的指令是一条字指令。
状态态位N:复位为0
Z:不受影响
C:不受影响
V:不受影响
模式式位OSCOFFCPUOFF GIE 不受影响。
示例状态寄存器内的负位被清零。 这避免了对被调用子例程负数的特殊处理。
CLRNCALL SUBR............SUBR JN SUBRET ; If input is negative: do
nothing and return..................SUBRET RET
75
ZHCU032IDecember 2004Revised January 2012 CPU
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集
www.ti.com.cn
3.4.6.13 CLRZ
*CLRZ 清零零位
句法CLRZ
运行0Z
(.NOT.src .AND. dstdst)
仿仿真BIC #2,SR
说明常量 02h 被反转 (0FFFDH) 并且与目的操作数逻辑与。 结果被放置在目的中。 清零零位
的指令是一条字指令。
状态态位N:不受影响
Z:复位至 0
C:不受影响
V:不受影响
模式式位OSCOFFCPUOFF GIE 不受影响。
示例状态寄存器内的零位被清零。
CLRZ
76 CPU ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集
3.4.6.14 CMP
CMP[.W] 比较源和目的
CMP.B 比较源和目的
句法CMP src,dst or CMP.W src,dst CMP.B src,dst
运行dst+.NOT.src+1
或者
(dst-src)
说明从目的操作数中减去目的操作数。 通过把源操作数的 1s 补数加 1来完成此操作。由于结
果不保存,两个操作数不受影响;只用状态位受影响。
状态态位N:如果结果为负则置位,如果为正则复位 (srcdst)
Z:如果结果为零则置位,否则复位 (src=dst)
C:如果结果的 MSB 有一个进位则置位,否则复位
V:如果一个算术溢出发生则置位,否则复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例R5 R6 被比较。 如果它们相等,程序继续在标签EQUAL 上执行。
CMP R5,R6 ; R5 = R6?JEQ EQUAL ; YES, JUMP
示例两个 RAM 块被比较。 如果它们不相等,程序分支到标签 ERROR
MOV #NUM,R5 ; number of words to be comparedMOV #BLOCK1,R6 ; BLOCK1
start address in R6MOV #BLOCK2,R7 ; BLOCK2 start address in R7L$1 CMP
@R6+,0(R7) ; Are Words equal? R6 incrementsJNZ ERROR ; No, branch to
ERRORINCD R7 ; Increment R7 pointerDEC R5 ; Are all words compared?JNZ
L$1 ; No, another compare
示例EDE TONI 寻址的 RAM 字节被比较。 如果它们相等,程序继续在标签 EQUAL
执行。
CMP.B EDE,TONI ; MEM(EDE) = MEM(TONI)?JEQ EQUAL ; YES, JUMP
77
ZHCU032IDecember 2004Revised January 2012 CPU
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集
www.ti.com.cn
3.4.6.15 DADC
*DADC[.W] 将十进制进位加至目的
*DADC.B 将十进制进位加至目的
句法DADC dst or DADC.W src,dst DADC.B dst
运行dst+Cdst(用十进制)
仿仿真DADD #0,dst DADD.B #0,dst
说明十进制进位位 (C) 被加入到目的操作数中。
状态态位N:如果 MSB 1则置位
Z:如果 dst 为零则置位,否则复位
C:如果目的从 9999 0000 递增则置位,否则复位
如果目的从 99 00 递增则置位,否则复位
V:未定义
模式式位OSCOFFCPUOFF GIE 不受影响。
示例包含在 R5 中的四位十进制数被加至 R8指向的一个八位十进制数。
CLRC ; Reset carry; next instruction's start condition is definedDADD
R5,0(R8) ; Add LSDs + CDADC 2(R8) ; Add carry to MSD
示例包含在 R5 中的两位十进制数被加至 R8 指向的一个四位十进制数。
CLRC ; Reset carry; next instruction's start condition is definedDADD.B
R5,0(R8) ; Add LSDs + CDADC.B 1(R8) ; Add carry to MSDs
78 CPU ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集
3.4.6.16 DADD
DADD[.W] 十进制源和进位被加至目的
DADD.B 十进制源和进位被加至目的
句法DADD src,dst or DADD.W src,dst DADD.B src,dst
运行src+dst+Cdst(用十进制)
说明源操作数和目的操作数被认为是四个带符号的二进制编码的十进制 (BCD)。 十进制的源操
作数和进位位 (C) 被加至目的操作数。 源操作数不受影响。 目的之前的内容丢失。 对于
BCD 数,此结果未定义。
状态态位N:如果 MSB 1则置位,否则复位
Z:如果结果为零则置位,否则复位
C:如果结果大于 9999 则置位
如果结果大于 99 则置位
V:未定义
模式式位OSCOFFCPUOFF GIE 不受影响。
示例包含在 R5 R6 中的八位 BCD 数被用十进制的方法加至包含在 R3 R4(包含在 MSD
中的 R6 R4)的一个八位 BCD 数。
CLRC ; clear carryDADD R5,R3 ; add LSDsDADD R6,R4 ; add MSDs with
carryJC OVERFLOW ; If carry occurs go to error handling routine
示例RAM 字节 CNT 中的两位十进制计数器递增 1
CLRC ; clear carryDADD.B #1,CNT
或者
SETCDADD.B #0,CNT ; equivalent to DADC.B CNT
79
ZHCU032IDecember 2004Revised January 2012 CPU
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
EDE
EDE+254
TONI
TONI+254
指令集
www.ti.com.cn
3.4.6.17 DEC
*DEC[.W] 递减目的
*DEC.B 递减目的
句法DEC dst or DEC.W dst DEC.B dst
运行dst-1dst
仿仿真SUB #1,dstSUB.B #1,dst
说明目的操作数递减 1。 原先的内容丢失。
状态态位N:如果结果为负则置位,否则复位
Z:如果 dst 包含 1则置位,否则复位
C:如果 dst 包含 0则复位,否则置位
V:如果一个算术溢出发生则置位,否则复位
如果目的的初始值为 08000h 则置位,否则复位。
如果目的的初始值为 080h 则置位,否则复位。
模式式位OSCOFFCPUOFF GIE 不受影响。
示例R10 递减 1
DEC R10 ; Decrement R10; Move a block of 255 bytes from memory location
starting with EDE to memory location starting with; TONI. Tables should
not overlap: start of destination address TONI must not be within the
range EDE; to EDE+0FEhMOV #EDE,R6MOV #255,R10L$1 MOV.B @R6+,TONI-EDE-
1(R6)DEC R10JNZ L$1
不要使用上面的具有3-13中显示的重叠的例程来传送表格。
3-13. 递减减重
80 CPU ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集
3.4.6.18 DECD
*DECD[.W] 双递减目的
*DECD.B 双递减目的
句法DECD dst or DECD.W dst DECD.B dst
运行dst-2dst
仿仿真SUB #2,dst
仿仿真SUB.B #2,dst
说明目的操作数递减 2。 原先的内容丢失。
状态态位N:如果结果为负则置位,否则复位
Z:如果 dst 包含 2则置位,否则复位
C:如果 dst 包含 01则复位,否则置位
V:如果一个算术溢出发生则置位,否则复位
如果目的的初始值为 08001 08000h 则置位,否则复位。
如果目的的初始值为 081 080h 则置位,否则复位。
模式式位OSCOFFCPUOFF GIE 不受影响。
示例R10 递减 2
DECD R10 ; Decrement R10 by two; Move a block of 255 words from memory location
starting with EDE to ; memory location starting with TONI; Tables should not
overlap: start of destination address TONI must not be ; within the range EDE to
EDE+0FEhMOV #EDE,R6MOV #510,R10L$1 MOV @R6+,TONI-EDE-2(R6)DECD R10JNZ L$1
示例位置 LEO 上的存储器递减 2
DECD.B LEO ; Decrement MEM(LEO)
状态字节 STATUS 2
DECD.B STATUS
81
ZHCU032IDecember 2004Revised January 2012 CPU
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集
www.ti.com.cn
3.4.6.19 DINT
*DINT 禁用(通用)中断
句法DINT
运行0GIE
(0FFF7h .AND. SRSR/.NOT.src.AND. dstdst)
仿仿真BIC #8,SR
说明所有中断被禁用。
常量 08h 被反转并且与状态寄存器 (SR) 逻辑与。结果被放置在 SR 中。
状态态位状态位不受影响。
模式式位GIE 被清零。 OSCOFF CPUOFF 不受影响。
示例状态寄存器中的通用中断使能 (GIE) 位被清零来实现 32 位计数器的不中断移动。 这就确
保移动器件,计数器不会被任何中断修改。
DINT ; All interrupt events using the GIE bit are disabled NOP MOV COUNTHI,R5 ;
Copy counter MOV COUNTLO,R6 EINT ; All interrupt events using the GIE bit are
enabled
:禁用用中中断
如果任何代码序列需要被保护不受中断影响,DINT 应该在不可中断序列开
始前至少在一个指令上执行,或者在一个 NOP 指令后执行。
82 CPU ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集
3.4.6.20 EINT
*EINT 启用(通用)中断
句法EINT
运行1GIE
(0008h.OR. SRSR/.src.OR. dstdst)
仿仿真BIS #8,SR
说明所有中断被启用。
常量 #08h 与状态寄存器 SR 逻辑与。 结果被放置在 SR 中。
状态态位状态位不受影响。
模式式位GIE 被置位。 OSCOFF CPUOFF 不受影响。
示例状态寄存器中的通用中断使能 (GIE) 位被置位。
; Interrupt routine of ports P1.2 to P1.7; P1IN is the address of the register
where all port bits are read. P1IFG is ; the address of the register where all
interrupt events are latched.PUSH.B &P1INBIC.B @SP,&P1IFG ; Reset only accepted
flagsEINT ; Preset port 1 interrupt flags stored on stack; other interrupts are
allowedBIT #Mask,@SPJEQ MaskOK ; Flags are present identically to mask:
jump......MaskOK BIC #Mask,@SP......INCD SP ; Housekeeping: inverse to PUSH
instruction ; at the start of interrupt subroutine. Corrects ; the stack
pointer.RETI
:启用用中中断
中断被启用时,使能中断指令 (EINT) 之后的指令一直被执行,即使一个中
断处理例程被挂起时也是如此。
83
ZHCU032IDecember 2004Revised January 2012 CPU
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集
www.ti.com.cn
3.4.6.21 INC
*INC[.W] 递增目的
*INC.B 递增目的
句法INC dst or INC.W dst INC.B dst
运行dst+1dst
仿仿真ADD #1,dst
说明目的操作数递增 1。 原先的内容丢失。
状态态位N:如果结果为负则置位,否则复位
Z:如果 dst 包含 0FFFFh 则置位,否则复位
如果 dst 包含 0FFh 则置位,否则复位
C:如果 dst 包含 0FFFFh 则置位,否则复位
如果 dst 包含 0FFh 则置位,否则复位
V:如果 dst 包含 07FFFh 则置位,否则复位
如果 dst 包含 07Fh 则置位,否则复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例一个过程的状态字节,STATUS 被递增。 当它等于 11 时,采用一个到 OVFL 的分支指
令。
INC.B STATUSCMP.B #11,STATUSJEQ OVFL
84 CPU ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集
3.4.6.22 INCD
*INCD[.W] 双递增目的
*INCD.B 双递增目的
句法INCD dst or INCD.W dst INCD.B dst
运行dst+2dst
仿仿真ADD #2,dstADD.B #2,dst
示例目的操作数递增 2。 原先的内容丢失。
状态态位N:如果结果为负则置位,否则复位
Z:如果 dst 包含 0FFFEh 则置位,否则复位
如果 dst 包含 0FEh 则置位,否则复位
C:如果 dst 包含 0FFFEh 0FFFFh 则置位,否则复位
如果 dst 包含 0FEh 0FFh 则置位,否则复位
V:如果 dst 包含 07FFEh 07FFFh 则置位,否则复位
如果 dst 包含 07Eh 07Fh 则置位,否则复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例在不使用一个寄存器的情况下将堆栈顶部的项目 (TOS) 删除。
PUSH R5 ; R5 is the result of a calculation, which is stored; in the
system stackINCD SP ; Remove TOS by double-
increment from stack; Do not use INCD.B, SP is a word-aligned registerRET
示例堆栈顶端的字节递增 2
INCD.B 0(SP) ; Byte on TOS is increment by two
85
ZHCU032IDecember 2004Revised January 2012 CPU
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集
www.ti.com.cn
3.4.6.23 INV
*INV[.W] 反转目的
*INV.B 反转目的
句法INV dst INV.B dst
运行.NOT.dstdst
仿仿真XOR #0FFFFh,dstXOR.B #0FFh,dst
说明目的操作数被反转。 原先的内容丢失。
状态态位N:如果结果为负则置位,否则复位
Z:如果 dst 包含 0FFFFh 则置位,否则复位
如果 dst 包含 0FFh 则置位,否则复位
C:如果结果非零则置位,否则复位 (=.NOT. 零位)
如果结果非零则置位,否则复位 (=.NOT. 零位)
V:如果初始目的操作数为负则置位,否则复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例R5 的内容被求反(2补码)
MOV #00AEh,R5 ; R5 = 000AEhINV R5 ; Invert R5, R5 = 0FF51hINC R5 ; R5 is
now negated, R5 = 0FF52h
示例存储器字节的内容被求反。
MOV.B #0AEh,LEO ; MEM(LEO) = 0AEhINV.B LEO ; Invert LEO, MEM(LEO) =
051hINC.B LEO ; MEM(LEO) is negated, MEM(LEO) = 052h
86 CPU ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集
3.4.6.24 JCJHS
JC 如果进位被设定则跳转
JHS 如果高于或相等则跳转
句法JC label JHS label
运行如果 C=1PC + 2 offset PC
如果 C=0:执行之后的指令
说明状态寄存器进位位 (C) 被测试。 如果它被置位,包含在指令 LSB 中的 10位带符号偏移被
加至程序计数器。 如果 C被复位,跳转之后的下一条指令被执行。 JC(如果进位/高于或
一样则跳转)被用于不带符号数(065536)的比较。
状态态位状态位不受影响。
示例P1IN.1 信号被用于定义或者控制程序流程。
BIT.B #02h,&P1IN ; State of signal -
> CarryJC PROGA ; If carry=1 then execute program routine A...... ;
Carry=0, execute program here
示例R5 15 相比较。 如果其内容高于或一样,分支至标签。
CMP #15,R5JHS LABEL ; Jump is taken if R5 >= 15...... ; Continue here if
R5 < 15
87
ZHCU032IDecember 2004Revised January 2012 CPU
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集
www.ti.com.cn
3.4.6.25 JEQJZ
JEQJZ 如果相等则跳转,如果为零则跳转
句法JEQ label JZ label
运行如果 Z=1PC + 2 offset PC
如果 Z=0:执行之后的指令
说明状态寄存器零位 (C) 被测试。 如果它被置位,包含在指令 LSB 中的 10位带符号偏移被加
至程序计数器。 如果 Z未被置位,跳转之后的指令被执行。
状态态位状态位不受影响。
示例如果 R7 包含零,则跳转至地址 TONI
TST R7 ; Test R7JZ TONI ; if zero: JUMP
示例如果 R6 等于表内容,则跳转至地址 LEO
CMP R6,Table(R5) ; Compare content of R6 with content of ; MEM (table
address + content of R5)JEQ LEO ; Jump if both data are equal...... ;
No, data are not equal, continue here
示例如果 R5 0,则分支至标签。
TST R5JZ LABEL......
88 CPU ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集
3.4.6.26 JGE
JGE 如果大于或相等,则跳转。
句法JGE label
运行如果 (N .XOR. V)=0,则跳转至标签:PC + 2P offset PC
如果 (N .XOR. V)=1,那么执行后面的指令。
说明状态寄存器负位 (N) 和溢出位 (V) 被测试。 如果 NV都被置位或复位,包含在指令
LSB 中的 10 位带符号偏移被加至程序计数器。 如果只有一个被置位,跳转之后的指令被
执行。
这可实现带符号数的比较。
状态态位状态位不受影响。
示例R6 的内容大于或等于R7 指向的存储器的时候,程序继续在标签 EDE 上执行。
CMP @R7,R6 ; R6 >= (R7)?, compare on signed numbersJGE EDE ; Yes, R6 >=
(R7)...... ; No, proceed............
89
ZHCU032IDecember 2004Revised January 2012 CPU
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集
www.ti.com.cn
3.4.6.27 JL
JL 如果少于则跳转
句法JL label
运行如果 (N .XOR. V)= 1,则跳转至标签:PC + 2 offset PC
如果 (N .XOR. V)=0 那么执行之后的指令。
说明状态寄存器负位 (N) 和溢出位被测试。 如果只有一个未被置位,包含在指令 LSB 中的 10
位带符号偏移被添加到程序计数器。 如果 NV都被置位或复位,执行跳转之后的指
令。
这样可实现带符号数的比较。
状态态位状态位不受影响。
示例R6 的内容少于 R7 指向的存储器时,程序化继续在标签 EDE 上继续执行。
CMP @R7,R6 ; R6 < (R7)?, compare on signed numbersJL EDE ; Yes, R6 <
(R7)...... ; No, proceed............
90 CPU ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集
3.4.6.28 JMP
JMP 无条件跳转
句法JMP label
运行PC + 2 × offset PC
说明包含在指令 LSB 内的 10 位带符号偏移被加至程序计数器。
状态态位状态位不受影响。
提示这个单字指令取代相对于程序计数器的在 -511+512 字范围内的分支 (BRANCH)
令。
91
ZHCU032IDecember 2004Revised January 2012 CPU
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集
www.ti.com.cn
3.4.6.29 JN
JN 如果为负则跳转
句法JN label
运行如果 N= 1PC + 2 x offset PC
如果 N=0:执行之后的指令
说明状态寄存器的负位 (N) 被测试。 如果它被置位,包含在指令 LSB 中的 10位带符号偏移被
加至程序计数器。 如果 N被复位,跳转之后的下一条指令被执行。
状态态位状态位不受影响。
示例从计数 (COUNT) 中减去 R5 中的计算结果。 如果结果为负,COUNT 被清零并且程序继
续在另外一条路径上执行。
SUB R5,COUNT ; COUNT - R5 -
> COUNTJN L$1 ; If negative continue with COUNT=0 at PC=L$1...... ;
Continue with COUNT>=0..................L$1 CLR COUNT..................
92 CPU ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集
3.4.6.30 JNCJLO
JNC 如果进位没被设定则跳转
JLO 如果低于则跳转
句法JNC label JLO label
运行如果 C=0PC + 2 offset PC
如果 C=1:执行之后的指令
说明状态寄存器进位位 (C) 被测试。 如果它被复位,包含在指令 LSB 中的 10位带符号偏移被
加至程序计数器。 如果 C被置位,跳转之后的下一条指令被执行。 JNC(如果无进位/
于则跳转)用于 比较无符号数(065536)。
状态态位状态位不受影响。
示例R6 中的结果被加至缓冲器 (BUFFER)。 如果一个溢出发生,使用位于地址 ERROR上的
一个错误错误处理例程。
ADD R6,BUFFER ; BUFFER + R6 -
> BUFFERJNC CONT ; No carry, jump to CONTERROR ...... ; Error handler
start..................CONT ...... ; Continue with normal program
flow............
示例如果 STATUS 包含 10则分支至 STL2
CMP.B #2,STATUSJLO STL 2 ; STATUS < 2...... ; STATUS >= 2, continue here
93
ZHCU032IDecember 2004Revised January 2012 CPU
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集
www.ti.com.cn
3.4.6.31 JNEJNZ
JNE 如果不相等则跳转
JNZ 如果不为零则跳转
句法JNE label JNZ label
运行如果 Z=0PC + 2 a offset PC
如果 Z=1:执行之后的指令
说明状态寄存器零位 (C) 被测试。 如果它被复位,包含在指令 LSB 中的 10位带符号偏移被加
至程序计数器。 如果 Z被置位,跳转之后的指令被执行。
状态态位状态位不受影响。
示例如果 R7 R8 的内容不同,则跳转至地址 TONI
CMP R7,R8 ; COMPARE R7 WITH R8JNE TONI ; if different: jump...... ; if
equal, continue
94 CPU ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集
3.4.6.32 MOV
MOV[.W] 将源移动到目的
MOV.B 将源移动到目的
句法MOV src,dst or MOV.W src,dst MOV.B src,dst
运行srcdst
说明源操作数被移动至目的操作数。
源操作数不受影响。 目的之前的内容丢失。
状态态位状态位不受影响。
模式式位OSCOFFCPUOFF GIE 不受影响。
示例EDE 的内容(数据字)被复制到表 TOM。 此表的长度必须为 020h 个位置。
MOV #EDE,R10 ; Prepare pointerMOV #020h,R9 ; Prepare counterLoop MOV
@R10+,TOM-EDE-
2(R10) ; Use pointer in R10 for both tablesDEC R9 ; Decrement counterJNZ
Loop ; Counter not 0, continue copying...... ; Copying
completed............
示例EDE 的内容(字节数据)被复制到表 TOM。 此表的长度必须为 020h 个位置。
MOV #EDE,R10 ; Prepare pointerMOV #020h,R9 ; Prepare counterLoop MOV.B
@R10+,TOM-EDE-
1(R10) ; Use pointer in R10 for ; both tablesDEC R9 ; Decrement
counterJNZ Loop ; Counter not 0, continue ; copying...... ; Copying
completed............
95
ZHCU032IDecember 2004Revised January 2012 CPU
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集
www.ti.com.cn
3.4.6.33 NOP
*NOP 无操作
句法NOP
运行
仿仿真MOV #0, R3
说明无操作。 在软件检查期间或在定义的等待时间内,此指令可被用于删除指令。
状态态位状态位不受影响。
NOP 指令主要有两个用途:
填充一个、两个、或三个存储器字
跳转软件时序
:仿仿真真误误操操作作指指令
其它指令可在提供不同指令周期和代码字数量的同时仿真 NOP 指令。 一
些示例为:
MOV #0,R3 ; 1 cycle, 1 word MOV 0(R4),0(R4) ; 6
cycles, 3 words MOV @R4,0(R4) ; 5 cycles, 2 words BIC
#0,EDE(R4) ; 4 cycles, 2 words JMP $+2 ; 2 cycles, 1
word BIC #0,R5 ; 1 cycle, 1 word
然而,当使用这些示例应该小心以防止发生意外结果。 例如,如
MOV 0(R4)M0(R4)被使用并且 R4 中的值为 120h 的话,那么会发生
一个到安装装置定时器(地址120h)的安全违反,这是由于安全密钥未被
使用。
96 CPU ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集
3.4.6.34 POP
*POP[.W] 将字从堆栈弹出至目的
*POP.B 将字节从堆栈弹出至目的
句法POP dst POP.B dst
运行@SPtemp
SP+2SP
tempdst
仿仿真MOV @SP+,dst or MOV.W @SP+,dstMOV.B @SP+,dst
说明堆栈指针 (TOS) 指向的堆栈位置被移动到目的。 之后,堆栈指针递增 2
状态态位状态位不受影响。
示例R7 的内容和状态寄存器被从堆栈中恢复。
POP R7 ; Restore R7POP SR ; Restore status register
示例RAM 字节 LEO 的内容被从堆栈中恢复。
POP.B LEO ; The low byte of the stack is moved to LEO.
示例R7 的内容被从堆栈中恢复。
POP.B R7 ; The low byte of the stack is moved to R7,; the high byte of
R7 is 00h
示例R7 指向的存储器的内容和状态寄存器被从堆栈中恢复。
POP.B 0(R7) ; The low byte of the stack is moved to the; the byte which
is pointed to by R7; Example: R7 = 203h; Mem(R7) = low byte of system
stack; Example: R7 = 20Ah; Mem(R7) = low byte of system stackPOP SR ;
Last word on stack moved to the SR
:系统统堆堆栈栈指指针
系统堆栈指针 (SP) 一直递增 2,与字节后缀无关。
97
ZHCU032IDecember 2004Revised January 2012 CPU
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集
www.ti.com.cn
3.4.6.35 PUSH
PUSH[.W] 将字压入堆栈
PUSH.B 将字节压入堆栈
句法PUSH src or PUSH.W src PUSH.B src
运行SP-2SP
src@SP
说明堆栈指针递减 2,随后源操作数被移动到由堆栈指针 (TOS) 寻址的 RAM 字。
状态态位状态位不受影响。
模式式位OSCOFFCPUOFF GIE 不受影响。
示例状态寄存器和 R8 的内容被保存在堆栈内。
PUSH SR ; save status registerPUSH R8 ; save R8
示例外设 TCDAT 的内容被保存在堆栈上。
PUSH.B &TCDAT ; save data from 8-
bit peripheral module,; address TCDAT, onto stack
:系统统堆堆栈栈指指针
系统堆栈指针 (SP) 一直递减 2,与字节后缀无关。
98 CPU ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集
3.4.6.36 RET
*RET 从子例程返回
句法RET
运行@SPPC
SP+2SP
仿仿真MOV @SP+,PC
说明被一个调用指令压入堆栈的返回地址被移动到程序计数器。 程序继续在子例程调用之后的
代码地址上执行。
状态态位状态位不受影响。
99
ZHCU032IDecember 2004Revised January 2012 CPU
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
PC −6
PC −4
PC −2
PC
PC +2
PC +4
PC +6
PC +8
PC = PCi
PCi +2
PCi +4
PCi +n−4
PCi +n−2
PCi +n
Interrupt Request
Interrupt Accepted
PC+2 is Stored
Onto Stack
RETI
指令集
www.ti.com.cn
3.4.6.37 RETI
RETI 从中断返回
句法RETI
运行TOSSR
SP+2SP
TOSPC
SP+2SP
说明通过用 TOS 内容替代现有的 SR 内容,状态寄存器被恢复至中断处理例程开始位置的
值。 堆栈指针 (SP)被递增 2
程序计数器被恢复至中断处理开始位置的值。 这是被中断程序流程之后的连续步骤。 通过
TOS 存储器内容替代现有的 PC 内容,恢复被执行。 堆栈指针 (SP) 被递增。
状态态位N:从系统堆栈中恢复
Z:从系统堆栈中恢复
C:从系统堆栈中恢复
V:从系统堆栈中恢复
模式式位OSCOFFCPUOFF GIE 从系统堆栈中恢复。
示例3-14解释了主程序中断。
3-14. 主程程序中断
100 CPU ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
15 0
7 0
C
Byte
Word
0
www.ti.com.cn
指令集
3.4.6.38 RLA
*RLA[.W] 算术左旋转
*RLA.B 算术左旋转
句法RLA dst or RLA.W dst RLA.B dst
运行C<-MSB<-MSB-1 .... LSB+1<-LSB<-0
仿仿真ADD dst,dst ADD.B dst,dst
说明目的操作数如3-15中显示的那样左移一个位置。 MSB 被移入进位位 (C),而 LSB 0
填充。RLA 指令作为一个带符号的乘以 2的乘法。
如果在操作被执行前 dst04000h dst<0C000h,一个溢出发生:结果的符号改变。
3-15. 目的的操作数-术左左移
如果在操作被执行前 dst040h dst<0C0h,一个溢出发生:结果的符号改变。
状态态位N:如果结果为负则置位,否则复位
Z:如果结果为零则置位,否则复位
C:从 MSB 载入
V:如果一个算术溢出发生则置位:
初始值为 04000hdst<0C000h;否则复位
如果一个算术溢出发生则置位:
初始值 040h dst<0C0h;否则复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例R7 乘以 2
RLA R7 ; Shift left R7 (x 2)
示例R7 的低字节乘以 4
RLA.B R7 ; Shift left low byte of R7 (x 2) RLA.B R7 ; Shift left low
byte of R7 (x 4)
: RLA 替代
汇编程序不识别此指令:
RLA @R5+, RLA.B @R5+, or RLA(.B) @R5
它可由
ADD @R5+,-2(R5), ADD.B @R5+,-1(R5), or ADD(.B) @R5
101
ZHCU032IDecember 2004Revised January 2012 CPU
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
15 0
7 0
C
Byte
Word
指令集
www.ti.com.cn
3.4.6.39 RLC 替代
*RLC[.W] 通过进位左旋转
*RLC.B 通过进位做选装
句法RLC dst or RLC.W dst RLC.B dst
运行C<-MSB<-MSB-1 .... LSB+1<-LSB<-C
仿仿真ADDC dst,dst
说明目的操作数被如3-16中显示的那样左移一个位置。 进位位 (C) 被移入 LSB,而 MSB
移入进位位 (C)
3-16. 目的的操作数-位左左移
状态态位N:如果结果为负则置位,否则复位
Z:如果结果为零则置位,否则复位
C:从 MSB 载入
V:如果一个算术溢出发生则置位
初始值为 04000hdst<0C000h;否则复位
如果一个算术溢出发生则置位:
初始值为 040hdst<0C0h;否则复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例R5 被左移一个位置。
RLC R5 ; (R5 x 2) + C -> R5
示例输入 P1IN.1 信息被移入 R5 LSB
BIT.B #2,&P1IN ; Information -> CarryRLC R5 ; Carry=P0in.1 -> LSB of R5
示例MEM(LEO) 内容被左移一个位置。
RLC.B LEO ; Mem(LEO) x 2 + C -> Mem(LEO)
: RLC RLC.B 替代
汇编程序不识别此指令:
RLC @R5+, RLC @R5, or RLC(.B) @R5
它必须被
ADDC @R5+,-2(R5), ADDC.B @R5+,-1(R5), or ADDC(.B) @R5
102 CPU ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
15 0
15 0
C
Byte
Word
www.ti.com.cn
指令集
3.4.6.40 RRA 所替替代
RRA[.W] 算术右旋转
RRA.B 算术右旋转
句法RRA dst or RRA.W dst RRA.B dst
运行MSBMSBMSBMSB-1, ... LSB+1LSBLSBC
说明目的操作数如3-17中显示的那样右移一个位置。 MSB 被移入 MSBMSB 被移入
MSB-1,而LSB+1 被移入 LSB
3-17. 目的的操作数-术右右移
状态态位N:如果结果为负则置位,否则复位
Z:如果结果为零则置位,否则复位
C:从 MSB 载入
V:复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例R5 被右移一个位置 MSB 保存之前的值。 它的操作与算术除以 2等效。
RRA R5 ; R5/2 -
> R5; The value in R5 is multiplied by 0.75 (0.5 + 0.25).;PUSH R5 ; Hold
R5 temporarily using stackRRA R5 ; R5 x 0.5 -
> R5ADD @SP+,R5 ; R5 x 0.5 + R5 = 1.5 x R5 -
> R5RRA R5 ; (1.5 x R5) x 0.5 = 0.75 x R5 -> R5......
示例R5 的低字节被右移一个位置。 MSB 保存之前的值。 它的操作与算术除以 2等效。
RRA.B R5 ; R5/2 -
> R5: operation is on low byte only; High byte of R5 is resetPUSH.B R5 ;
R5 x 0.5 -> TOSRRA.B @SP ; TOS x 0.5 = 0.5 x R5 x 0.5 = 0.25 x R5 -
> TOSADD.B @SP+,R5 ; R5 x 0.5 + R5 x 0.25 = 0.75 x R5 -> R5......
103
ZHCU032IDecember 2004Revised January 2012 CPU
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
15 0
7 0
C
Byte
Word
指令集
www.ti.com.cn
3.4.6.41 RRC
RRC[.W] 通过进位右旋转
RRC.B 通过进位右旋转
句法RRC dst or RRC.W dst RRC dst
运行CMSBMSB-1 .... LSB+1LSBC
说明目的操作数如3-18中显示的那样右移一个位置。 进位位 (C) 被移入 MSB,而 LSB 被移
入进位位 (C)
3-18. 目的的操作数-位右右移
状态态位N:如果结果为负则置位,否则复位
Z:如果结果为零则置位,否则复位
C:从 LSB 载入
V:复位
模式式位OSCOFFCPUOFF GIEare 不受影响。
示例R5 被右移一个位置。 MSB 被载入 1
SETC ; Prepare carry for MSBRRC R5 ; R5/2 + 8000h -> R5
示例R5 被右移一个位置。 MSB 被载入 1
SETC ; Prepare carry for MSBRRC.B R5 ; R5/2 + 80h -
> R5; low byte of R5 is used
104 CPU ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集
3.4.6.42 SBC
*SBC[.W] 减去源并且借位/.NOT.来自目的的进位
*SBC.B 减去源并且借位/.NOT.来自目的的进位
句法SBC dst or SBC.W dst SBC.B dst
运行dst+0FFFFh+Cdst
dst+0FFh+Cdst
仿仿真SUBC #0,dst SUBC.B #0,dst
说明进位位 (C) 被加入到目的操作数减一中。 目的之前的内容丢失。
状态态位N:如果结果为负则置位,否则复位
Z:如果结果为零则置位,否则复位
C:如果结果的 MSB 有一个进位则置位,否则复位。
如果无借位则置位为 1,如果有借位则复位。
V:如果一个算术溢出发生则置位,否则复位。
模式式位OSCOFFCPUOFF GIE 不受影响。
示例R12 指向的32 位计数器中减去 R13 指向的 16 位计数器。
SUB @R13,0(R12) ; Subtract LSDsSBC 2(R12) ; Subtract carry from MSD
示例R12 指向的16 位计数器中减去 R13 指向的 8位计数器。
SUB.B @R13,0(R12) ; Subtract LSDsSBC.B 1(R12) ; Subtract carry from MSD
:借位位执执行
借位被视为一个.NOT.进位: 借位 进位位
支持 0
1
105
ZHCU032IDecember 2004Revised January 2012 CPU
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集
www.ti.com.cn
3.4.6.43 SETC
*SETC 设定进位位
句法SETC
运行1C
仿仿真BIS #1,SR
说明进位位 (C) 被设定。
状态态位N:不受影响
Z:不受影响
C:设定
V:不受影响
模式式位OSCOFFCPUOFF GIE 不受影响。
示例十进制减法仿真。
用十进制减法从 R6 中减去 R5
假定 R5=03987h R6=04137h
DSUB ADD #06666h,R5 ; Move content R5 from 0-9 to 6-
0Fh; R5 = 03987h + 06666h = 09FEDhINV R5 ; Invert this (result back to 0-
9); R5 = .NOT. R5 = 06012hSETC ; Prepare carry = 1DADD R5,R6 ; Emulate
subtraction by addition of:; (010000h - R5 -
1); R6 = R6 + R5 + 1; R6 = 0150h
106 CPU ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集
3.4.6.44 SETN
*SETN 设定负位
句法SETN
运行1N
仿仿真BIS #4,SR
说明负位 (N) 被设定。
状态态位N:设定
Z:不受影响
C:不受影响
V:不受影响
模式式位OSCOFFCPUOFF GIE 不受影响。
107
ZHCU032IDecember 2004Revised January 2012 CPU
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集
www.ti.com.cn
3.4.6.45 SETZ
*SETZ 设定零位。
句法SETZ
运行1Z
仿仿真BIS #2,SR
说明零位 (Z) 被设定。
状态态位N:不受影响
Z:设定
C:不受影响
V:不受影响
模式式位OSCOFFCPUOFF GIE 不受影响。
108 CPU ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集
3.4.6.46 SUB
SUB[.W] 从目的中减去源
SUB.B 从目的中减去源
句法SUB src,dst or SUB.W src,dst SUB.B src,dst
运行dst+.NOT.src+1dst
[(dst-srcdst)]
说明通过将源操作数 1补码与常量 1相加,可将源操作数从目的操作数中减去。源操作数不受
影响。 目的之前的内容丢失。
状态态位N:如果结果为负则置位,否则复位
Z:如果结果为零则置位,否则复位
C:如果结果的 MSB 有一个进位则置位,否则复位。
如果无借位则置位,如果有借位则复位。
V:如果一个算术溢出发生则置位,否则复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例参见 SBC 介绍中的示例。
示例参见 SBC.B 介绍中的示例。
:借位位被被视视为为一一个.NOT.
借位被视为一个.NOT.进位: 借位 进位位
支持 0
1
109
ZHCU032IDecember 2004Revised January 2012 CPU
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集
www.ti.com.cn
3.4.6.47 SUBCSBB
SUBC[.W]SBB[.W] 减去源并借位 / .NOT来自目的的进位
SUBC.BSBB.B 减去源并借位 / .NOT来自目的的进位
句法SUBC src,dst or SUBC.W src,dst or SBB src,dst or SBB.W src,dstSUBC.B
src,dst or SBB.B src,dst
运行dst+.NOT.src+Cdst
或者
(dst-src-1+Cdst)
说明通过将源操作数的 1补码与进位位 (C) 相加,可将源操作数从目的操作数中减去。 源操作
数不受影响。 目的之前的内容丢失。
状态态位N:如果结果为负则置位,否则复位。
Z:如果结果为零则置位,否则复位。
C:如果结果的 MSB 有一个进位则置位,否则复位。
如果无借位则置位,如果有借位则复位。
V:如果一个算术溢出发生则置位,否则复位。
模式式位OSCOFFCPUOFF GIE 不受影响。
示例减去两个浮点尾数(24 位)。
LSB 位于 R13 R10 中,MSB 位于 R12 R9 中。
SUB.W R13,R10 ; 16-bit part, LSBsSUBC.B R12,R9 ; 8-bit part, MSBs
示例R10 指向的一个 16 位计数器和 R11(MSD) 中减去 R13 指向的 16 位计数器。
SUB.B @R13+,R10 ; Subtract LSDs without carrySUBC.B @R13,R11 ; Subtract
MSDs with carry... ; resulting from the LSDs
:借位位执执行
借位被视为一个.NOT.进位; 借位 进位位
支持 0
1
110 CPU ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
15 8 7 0
www.ti.com.cn
指令集
3.4.6.48 SWPB
SWPB 交换字节
句法SWPB dst
运行15 870
说明3-19所示,目的操作数高字节和低字节互换。
模式式位OSCOFFCPUOFF GIE 不受影响。
3-19. 目的的操作数-节交交换
示例MOV #040BFh,R7 ; 0100000010111111 -> R7SWPB R7 ; 1011111101000000 in R7
示例R5 中的值乘以 256。 结果被保存在 R5R4 中。
SWPB R5 ;MOV R5,R4 ; Copy the swapped value to R4BIC #0FF00h,R5 ;
Correct the resultBIC #00FFh,R4 ; Correct the result
111
ZHCU032IDecember 2004Revised January 2012 CPU
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
15 8 7 0
指令集
www.ti.com.cn
3.4.6.49 SXT
SXT 扩展符
句法SXT dst
运行78........ 15
说明3-20所示,低字节的符号被扩展至高字节。
状态态位N:如果结果为负则置位,否则复位
Z:如果结果为零则置位,否则复位
C:如果结果不为零则复位,否则复位 (.NOT. 零位)
V:复位
模式式位OSCOFFCPUOFF GIE 不受影响。
3-20. 目的的操作数-号扩扩展
示例P1IN 值载入到 R7。 扩展符指令的运行用位 7的值将位 8扩展至位 15
然后 R7 被加至 R6
MOV.B &P1IN,R7 ; P1IN = 080h: .... .... 1000 0000SXT R7 ; R7 = 0FF80h:
1111 1111 1000 0000
112 CPU ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集
3.4.6.50 TST
*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
说明目的操作数与零进行比较。 状态位根据结果进行置位。 目的不受影响。
状态态位N:如果目的为负则置位,否则复位
Z:如果目的包含零则置位,否则复位
C:设定
V:复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例R7 被测试。 如果它为负,继续在 R7NEG 上执行;如果它为正但不为零,继续在
R7POS 上执行。
TST R7 ; Test R7JN R7NEG ; R7 is negativeJZ R7ZERO ; R7 is zeroR7POS
...... ; R7 is positive but not zeroR7NEG ...... ; R7 is negativeR7ZERO
...... ; R7 is zero
示例R7 的低字节被测试。 如果它为负,继续在 R7NEG 上执行;如果它为正但不为零,继续
R7POS 上执行。
TST.B R7 ; Test low byte of R7JN R7NEG ; Low byte of R7 is negativeJZ
R7ZERO ; Low byte of R7 is zeroR7POS ...... ; Low byte of R7 is positive
but not zeroR7NEG ..... ; Low byte of R7 is negativeR7ZERO ...... ; Low
byte of R7 is zero
113
ZHCU032IDecember 2004Revised January 2012 CPU
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集
www.ti.com.cn
3.4.6.51 异或
XOR[.W] 将源与目的进行异或操作
XOR.B 将源与目的进行异或操作
句法XOR src,dst or XOR.W src,dst XOR.B src,dst
运行src.XOR. dstdst
说明源和目的操作数进行异或操作。 结果被放置在目的中。 源操作数不受影响。
状态态位N:如果结果 MSB 被设定则置位,如果未被设定则复位
Z:如果结果为零则置位,否则复位
C:如果结果非零则置位,否则复位 (=.NOT. 零位)
V:如果两个操作数都为负则置位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例R6 中被置位的位转换 RAM TONI 中的位。
XOR R6,TONI ; Toggle bits of word TONI on the bits set in R6
示例R6 中被置位的位转换 RAM 字节 TONI 中的位。
XOR.B R6,TONI ; Toggle bits of byte TONI on the bits set in; low byte of
R6
示例R7 低字节中与 RAM字节 EDE 中的位不同的那些位复位为 0
XOR.B EDE,R7 ; Set different bit to "1s" INV.B R7 ; Invert Lowbyte,
Highbyte is 0h
114 CPU ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Chapter 4
ZHCU032IDecember 2004Revised January 2012
CPUX
本章介绍了支持 1MB存储器访问的扩展 MSP430X 16 位精简指令集 (RISC) CPU,它的寻址方式,和指令
集。 MSP430XCPU 在所有地址空间超过 64KB MSP430 器件上执行。
Topic ........................................................................................................................... Page
4.1 CPU 介绍........................................................................................................ 116
4.2 中断................................................................................................................ 118
4.3 CPU 寄存存器..................................................................................................... 119
4.4 寻址址模.......................................................................................................... 125
4.5 MSP430 MSP430X 指令................................................................................. 142
4.6 指令令集说明....................................................................................................... 160
115
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
CPU
介绍
www.ti.com.cn
4.1 CPU 介绍
MSP430X CPU 包含有专门针对现代 编程技术,例如计算分支、表处理 和诸如 C语言的高级语言使用而设
计的特性。MSP430X CPU 可寻址1MB 地址范围而无需分页。 此外,在某些情况下,相对于MSP430
CPUMSP430X CPU 具有较少的中断开销周期和更少的指令周期,而同时又保持了与MSP430 CPU 一样
或者更佳的代码密度。 MSP430X CPU MSP430 CPU 向后兼容。
MSP430X CPU 的特性包括:
RISC 架构
垂直架构
包括程序计数器、状态寄存器和堆栈指针的完全寄存器访问
单周期寄存器操作
较大的寄存器文件减少了到存储器的取指令操作
20 位地址总线可在无需分页的情况下在整个存储器范围内实现直接访问和分支指令
16 位数据总线允许字宽自变量的直接操作
常数发生器提供最多 6个经常使用的立即值并减少了代码尺寸
无需中间寄存器保持的直接内存到内存传送
字节、字、和 20 位地址字寻址
4-1显示了 MSP430X CPU 的方框图。
116 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
R6
R5
R4
R3/CG2 Constant Generator
R7
R8
R9
R10
R11
R12
R13
R14
R15
0
0
R0/PC Program Counter
19
R1/SP Pointer Stack
General Purpose
General Purpose
General Purpose
General Purpose
General Purpose
General Purpose
General Purpose
General Purpose
General Purpose
General Purpose
General Purpose
General Purpose
Memory Address Bus - MABMDB - Memor y Data Bus
16
20
16/20-bit ALU
srcdst
Zero, Z
Carry, C
Overflow,V
Negative,N
MCLK
0
16 15
R2/SR Status Register
www.ti.com.cn
CPU
介绍
4-1. MSP430X CPU 方框框图
117
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Item n-1
PC.19:16
PC.15:0
SPold
SP SR.11:0
中断
www.ti.com.cn
4.2 中断
MSP430X 使用与 MSP430 一样的中断结构:
无需轮询的矢量中断
中断矢量位于地址 0FFFEh 以下的位置
第二章 系统复位、中断、和运行模式第二节中断
MSP430 MSP430X CPU 的中断操作进行了说明。
中断矢量包含指向较低 64KB 存储器的 16 位地址。 这意味着即使在 MSP430X 器件中,所有中断处理器必
须在较低 64KB 存储器内开始。
中断期间,如4-2所示,程序计数器和状态寄存器被压入堆栈。 MSP430X 架构通过自动将 PC 19:16
添加到堆栈上存储的 SR 值上来高效地存储完整的 20 PC 。当RETI 指令被执行时,完整的 20 PC
被恢复,这样可从中断返回到存储器范围内的任一地址。
4-2. 存储储在堆栈栈上用于于中断的PC
118 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Item n
PC.19:16
PC.15:0
SPold
SP
0Program Counter Bits 19 to 1
19 15 1 016
www.ti.com.cn
CPU
寄存器
4.3 CPU 寄存存器
CPU 包含有 16 个寄存器(R0 R15)。 寄存器 R0R1R2,和 R3 有专用功能。 寄存器 R4 R15
是用于普通用途的工作寄存器。
4.3.1
程序序计计数数器
(PC)
指向下一条指令的 20 PC (PC/R0) 被执行。 每条指令使用一个偶数数量字节(246,或 8
节),PC 相应递增。 在字边界上执行指令访问,而 PC 与偶数地址对其。4-3显示了 PC
4-3. 程序序计数器
可使用所有指令和寻址模式来对 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 的上四位复位为 0BR 或者 CALL 指令只能对低 64KB 地址范围内的地址寻址。
当分支指令或者调用时,低 64KB 地址范围以外的地址只能使用 BRA 或者 CALLA 指令寻址。 此外,根据
所使用的寻址模式,任一直接修改 PC的指令进行类似操作。 例如,MOV.W #valueMPC清空 PC 的上四
位,这是因为它是一个 .W 指令。
在一个中断处理例程期间,使用 CALL(或 CALLA)指令可将 PC 自动存储在堆栈内。4-4显示了一个
CALLA 指令后,具有返回地址的 PC 的存储。 一个 CALL 指令只存储 PC 的位 15:0
4-4. 针对CALLA PC 堆栈存储
RETA 指令恢复 PC 19:0 并且将堆栈指针 (SP) 4RET 指令恢复 PC 15:0 并且将 SP 2
4.3.2
堆栈栈指指针
(SP)
CPU 20 SP (SP/R1) 来存储子例程调用和中断的返回地址。 它使用一个先递减、后递增的机制。 此
外,SP 可被具有所有指令和寻址模式的软件所使用。4-5显示了 SPSP 由用户初始化到 RAM 中,并
且一直与偶数地址对齐。
4-6显示了堆栈用法。4-7显示了当 20 位地址字被压入时的堆栈用法。
119
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
SPold
SPold
SP1
PUSHSP
Thestackpointerischangedafter
aPUSHSP instruction.
SP1
SP2
POP SP
ThestackpointerisnotchangedafteraPOP SP
instruction.ThePOP SP instructionplacesSP1intothe
stackpointerSP (SP2=SP1)
Item n-1
Item.19:16
Item.15:0
SPold
SP
I3
I1
I2
I3
0xxxh
0xxxh - 2
0xxxh - 4
0xxxh - 6
0xxxh - 8
I1
I2
SP
0123h SP
I1
I2
I3 SP
PUSH #0123h POP R8Address
0Stack Pointer Bits 19 to 1
19 1 0
MOV.W2(SP),R6;CopyItemI2toR6
MOV.WR7,0(SP);OverwriteTOSwithR7
PUSH#0123h;Put0123honstack
POPR8;R8=0123h
CPU
寄存器
www.ti.com.cn
4-5. 堆栈栈指
4-6. 堆栈栈用
4-7. 堆栈栈上PUSH.A 格式
4-8中描述了将 SP 用作一个到 PUSH POP 指令的自变量的特殊情况。
4-8. PUSH SPPOP SP 序列
4.3.3
状态态寄寄存存器
(SR)
用作一个源或者目标寄存器的 16 SR (SR/R2) 之可被用在由字指令寻址的寄存器模式中。 寻址描述的剩
余组合被用来支持常数发生器。4-9显示了 SR 位。 不要将 20 位值写入 SR。 可导致不可预知的运行。
120 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
SCG0 GIE Z C
rw-0
15 0
Reserved N
CPU
OFF
OSC
OFF
SCG1V
8 79
www.ti.com.cn
CPU
寄存器
4-9. SR
4-1描述了 SR 位。
4-1. SR 位说说明
位 说说明
被保留 被保留
V溢出。 当一个算术运算从信号变量范围内溢出时,这个位被置位。
当:
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 时置位,否则复位
SCG1 系统时钟生成器 1。根据器件系列的不同,这个位可被用于启用/禁用时钟系统内的功能;例如,数控振荡器 (DCO)
置启用/禁用。
SCG0 系统时钟生成器 0。根据器件系列的不同,这个位可被用于启用/禁用时钟系统内的功能;例如,锁相环 (FLL) 启用/
用。
OSCOFF 振荡器关闭。 当 LFXT1CLK 不被用于 MCLK 或者 SMCLK 时,这个位用来关闭 LFXT1 晶体振荡器。
CPUOFF CPU 关闭。 当被置位时,这个位关闭 CPU
GIE 通用中断启用。 当被置位时,这个位启用可屏蔽中断。 复位时,所有可屏蔽中断被禁用。
N负。 当运算结果为负时,这个位被置位,而当结果为正时,这个位被清零。
Z零位。 当运算结果为 0时,这个位被置位,而当结果非 0时, 这个位被清零。
C进位。 当运算结果产生一个进位时,这个位被置位,而当没有出现进位时,这个位被清零。
121
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
CPU
寄存器
www.ti.com.cn
4.3.4
常数数发发生生器器寄寄存器(
CG1
CG2
在无需额外的 16 位字程序代码的情况下,常数发生器寄存器 R2 (CG1) R3 (CG2) 生成六个常用常数。
这些常数用4-2中描述的源寄存器寻址模式 (As) 进行选择。
4-2. 常数数发生器CG1CG2
寄存存器器 作 备注
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 FFhFFFFhFFFFFh -1,字处理
常数发生器的优势在于:
无需特殊指令
无需用于六个常数的额外代码字
检索常数无需代码存储器访问
如果六个常数中的一个被用作一个中间源操作数,汇编程序自动使用常数发生器。 用在常数模式的寄存器
R2 R3,不能被明确寻址;它们只作为源寄存器运行。
4.3.4.1 常数数发生器-展指指令
MSP430 RISC 指令集只有 27 条指令。 然而,常数发生器使得 MSP430 汇编程序支持 24 条附加仿真指
令。 例如,单操作数指令:
CLR dst
由双操作数指令使用同样长度的:
MOV R3,dst进行仿真
其中的 #0 被汇编程序所取代,并且在 As=00 时使用 R3
INC dst
被:
ADD 0(R3),dst所替代
122 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
High Byte Low Byte
Register-Word Operation
Register
Memory
Operation
Memory
Un-
used
19 16 15 0
8 7
Unused
High Byte Low Byte
Register-Byte Operation
High Byte Low Byte
Byte-Register Operation
Register
Memory Register
Memory
Operation
Memory
Operation
0 Register
Unused
Un-
used
0
19 16 15 0
19 16 15 0
8 7
8 7
Un-
used
www.ti.com.cn
CPU
寄存器
4.3.5
通用用寄寄存存器器(
R4
R15
12 CPU 寄存器(R4 R15)包含 8位,16 位,或 20 位值。 任何到 CPU 寄存器的字节写入操作将清
零位 19:8。任何到寄存器的字写入操作将清零位 19:16。 唯一的例外是 SXT 指令。 SXT 指令通过完整的
20 位寄存器来扩展此符号。
下面的图表显示了字节、字、和地址字数据的处理。 请注意,如果寄存器是一个字节或者字指令的目的地
址,前缘最高有效位 (MSB) 被复位。
4-10显示了字节处理(8位数据,.B 后缀)。 显示的是针对一个源寄存器和一个目的存储器字节,一个
源存储器字节和一个目的寄存器的处理。
4-10. 寄存存器-字节/-寄存器操操作
4-114-12显示了 16 位字处理(.W 后缀)。 显示的是针对一个源寄存器和一个目的存储器字,一个
源存储器字和个目的寄存器的处理。
4-11. 寄存存器-字操操作
123
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
High Byte Low Byte
Register - Ad dress-Word Operation
Register
Memory
Operation
Memory
Unused
0
Memory +2
Memory +2
19 16 15 0
8 7
High Byte Low Byte
Word-Register Operation
Register
Memory
Operation
0Register
Un-
used
19 16 15 0
8 7
CPU
寄存器
www.ti.com.cn
4-12. -寄存器操操作
4-134-14显示了 20 位地址字处理(.A 后缀)。 显示的是针对一个源寄存器和一个目的存储器地址
字,一个源存储器地址字和一个目的寄存器的处理。
4-13. 寄存存器-地址址字操作
124 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
High Byte Low Byte
Address-Word - Register Operation
Register
Memory
Operation
Register
UnusedMemory +2
19 16 15 0
8 7
www.ti.com.cn
寻址模式
4-14. 地址--寄存存器操作
4.4 寻址址模模式
针对源操作数七个寻址模式和针对目的操作数的四个寻址模式使用 16 位或20 位地址(请见4-3)。
MSP430 MSP430X 指令在整个 IMB 存储器范围内可用。
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+ 被使用。
在下面的小节中详细解释了七个寻址模式。 大多数的示例显示了针对源和地址的同样的寻址模式,但是在一
个指令中源和目的寻址模式的任何有效组合都是可能的。
:标签EDETONITOM,和LEO 标签签的的使使用
在整个 MSP430 文档中,EDETONITOM,和 LEO 被用作普通标签。 它们只是标签而并
未特殊含义。
125
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
xxxxh
Address
Space
D546h
PC
21036h
21034h
AA550h
11111h
R5
R6
Register
Before:
Address
Space
PC AA550h
BB551h
R5
R6
Register
After:
AA550h.or.11111h = BB551h
1800h21032h
xxxxh
D546h
21036h
21034h
1800h21032h
xxxxh
Address
Space
D506h PC
21036h
21034h
AA550h
11111h
R5
R6
Register
Before:
xxxxh
Address
Space
D506h
PC21036h
21034h
AA550h
0B551h
R5
R6
Register
After:
A550h.or.1111h = B551h
寻址模式
www.ti.com.cn
4.4.1
寄存存器器模模式
运行: 操作数为所使用的 CPU 寄存器的 816,或者 20 位内容。
长度: 一个、两个、或者三个字
注释: 对于源和地址有效
字节操作: 字节操作只读取源寄存器 Rsrc 的八个最低有效位 (LSB),而将结果写入目的寄存器
Rdst 的八个 LSB 。位Rdst.19:8 被清零。 寄存器 Rsrc 未修改。
字操作: 字操作读取源寄存器 Rsrc 16 LSB,而将结果写入目的寄存器 Rdst 16
LSB 。位Rdst.19:16 被清零。 寄存器 Rsrc 未被修改。
地址字操作: 地址字操作读取源寄存器 Rsrc 20 个位,而将结果写入目的寄存器 Rdst 20
位中。 寄存器 Rsrc 未被修改。
SXT 例外: SXT 指令是寄存器操作的唯一一个例外情况。 位 7中低字节的符号被扩展至位
Rdst.19:8
BIS.W R5MR6M
示例:
这条指令用 R6 16 位内容与 R5 包含的 16 位数据进行逻辑或 (OR) 操作。
R6.19:16 被清零。
BISX.A R5MR6M
示例:
这条指令用 R6 20 位内容与 R5 包含的 20 位数据进行逻辑或 (OR) 操作。
扩展字包含针对 20 位数据的 A/L 位。 这条指令使用位 A/L:B/W=01 时的字节模式。
这条指令的结果为:
126 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
16-bit signed index
CPU Register Rn
16-bit signed add
0 Memory address
FFFFF
00000
Lower 64KB
0FFFF
10000
Rn.19:0
Lower 64 KB
Rn.19:16 = 0
16-bit byte index
0
19 16 15 0
S
www.ti.com.cn
寻址模式
4.4.2
已索索引引的的模模式式:
通过将符号化的索引添加到一个 CPU 寄存器中,已被索引的模式计算操作数的地址。 已索引模式具有三个
寻址可能:
64KB 存储器中的已索引模式
具有已索引模式的 MSP430 指令对低 64KB 存储器以上的地址进行寻址。
具有已索引模式的 MSP430X 指令
4.4.2.1 64KB 存储储器中的的已索引引模
如果 CPU 寄存器 Rn 指向低 64KB 存储器范围中的一个地址,在添加了 CPU 寄存器 Rn 和符号化的 16
索引后,计算得出的存储器地址位 19:16 被清零。 这意味着计算得出的地址一直位于低 64KB 存储器中,
并且不会从低 64KB 存储器空间中上溢或者下溢。 RAM 和外设寄存器可用这个方法进行访问并且如4-15
所示,在无需修改的情况下现有的 MSP430 软件可用。
4-15. 64KB 中的的已索引引模
长度: 两个或者三个字
运行: 符号化的 16 位索引位于此指令后的下一个字中并且被添加到 CPU 寄存器 Rn 中。 得出的
19:16 被清零,从而给出了一个缩短了的 16 位存储器地址,此地址指向范围 00000h
0FFFFh 内的一个操作数地址。 此操作数是已寻址存储器位置的内容。
注释: 对于源和目的有效。 汇编程序计算寄存器索引并将其插入。
ADD.B 1000h(R5)M0F000h(R6)M
示例:
这条指令加上 包含在源字节 1000h(R5) 和目的字节 0F000h(R6) 中的 8位数据并且将结
果防止在目的字节中。 由于寄存器 R5 R6 中被清零的位 19:16,源和目的字节都位于
64KB 位置中。
源: 在截断为一个 16 位地址后,R5 指向的字节 + 1000h 得到地址
0479Ch+1000h=0579Ch
目标: 在截断为一个 16 位地址后,R6 指向的字节 + F000h 得到地址 01778h+F000h=
00778h
127
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
16-bit signed index
(sign extended to 20 bits)
CPU Register Rn
20-bit signed add
Memory address
FFFFF
00000
Lower 64 KB
0FFFF
10000
Upper Memory
Rn.19:16 > 0
16-bit byte index
1 ... 15
19 16 15 0
S
Rn ± 32 KB
S
Rn.19:0
xxxxh
Address
Space
F000h
1000h
PC
1103Ah
11038h
11036h
0479Ch
01778h
R5
R6
01778h
+F000h
00778h
Register
Before:
Address
Space
Register
After:
55D6h
11034h
xxxxh
F000h
1000h
PC1103Ah
11038h
11036h
0479Ch
01778h
R5
R6
55D6h
11034h
xxxxh
xx45h
0077Ah
00778h
xxxxh
xx77h
0077Ah
00778h
32h
+45h
77h
src
dst
Sum
0479Ch
+1000h
0579Ch
xxxxh
xx32h
0579Eh
0579Ch
xxxxh
xx32h
0579Eh
0579Ch
寻址模式
www.ti.com.cn
4.4.2.2 上部部存储器器中的具具有已索索引模式式的MSP430
如果 CPU 寄存器 Rn 指向一个低 64KB 存储器以上的地址,Rn 19:16 被用于操作数的地址计算。 操作
数可位于范围 Rn±32KB 内的存储器内,这是因为索引,X,是一个符号化 16 位的值。 在这个情况下,操
作数的地址会在低 64KB 存储器中上溢或者下溢(请见4-164-17)。
4-16. 上部部存储器器中的已已索引模模式
128 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
FFFFF
0000C
Lower 64 KB
0,FFFF
10000
Rn.19:0
Rn.19:0
Rn.19:0
±32 KB
Rn.19:0
±32 KB
www.ti.com.cn
寻址模式
4-17. 针对对已索引引模式的的上溢和和下
长度: 两个或者三个字
运行: 指令之后,位于下一个字内的符号扩展 16 位索引被添加到 CPU 寄存器 Rn 20
位内。 这传送了一个 20 位地址,此地址指向范围 0FFFFFh 内的一个地址。 操
作数是已寻址存储器位置的内容。
注释: 对于源和目的有效 汇编程序计算寄存器索引并将其插入。
ADD.W 8346h(R5)M2100h(R6)M
示例:
这条指令加上包含在源和目的地址中的 16 位数据并且将 16 位结果放置在目的地址
内。 源和目的操作数可在整个地址范围内被锁定。
源: R5 指向的字 + 8346h。 负索引 8346h 为被扩展的符号,得到地址
23456h+F8346h=1B79Ch
目标: R6 指向的字 + 2100h 得到地址 15678h+2100h=17778h
129
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
xxxxh
Address
Space
2100h
8346h
PC
1103Ah
11038h
11036h
23456h
15678h
R5
R6
15678h
+02100h
17778h
Register
Before:
Address
Space
Register
After:
5596h
11034h
xxxxh
2100h
8346h
PC1103Ah
11038h
11036h
23456h
15678h
R5
R6
5596h
11034h
xxxxh
2345h
1777Ah
17778h
xxxxh
7777h
1777Ah
17778h
05432h
+02345h
07777h
src
dst
Sum
23456h
+F8346h
1B79Ch
xxxxh
5432h
1B79Eh
1B79Ch
xxxxh
5432h
1B79Eh
1B79Ch
寻址模式
www.ti.com.cn
4.4.2.3 具有有已索引引模式的MSP430 指令
当使用具有已索引模式的 MSP430X 指令时,操作数可位于 Rn 的范围 + 19 位的任一位置。
长度: 三个或者四个字
运行: 操作数地址是 20 CPU 寄存器内容和 20 位索引的和。 索引的 4MSB 包含在
扩展字中;16 LSB 被包含在随后指令的字中。 CPU 寄存器未修改
注释: 对于源和目的有效。 汇编程序计算寄存器索引并将其插入。
ADDX.A 12346h(R5)M32100h(R6)M
示例:
这条指令加上包含在源和目的地址中的 20 位数据并且将结果放置在目的地址内。
源: R5 指向的两个字 + 12346h 得到地址 23456h+12346h=3579Ch
目标: R6 指向的两个字 + 32100h 得到地址 45678h+32100h=77778h
130 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
2100h
Address
Space
2346h
55D6h
PC
21038h
21036h
21034h
23456h
45678h
R5
R6
45678h
+32100h
77778h
Register
Before:
Address
Space
Register
After:
PC 23456h
45678h
R5
R6
0001h
2345h
7777Ah
77778h
0007h
7777h
7777Ah
77778h
65432h
+12345h
77777h
src
dst
Sum
0006h
5432h
3579Eh
3579Ch
0006h
5432h
3579Eh
3579Ch
1883h
21032h
xxxxh
2103Ah
2100h
2346h
55D6h
21038h
21036h
21034h
1883h
21032h
xxxxh
2103Ah
23456h
+12346h
3579Ch
www.ti.com.cn
寻址模式
扩展字包含源索引和目的索引的 MSB以及针对 20 位数据的 A/L 位。 由于位 A/L:B/W=01 时的 20 位数据长
度,这个指令字使用字节模式。
4.4.3
符号号模模式
通过将符号化索引添加到 PC 中,符号模式计算操作数的地址。 符号模式有三个寻址可能:
64KB 存储器中的符号模式
具有符号模式的 MSP430 指令在低 64KB 存储器之上的存储器内寻址
具有符号模式的 MSP430X 指令
4.4.3.1 64KB 中的的符号模模式
如果 PC 指向低 64KB 存储器范围中的一个地址,在增加了 PC 和符号化 16 位索引后,计算得出的存储器
地址位 19:16 被清零。 这意味着计算得出的地址一直位于低 64KB 存储器中,并且不会从低 64KB 存储器
空间中上溢或者下溢。 RAM 和外设寄存器可用这个方法进行访问并且如4-18所示,在无需修改的情况下
现有的 MSP430 软件可用。
131
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
16-bit signed
PC index
Program
counter PC
16-bit signed add
0 Memory address
FFFFF
00000
Lower 64 KB
0FFFF
10000
PC.19:0
Lower 64 KB
PC.19:16 = 0
16-bit byte index
0
19 16 15 0
S
寻址模式
www.ti.com.cn
4-18. 64KB 中的的符号模模式运行行那
运行: 指令之后下一个字中的符号化 16 位索引被暂时增加到 PC 中。 得出的位 19:16 被清
零,从而给出了一个缩短了的 16 位存储器地址,此地址指向范围 00000h
0FFFFh 内的一个操作数地址。 操作数是已寻址存储器位置的内容。
长度: 两个或者三个字
注释: 对于源和目的有效。 汇编程序计算寄 PC 索引并将其插入。
ADD.B EDEMTONIM
示例:
这个指令加上包含在源字节 EDE 和目的字节 TONI 中的 8位数据并且将结果放置在
目的字节 TONI 中。 字节 EDE TONI 以及程序位于低 64KB 内。
源: PC 指向的位于地址 0579Ch 的字节 EDE+4766h,其中 PC 索引 4766h
0579Ch-01036h=04766h 的结果。 地址 01036h 是针对这个示例的索引的位置。
目标: PC 指向的位于地址 00778h 的字节 TONI+F470h,是 00778h-1038h=FF740h
截短的 16 位结果。 地址 01038h 是针对这个示例的索引的位置。
132 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
16-bit signed PC index
(sign extended to 20 bits)
Program
counter PC
20-bit signed add
Memory address
FFFFF
00000
Lower 64 KB
0FFFF
10000
PC.19:0
Upper Memory
PC.19:16 > 0
16-bit byte index
1 ... 15
19 16 15 0
S
PC ±32 KB
S
xxxxh
Address
Space
F740h
4766h
PC
0103Ah
01038h
01036h
01038h
+0F740h
00778h
Before:
Address
Space
After:
05D0h
01034h
xxxxh
F740h
4766h
PC0103Ah
01038h
01036h
50D0h
01034h
xxxxh
xx45h
0077Ah
00778h
xxxxh
xx77h
0077Ah
00778h
32h
+45h
77h
src
dst
Sum
01036h
+04766h
0579Ch
xxxxh
xx32h
0579Eh
0579Ch
xxxxh
xx32h
0579Eh
0579Ch
www.ti.com.cn
寻址模式
4.4.3.2 上部部存储器器中的具具有符号号模式的MSP430 指令
如果 PC 指向一个低 64KB 存储器以上的地址,PC 19:16 被用于操作数的地址计算。 操作数可位于范围
PC±32KB 内的存储器内,这是因为索引,X,是一个符号化 16 位的值。 在这个情况下,如4-194-
20所示,操作数的地址会在低 64KB 存储器中上溢或者下溢。
4-19. 上部部存储器器内的符符号模式式运
133
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
FFFFF
0000C
Lower 64 KB
0FFFF
10000
PC.19:0
PC.19:0
PC.19:0
±32 KB
PC.19:0
±32 KB
寻址模式
www.ti.com.cn
4-20. 针对对符号模模式的上上溢和下下溢
长度: 两个或者三个字
运行: 指令之后,位于下一个字内的符号扩展 16 位索引被添加到 PC 20 个位内。 这传
送了一个 20 位地址,此地址指向范围 0FFFFFh 内的一个地址。 操作数是已寻
址存储器位置的内容。
注释: 对于源和目的有效。 汇编程序计算 PC 索引并将其插入。
ADD.W EDEM&TONIM
示例:
这个指令加上包含在源字 EDE 和目的字 TONI 中的 16 位数据并且将结果放置在目
的字 TONI 中。 对于此示例,此指令位于地址 2F034h 中。
源: PC 指向的位于地址 3379Ch 内的 EDE+4766h,是一个 3379Ch-2F036h=04766h
16 位结果。 地址 2F036h 是针对这个示例的索引位置。
目标: TONI 位于由绝对字 00778h 指向的地址 00778h 内。
134 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
xxxxh
Address
Space
0778h
4766h
PC
2F03Ah
2F038h
2F036h
2F036h
+04766h
3379Ch
Before:
Address
Space
After:
5092h
2F034h
xxxxh
0778h
4766h
PC2F03Ah
2F038h
2F036h
5092h
2F034h
xxxxh
5432h
3379Eh
3379Ch
xxxxh
5432h
3379Eh
3379Ch
5432h
+2345h
7777h
src
dst
Sum
xxxxh
2345h
0077Ah
00778h
xxxxh
7777h
0077Ah
00778h
www.ti.com.cn
寻址模式
4.4.3.3 具有有符号模模式MSP430X 指令
当使用具有符号模式的 MSP430X 指令时,操作数可位于 Rn 的范围 + 19 位的任一位置。
长度: 三个或者四个字
运行: 操作数地址是 20 PC 20 位索引的和。 索引的 4MSB 包含在扩展字中;16
LSB 被包含在随后指令的字中。
注释: 对于源和目的有效。 汇编程序计算寄存器索引并将其插入。
ADDX.B EDEMTONIM
示例:
这个指令加上包含在源字节 EDE 和目的字节 TON 中的 8位数据并且将结果放置在
目的字节 TONI 中。
源: PC 指向的位于地址 3579Ch 内的字节 EDE+14766h,是 3579Ch-
21036h=14766h 20 位结果。 地址 21036h 是针对这个示例的索引的位置。
目标: PC 指向的位于地址 77778h 的字节 TONI+F470h,是 77778h- 21038h=FF
56740h 的截短的 20 位结果。 地址 21038h 是这个示例中的索引的地址。
135
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
6740h
Address Space
4766h
50D0h
PC
21038h
21036h
21034h
21038h
+56740h
77778h
Before: Address SpaceAfter:
PC
xxxxh
xx45h
7777Ah
77778h
xxxxh
xx77h
7777Ah
77778h
32h
+45h
77h
src
dst
Sum
xxxxh
xx32h
3579Eh
3579Ch
xxxxh
xx32h
3579Eh
3579Ch
18C5h
21032h
xxxxh
2103Ah
6740h
4766h
50D0h
21038h
21036h
21034h
18C5h
21032h
xxxxh
2103Ah
21036h
+14766h
3579Ch
寻址模式
www.ti.com.cn
4.4.4
绝对对模模式
绝对模式使用指令之后的字的内容作为操作数的地址。 绝对模式有两个各不同的可能:
64KB 存储器中的绝对模式
具有绝对模式的 MSP430X 指令
4.4.4.1 64KB 中的的绝对模模式
如果 MSP430 指令在绝对寻址模式中使用,绝对地址是一个 16 位值并因此指向一个低 64KB 存储器范围的
地址。 此地址被计算为一个来自 0的索引并且被存储在指令后的字中。RAM 和外设寄存器可用这种方式访
问并且现有的 MSP430 软件在不许修改的情况下即可用。
长度: 两个或者三个字
运行: 操作数是已寻址存储器位置的内容。
注释: 对于源和目的有效。 汇编程序从 0开始计算索引并将其插入。
ADD.W &EDEM&TONIM
示例:
这条指令加上包含在绝对源和目的地址中的 16 位数据并且将结果放置在目的地址
内。
源: 地址 EDE 上的字
目标: 地址 TONI 上的字
136 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
xxxxh
Address Space
7778h
579Ch
PC
2103Ah
21038h
21036h
Before: Address SpaceAfter:
5292h
21034h
xxxxh
7778h
579Ch
PC2103Ah
21038h
21036h
5292h
21034h
xxxxh
2345h
0777Ah
07778h
xxxxh
7777h
0777Ah
07778h
5432h
+2345h
7777h
src
dst
Sum
xxxxh
5432h
0579Eh
0579Ch
xxxxh
5432h
0579Eh
0579Ch
www.ti.com.cn
寻址模式
4.4.4.2 具有有绝对模模式MSP430X 指令
如果用绝对寻址模式使用 MSP430X 指令,绝对地址是一个 20 位值,并因指向存储器范围内的任一地址。
地址值被计算为一个来自 0索引。索引的 4MSB 包含在扩展字中,并且 16 LSB 被包含在指令之后的
字中。
长度: 三个或者四个字
运行: 操作数是已寻址存储器位置的内容。
注释: 对于源和目的有效。 汇编程序从 0计算索引并且将其插入。
ADDX.A &EDEM&TONIM
示例:
这条指令加上包含在源和目的地址中的 20 位数据并且将结果放置在目的地址内。
源: 从地址 EDE 开始的两个字
目的: 从地址 TONI 开始的两个字
137
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
7778h
Address
Space
579Ch
52D2h
PC
21038h
21036h
21034h
Before:
Address
Space
After:
PC
0001h
2345h
7777Ah
77778h
0007h
7777h
7777Ah
77778h
65432h
+12345h
77777h
src
dst
Sum
0006h
5432h
3579Eh
3579Ch
0006h
5432h
3579Eh
3579Ch
1987h
21032h
xxxxh
2103Ah
7778h
579Ch
52D2h
21038h
21036h
21034h
1987h
21032h
xxxxh
2103Ah
寻址模式
www.ti.com.cn
4.4.5
间接接寄寄存存器器模模式
此间接寄存器模式将 CPU 寄存器 Rsrc 用作源操作数。 此间接寄存器模式一直使用一个 20 位地址。
长度: 一个、两个、或者三个字
运行: 此操作数是已寻址地址位置的内容。 源寄存器 Rsrc 未修改。
注释: 只对源操作数有效。 目标操作数的替代值为 0 (Rdst)
ADDX.W @R5M2100h(R6)
示例:
这条指令加上包含在源和目的地址中的 16 位操作数数据并且将结果放置在目的地址
内。
源: R5 指向的字。 R5 包含针对这个示例的地址 3579Ch
目的: R6 指向的字 + 2100h 得到地址 45678h+ 2100h=7778h
138 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
xxxxh
Address
Space
2100h
55A6h PC
21038h
21036h
21034h
3579Ch
45678h
R5
R6
45678h
+02100h
47778h
Register
Before:
Address
Space
Register
After:
xxxxh
2100h
55A6h
PC21038h
21036h
21034h
3579Ch
45678h
R5
R6
xxxxh
2345h
4777Ah
47778h
xxxxh
7777h
4777Ah
47778h
5432h
+2345h
7777h
src
dst
Sum
xxxxh
5432h
3579Eh
3579Ch
xxxxh
5432h
3579Eh
3579Ch
R5 R5
www.ti.com.cn
寻址模式
4.4.6
间接接自自动动递递增增模
间接自动递增模式将 CPU 寄存器的内容用作源操作数。 然后,访问源操作数之后,Rsrc 立即针对字节指令
自动加 1,针对字指令自动加 2,针对地址字指令加 4。 如果用于源和目的的寄存器是同一个寄存器,它包
含针对目的地址的已增量地址。 间接自动递增模式一直使用 20 位地址。
长度: 一个、两个、或者三个字
运行: 操作数是已寻址存储器位置的内容。
注释: 只针对源操作数有效
ADD.B @R5+M0(R6)
示例:
这条指令加上包含在源和目的地址中的 8位数据并且将结果放置在目的地址内。
源: R5 指向的字节 在本示例中,R5 包含地址 3579Ch
目的: R6 指向的字节 + 0h,得到针对本示例的地址 0778h
139
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
xxxxh
Address
Space
0000h
55F6h PC
21038h
21036h
21034h
3579Ch
00778h
R5
R6
00778h
+0000h
00778h
Register
Before:
Address
Space
Register
After:
xxxxh
0000h
55F6h
PC21038h
21036h
21034h
3579Dh
00778h
R5
R6
xxxxh
xx45h
0077Ah
00778h
xxxxh
xx77h
0077Ah
00778h
32h
+45h
77h
src
dst
Sum
xxh
32h
3579Dh
3579Ch
xxh
xx32h
3579Dh
3579Ch
R5
R5
寻址模式
www.ti.com.cn
4.4.7
立即即模模式
通过在指令之后将常数包含在存储器位置内,立即模式可实现将常数作为操作数进行访问。 PC 使用间接自
动递增模式。 PC 指向下一个字中包含的立即值。 在取得立即操作数后,针对字节、字、或者地址-字指
令,PC 增加 2。 立即模式有两个寻址可能:
MSP430 指令时的 8位或 16 位常数
MSP430X 指令时的 20 位常数
4.4.7.1 支持持立即模模式MSP430 指令
如果 MSP430 指令使用立即寻址模式,常数为一个 816 位的值,并且存储在指令后的字中。
长度: 两个或者三个字。 如果常数发生器的一个常数可被用于立即操作数,则少一个字。
运行: 16 位立即源操作数与 16 位目的操作数一起使用。
注释: 只对源操作数有效
ADD #3456hM&TONI
示例:
这条指令将 16 位立即操作数 3456h 添加到目的地址 TONI 中的数据内。
源: 16 位立即值 3456h
目的: 地址 TONI 上的字
140 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
7778h
Address
Space
3456h
50F2h
PC
21038h
21036h
21034h
Before:
Address
Space
After:
PC
0001h
2345h
7777Ah
77778h
0003h
579Bh
7777Ah
77778h
23456h
+12345h
3579Bh
src
dst
Sum
1907h
21032h
xxxxh
2103Ah
7778h
3456h
50F2h
21038h
21036h
21034h
1907h
21032h
xxxxh
2103Ah
xxxxh
Address
Space
0778h
3456h
PC
2103Ah
21038h
21036h
Before:
Address
Space
After:
50B2h
21034h
xxxxh
0778h
3456h
PC2103Ah
21038h
21036h
50B2h
21034h
xxxxh
2345h
0077Ah
00778h
xxxxh
579Bh
0077Ah
00778h
3456h
+2345h
579Bh
src
dst
Sum
www.ti.com.cn
寻址模式
4.4.7.2 支持持立即模模式MSP430X 指令
如果一个 MSP430X 指令与立即寻址模式一起使用,常数为一个 20 位的值。 常数的 4 MSB 存储在扩展字
中,而常数的 16 LSB 存储在指令后的字中。
长度: 三个或者四个字。 如果常数发生器的一个常数可被用于立即操作数,则少一个字。
运行: 20 位立即源操作数与 20 位目的操作数一起使用。
注释: 只对源操作数有效
ADDX.A #23456hM&TONIM
示例:
这条指令将 20 位立即操作数 23456h 添加到目的地址 TONI 中的数据内。
源: 20 位立即值 23456h
目的: 以地址 TONI 为开始的两个字
141
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
15 12 11 8 7 6 5 4 0
Op-code Rsrc Ad B/W As Rdst
SourceorDestination15:0
Destination15:0
MSP430
MSP430X
指令
www.ti.com.cn
4.5 MSP430 MSP430X 指令
MSP430 指令是 MSP430 CPU 执行的 27 条指令。 这些指令在 1MB 存储器范围内使用,除非超过了它们
16 位能力。 当操作数寻址,或者数据长度超过 MSP430 指令的 16 位能力时,MSP430X 指令被使用。
当在 MSP430 MSP430X 指令间进行选择时,有三个可能:
只使用 MSP430 指令-唯一的例外是 CALLA RETA 指令。 如果符合几个简单规则的话,可实现此目
的:
将所有常数、变量、数组、表格、和数据放置在低 64KB 空间内。 这样可针对所有数据访问的 16
寻址使用 MSP430 指令。 无需具有 20 位地址的指针。
将子例程常数紧接着子例程代码放置。 这样可使用符号寻址模式,此模式的 16 位索引能够达到 PC
+ 32KB 范围内的地址。
只使用 MSP430X 指令-这个方法的劣势是由额外 CPU 周期而导致的速度降低以及由于任一双操作数指
令的所需扩展字而导致的程序空间增加。
按照需要选择最合适的指令。
下面的指令列表描述了 MSP430 MSP430X 指令。
4.5.1 MSP430
指令
无论程序是驻留在低 64KB 还是 驻留在其之上的空间,都可使用 MSP430 指令。 唯一的例外时是指令
CALL RET,这两个指令被限制在低 64KB 地址范围。 CALLA RETA 已经被添加到 MSP430X CPU
中来处理整个地址范围内的子例程,而又无需代码尺寸开销。
4.5.1.1 MSP430 双操作数数(格式I)指
4-21显示了 MSP430 双操作数指令的格式。 针对已索引、符号、绝对、和立即模式,添加了源和目的
字。4-4列出了 12 MSP430 双操作数指令。
4-21. MSP430 双操操作数指指令格式
142 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
15 7 6 5 4 0
Op-code B/W Ad Rdst
Destination15:0
www.ti.com.cn
MSP430
MSP430X
指令
4-4. MSP430 双操操作作数指令
状态态位(1)
S-RegD-
助记记符符 运
Reg V N Z C
MOV(.B) srcdst srcdst - - - -
ADD(.B) srcdst src+dstdst * * * *
ADDC(.B) srcdst src+dst+Cdst * * * *
SUB(.B) srcdst dst+.not.src+1dst * * * *
SUBC(.B) srcdst dst+.not.src+Cdst * * * *
CMP(.B) srcdst dstsrc * * * *
DADD(.B) srcdst src+dst+Cdst(用十进制) * * * *
BIT(.B) srcdst src .and. dst 0 * * Z
BIC(.B) srcdst .not.src .and. dstdst - - - -
BIS(.B) srcdst src .or. dstdst - - - -
XOR(.B) srcdst src .xor. dstdst * * * Z
AND(.B) srcdst src .and. dstdst 0 * * Z
(1) * = 状态位受影响。
- = 状态位未受影响。
0 = 状态位被清零。
1 = 状态位被置位。
4.5.1.2 MSP430 单操作数数(格式II)指指令
4-22显示了针对 MSP430 单操作数指令的格式,除 RETI 之外。 针对已索引、符号、绝对、和立即模式
附加了目的字。4-5列出了七条单操作数指令。
4-22. MSP430 单操操作数指指令
4-5. MSP430 单操操作作数指令
状态态位(1)
S-RegD-
助记记符符 运
Reg V N Z C
RRC(.B) dst CMSB.......LSBC ****
RRA(.B) dst MSBMSB....LSBC 0 * * *
PUSH(.B) src SP-2SPsrcSP - - - -
SWPB dst 15...87...0 ----
CALL dst 在低 64KB 中调用子例程 ----
RETI TOSSRSP+2SP * * * *
TOSPCSP+2SP
寄存器模式:位 78...19
SXT dst 0 * * Z
其它模式:位 78...15
(1) * = 状态位受影响。
– = 状态位未受影响。
0 = 状态位被清零。
1 = 状态位被置位。
143
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
15
Op-Code
13 12 10 9 8 0
Condition S 10-Bit Signed PC Offset
MSP430
MSP430X
指令
www.ti.com.cn
4.5.1.3 跳转转指
4-23显示了 MSP430 MSP430X 跳转指令的格式。 跳转指令的带符号 10 位字偏移乘以 2,符号扩展
至一个 20 位地址,并加至 20 PC。 这可实现相对于完全 20 位地址空间内的 PC -511 +512 字范
围内的跳转。 跳转并不影响状态位。4-6列出并描述了八个跳转指令。
4-23. 条件件跳转指指令的格格式
4-6. 条件件跳转指指令
助记记符S-RegD-Reg 运行
JEQ/JZ 标签 如果零位被置位则跳转至标签
JNE/JNZ 标签 如果零位被复位则跳转至标签
JC 标签 如果进位位被置位则跳转至标签
JNC 标签 如果进位位被复位则跳转至标签
JN 标签 如果负位被置位则跳转至标签
JGE 标签 如果 (N .XOR. V)=0,则跳转至标签
JL 标签 如果 (N .XOR. V)=1,则跳转至标签
JMP 标签 无条件跳转至标签
4.5.1.4 仿仿真真指
除了 MSP430 MSP430X 指令,仿真指令是使代码更容易进行写入和读取,但是本身不具有运算代码的
指令。 作为替代,它们自动被具有一个核心指令的汇编程序所取代。 使用仿真指令并不会产生代码或者性
能损失。 4-7中列出了仿真指令。
4-7. 仿仿真真指
状态态位(1)
指令 说明 仿仿真V N Z C
将进位增加至 dst * * * *
ADC(.B) dst ADDC(.B) #0Mdst
分支指令间接 dst - - - -
BR dst MOV dstMPC
清零 dst - - - -
CLR(.B) dst MOV(.B) #0Mdst
清零进位位 - - - 0
CLRC BIC #1MSR
清零负位 - 0 - -
CLRN BIC #4MSR
清零零位 - - 0 -
CLRZ BIC #2MSR
用十进制将进位增加至 dst * * * *
DADC(.B) dst DADD(.B) #0Mdst
dst 1 ****
DEC(.B) dst SUB(.B) #1Mdst
dst 2 ****
DECD(.B) dst SUB(.B) #2Mdst
禁用中断 ----
DINT BIC #8MSR
启用中断 ----
EINT BIS #8MSR
dst 1 ****
INC(.B) dst ADD(.B) #1Mdst
dst 2 ****
INCD(.B) dst ADD(.B) #2Mdst
反转 dst * * * *
INV(.B) dst XOR(.B) #–1Mdst
无操作 ----
NOP MOV R3MR3
(1) * = Status bit is affected; 状态位受影响;– = 状态位未受影响;0 = 状态位被清零;1 = 状态位被置位。
144 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
MSP430
MSP430X
指令
4-7. 仿仿真真指(continued)
状态态位(1)
指令 说明 仿仿真V N Z C
从堆栈中弹出操作数 ----
POP dst MOV @SP+Mdst
从子例程返回 ----
RET MOV @SP+MPC
算术左移 dst * * * *
RLA(.B) dst ADD(.B) dstMdst
ADDC(.B)
通过进位逻辑左移 dst * * * *
RLC(.B) dst dstMdst
dst 中减去进位 ****
SBC(.B) dst SUBC(.B) #0Mdst
置位进位位 - - - 1
SETC BIS #1MSR
置位负位 - 1 - -
SETN BIS #4MSR
置位零位 - - 1 -
SETZ BIS #2MSR
测试 dst(与 0相比较) 0 * * 1
TST(.B) dst CMP(.B) #0Mdst
4.5.1.5 MSP430 指令执行
一个指令所需的 CPU 时钟周期的数量取决于指令格式和使用的寻址模式-而不是指令本身。 参考 MCLK
时钟周期数量。
4.5.1.5.1
对中中断断、、复复位位、、和和子子例例程程的的指指令令周周期期和和长长度
4-8列出了针对复位、中断、和子例程的长度和 CPU 周期
4-8. 中断断、、返返回回、、和和复复位位周周期期以以及及长长度
执行行时间 指指令令长
操作MCLK 期)) ((字
从中断 RETI 返回 3(1) 1
从子例程 RET 返回 3 1
中断请求处理(第一个指令前需要的周期) 5(2) -
WDT 复位 4 -
复位 (RST/NMI) 4 -
(1) MSP430 CPU 中的周期数量为 5
(2) MSP430 CPU 中的周期数量为 6
4.5.1.5.2
格式
II
(单单操操作作数数))指指令令周周期期和和长长度
4-9列出了针对 MSP430 单操作数指令的所有寻址模式的长度和 CPU 周期。
4-9. MSP430 格式II 指令令周周期期和和长长度
周期期的数量
寻址址模 指令令的长度度 示示例
RRARRC PUSH CALL
SWPBSXT
Rn 1 3 3(1) 1SWPB R5
@Rn 3 3(1) 4 1 RRC @R9
@Rn+ 3 3(1) 4(2) 1SWPB @R10+
#N 不可用 3(1) 4(2) 2CALL #LABEL
X(Rn) 4 4(2) 4(2) 2CALL 2(R7)
EDE 4 4(2) 4(2) 2PUSH EDE
(1) MSP430 CPU 中的周期数量为 4
(2) MSP430 CPU 中的周期数量为 5。此外,当 Rn=SP 时,X(Rn) 寻址模式的周期数量为 5
145
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
MSP430
MSP430X
指令
www.ti.com.cn
4-9. MSP430 格式II 指令令周周期期和和长长度(continued)
周期期的数量
寻址址模 指令令的长度度 示示例
RRARRC PUSH CALL
SWPBSXT
&EDE 4 4(2) 4(2) 2SXT &EDE
4.5.1.5.3
跳转转指指令令周周期期和和长长度
所有跳转指令要求一个代码字并且花费两个 CPU 周期来执行,无论跳转是否发生。
4.5.1.5.4
格式
I
(双双操操作作数数))指指令令周周期期和和长长度
4-10列出了所有针对 MSP430 格式 I指令寻址模式的长度和 CPU 周期。
4-10. MSP430 格式I指令令周周期期和和长长度
寻址址模周期期的数量量 指指令长度 示例
Src Dst
Rm 1 1 MOV R5R8
PC 2 1 BR R9
Rn x(Rm) 4(1) 2 ADD R54(R6)
EDE 4(1) 2 XOR R8EDE
&EDE 4(1) 2 MOV R5&EDE
Rm 2 1 @R4R5
PC 3 1 BR @R8
@Rn x(Rm) 5(1) 2 XOR @R58(R6)
EDE 5(1) 2 MOV @R5EDE
&EDE 5(1) 2 XOR @R5&EDE
Rm 2 1 ADD @R5+R6
PC 3 1 BR @R9+
@Rn+ x(Rm) 5(1) 2 XOR @R58(R6)
EDE 5(1) 2 MOV @R9+EDE
&EDE 5(1) 2 MOV @R9+&EDE
Rm 2 2 MOV #20R9
PC 3 2 BR #2AEh
#N x(Rm) 5(1) 3 MOV #0300h0(SP)
EDE 5(1) 3 ADD #33EDE
&EDE 5(1) 3 ADD #33&EDE
Rm 3 2 MOV 2(R5)R7
PC 3 2 BR 2(R6)
x(Rn) TONI 6(1) 3 MOV 4(R7)TONI
x(Rm) 6(1) 3 ADD 4(R4)6(R9)
&TONI 6(1) 3 MOV 2(R4)&TONI
Rm 3 2 AND EDER6
PC 3 2 BR EDE
EDE TONI 6(1) 3 CMP EDETONI
x(Rm) 6(1) 3 MOV EDE0(SP)
&TONI 6(1) 3 MOV EDE&TONI
(1) MOVBIT,和 CMP 指令在少一个周期内执行。
146 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
15 12 11 10 9 8 7 6 5 4 3 0
0001 1 00 ZC # A/L 0 0 (n-1)/Rn
www.ti.com.cn
MSP430
MSP430X
指令
4-10. MSP430 格式I指令令周周期期和和长长度(continued)
寻址址模周期期的数量量 指指令长度 示例
Src Dst
Rm 3 2 MOV &EDER8
PC 3 2 BR &EDE
&EDE TONI 6(1) 3 MOV &EDETONI
x(Rm) 6(1) 3 MOV &EDE0(SP)
&TONI 6(1) 3 MOV &EDE&TONI
4.5.2 MSP430
扩展展指指令
扩展 MSP430X 指令使得 MSP430X CPU 可完全访问其 20 位地址范围。 大多数 MSP430X 指令要求一个
被称为扩展字的运算代码的附加字。 一些扩展指令无需附加字并且未在指令说明中注明。 当前面为扩展字
时,所有地址、索引、和立即数有 20 位的值。
有两种类型的扩展字:
针对格式 I指令的寄存器/寄存器模式和针对格式 II 的寄存器模式。
针对所有其它地址模式组合的扩展字
4.5.2.1 寄存存器器模模式式扩扩展展字
此寄存器模式扩展字显示在4-24中并在4-11中进行了说明。 4-26显示了一个示例。
4-24. 针对对寄寄存存器器模模式式的的扩扩展展字
4-11. 针对对寄寄存存器器模模式式的的扩扩展展字字的的说说明
位 说说明
15:11 扩展字运算代码。 运算代码 1800h 1FFFh 为扩展字。
10:9 被保留
ZC 零进位
0被执行的指令使用进位位 C的状态。
1被执行的指令将进位位用作 0。指令执行后,进位位由最终运算的结果定义。
#重复
0指令重复的次数由扩展字位 3:0 置位。
1指令重复的次数由 Rn 的四个 LSB 的值定义。 位 3:0 请见说明。
A/L 数据长度扩展。 与下面的 MSP430 指令的 B/W 位一起,AL 位定义了指令所使用的数据长度。
A/L B/W 注释
0 0 被保留
0 1 20 位地址字
1 0 16 位字
1 1 8 位字节
5:4 被保留
3:0 重复数量
# = 0 这四个位置位重复数量 n。 这些位包含 n-1
# = 1 这四个位定义了 CPU 寄存器,此寄存器的位 3:0 置位重复的数量。 Rn 3:0 包含 n-1
147
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
MSP430
MSP430X
指令
www.ti.com.cn
148 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 1 1 00 ZC # A/L Rsvd (n-1)/Rn
Op-code Rsrc Ad B/W As Rdst
XORX.A R9,R8
0 0 0 1 1 0 0 0 0 0 0
14(XOR) 90 1 0 8(R8)
XORX instruction Source R9
0: Use Carry
1: Repetition count
in bits 3:0
01:Address word
Destination
register mode Source
register mode
Destination R8
15 12 11 10 7 6 5 4 3 0
0001 1 Source bits 19:16 A/L 0 0 Destination bits 19:16
www.ti.com.cn
MSP430
MSP430X
指令
4.5.2.2 非寄寄存存器器模模式式扩扩展展位
针对非寄存器模式的扩展字显示在4-25中并在4-12中进行了说明。 4-27显示了一个示例。
4-25. 针对对非非寄寄存存器器模模式式的的扩扩展展位
4-12. 针对对非非寄寄存存器器模模式式的的扩扩展展字字的的说说明
位 说说明
15:11 扩展字运算代码。 运算代码 1800h 1FFFh 是扩展字。
源位 19:16 20 位源的四个 MSB。 根据源寻址模式,这四个 MSB 有可能属于一个立即操作数,一个索引或者一个绝对地址。
A/L 数据长度扩展。 与下面的 MSP430 指令的 B/W 一起,AL 位定义了指令所使用的数据长度。
A/L B/W 注释
0 0 被保留
0 1 20 位地址字
1 0 16 位字
1 1 8 位字节
5:4 被保留
目的位 20 位目的的四个 MSB。 根据目的寻址模式,这四个 MSB 有可能属于一个索引或者一个绝对地址。
19:16
:针对SWPBX SXTX B/W A/L 位设设置
A/L B/W
0 0 SWPBX.ASXTX.A
0 1 不可用
1 0 SWPB.WSXTX.W
1 1 不可用
4-26. 针对对扩扩展展寄寄存存器/寄存存器器指指令令的的示示例
149
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 0 0 1 1 Source 19:16 A/L Rsvd Destination 19:16
Op-code Rsrc Ad B/W As Rdst
XORX.A #12345h,45678h(R15)
0 0 0 1 1 1 0 0 4
14 (XOR) 0 (PC) 1 1 3 15 (R15)
18xx extension word 12345h
@PC+
X(Rn)
Source 15:0
Destination 15:0
Immediate operand LSBs: 2345h
Index destination LSBs: 5678h
01: Address
word
MSP430
MSP430X
指令
www.ti.com.cn
4-27. 针对对扩扩展展立立即/已索索引引指指令令的的示示例
150 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
MSP430
MSP430X
指令
4.5.2.3 扩展展双双操操作作数数((格格式I)指指令
所有 12 个双操作数指令具有如4-13所列的扩展版本。
4-13. 扩展展双双操操作作数数指指令
状态态位(1)
助记记符符 操作数 运行 V N Z C
srcdst srcdst - - - -
MOVX(.B,.A)
srcdst src+dstdst * * * *
ADDX(.B,.A)
srcdst src+dst+Cdst * * * *
ADDCX(.B,.A)
srcdst dst + .not.src + 1 dst * * * *
SUBX(.B,.A)
srcdst dst + .not.src + C dst * * * *
SUBCX(.B,.A)
srcdst dst-src * * * *
CMPX(.B,.A)
src + dst + C dst(十进
srcdst * * * *
DADDX(.B,.A) 制)
srcdst src .and. dst 0 * * Z
BITX(.B,.A)
srcdst .not.src .and. dstdst - - - -
BICX(.B,.A)
srcdst src .or. dstdst - - - -
BISX(.B,.A)
srcdst src .xor. dstdst * * * Z
XORX(.B,.A)
srcdst src .and. dstdst 0 * * Z
ANDX(.B,.A)
(1) * = 状态位受影响。
- = 状态位未受影响。
0 = 状态位被清零。
1 = 状态位被置位。
151
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 19:16
Operand LSBs 15:0
0.......................................................................................
Address
Address+2
15 14 13 12 11 10 9 8 7 6 5 4 3 0
0 0 0 1 1 0 A/L n-1/Rn
Op-code B/W dst
0 ZC # 0 0
src 0 0 0
0 0 0 1 1 A/L
Op-code B/W dst
src.15:0
src.19:16 0 0
src Ad As
0 0 0 1 1 A/L
Op-code B/W dst
dst.15:0
0 0
src Ad
0 0 0 1 1 A/L dst.19:16
Op-code B/W dst
src.15:0
0 0
src Ad
0 0 0 0
dst.19:16
0 0 0 0
As
src.19:16
As
dst.15:0
MSP430
MSP430X
指令
www.ti.com.cn
针对格式 I指令扩展字的四个可能的寻址组合显示在4-28中。
4-28. 扩展展格格式I指令令格格式
如果一个源或者目的操作数的 20 位地址被锁定在存储器中,而非一个 CPU 寄存器中,那么用于这个操作
数的两个字显示在4-29中。
4-29. 存储储器器中中的20 位地地址
152 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
15 14 13 12 11 10 9 8 7 6 5 4 3 0
0 0 0 1 1 0 A/L n-1/Rn
Op-code B/W dst
0 ZC # 0 0
0 0 0 1 1 A/L
Op-code B/W dst
0 0
0 0 0 1 1 A/L
Op-code B/W dst
dst.15:0
0 0
0 0 0 0
dst.19:160 0 0 0
00 0 0
0 0
1 x
x 1
www.ti.com.cn
MSP430
MSP430X
指令
4.5.2.4 扩展展单单操操作作数数((格格式II)指指令
4-14中列出了扩展 MSP430X 格式 II 指令。
4-14. 扩展展单单操操作作数数指指令
状态态位(1)
助记记符符 操作数 n V N Z C
CALLA dst 间接调用子例程(20 位地址) - - - -
POPM.A #nRdst 从堆栈弹出 n20 位寄存器 116 - - - -
POPM.W #nRdst 从堆栈弹出 n16 位寄存器 116 - - - -
PUSHM.A #nRsrc n20 位寄存器压入堆栈 116 - - - -
PUSHM.W #nRsrc n16 位寄存器压入堆栈 116 - - - -
PUSHX(.B,.A) src 8/16/20 位源压入堆栈 - - - -
RRCM(.A) #nRdst 通过进位将 Rdst 右旋 n位(16/20 位寄存器) 14 0 * * *
RRUM(.A) #nRdst Rdst 右旋 n个无符号位(16/20 位寄存器) 14 0 * * *
RRAM(.A) #nRdst Rdst 算术右旋 n个位(16/20 位寄存器) 14 * * * *
RLAM(.A) #nRdst Rdst 算术左旋 n个位(16/20 位寄存器) 14 * * * *
RRCX(.B,.A) dst 通过进位右旋 dst8/16/20 位数据) 1 0 * * *
RRUX(.B,.A) Rdst 右旋 dst 无符号位(8/16/20 位) 1 0 * * *
RRAX(.B,.A) dst 算术右旋 dst 1 * * * *
SWPBX(.A) dst 用高字节交换低字节 1 - - - -
SXTX(.A) Rdst 78 ... 19 1 0 * * *
SXTX(.A) dst 78 ... MSB 1 0 * * *
(1) * = 状态位受影响。
- = 状态位未受影响。
0 = 状态位被清零。
1 = 状态位被置位。
针对格式 II 指令的三个可能寻址模式组合显示在4-30中。
4-30. 扩展展格格式II 指令令格格式
153
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
15 4 3 0
Op-code Rdst
Op-code Rdst
Op-code #imm/ix/abs19:16
index15:0
#imm15:0 / index15:0 / &abs15:0
15 12 11 8 7 4 3 0
C Rsrc Op-code 0(PC)
C #imm/abs19:16 Op-code 0(PC)
C Rsrc Op-code 0(PC)
#imm15:0 / &abs15:0
index15:0
15 12 11 10 9 4 3 0
C n-1 Op-code Rdst
15 8 7 4 3 0
Op-code n-1 Rdst - n+1
MSP430
MSP430X
指令
www.ti.com.cn
4.5.2.4.1
扩展展格格式
II
指令令格格式式除除外
针对格式 II 指令格式的例外显示在4-314-34中。
4-31. PUSHM/POPM 指令令格格式
4-32. RRCMRRAMRRUM RLAM 指令令格格式
4-33. BRA 指令令格格式
4-34. CALLA 指令令格格式
154 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
MSP430
MSP430X
指令
4.5.2.5 扩展展仿仿真真指指令
扩展指令与常数发生器一起形成了扩展仿真指令。4-15列出了仿真指令。
4-15. 扩展展仿仿真真指指令
指令令 说说明 仿仿真
将进位增加到 dst
ADCX(.B,.A) dst ADDCX(.B,.A) #0Mdst
分支指令 dst
BRA dst MOVA dstMPC
从子例程返回
RETA MOVA @SP+MPC
清零 Rdst
CLRA Rdst MOV #0MRdst
清零 dst
CLRX(.B,.A) dst MOVX(.B,.A) #0Mdst
用十进制为 dst 增加进位
DADCX(.B,.A) dst DADDX(.B,.A) #0Mdst
dst 1
DECX(.B,.A) dst SUBX(.B,.A) #1Mdst
Rdst 2
DECDA Rdst SUBA #2MRdst
dst 2
DECDX(.B,.A) dst SUBX(.B,.A) #2Mdst
dst 1
INCX(.B,.A) dst ADDX(.B,.A) #1Mdst
Rdst 2
INCDA Rdst ADDA #2MRdst
dst 2
INCDX(.B,.A) dst ADDX(.B,.A) #2Mdst
反转 dst
INVX(.B,.A) dst XORX(.B,.A) #-1Mdst
算术移位左侧 dst
RLAX(.B,.A) dst ADDX(.B,.A) dstMdst
通过进位逻辑移位左侧 dst
RLCX(.B,.A) dst ADDCX(.B,.A) dstMdst
dst 减去进位
SBCX(.B,.A) dst SUBCX(.B,.A) #0Mdst
测试 Rdst(与 0相比较)
TSTA Rdst CMPA #0MRdst
测试 dst(与 0相比较)
TSTX(.B,.A) dst CMPX(.B,.A) #0Mdst
弹出到 dst
POPX dst MOVX(.B, .A) @SP+Mdst
155
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
MSP430
MSP430X
指令
www.ti.com.cn
4.5.2.6 MSP430X 寻址址指指令
MSP430X 寻址指令支持 20 位操作数,但是具有受限的寻址模式。 寻址模式限制为寄存器模式和立即模
式,除了4-16中列出的 MOVA 指令。 对寻址模式的限制免除了对于额外扩展字运算代码的需要,从而改
进了代码密度和执行时间。 只要需要具有相应受限寻址模式的 MSP430X 指令,就应该使用寻址指令。
4-16. 寻址址指指令令,,在20 位寄寄存存器器数数据据上上运运行
状态态位(1)
助记记符符 操作数 运行 V N Z C
RsrcMRdst 将源添加到目的寄存器 ****
ADDA #imm20MRdst
RsrcMRdst
#imm20MRdst
z16(Rsrc)MRdst
EDEMRdst
将源移动到目的 ----
MOVA &abs20MRdst
@RsrcMRdst
@Rsrc+MRdst
RsrcMz16(Rdst)
RsrcM&abs20
RsrcMRdst 将源与目的寄存器相比较 ****
CMPA #imm20MRdst
RsrcMRdst 将源从目的寄存器中减去 ****
SUBA #imm20MRdst
(1) * = 状态位受影响。
- = 状态位未受影响。
0 = 状态位被清零。
1 = 状态位被置位。
156 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
MSP430
MSP430X
指令
4.5.2.7 MSP430X 指令令执执行
一个 MSP430X 指令所需的 CPU 时钟周期的数量取决于指令格式和使用的寻址模式,而不是指令本身。 参
MCLK 的时钟周期数量。
4.5.2.7.1 MSP430X
格式
II
(单单操操作作数数))指指令令周周期期和和长长度
4-17列出了针对 MSP430X 扩展单操作数指令的所有寻址模式的长度和 CPU 周期。
4-17. MSP430X 格式II 指令令周周期期和和长长度
指令令(字))的执行行周/长度
指令Rn @Rn @Rn+ #N X(Rn) EDE &EDE
RRAM n/1 - - - - - -
RRCM n/1 - - - - - -
RRUM n/1 - - - - - -
RLAM n/1 - - - - - -
PUSHM 2+n/1 - - - - - -
PUSHM.A 2+2n/1 - - - - - -
POPM 2+n/1 - - - - - -
POPM.A 2+2n/1 - - - - - -
CALLA 4/1 5/1 5/1 4/2 6(1)/2 6/2 6/2
RRAX(.B) 1+n/2 4/2 4/2 - 5/3 5/3 5/3
RRAX.A 1+n/2 6/2 6/2 - 7/3 7/3 7/3
RRCX(.B) 1+n/2 4/2 4/2 - 5/3 5/3 5/3
RRCX.A 1+n/2 6/2 6/2 - 7/3 7/3 7/3
PUSHX(.B) 4/2 4/2 4/2 4/3 5(1)/3 5/3 5/3
PUSHX.A 5/2 6/2 6/2 6/3 7(1)/3 7/3 7/3
POPX(.B) 3/2 - - - 5/3 5/3 5/3
POPX.A 4/2 - - - 7/3 7/3 7/3
(1) Rn=SP 时,增加一个周期
157
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
MSP430
MSP430X
指令
www.ti.com.cn
4.5.2.7.2 MSP430X
格式
I
(双双操操作作数数))指指令令周周期期和和长长度
4-18列出了针对所有 MSP430X 扩展格式 I指令寻址模式的长度和 CPU 周期。
4-18. MSP430X 格式I指令令周周期期和和长长度
寻址址模 周期期的数量 指令令的长度度 示示例
目标.B/.W .A .B/.W/.A
Rn Rm(1) 2 2 2 BITX.B R5R8
PC 3 3 2 ADDX R9PC
X(Rm) 5(2) 7(3) 3 ANDX.A R54(R6)
EDE 5(2) 7(3) 3 XORX R8EDE
&EDE 5(2) 7(3) 3 BITX.W R5&EDE
@Rn Rm 3 4 2 BITX @R5R8
PC 3 4 2 ADDX @R9PC
X(Rm) 6(2) 9(3) 3 ANDX.A @R54(R6)
EDE 6(2) 9(3) 3 XORX @R8EDE
&EDE 6(2) 9(3) 3 BITX.B @R5&EDE
@Rn+ Rm 3 4 2 BITX @R5+R8
PC 4 5 2 ADDX.A @R9+PC
X(Rm) 6(2) 9(3) 3 ANDX @R5+4(R6)
EDE 6(2) 9(3) 3 XORX.B @R8+EDE
&EDE 6(2) 9(3) 3 BITX @R5+&EDE
#N Rm 3 3 3 BITX #20R8
PC(4) 4 4 3 ADDX.A #FE000hPC
X(Rm) 6(2) 8(3) 4 ANDX #12344(R6)
EDE 6(2) 8(3) 4 XORX #A5A5hEDE
&EDE 6(2) 8(3) 4 BITX.B #12&EDE
X(Rn) Rm 4 5 3 BITX 2(R5)R8
PC(4) 5 6 3 SUBX.A 2(R6)PC
X(Rm) 7(2) 10(3) 4 ANDX 4(R7)4(R6)
EDE 7(2) 10(3) 4 XORX.B 2(R6)EDE
&EDE 7(2) 10(3) 4 BITX 8(SP)&EDE
EDE Rm 4 5 3 BITX.B EDER8
PC(4) 5 6 3 ADDX.A EDEPC
X(Rm) 7(2) 10(3) 4 ANDX EDE4(R6)
EDE 7(2) 10(3) 4 ANDX EDETONI
&TONI 7(2) 10(3) 4 BITX EDE&TONI
&EDE Rm 4 5 3 BITX &EDER8
PC(4) 5 6 3 ADDX.A &EDEPC
X(Rm) 7(2) 10(3) 4 ANDX.B &EDE4(R6)
TONI 7(2) 10(3) 4 XORX &EDETONI
&TONI 7(2) 10(3) 4 BITX &EDE&TONI
(1) 重复指令要求 n+1 个周期,其中 n是指令被执行的次数。
(2) 对于 MOVBIT,和 CMP 指令,周期数量减 1
(3) 对于 MOVBIT,和 CMP 指令,周期数量减 2
(4) 对于 MOVADD,和 SUB 指令,周期数量减 1
158 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
MSP430
MSP430X
指令
4.5.2.7.3 MSP430X
寻址址指指令令周周期期和和长长度
4-19列出了针对 MSP430 地址指令的所有寻址模式的长度和 CPU 周期。
4-19. 寻址址指指令令周周期期和和长长度
执行行时间 指指令令长
寻址址模MCLK 周期) ((字字)
示例
CMPA CMPA
MOVA
源 目目标 ADDA MOVA ADDA
BRA SUBA SUBA
Rn Rn 1 1 1 1 CMPA R5MR8
PC 2 2 1 1 SUBA R9MPC
x(Rm) 4 - 2 - MOVA R5M4(R6)
EDE 4 - 2 - MOVA R8MEDE
&EDE 4 - 2 - MOVA R5M&EDE
@Rn Rm 3 – 1 - MOVA @R5MR8
PC 3 – 1 - MOVA @R9MPC
@Rn+ Rm 3 – 1 - MOVA @R5+MR8
PC 3 – 1 - MOVA @R9+MPC
#N Rm 2 3 2 2 CMPA #20MR8
PC 3 3 2 2 SUBA #FE000hMPC
x(Rn) Rm 4 - 2 - MOVA 2(R5)MR8
PC 4 - 2 - MOVA 2(R6)MPC
EDE Rm 4 - 2 - MOVA EDEMR8
PC 4 - 2 - MOVA EDEMPC
&EDE Rm 4 - 2 - MOVA &EDEMR8
PC 4 - 2 - MOVA &EDEMPC
159
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集说明
www.ti.com.cn
4.6 指令令集集说说明
4-20显示了所有可用指令:
4-20. MSP430X 的指指令令映映射
000 040 080 0C0 100 140 180 1C0 200 240 280 2C0 300 340 380 3C0
0xxx MOVACMPAADDASUBARRCMRRAMRLAMRRUM
PUSH. CALL
10xx RRC RRC.B SWPB RRA RRA.B SXT PUSH CALL RETI
B A
14xx PUSHM.APOPM.APUSHM.WPOPM.W
18xx 针对格式 I和格式 II 指令的扩展字
1Cxx
20xx JNE/JNZ
24xx JEQ/JZ
28xx JNC
2Cxx JC
30xx JN
34xx JGE
38xx JL
3Cxx JMP
4xxx MOVMOV.B
5xxx ADDADD.B
6xxx ADDCADDC.B
7xxx SUBCSUBC.B
8xxx SUBSUB.B
9xxx CMPCMP.B
Axxx DADDDADD.B
Bxxx BITBIT.B
Cxxx BICBIC.B
Dxxx BISBIS.B
Exxx XORXOR.B
Fxxx ANDAND.B
160 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集说明
4.6.1
扩展展指指令令二二进进制说明
详细的 MSP430X 指令二进制说明显示在以下的表中。
指令令组src data.19:16 令标标识dst
指令15 12 11 8 7 4 3 0
MOVA 0 0 0 0 src 0 0 0 0 dst MOVA @RsrcMRdst
0 0 0 0 src 0 0 0 1 dst MOVA @Rsrc+MRdst
0 0 0 0 &abs.19:16 0 0 1 0 dst MOVA &abs20MRdst
&abs.15:0
MOVA
0 0 0 0 src 0 0 1 1 dst x(Rsrc)MRdst
x.15:0 ±15 位索引 x
0 0 0 0 src 0 1 1 0 &abs.19:16 MOVA RsrcM&abs20
&abs.15:0
MOVA
0 0 0 0 src 0 1 1 1 dst RsrcMX(Rdst)
x.15:0 ±15 位索引 x
0 0 0 0 imm.19:16 1 0 0 0 dst MOVA #imm20MRdst
imm.15:0
CMPA 0 0 0 0 imm.19:16 1 0 0 1 dst CMPA #imm20MRdst
imm.15:0
ADDA 0 0 0 0 imm.19:16 1 0 1 0 dst ADDA #imm20MRdst
imm.15:0
SUBA 0 0 0 0 imm.19:16 1 0 1 1 dst SUBA #imm20MRdst
imm.15:0
MOVA 0 0 0 0 src 1 1 0 0 dst MOVA RsrcMRdst
CMPA 0 0 0 0 src 1 1 0 1 dst CMPA RsrcMRdst
ADDA 0 0 0 0 src 1 1 1 0 dst ADDA RsrcMRdst
SUBA 0 0 0 0 src 1 1 1 1 dst SUBA RsrcMRdst
指令令组 位位位置 指令ID 指令标识识符dst
指令15 12 11 10 9 8 7 4 3 0
RRCM.A 0 0 0 0 n-1 0 0 0 1 0 0 dst RRCM.A #nMRdst
RRAM.A 0 0 0 0 n-1 0 1 0 1 0 0 dst RRAM.A #nMRdst
RLAM.A 0 0 0 0 n-1 1 0 0 1 0 0 dst RLAM.A #nMRdst
RRUM.A 0 0 0 0 n-1 1 1 0 1 0 0 dst RRUM.A #nMRdst
RRCM.W 0 0 0 0 n-1 0 0 0 1 0 1 dst RRCM.W #nMRdst
RRAM.W 0 0 0 0 n-1 0 1 0 1 0 1 dst RRAM.W #nMRdst
RLAM.W 0 0 0 0 n-1 1 0 0 1 0 1 dst RLAM.W #nMRdst
RRUM.W 0 0 0 0 n-1 1 1 0 1 0 1 dst RRUM.W #nMRdst
161
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集说明
www.ti.com.cn
指令令标识符dst
指令15 12 11 8 7 6 5 4 3 0
RETI 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0
CALLA 0 0 0 1 0 0 1 1 0 1 0 0 dst CALLA Rdst
0 0 0 1 0 0 1 1 0 1 0 1 dst CALLA x(Rdst)
x.15:0
0 0 0 1 0 0 1 1 0 1 1 0 dst CALLA @Rdst
0 0 0 1 0 0 1 1 0 1 1 1 dst CALLA @Rdst+
0 0 0 1 0 0 1 1 1 0 0 0 &abs.19:16 CALLA &abs20
&abs.15:0
0 0 0 1 0 0 1 1 1 0 0 1 x.19:16 CALLA EDE
x.15:0 CALLA x(PC)
0 0 0 1 0 0 1 1 1 0 1 1 imm.19:16 CALLA #imm20
imm.15:0
被保留 0 0 0 1 0 0 1 1 1 0 1 0 x x x x
被保留 0 0 0 1 0 0 1 1 1 1 x x x x x x
PUSHM.A 0 0 0 1 0 1 0 0 n-1 dst PUSHM.A #nMRdst
PUSHM.W 0 0 0 1 0 1 0 1 n-1 dst PUSHM.W #nMRdst
POPM.A 0 0 0 1 0 1 1 0 n-1 dst-n+1 POPM.A #nMRdst
POPM.W 0 0 0 1 0 1 1 1 n-1 dst-n+1 POPM.W #nMRdst
162 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集说明
4.6.2 MSP430
指令
在下面的部分中对 MSP430 指令进行了说明。
MSP430X 扩展指令请参阅4.6.3 ,而MSP430X 寻址指令请参阅4.6.4
163
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集说明
www.ti.com.cn
4.6.2.1 ADC
* ADC[.W] 将进位增加到目的
* ADC.B 将进位增加到目的
句法ADC dstADC.W dst
ADC.B dst
运行dst+Cdst
ADDC #0Mdst
仿仿真
ADDC.B #0Mdst
描述 进位位 (C) 被增加到目的操作数。 目的操作数的之前内容丢失。
状态态位N: 如果结果为负则置位,如果为正则复位。
Z: 如果结果为零则置位,否则复位
C 如果 dst 被从 0FFFFh 递增至 0000,则置位,否则复位。
如果 dst 被从 0FFh 递增至 00,则置位,否则复位。
V: 如果一个算术溢出发生,则置位,否则复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例R13 指向的 16 位计数器被添加到 R12 指向的一个 32 位计数器内。
ADD @R13,0(R12) ; Add LSDsADC 2(R12) ; Add carry to MSD
示例R13 指向的 8位计数器被添加到 R12 指向的一个 16 位计数器内。
ADD.B @R13,0(R12) ; Add LSDsADC.B 1(R12) ; Add carry to MSD
164 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集说明
4.6.2.2 ADD
ADD[.W] 将源字加入至目的字
ADD.B 将源字节加至目的字节
句法ADD srcMdst ADD.W srcMdst
ADD.B srcMdst
运行src+dstdst
描述 源操作数被添加到目的操作数。 目的操作数之前的内容丢失。
状态态位N 如果结果为负 (MSB=1),则置位,如果为正 (MSB=0),则复位
Z: 如果结果为零,则置位,否则复位
C 如果有一个来自结果的 MSB 的进位,则置位,否则复位
V: 如果两个正操作数的结果为负,或者如果两个负数的结果为正,则置位,否则复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例 位于低 64KB 内的 16 位计数器 CNTR 10
ADD.W #10,&CNTR ; Add 10 to 16-bit counter
示例 R5指向的表格字(R5 内的 20 位地址)被加入到 R6。 在一个进位上执行跳转到标签
TONI
ADD.W @R5,R6 ; Add table word to R6. R6.19:16 = 0JC TONI ; Jump if carry... ; No carry
示例R520 位地址)指向的一个表格字节被加入到 R6。 如果没有进位发生,执行到标签
TONI 的跳转。 表格指针自动加 1R6.19:8=0
ADD.B @R5+,R6 ; Add byte to R6. R5 + 1. R6: 000xxhJNC TONI ; Jump if no carry... ;
Carry occurred
165
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集说明
www.ti.com.cn
4.6.2.3 ADDC
ADDC[.W] 将源字和进位加入目的字
ADDC.B 将源字节和进位加入目的字节
句法ADDC srcMdstADDC.W srcMdst
ADDC.B srcMdst
运行src+dst+Cdst
说明 源操作数和进位位 C被加入到目的操作数。 目的操作数之前的内容丢失。
状态态位N 如果结果为负 (MSB=1),则置位,如果为正 (MSB=0),则复位
Z: 如果结果为零,则置位,否则复位
C 如果有一个来自结果的 MSB 的进位,则置位,否则复位
V: 如果两个正操作数的结果为负,或者如果两个负数的结果为正,则置位,否则复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例 常数值 15 和之前指令的进位被加入到位于低 64KB 内的 16 位计数器 CNTR 内。
ADDC.W #15,&CNTR ; Add 15 + C to 16-bit CNTR
示例 R5指向的一个表格字(20 位地址)和进位 C被加入 R6。 在一个进位上执行跳转到标
TONIR6.19:16=0
ADDC.W @R5,R6 ; Add table word + C to R6JC TONI ; Jump if carry... ; No carry
示例 R520 位地址)指向的表格字节和进位位 C被加入到 R6。 如果没有进位发生,执行
到标签 TONI 的跳转。 表格指针自动加 1R6.19:8=0
ADDC.B @R5+,R6 ; Add table byte + C to R6. R5 + 1JNC TONI ; Jump if no carry... ;
Carry occurred
166 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集说明
4.6.2.4
AND[.W] 源字与目的字的逻辑与 (AND)
AND.B 源字节与目的字节的逻辑 AND
句法AND srcMdst AND.W srcMdst
AND.B srcMdst
Operation src .and. dstst
说明 源操作数和目的操作数被逻辑与。 结果被放置在目的操作数中。 源操作数不受影响。
状态态位N 如果结果为负 (MSB=1),则置位,如果为正 (MSB=0),则复位
Z: 如果结果为零,则置位,否则复位
C 如果结果不为零则置位,否则复位。 C=(.not. Z)
V: 复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例R516 位数据)中置位的位被用作一个针对位于低 64KB 内字 TOM 的掩码(AA55h)。 如
果结果为零,一个分支指令被带到标签 TONIR5.19:16=0
MOV #AA55h,R5 ; Load 16-bit mask to R5AND R5,&TOM ; TOM .and. R5 -
> TOMJZ TONI ; Jump if result 0... ; Result > 0
或更短:
AND #AA55h,&TOM ; TOM .and. AA55h -> TOMJZ TONI ; Jump if result 0
示例 R520 位地址)指向的一个表格字节被与 R6 逻辑与。 取字节后,R5 1
R6.19:8=0
AND.B @R5+,R6 ; AND table byte with R6. R5 + 1
167
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集说明
www.ti.com.cn
4.6.2.5 BIC
BIC[.W] 清零目的字中源字内置位的位
BIC.B 清零目的字节中源字节内置位的位
句法BIC srcMdst BIC.W srcMdst
BIC.B srcMdst
运行(.not. src) .and. dstdst
说明 被反转的源操作数和目的操作数被逻辑与。 结果被放置在目的操作数内。 源操作数不受影
响。
状态态位N: 不受影响
Z: 不受影响
C: 不受影响
V: 不受影响
模式式位OSCOFFCPUOFF GIE 不受影响。
示例R5 的位 15:1416 位数据)被清零。 R5.19:16=0
BIC #0C000h,R5 ; Clear R5.19:14 bits
示例 R5 指向的一个表格字(20 位地址)被用于清零 R7 中的位。 R7.19:16=0
BIC.W @R5,R7 ; Clear bits in R7 set in @R5
示例R5 20 位地址)指向的一个表格字节被用于清零 Port1 中的位。
BIC.B @R5,&P1OUT ; Clear I/O port P1 bits set in @R5
168 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集说明
4.6.2.6 BIS
BIS[.W] 置位在目的字中源字内置位的位
BIS.B 置位在目的字节中源字节内置位的位
句法BIS srcMdst BIS.W srcMdst
BIS.B srcMdst
运行src .or. dstdst
说明 源操作数与目的操作数被逻辑与。 结果被放置在目的操作数内。 源操作数不受影响。
状态态位N: 不受影响
Z: 不受影响
C: 不受影响
V: 不受影响
模式式位OSCOFFCPUOFF GIE 不受影响。
示例R5 的位 15 和位 1316 位数据)被置位为 1R5.19:16=0
BIS #A000h,R5 ; Set R5 bits
示例R5 指向的一个表格字(20 位地址)被用于清零 R7 中的位。 R7.19:16=0
BIS.W @R5,R7 ; Set bits in R7
示例R520 位地址)指向的一个表格字节被用来置位 Port1 中的位。 之后 R5 1
BIS.B @R5+,&P1OUT ; Set I/O port P1 bits. R5 + 1
169
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集说明
www.ti.com.cn
4.6.2.7
BIT[.W] 测试在目的字中源字内置位的位
BIT.B 测试在目的字节中源字节内置位的位
句法BIT srcMdst BIT.W srcMdst
BIT.B srcMdst
运行src .and. dst
说明 源操作数与目的操作数被逻辑与。 结果只影响 SR 中的状态位。
寄存器模式:寄存器位 Rdst.19:16 (.W) resp.Rdst. 19:8 (.B) 未被清零!
状态态位N 如果结果为负 (MSB=1),则置位,如果为正 (MSB=0),则复位
Z: 如果结果为零,则置位,否则复位
C 如果结果不为零则置位,否则复位。 C = (.not. Z)
V: 复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例 测试是否 R5 的位 15 1416 位数据)中的一个(或两个)被置位。 如果被置位的话
则跳转至标签 TONIR5.19:16 未受影响。
BIT #C000h,R5 ; Test R5.15:14 bitsJNZ TONI ; At least one bit is set in R5... ; Both
bits are reset
示例R5 指向的一个表格字(20 位地址)被用于测试 R7 中的位。 如果至少一个位被置位,则
跳转至标签 TONIR7.19:16 未受影响。
BIT.W @R5,R7 ; Test bits in R7JC TONI ; At least one bit is set... ; Both are reset
示例 R520 位地址)指向的一个表格字节被用来测试输出 Port1 中的位。 如果没有位被置
位,则跳转至标签 TONI。 下一个表格字节被寻址。
BIT.B @R5+,&P1OUT ; Test I/O port P1 bits. R5 + 1JNC TONI ; No corresponding bit is
set... ; At least one bit is set
170 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集说明
4.6.2.8 BRBRANCH
*到低 64KB 地址空间目的的分支指令
BRBRANC
H
BR dst
句法
运行dstPC
MOV dstMPC
仿仿真
说明 一个无条件分支指令被指向低 64KB 地址空间的任一位置上的地址。 可使用所有源寻址模
式。 分支指令是一个字指令。
状态态位位 状态位不受影响。
示例例 给出了针对所有寻址模式的示例。
BR #EXEC ; Branch to label EXEC or direct branch (e.g. #0A4h); Core instruction MOV
@PC+,PCBR EXEC ; Branch to the address contained in EXEC; Core instruction MOV
X(PC),PC; Indirect addressBR &EXEC ; Branch to the address contained in absolute ;
address EXEC; Core instruction MOV X(0),PC; Indirect addressBR R5 ; Branch to the
address contained in R5; Core instruction MOV R5,PC; Indirect R5BR @R5 ; Branch to the
address contained in the word ; pointed to by R5.; Core instruction MOV @R5,PC;
Indirect, indirect R5BR @R5+ ; Branch to the address contained in the word pointed ;
to by R5 and increment pointer in R5 afterwards.; The next time-
S/W flow uses R5 pointer-
it can ; alter program execution due to access to; next address in a table pointed to
by R5; Core instruction MOV @R5,PC; Indirect, indirect R5 with autoincrementBR X(R5) ;
Branch to the address contained in the address ; pointed to by R5 + X (e.g. table with
address ; starting at X). X can be an address or a label; Core instruction MOV
X(R5),PC; Indirect, indirect R5 + X
171
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集说明
www.ti.com.cn
4.6.2.9 CALL
CALL 调用一个低 64KB 内的子例程
M M dst
句法
运行dstPC 16 dst 被评估和存储
SP-2SP
PC@SP 用到 TOS 的返回地址更新了 PC
tmpPC 16 dst 存储到 PC
说明 从一个低 64KB 内的地址到一个低 64KB 内的子例程地址进行子例程调用。 可使用所有七
个源寻址模式。 此调用指令是一个字指令。 使用 RET 指令来完成返回。
状态态位位 状态位不受影响。
PC.19:16 被清零(低 64KB 内的地址)
模式式位OSCOFFCPUOFF GIE 不受影响。
示例例 给出了针对所有寻址模式的示例。
立即模式:调用一个标签 EXEC(低 64KB)上的子例程或者直接调用到地址。
CALL #EXEC ; Start address EXECCALL #0AA04h ; Start address 0AA04h
符号模式:调用一个包含在地址 EXEC 内的 16 位地址上的子例程。 EXEC 位于地址
(PC+X) 上,其中 XPC+32K 内。
CALL EXEC ; Start address at @EXEC. z16(PC)
绝对模式:调用一个 16 位地址上的子例程,此地址包含在低 64KB 内的绝对地址 EXEC
内。
CALL &EXEC ; Start address at @EXEC
寄存器模式:调用一个包含在寄存器 R5.15:0 中的 16 位地址上的子例程。
CALL R5 ; Start address at R5
间接模式:调用一个 16 位地址上的子例程,此地址包含在由寄存器 R5 指向的字(20
地址)内。
CALL @R5 ; Start address at @R5
172 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集说明
4.6.2.10 CLR
* CLR[.W] 清零目的操作数
* CLR.B 清零目的操作数
句法CLR dstCLR.W dst
CLR.B dst
运行0dst
MOV #0Mdst
仿仿真
MOV.B #0Mdst
说明明 目的操作数被清零。
状态态位位 状态位不受影响。
示例RAM TONI 被清零。
CLR TONI ; 0 -> TONI
示例 寄存器 R5 被清零。
CLR R5
示例RAM 字节 TONI 被清零。
CLR.B TONI ; 0 -> TONI
173
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集说明
www.ti.com.cn
4.6.2.11 CLRC
* CLRC 清零进位位
CLRC
句法
运行0C
BIC #1MSR
仿仿真
说明 进位位 (C) 被清零。 清零进位指令是字指令。
状态态位N: 不受影响
Z: 不受影响
C: 被清零
V: 不受影响
模式式位OSCOFFCPUOFF GIE 不受影响。
示例R13 指向的 16 位十进制计数器被添加到 R12 指向的一个 32 位计数器内。
CLRC ; C=0: defines startDADD @R13,0(R12) ; add 16-bit counter to low word of 32-
bit counterDADC 2(R12) ; add carry to high word of 32-bit counter
174 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集说明
4.6.2.12 CLRN
* CLRN 清零负位
CLRN
句法
运行0N
(.NOT.src .AND. dstdst)
BIC #4MSR
仿仿真
说明 常数 04h 被反转 (0FFFBh) 并且与目的操作数进行逻辑与。 结果被放置在目的操作数内。
清零负位指令为字指令。
状态态位N 复位为 0
Z: 不受影响
C: 不受影响
V: 不受影响
模式式位OSCOFFCPUOFF GIE 不受影响。
示例SR 中的负位被清零。 这避免了对子例程调用的负数的特别处理。
CLRNCALL SUBR......SUBR JN SUBRET ; If input is negative: do nothing and
return.........SUBRET RET
175
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集说明
www.ti.com.cn
4.6.2.13 CLRZ
* CLRZ 清零零位
CLRZ
句法
运行0Z
(.NOT.src .AND. dstdst)
BIC #2MSR
仿仿真
说明 常数 02h 被反转 (0FFFDh) 并且与目的操作数进行逻辑与。 结果被放置在目的操作数内。
清零零位指令为字指令。
状态态位N: 不受影响
Z 复位为 0
C: 不受影响
V: 不受影响
模式式位OSCOFFCPUOFF GIE 不受影响。
示例SR 中的零位被清零。
CLRZ
间接,自动增量模式:调用一个包含在由R5 指向的字(20 位地址)中的 16 位地址上的
子例程,之后 R5 中的 16 位地址递增 2。下次软件使用 R5 作为一个指针,访问由 R5
向表中的下一个字地址使得它能够改变程序执行。
CALL @R5+ ; Start address at @R5. R5 + 2
已索引模式:调用一个位于 16 位地址上的子例程,此地址包含在寄存器 (R5+X) 指向的
20 位地址内,例如,一个开始地址为 X的表。此地址在低 64KB 内。 X位于 +32KB 内。
CALL X(R5) ; Start address at @(R5+X). z16(R5)
176 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集说明
4.6.2.14 CMP
CMP[.W] 将源字与目的字相比较
CMP.B 将源字节与目的字节相比较
句法CMP srcMdst CMP.W srcMdst
CMP.B srcMdst
运行(.not.src)+1+dst
dst-src
BIC #2MSR
仿仿真
说明 从目的操作数中减去源操作数。 通过在目的中增加源 + 1 1s 补充来完成。 结果只影响
SR 中的状态位。
寄存器模式:寄存器位 Rdst.19:16 (.W) resp.Rdst. 19:8 (.B) 未被清零。
状态态位N 如果结果为负 (src>dst),则置位,如果为正则复位 (src=dst)
Z 如果为零 (src=dst) 则置位,否则复位 (srcdst)
C 如果有来自 MSB 的进位,则置位,否则复位
V: 如果从一个正目的操作数中减去一个负源操作数得到一个负结果,或者如果从一个负
目的操作数中减去一个正源操作数得到一个正结果,则置位,否则复位(无溢出)。
模式式位OSCOFFCPUOFF GIE 不受影响。
示例 将字 EDE 与一个 16 位常数 1800h 相比较。 如果 EDE 等于常数则跳转至标签 TONI
EDE 的地址在 PC+32K 内。
CMP #01800h,EDE ; Compare word EDE with 1800hJEQ TONI ; EDE contains 1800h... ; Not
equal
示例(R5+10) 指向的一个表格字与 R7 相比较。 如果 R7 包含一个较低的、带符号的 16
数,则跳转至标签 TONIR7.19:16 未被清零。 源操作数的地址为完全地址范围内的一个
20 位地址。
CMP.W 10(R5),R7 ; Compare two signed numbersJL TONI ; R7 < 10(R5)... ; R7 >= 10(R5)
示例 R520 位地址)指向的一个表格字节与输出 Port1 中的值相比较。 如果这两个值相
等,则跳转至标签 TONI。 下一个表格字节被寻址。
CMP.B @R5+,&P1OUT ; Compare P1 bits with table. R5 + 1JEQ TONI ; Equal contents... ;
Not equal
177
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集说明
www.ti.com.cn
4.6.2.15 DADC
* DADC[.W] 将十进制进位增加到目的
* DADC.B 将十进制进位增加到目的
句法DADC dst DADC.W dst
DADC.B dst
运行dst+Cdst(用十进制)
DADD #0Mdst
仿仿真DADD.B #0Mdst
说明 进位位 (C) 被用十进制增加到目的操作数。
状态态位N 如果 MSB 1则置位
Z 如果 dst 0则置位,否则复位
C 如果目的从 9999 0000 递增则置位,否则复位
如果目的从 99 00 递增,则置位,否则复位
V: 未定义
模式式位OSCOFFCPUOFF GIE 不受影响。
示例 包含在 R5 中的四位十进制数被增加到由 R8 指向的一个八位十进制数上。
CLRC ; Reset carry; next instruction's start condition is definedDADD R5,0(R8) ; Add
LSDs + CDADC 2(R8) ; Add carry to MSD
示例 包含在 R5 中的两位十进制数被增加到由 R8 指向的一个四位十进制数上。
CLRC ; Reset carry; next instruction's start condition is definedDADD.B R5,0(R8) ; Add
LSDs + CDADC 1(R8) ; Add carry to MSDs
178 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集说明
4.6.2.16 DADD
* DADD[.W] 增加源字和十进制进位至目的字
* DADD.B 增加源字节和十进制进位至目的字节
句法DADD srcMdst DADD.W srcMdst
DADD.B srcMdst
运行src+dst+Cdst(用十进制)
说明 源操作数和目的操作数被视为具有正符号的两个 (.B) 或者四个 (.W) 的二进制编码的十进
(BCD)。 源操作数和进位位 C被用十进制加入到目的操作数。 源操作数不受影响。 目
的操作数之前的内容丢失。 此结果不针对非 BCD 数定义。
状态态位N 如果结果的 MSB 1(字 > 7999h,字节 > 79h)则置位,如果 MSB 0则复位
Z: 如果结果为零,则置位,否则复位
C 如果 BCD 结果太大(字 > 9999h,字节 > 99h),则置位,否则复位
V: 未定义
模式式位OSCOFFCPUOFF GIE 不受影响。
示例 十进制数 10 被增加 16 BCD 计数器 DECCNTR
DADD #10h,&DECCNTR ; Add 10 to 4-digit BCD counter
示例 包含在 16 RAM 地址 BCD BCD+2 中的 8BCD 数被用十进制加入到包含在 R4
R5 中的一个 8BCD 数中(BCD+2 R5 包含 MSD)。 进位 C被增加、清零。
CLRC ; Clear carryDADD.W &BCD,R4 ; Add LSDs. R4.19:16 = 0DADD.W &BCD+2,R5 ; Add MSDs
with carry. R5.19:16 = 0JC OVERFLOW ; Result >9999,9999: go to error routine... ;
Result ok
示例 包含在字 BCD 中的两位 BCD 数(16 位地址)被用十进制增加到包含在 R4 中的一个两
BCD 数中。 进位 C也被加入。 R4.19:8=0CLRC;清零 carryDADD.B &BCDR4
BCD 用十进制加入 R4R4: 000ddh
CLRC ; Clear carryDADD.B &BCD,R4 ; Add BCD to R4 decimally.R4: 0,00ddh
179
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
EDE
EDE+254
TONI
TONI+254
指令集说明
www.ti.com.cn
4.6.2.17 DEC
* DEC[.W] 递减目的
* DEC.B 递减目的
句法DEC dstDEC.W dst
DEC.B dst
运行dst-1dst
SUB #1Mdst
仿仿真
SUB.B #1Mdst
说明 目的操作数减 1。 原先的内容丢失。
状态态位N: 如果结果为负则置位,如果为正则复位。
Z 如果 dst 包含 1则置位,否则复位
C 如果 dst 包含 0则置位,否则复位
V: 如果一个算术溢出发生,则置位,否则复位。
如果目的的初始值为 08000h 则置位,否则复位。
如果目的的初始值为 080h 则置位,否则复位。
模式式位OSCOFFCPUOFF GIE 不受影响。
示例R10 1
DEC R10 ; Decrement R10; Move a block of 255 bytes from memory location starting with
EDE to ; memory location starting with TONI. Tables should not overlap: start of ;
destination address TONI must not be within the range EDE to EDE+0FEhMOV #EDE,R6MOV
#510,R10L$1 MOV @R6+,TONI-EDE-1(R6)DEC R10JNZ L$1
不要上面具有4-35中所显示的交迭的例程来传送表格。
4-35. 递减减交交迭
180 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集说明
4.6.2.18 DECD
* DECD[.W] 双递减目的
* DECD.B 双递减目的
句法DECD dstDECD.W dst
DECD.B dst
运行dst-2dst
SUB #2Mdst
仿仿真
SUB.B #2Mdst
说明 目的操作数递减 2。 原先的内容丢失。
状态态位N: 如果结果为负则置位,如果为正则复位。
Z 如果 dst 包含 2则置位,否则复位
C 如果 dst 包含 0则复位,否则置位
V: 如果一个算术溢出发生,则置位,否则复位。
如果目的初始值为 08001 08000h 则置位,否则复位
如果目的的初始值为 081 080h 则置位,否则复位。
模式式位OSCOFFCPUOFF GIE 不受影响。
示例R10 递减 2.
DECD R10 ; Decrement R10 by two; Move a block of 255 bytes from memory location
starting with EDE to ; memory location starting with TONI. ; Tables should not
overlap: start of destination address TONI must not ; be within the range EDE to
EDE+0FEhMOV #EDE,R6MOV #255,R10L$1 MOV.B @R6+,TONI-EDE-2(R6)DECD R10JNZ L$1
示例 位于 LEO 中的存储器递减 2
DECD.B LEO ; Decrement MEM(LEO)
将状态字节 STATUS 递减 2
DECD.B STATUS
181
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集说明
www.ti.com.cn
4.6.2.19 DINT
* DINT 禁用(通用)中断
DINT
句法
运行0GIE
(0FFF7h .AND. SRSR / .NOT. src .AND. dstdst)
BIC #8MSR
仿仿真
说明明 所有中断被禁用。
常数 08h 被反转并且与 SR 进行逻辑与。 结果被放置在 SR 内。
状态态位位 状态位不受影响。
模式式位GIE 被复位。 OSCOFF CPUOFF 不受影响。
示例SR 中的通用中断启用 (GIE) 位被清零来实现一个 32 位计数器的非中断移动。 这就确保任
一中断进行移动期间计数器不会被修改。
DINT ; All interrupt events using the GIE bit are disabledNOPMOV COUNTHI,R5 ; Copy
counterMOV COUNTLO,R6EINT ; All interrupt events using the GIE bit are enabled
:禁用用中中断
如果保护任一代码序列不被中断,在不可中断序列开始前,DINT 应该至少在一个指令上被执
行,或者在它之后应该有一个 NOP 指令。
182 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集说明
4.6.2.20 EINT
* EINT 启用(通用)中断
EINT
句法
运行1GIE
(0008h .OR. SRSR / .src .OR. dstdst)
BIS #8MSR
仿仿真
说明明 所有中断被启用。
常数 08h SR 被逻辑与。 结果被放置在 SR 内。
状态态位位 状态位不受影响。
模式式位GIE 被复位。 OSCOFF CPUOFF 不受影响。
示例SR 中的通用中断启用 (GIE) 位被置位。
; Interrupt routine of ports P1.2 to P1.7; P1IN is the address of the register where
all port bits are read. ; P1IFG is the address of the register where all interrupt
events are latched.PUSH.B &P1INBIC.B @SP,&P1IFG ; Reset only accepted flagsEINT ;
Preset port 1 interrupt flags stored on stack; other interrupts are allowedBIT
#Mask,@SPJEQ MaskOK ; Flags are present identically to mask: jump......MaskOK BIC
#Mask,@SP......INCD SP ; Housekeeping: inverse to PUSH instruction ; at the start of
interrupt subroutine. Corrects ; the stack pointer.RETI
:启用用中中断
当中断被启用时,启用中断指令 (EINT) 后的指令一直被执行,即使一个中断处理请求在等待
中也是如此。
183
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集说明
www.ti.com.cn
4.6.2.21 INC
* INC[.W] 递增目的
* INC.B 递增目的
句法INC dstINC.W dst
INC.B dst
运行dst+1dst
ADD #1Mdst
仿仿真
描述 目的操作数被递增 1。 原先的内容丢失。
状态态位N: 如果结果为负则置位,如果为正则复位。
Z 如果 dst 包含 0FFFFh 则置位,否则复位
如果 dst 包含 0FFh 则置位,否则复位
C 如果 dst 包含 0FFFFh 则置位,否则复位
如果 dst 包含 0FFh 则置位,否则复位
V 如果 dst 包含 07FFFh 则置位,否则复位
如果 dst 包含 07Fh 则置位,否则复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例例 一个进程的状态字节,STATUS,被递增。 当它等于 11 时,采用一个到 OVFL 的分支指
令。
INC.B STATUSCMP.B #11,STATUSJEQ OVFL
184 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集说明
4.6.2.22 INCD
* INCD[.W] 双递增目的
* INCD.B 双递增目的
句法INCD dstINCD.W dst
INCD.B dst
运行dst+2dst
ADD#2Mdst
仿仿真
ADD.B #2Mdst
说明 目的操作数被递增 2。 原先的内容丢失。
状态态位N: 如果结果为负则置位,如果为正则复位。
Z 如果 dst 包含 0FFFEh 则置位,否则复位
如果 dst 包含 0FEh 则置位,否则复位
C 如果 dst 包含 0FFFEh 0FFFFh 则置位,否则复位
如果 dst 包含 0FEh 0FFh 则置位,否则复位
V 如果 dst 包含 07FFEh 07FFFh 则置位,否则复位
如果 dst 包含 07Eh 07Fh 则置位,否则复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例 堆栈顶部 (TOS) 的项目在不使用一个寄存器的情况下被删除。
.......PUSH R5 ; R5 is the result of a calculation, which is stored; in the system
stack INCD SP ; Remove TOS by double-
increment from stack; Do not use INCD.B, SP is a word-aligned registerRET
示例 堆栈顶部的字节递增 2
INCD.B 0(SP) ; Byte on TOS is increment by two
185
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集说明
www.ti.com.cn
4.6.2.23 INV
* INV[.W] 反转目的
* INV.B 反转目的
句法INV dstINV.W dst
INV.B dst
运行.not.dstdst
XOR #0FFFFhMdst
仿仿真
XOR.B #0FFhMdst
说明 目的操作数被反转。 原先的内容丢失。
状态态位N: 如果结果为负则置位,如果为正则复位。
Z 如果 dst 包含 0FFFFh 则置位,否则复位
如果 dst 包含 0FFh 则置位,否则复位
C 如果结果不为零则置位,否则复位 (=.NOT. )
V: 如果初始目的操作数为负则置位,否则复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例R5 的内容被求反(2s 补数)。
MOV #00AEh,R5 ; R5 = 000AEhINV R5 ; Invert R5, R5 = 0FF51hINC R5 ; R5 is now negated,
R5 = 0FF52h
示例 存储器字节 LEO 的内容被求反。
MOV.B #0AEh,LEO ; MEM(LEO) = 0AEhINV.B LEO ; Invert LEO, MEM(LEO) = 051hINC.B LEO ;
MEM(LEO) is negated, MEM(LEO) = 052h
186 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集说明
4.6.2.24 JCJHS
JC 如果进位则跳转
JHS 如果高于或同样则跳转(无符号)
JC M M
句法
JHS M M
运行 如果 C=1PC +2 × 偏移)PC
如果 C= 0:执行以下指令
说明SR 中的进位位 C被测试。 如果它被置位,包含在指令中的带符号 10 位字偏移被乘以
2,符号被扩展,并且被加入到 20 PC 中。 这意味着相对于全部存储器范围内的 PC
-511 +512 字的跳转。 如果 C被复位,跳转之后的指令被执行。
JC 用于测试进位位 C
JHS 用于无符号数的比较。
状态态位位 状态位不受影响。
模式式位OSCOFFCPUOFF GIE 不受影响。
示例 端口 1引脚 P1IN.1 位的状态定义程序流。
BIT.B #2,&P1IN ; Port 1, bit 1 set? Bit -
> CJC Label1 ; Yes, proceed at Label1... ; No, continue
示例 如果 R5R6(无符号),程序在 Label2 上继续执行。
CMP R6,R 5 ; Is R5 >= R6? Info to CJHS Label2 ; Yes, C = 1... ; No, R5 < R6. Continue
示例 如果 R512345h(无符号操作数),程序在 Label2 上继续执行。
CMPA #12345h,R5 ; Is R5 >= 12345h? Info to CJHS Label2 ; Yes, 12344h < R5 <= F,FFFFh.
C = 1... ; No, R5 < 12345h. Continue
187
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集说明
www.ti.com.cn
4.6.2.25 JEQJZ
JEQ 如果相等则跳转
JZ 如果为零则跳转
JEQ M M
句法
JZ M M
运行 如果 Z=1PC +2 × 偏移)PC
如果 Z=0:执行下面的指令
说明SR 中的零位 Z被测试。 如果它被置位,包含在指令中的带符号 10 位字偏移被乘以 2
符号被扩展,并且被加入到 20 PC 中。 这意味着相对于全部存储器范围内的 PC -
511 +512 字的跳转。 如果 Z被复位,执行跳转后的指令。
JZ 用于零位 Z的测试。
JEQ 用于操作数比较。
状态态位位 状态位不受影响
模式式位OSCOFFCPUOFF GIE 不受影响。
示例P21N.0 位的状态定义了程序流程。
BIT.B #1,&P2IN ; Port 2, bit 0 reset?JZ Label1 ; Yes, proceed at Label1... ; No, set,
continue
示例 如果 R5=15000h20 位数据),程序继续在 Label2 上执行。
CMPA #15000h,R5 ; Is R5 = 15000h? Info to SRJEQ Label2 ; Yes, R5 = 15000h. Z = 1... ;
No, R5 not equal 15000h. Continue
示例R720 位计数器)被递增。 如果它的内容为零,程序继续在 Label4 上执行。
ADDA #1,R7 ; Increment R7JZ Label4 ; Zero reached: Go to Label4... ; R7 not equal 0.
Continue here.
188 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集说明
4.6.2.26 JGE
JGE 如果大于或者相等则条状(无符号)
JGE M M
句法
运行 如果 (N .xor. V) = 0PC +2 × 偏移) PC
如果 (N .xor. V) = 1:执行下一条指令
说明SR 中的负位 N和溢位 V被测试。 如果两个位都被置位或被复位,包含在指令中的带符号
10 位字偏移被乘以 2,符号被扩展,并且被加入到 20 PC 中。 这意味着相对于全部存
储器范围内的 PC -511 +512 字的跳转。 如果只有一个为被置位,跳转之后的指令
被执行。
JGE 被用于带符号操作数的比较:也用于由溢出造成的不正确结果的比较,JGE 指令做出
的决定是正确的。
请注意:如果在指令 ANDBITRRASXTX TST 之后使用的话,JGE 仿真非执行
JP(正则跳转)指令。 这些指令清零 V位。
状态态位位 状态位不受影响。
模式式位OSCOFFCPUOFF GIE 不受影响。
示例 如果字节 EDE(低 64KB)包含正数据,则转至 Label1。 软件可运行在完全存储器范围
内。
TST.B &EDE ; Is EDE positive? V <-
0JGE Label1 ; Yes, JGE emulates JP... ; No, 80h <= EDE <= FFh
示例 如果 R6 的内容大于或者等于由 R7 指向的存储器,程序继续在 Label5 上执行。 带符号数
据。 完全存储器范围内的数据和程序。
CMP @R7,R6 ; Is R6 >= @R7?JGE Label5 ; Yes, go to Label5... ; No, continue here
示例 如果 R512345h(带符号操作数),程序继续在 Label2 上执行。 完全存储器范围内的程
序。
CMPA #12345h,R5 ; Is R5 >= 12345h?JGE Label2 ; Yes, 12344h < R5 <= 7FFFFh... ; No,
80000h <= R5 < 12345h
189
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集说明
www.ti.com.cn
4.6.2.27 JL
JL 如果少于则跳转(带符号)
JL M M
句法
运行 如果 (N .xor. V) = 1PC +2 × 偏移)PC
如果 (N .xor. V) = 0:执行下一条指令
说明SR 中的负位 N和溢位 V被测试。 如果只有一个被置位,包含在指令中的带符号 10 位字
偏移被乘以 2,符号被扩展,并且被加入到 20 PC 中。 这意味着相对于全部存储器范
围内的 PC -511 +512 字的跳转。 如果位 NV都被置位或者被复位,执行跳转之
后的指令。
JL 被用于带符号操作数的比较:也用于由溢出造成的不正确结果的比较,JL 指令做出的
决定是正确的。
状态态位位 状态位不受影响。
模式式位OSCOFFCPUOFF GIE 不受影响。
示例 如果字节 EDE 包含一个比字节 TONI 更小的、无符号操作数,则继续在 Label1 上。 地址
EDE PC±32K 内。
CMP.B &TONI,EDE ; Is EDE < TONIJL Label1 ; Yes... ; No, TONI <= EDE
示例 如果 R6 的带符号内容少于由 R7 指向的存储器(20 位地址),程序继续在 Label5 上执
行。 完全存储器范围内的数据和程序。
CMP @R7,R6 ; Is R6 < @R7?JL Label5 ; Yes, go to Label5... ; No, continue here
示例 如果 R5<12345h(带符号操作数),程序继续在 Label2 上执行。 完全存储器范围内的数
据和程序。
CMPA #12345h,R5 ; Is R5 < 12345h?JL Label2 ; Yes, 80000h =< R5 < 12345h... ; No,
12344h < R5 <= 7FFFFh
190 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集说明
4.6.2.28 JMP
JMP 无条件跳转
JMP M M
句法
运行PC+2 × 偏移)PC
说明 包含在指令中的带符号 10 位字偏移被乘以 2,符号被扩展,并且被加入到 20 PC 中。
这意味着相对于全部存储器范围内的 PC -511 +512 字的无条件跳转。 JMP 指令在
其相对于 PC 的有限范围内可被用作一个 BR 或者 BRA 指令。
状态态位位 状态位不受影响
模式式位OSCOFFCPUOFF GIE 不受影响。
示例 字节 STATUS 被置位为 10。 然后进行到标签 MAINLOOP 的跳转。 低 64KB 内的数据,
完全存储器范围内的程序。
MOV.B #10,&STATUS ; Set STATUS to 10JMP MAINLOOP ; Go to main loop
示例Timer_A3 的中断矢量 TAIV 被读取并用于程序流程。 完全存储器范围内的程序,但是中
断处理器一直在低 64KB 内启动。
ADD &TAIV,PC ; Add Timer_A interrupt vector to PCRETI ; No Timer_A interrupt
pendingJMP IHCCR1 ; Timer block 1 caused interruptJMP IHCCR2 ; Timer block 2 caused
interruptRETI ; No legal interrupt, return
191
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集说明
www.ti.com.cn
4.6.2.29 JN
JN 如果为负则跳转
JN M M
句法
运行 如果 N=1PC +2 × 偏移)PC
如果 N=0:执行下一个指令
说明SR 中的负位 N被测试。 如果它被置位,包含在指令中的带符号 10 位字偏移被乘以 2
符号被扩展,并且被加入到 20 位程序 PC 中。 这意味着相对于全部存储器范围内的 PC
-511 +512 字的跳转。 如果 N被复位,跳转之后的指令被执行。
状态态位位 状态位不受影响。
模式式位OSCOFFCPUOFF GIE 不受影响。
示例 字节 COUNT 被测试。 如果它为负,程序继续在 Label0 上执行。 低 64KB 内的数据,完
全存储器范围内的程序。
TST.B &COUNT ; Is byte COUNT negative?JN Label0 ; Yes, proceed at Label0... ; COUNT >=
0
示例 R5 中减去 R6。 如果结果为负,程序继续在 Label2 上执行。 完全存储器范围内的程
序。
SUB R6,R5 ; R5 - R6 -
> R5JN Label2 ; R5 is negative: R6 > R5 (N = 1)... ; R5 >= 0. Continue here.
示例R720 位计数器)被递减。 如果它的内容为负,程序继续在 Label4 上执行。 完全存储
器范围内的程序。
SUBA #1,R7 ; Decrement R7JN Label4 ; R7 < 0: Go to Label4... ; R7 >= 0. Continue here.
192 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集说明
4.6.2.30 JNCJLO
JNC 如果无进位则跳转
JLO 如果低于则跳转(无符号)
JNC M M
句法
JLO M M
Operation 如果 C= 0PC +2 × 偏移)PC
如果 C= 1:执行下一指令
说明SR 中的进位位 C被测试。 如果它被复位,包含在指令中的带符号 10 位字偏移被乘以
2,符号被扩展,并且被加入到 20 PC 中。 这意味着相对于全部存储器范围内的 PC
-511 +512 字的跳转。 如果 C被置位,跳转之后的指令被执行。
JNC 用于测试进位位 C
JLO 用于无符号数的比较。
状态态位位 状态位不受影响。
模式式位OSCOFFCPUOFF GIE 不受影响。
示例 如果字节 EDE<15,程序继续在 Label2 上执行。 无符号数据。 低 64KB 内的数据,完全
存储器范围内的程序。
CMP.B #15,&EDE ; Is EDE < 15? Info to CJLO Label2 ; Yes, EDE < 15. C = 0... ; No, EDE
>= 15. Continue
示例 TONI 被加入 R5。 如果无进位出现,继续在 Label0 上执行。 TONI 的地址在 PC±32K
内。
ADD TONI,R5 ; TONI + R5 -> R5. Carry -
> CJNC Label0 ; No carry... ; Carry = 1: continue here
193
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集说明
www.ti.com.cn
4.6.2.31 JNZJNE
JNZ 如果非零则跳转
JNE 如果不相等则跳转
JNZ M M
句法
JNE M M
运行 如果 Z=0PC +2 × 偏移)PC
如果 Z=1:执行下列指令
说明SR 中的零位 Z被测试。 如果它被复位,包含在指令中的带符号 10 位字偏移被乘以 2
符号被扩展,并且被加入到 20 PC 中。 这意味着相对于全部存储器范围内的 PC -
511 +512 字的跳转。 如果 Z被置位,执行跳转后的指令。
JNZ 用于零位 Z的测试。
JNE 用于操作数比较。
状态态位位 状态位不受影响。
模式式位OSCOFFCPUOFF GIE 不受影响。
示例 字节 STATUS 被测试。 如果它不为零,程序继续在 Label3 上执行。 STATUS 的地址在
PC±32K 内。
TST.B STATUS ; Is STATUS = 0?JNZ Label3 ; No, proceed at Label3... ; Yes, continue here
示例 如果 EDE1500,程序继续在 Label2 上执行。 低 64KB 中的数据,完全存储器范围内的
程序。
CMP #1500,&EDE ; Is EDE = 1500? Info to SRJNE Label2 ; No, EDE not equal 1500.... ;
Yes, R5 = 1500. Continue
示例R720 位计数器)被递减。 如果它的内容非零,程序继续在 Label4 上执行。 完全存储
器范围内的程序。
SUBA #1,R7 ; Decrement R7JNZ Label4 ; Zero not reached: Go to Label4... ; Yes, R7 = 0.
Continue here.
194 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集说明
4.6.2.32 MOV
MOV[.W] 将源字移动到目的字
MOV.B 将源字节移动到目的字节
句法MOV srcMdst MOV.W srcMdst
MOV.B srcMdst
运行srcdst
说明 源操作数被复制到目的操作数。 源操作数不受影响。
状态态位N: 不受影响
Z: 不受影响
C: 不受影响
V: 不受影响
模式式位OSCOFFCPUOFF GIE 不受影响。
示例 将一个 16 位常数 1800h 移动到绝对地址字 EDE(低 64KB
MOV #01800h,&EDE ; Move 1800h to EDE
示例 EDE 的内容(字数据,16 位地址)被复制到表 TOM。 表的长度为 030h 字。 两个表
都驻留在低 64KB 内。
MOV #EDE,R10 ; Prepare pointer (16-bit address)Loop MOV @R10+,TOM-EDE-
2(R10) ; R10 points to both tables.; R10+2CMP #EDE+60h,R10 ; End of table reached?JLO
Loop ; Not yet... ; Copy completed
示例 EDE 的内容(字节数据,16 位地址)被复制到表 TOM。 表的长度为 020h 字节。 两
个表都驻留在完全存储器范围内,但是必须在 R10±32K 之内。
MOVA #EDE,R10 ; Prepare pointer (20-
bit)MOV #20h,R9 ; Prepare counterLoop MOV.B @R10+,TOM-EDE-
1(R10) ; R10 points to both tables.; R10+1DEC R9 ; Decrement counterJNZ Loop ; Not yet
done... ; Copy completed
195
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集说明
www.ti.com.cn
4.6.2.33 NOP
* NOP 无操作
NOP
句法
运行行 无
MOV #0MR3
仿仿真
说明 不执行操作。 软件检查期间或者定义的等待时间内,此指令可被用于指令的删除。
状态态位位 状态位不受影响。
196 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集说明
4.6.2.34 POP
* POP[.W] 从堆栈中弹出字到目的
* POP.B 从堆栈弹出字节到目的
POP dst
句法
POP.B dst
运行@SPtemp
SP+2SP
tempdst
仿仿真MOV @SP+Mdst MOV.W @SP+Mdst
MOV.B @SP+Mdst
说明SP 指向的堆栈位置被移动到目的。 之后,SP 被增加 2
状态态位位 状态位不受影响。
示例R7 SR 的内容被从堆栈中恢复。
POP R7 ; Restore R7POP SR ; Restore status register
示例RAM 字节 LEO 的内容被从堆栈中恢复。
POP.B LEO ; The low byte of the stack is moved to LEO.
示例R7 的内容被从堆栈中恢复。
POP.B R7 ; The low byte of the stack is moved to R7,; the high byte of R7 is 00h
示例R7 SR 指向的存储器的内容被从堆栈中恢复。
POP.B 0(R7) ; The low byte of the stack is moved to the; the byte which is pointed to
by R7: Example: R7 = 203h; Mem(R7) = low byte of system stack: Example: R7 = 20Ah;
Mem(R7) = low byte of system stackPOP SR ; Last word on stack moved to the SR
:系统统堆堆栈栈指指针
系统 SP 被一直加 2,而与字节后缀无关。
197
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集说明
www.ti.com.cn
4.6.2.35 PUSH
PUSH[.W] 将一个字保存在堆栈上
PUSH.B 将一个字节保存在堆栈上
句法PUSH dstor PUSH.W dst
PUSH.B dst
运行SP-2SP
dst@SP
说明20 SP 被减 2。 然后操作数被复制到由 SP 寻址的 RAM 字。 一个压入的字节被存储在
低字节内;高字节不受影响。
状态态位位 状态位不受影响。
模式式位OSCOFFCPUOFF GIE 不受影响。
示例 在堆栈上保存两个 16 位寄存器 R9 R10
PUSH R9 ; Save R9 and R10 XXXXhPUSH R10 ; YYYYh
示例 在堆栈上保存两个字节 EDE TONIEDE TONI 的地址在 PC±32K 内。
PUSH.B EDE ; Save EDE xxXXhPUSH.B TONI ; Save TONI xxYYh
198 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Item n
PCReturn
Item n
Stack before RET
instruction
Stack after RET
instruction
SP
SP
www.ti.com.cn
指令集说明
4.6.2.36 RET
RET 从子例程返回
RET
句法
运行@SPPC.15:0 PC 保存至 PC.15:0. PC.19:160
SP+2SP
说明 被一个 CALL 指令压入堆栈的 16 位返回地址(低 64KB)被恢复至 PC。 程序继续在子例
程调用之后的地址上执行。 PC.19:16 的四个 MSB 被清零。
状态态位位 状态位不受影响。
PC.19:16:被清零
模式式位OSCOFFCPUOFF GIE 不受影响。
示例 调用一个低 64KB 内的子例程 SUBR 并且在 CALL 之后返回到低 64KB 内的地址。
CALL #SUBR ; Call subroutine starting at SUBR... ; Return by RET to hereSUBR PUSH R14
; Save R14 (16 bit data)... ; Subroutine codePOP R14 ; Restore R14RET ; Return to
lower 64KB
4-36. 一个RET 指令令之之后后的的堆堆栈
199
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集说明
www.ti.com.cn
4.6.2.37 RETI
RETI 从中断返回
RETI
句法
运行@SPSR.15:0 PC.19:16 恢复保存的 SR
SP+2SP
@SPPC.15:0 恢复保存的 PC.15:0
SP+2SP 常规事务
说明SR 被恢复至中断处理例程的开始值。 这包括 PC.19:16 的四个 MSB。之SP 被加 2
20 PC PC.19:16(从与状态位一样的堆栈位置)和 PC.15:0 恢复。20 PC 被恢复
至中断处理例程的开始值。 当中断被批准后,程序继续在最后一个被执行指令之后的地址
上执行。 之后,SP 被加 2
状态态位N: 从堆栈恢复
C: 从堆栈恢复
Z: 从堆栈恢复
V: 从堆栈恢复
模式式位OSCOFFCPUOFF GIE 从堆栈恢复。
示例 64KB 内的中断处理器 一个 20 位返回地址被存储在堆栈上。
INTRPT PUSHM.A #2,R14 ; Save R14 and R13 (20-
bit data)... ; Interrupt handler codePOPM.A #2,R14 ; Restore R13 and R14 (20-
bit data)RETI ; Return to 20-bit address in full memory range
200 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
15 0
7 0
C
Byte
Word
0
www.ti.com.cn
指令集说明
4.6.2.38 RLA
* RLA[.W] 算术左旋
* RLA.B 算术左旋
句法RLA dstRLA.W dst
RLA.B dst
运行CMSBMSB-1 .... LSB+1LSB0
ADD dstMdst
仿仿真ADD.B dstMdst
说明4-37所示,目的操作数被向左移位一个位置。 MSB 被移入进位位 (C),而 LSB 0
填充。RLA 指令运行为一个带符号的 2倍乘。
如果在操作被执行前,dst04000h dst<0C000h,一个溢出发生。
4-37. 目的的操操作作数-算术术左左移移位
如果在操作被执行前,dst040h dst< 0C0h,一个溢出发生;此结果有一个经改变的符
号。
状态态位N: 如果结果为负则置位,如果为正则复位。
Z: 如果结果为零,则置位,否则复位
C MSB 载入
V 如果一个算术溢出发生:初始值为 04000hdst<0C000h,则置位;否则复位
如果一个算术溢出发生:初始值为 040hdst<0C0h,则置位;否则复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例R7 乘以 2
RLA R7 ; Shift left R7 (x 2)
示例R7 的低字节乘以 4
RLA.B R7 ; Shift left low byte of R7 (x 2)RLA.B R7 ; Shift left low byte of R7 (x 4)
: RLA 替代
汇编程序并不识别指令:
RLA @R5+ RLA.B @R5+ RLA(.B) @R5
它们必须由
ADD @R5+,-2(R5) ADD.B @R5+,-1(R5) ADD(.B) @R5
201
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
15 0
7 0
C
Byte
Word
指令集说明
www.ti.com.cn
4.6.2.39 RLC 所取取代代:
* RLC[.W] 通过进位左旋
* RLC.B 通过进位左旋
句法RLC dstRLC.W dst
RLC.B dst
运行CMSBMSB-1 .... LSB+1LSBC
ADDC dstMdst
仿仿真
说明4-38中所示,目的操作数向左移动一个位置。 进位位 (C) 被移入 LSB,而 MSB 被移
入进位位 (C)
4-38. 目的的操操作作数-进位位左左移移位
状态态位N: 如果结果为负则置位,如果为正则复位。
Z: 如果结果为零,则置位,否则复位
C MSB 载入
V 如果一个算术溢出发生:初始值为 04000hdst<0C000h,则置位;否则复位
如果一个算术溢出发生:初始值为 040hdst<0C0h,则置位;否则复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例R5 被向左移动一个位置。
RLC R5 ; (R5 x 2) + C -> R5
示例 输入 P1NI.1 信息被移入 R5 LSB 中。
BIT.B #2,&P1IN ; Information -> CarryRLC R5 ; Carry=P0in.1 -> LSB of R5
示例MEM (LEO) 内容被向左移动一个位置。
RLC.B LEO ; Mem(LEO) x 2 + C -> Mem(LEO)
: RLA 替代
汇编程序并不识别指令:
RLC @R5+ RLC.B @R5+ RLC(.B) @R5
它们必须被
ADDC @R5+,-2(R5) ADDC.B @R5+,-1(R5) ADDC(.B) @R5
202 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
C
19 0
MSB
0 0 0 0 0 0 0
715
0 0 0 0 0 LSB
C
19 0
MSB
0 0 0 0
15
LSB
www.ti.com.cn
指令集说明
4.6.2.40 RRA 所取取代代:
RRA[.W] 算术右旋目的字
RRA.B 算术右旋目的字节
句法RRA.B dstRRA.W dst
运行MSBMSBMSB-1 ... LSB+1LSBC
说明明 如4-39所示,目的操作数被用算术的方法向右移动一个位置。 MSB 保持其值(符
号)。 BRA 的运行与带符号的被 2除等效。MSB 被保持并且被移入 MSB-1LSB+1
移入 LSB。 之前的 LSB 被移入进位位 C
状态态位N 如果结果为负 (MSB=1),则置位,否则 (MSB=0)复位
Z: 如果结果为零,则置位,否则复位
C LSB 载入
V: 复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例R5 中带符号的 16 位数被用算术的方法向右移位一个位置。
RRA R5 ; R5/2 -> R5
示例 带符号的 RAM 字节 EDE 被用算术的方法向右移动一个位置。
RRA.B EDE ; EDE/2 -> EDE
4-39. 算术术右右旋RRA.B RRA.W
203
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
C
19 0
MSB
0 0 0 0 0 0 0
715
0 0 0 0 0 LSB
C
19 0
MSB
0 0 0 0
15
LSB
指令集说明
www.ti.com.cn
4.6.2.41 RRC
RRC[.W] 通过进位右旋目的字
RRC.B 通过进位目的字节右旋
句法RRC dstRRC.W dst
RRC.B dst
运行CMSBMSB–1... LSB+1LSBC
说明明 如4-40所示,目的操作数被向右移动一个位置。 进位位 C被移入 MSB,而 LSB 被移
入进位位 C
状态态位N 如果结果为负 (MSB=1),则置位,否则 (MSB=0)复位
Z: 如果结果为零,则置位,否则复位
C LSB 载入
V: 复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例RAM EDE 被向右移位一个位的位置。 将 1载入 MSB
SETC ; Prepare carry for MSBRRC EDE ; EDE = EDE >> 1 + 8000h
4-40. 通过过进进位RRC.B RRC.W 右旋
204 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集说明
4.6.2.42 SBC
* SBC[.W] 将借位(.NOT. 进位)从目的中减去
* SBC.B 将借位(.NOT. 进位)从目的中减去
句法SBC dstSBC.W dst
SBC.B dst
运行dst+0FFFFh+Cdst
dst+0FFh+Cdst
SUBC #0Mdst
仿仿真
SUBC.B #0Mdst
说明 进位位 (C) 被加至目的操作数减一。 目的操作数之前的内容丢失。
状态态位N: 如果结果为负则置位,如果为正则复位
Z: 如果结果为零则置位,否则复位
C 如果有一个来自结果的 MSB 的进位,则置位,否则复位
如果无借位则置位为 1,如果有借位则复位
V: 如果一个算术溢出发生,则置位,否则复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例R13 指向的 16 位计数器被从一个 R12 指向的 32 位计数器内减去。
SUB @R13,0(R12) ; Subtract LSDsSBC 2(R12) ; Subtract carry from MSD
示例R13 指向的 8位计数器被从一个 R12 指向的 16 位计数器内。
SUB.B @R13,0(R12) ; Subtract LSDsSBC.B 1(R12) ; Subtract carry from MSD
:借位位执执行
借位被视为一个 .NOT.进位:
借位 进位位
支持 0
1
205
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集说明
www.ti.com.cn
4.6.2.43 SETC
* SETC 置位进位位
SETC
句法
运行1C
BIS #1MSR
仿仿真
说明 进位位 (C) 被置位。
状态态位N: 不受影响
Z: 不受影响
C: 设置
V: 不受影响
模式式位OSCOFFCPUOFF GIE 不受影响。
示例十进制减法的仿真:
用十进制的方法将 R5 R6 中减去。
假定 R5=03987h R6=04137h
DSUB ADD #06666h,R5 ; Move content R5 from 0-9 to 6-
0Fh; R5 = 03987h + 06666h = 09FEDhINV R5 ; Invert this (result back to 0-
9); R5 = .NOT. R5 = 06012hSETC ; Prepare carry = 1DADD R5,R6 ; Emulate subtraction by
addition of:; (010000h - R5 - 1); R6 = R6 + R5 + 1; R6 = 0150h
206 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集说明
4.6.2.44 SETN
* SETN 置位负位
SETN
句法
运行1N
BIS #4MSR
仿仿真
说明 复位 (N) 被置位。
状态态位N: 设置
Z: 不受影响
C: 不受影响
V: 不受影响
模式式位OSCOFFCPUOFF GIE 不受影响。
207
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集说明
www.ti.com.cn
4.6.2.45 SETZ
* SETZ 置位零位
SETZ
句法
运行1N
BIS #2MSR
仿仿真
说明 零位 (Z) 被置位。
状态态位N: 不受影响
Z: 设置
C: 不受影响
V: 不受影响
模式式位OSCOFFCPUOFF GIE 不受影响。
208 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集说明
4.6.2.46 SUB
SUB[.W] 将源字从目的字中减去
SUB.B 将源字节从目的字节中减去
句法SUB srcMdstSUB.W srcMdst
SUB.B srcMdst
运行(.not.src)+1+dstdst dst-srcdst
说明 从目的操作数中减去源操作数。 通过在目的中增加源 + 1 1s 补数来完成。 源操作数不
受影响,结果被写入目的操作数。
状态态位N 如果结果为负 (src>dst),则置位,如果为正则复位 (srcdst)
Z 如果为零 (src=dst) 则置位,否则复位 (srcdst)
C 如果有来自 MSB 的进位,则置位,否则复位
V: 如果从一个正目的操作数中减去一个负源操作数得到一个负结果,或者如果从一个负
目的操作数中减去一个正源操作数得到一个正结果,则置位,否则复位(无溢出)。
模式式位OSCOFFCPUOFF GIE 不受影响。
示例 RAM EDE 中减去一个 16 位常数 7654h
SUB #7654h,&EDE ; Subtract 7654h from EDE
示例R5 指向的一个表格字(20 位地址)被从 R7 中减去。 之后,如果 R7 包含零,则跳转至
标签 TONI。然R5 自动增 2R7.19:16=0
SUB @R5+,R7 ; Subtract table number from R7. R5 + 2JZ TONI ; R7 = @R5 (before
subtraction)... ; R7 <> @R5 (before subtraction)
示例 字节 CNT 被从 R12 指向的字节内减去。 CNT 的地址在 PC±32K 内。 R12 指向的地址为
全部存储器范围。
SUB.B CNT,0(R12) ; Subtract CNT from @R12
209
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集说明
www.ti.com.cn
4.6.2.47 SUBC
SUBC[.W] 从目的字中减去带有进位的源字
SUBC.B 从目的字节中减去带有进位的源字节
句法SUBC srcMdstSUBC.W src,dst
SUBC.B srcMdst
运行(.not.src)+C+dstdst dst-(src-1)+Cdst
说明 从目的操作数中减去源操作数。 通过在目的中增加源 +进位的 1s 补数来完成。 源操作数
不受影响,结果被写入目的操作数。 用于 3248,和 64 位操作数。
状态态位N 如果结果为负 (MSB=1),则置位,如果为正 (MSB=0),则复位
Z: 如果结果为零则置位,否则复位
C 如果有来自 MSB 的进位,则置位,否则复位
V: 如果从一个正目的操作数中减去一个负源操作数得到一个负结果,或者如果从一个负
目的操作数中减去一个正源操作数得到一个正结果,则置位,否则复位(无溢出)。
模式式位OSCOFFCPUOFF GIE 不受影响。
示例 一个 16 位常数 7654h 被从带有来自之前指令进位的 R5 中减去。 R5.19:16=0
SUBC.W #7654h,R5 ; Subtract 7654h + C from R5
示例 R5 指向的一个 48 位数(3个字)(20 位地址)被从由 R7 指向的 RAM 中的一个 48
位计数器内减去。 之后,R5 指向下一个 48 位数。 R7 指向的地址为全部存储器范围。
SUB @R5+,0(R7) ; Subtract LSBs. R5 + 2SUBC @R5+,2(R7) ; Subtract MIDs with C. R5 +
2SUBC @R5+,4(R7) ; Subtract MSBs with C. R5 + 2
示例 R12 指向的字节中减去字节 CNT 。 使用之前指令的进位。 CNT 的地址位于低 64KB
内。
SUBC.B &CNT,0(R12) ; Subtract byte CNT from @R12
210 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
15 8 7 0
15 8 7 0
Low Byte
Low ByteHigh Byte
High Byte
Before SWPB
After SWPB
0
x
0...
19
19
16
16
15 8 7 0
15 8 7 0
Low Byte
Low ByteHigh Byte
High Byte
Before SWPB
After SWPB
www.ti.com.cn
指令集说明
4.6.2.48 SWPB
SWPB 交换字节
SWPB dst
句法
运行dst.15:8dst.7:0
说明 操作数的高字节和低字节被交换。 PC.19:16 位在寄存器模式中被清零。
状态态位位 状态位不受影响
模式式位OSCOFFCPUOFF GIE 不受影响。
示例 交换 RAM EDE 的字节(低 64KB
MOV #1234h,&EDE ; 1234h -> EDESWPB &EDE ; 3412h -> EDE
4-41. 交换换存存储储器器中中的的字字节
4-42. 交换换寄寄存存器器中中的的字字节
211
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集说明
www.ti.com.cn
4.6.2.49 SXT
SXT 扩展符
SXT dst
句法
运行dst.7dst.15:8dst.7dst.19:8(寄存器模式)
说明寄存器模式:操作数低字节的符号被扩展至位 Rdst.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: 如果结果为负则置位,否则复位
Z: 如果结果为零则置位,否则复位
C 如果结果不为零则置位,否则复位 (C=.NOT.Z)
V: 复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例EDE 内带符号的 8位数据(低 64KB)是扩展符并且被增加到 R7 内的 16 位带符号数据
中。
MOV.B &EDE,R5 ; EDE -
> R5. 00XXhSXT R5 ; Sign extend low byte to R5.19:8ADD R5,R7 ; Add signed 16-bit values
示例EDE 内带符号的 8位数据 (PC+32KB) 是扩展符并且被增加到 R7 内的 20 位数据中。
MOV.B EDE,R5 ; EDE -
> R5. 00XXhSXT R5 ; Sign extend low byte to R5.19:8ADDA R5,R7 ; Add signed 20-
bit values
212 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集说明
4.6.2.50 TST
* TST[.W] 测试目的操作数
* TST.B 测试目的操作数
句法TST dstTST.W dst
TST.B dst
运行dst+0FFFFh+1
dst+0FFh+1
CMP #0Mdst
仿仿真
CMP.B #0Mdst
说明 目的操作数与零相比较。 根据结果置位状态位。 目的操作数不受影响。
状态态位N: 如果目的操作数为负则置位,如果为正则复位
Z: 如果目的操作数包含零则置位,否则复位
C: 设置
V: 复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例R7 被测试。 如果它为负,则继续在 R7NEG 上执行;如果为正但又不为零,则继续在
R7POS 上执行。
TST R7 ; Test R7JN R7NEG ; R7 is negativeJZ R7ZERO ; R7 is zeroR7POS ...... ; R7 is
positive but not zeroR7NEG ...... ; R7 is negativeR7ZERO ...... ; R7 is zero
示例R7 的低字节被测试。 如果它为负,则继续在 R7NEG 上执行;如果为正但又不为零,则
继续在 R7POS 上执行。
TST.B R7 ; Test low byte of R7JN R7NEG ; Low byte of R7 is negativeJZ R7ZERO ; Low
byte of R7 is zeroR7POS ...... ; Low byte of R7 is positive but not zeroR7NEG ..... ;
Low byte of R7 is negativeR7ZERO ...... ; Low byte of R7 is zero
213
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集说明
www.ti.com.cn
4.6.2.51 XOR
XOR[.W] 源字与目的字异或操作
XOR.B 源字节与目的字节异或操作
句法XOR srcMdstXOR.W srcMdst
XOR.B srcMdst
运行src .xor. dstdst
说明 源操作数和目的操作数被异或操作。 结果被放置在目的操作数内。 源操作数不受影响。
目的操作数之前的内容丢失。
状态态位N 如果结果为负 (MSB=1),则置位,如果为正 (MSB=0),则复位
Z: 如果结果为零则置位,否则复位
C 如果结果不为零则置位,否则复位 (C=.NOT. Z)
V: 如果两个操作数在执行前均为负则置位,否则复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例 将位切换为带有地址字 TONI 信息(位=1)的字 CNTR16 位数据)。 两个操作数都位
于低 64KB 内。
XOR &TONI,&CNTR ; Toggle bits in CNTR
示例R5 指向的一个表格字(20 位地址)被用于切换 R6 中的位。 R6.19:16=0
XOR @R5,R6 ; Toggle bits in R6
示例R7 中低字节内复位为零的那些位与位于字节 EDE 内的位不同。 R7.19:8=0EDE 的地址
PC±32K 内。
XOR.B EDE,R7 ; Set different bits to 1 in R7.INV.B R7 ; Invert low byte of R7, high
byte is 0h
214 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集说明
4.6.3 MSP430X
扩展展指指令
MSP430X 扩展指令使得 MSP430X CPU 可完全访问其 20 位地址范围。 MSP430X 指令要求一个被称为扩
展字的运算代码的附加字。 当前面为扩展字时,所有地址、索引、和立即数有 20 位的值。 在下面的部分中
MSP430X 扩展指令进行了说明。 对于不需要扩展字的 MSP430X 指令,在指令说明中进行了注释。
MSP430X 指令请参阅4.6.2 ,而 MSP430X 寻址指令请参阅4.6.4
215
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集说明
www.ti.com.cn
4.6.3.1 ADCX
* ADCX.A 将进位增加到目的地址字
* ADCX.[W] 将进位增加到目的字节
* ADCX.B 将进位增加到目的字节
ADCX.A dst
句法
ADCX dstADCX.W dst
ADCX.B dst
运行dst+Cdst
ADDCX.A #0Mdst
仿仿真
ADDCX #0Mdst
ADDCX.B #0Mdst
说明 进位位 (C) 被增加到目的操作数。 目的操作数之前的内容丢失。
状态态位N 如果结果为负 (MSB=1),则置位,如果为正 (MSB=0),则复位
Z: 如果结果为零则置位,否则复位
C 如果有一个来自结果的 MSB 的进位,则置位,否则复位
V: 如果两个正操作数的结果为负,或者如果两个负数的结果为正,则置位,否则复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例R12 R13 指向的 40 位计数器被递增。
INCX.A @R12 ; Increment lower 20 bitsADCX.A @R13 ; Add carry to upper 20 bits
216 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集说明
4.6.3.2 ADDX
ADDX.A 将源地址字加入目的地址字
ADDX.[W] 将源字加入至目的字
ADDX.B 将源字节加至目的字节
ADDX.A srcMdst
句法
ADDX srcMdstADDX.W srcMdst
ADDX.B srcMdst
运行src+dstdst
说明 源操作数被添加到目的操作数。 目的操作数之前的内容丢失。 两个操作数都被放置在完全
地址空间内。
状态态位N 如果结果为负 (MSB=1),则置位,如果为正 (MSB=0),则复位
Z: 如果结果为零则置位,否则复位
C: 如果有一个来自结果的 MSB 的进位,则置位,否则复位
V: 如果两个正操作数的结果为负,或者如果两个负数的结果为正,则置位,否则复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例 位于两个字 CNTR (LSB) CNTR+2 (MSB) 内的 20 位指针 CNTR 10
ADDX.A #10,CNTR ; Add 10 to 20-bit pointer
示例R520 位地址)指向的一个表格字节(16 位)被加入到 R6。 在一个进位上执行跳转到
标签 TONI
ADDX.W @R5,R6 ; Add table word to R6JC TONI ; Jump if carry... ; No carry
示例R520 位地址)指向的一个表格字节被加入到 R6。 如果没有进位发生,执行到标签
TONI 的跳转。 表格指针自动加 1
ADDX.B @R5+,R6 ; Add table byte to R6. R5 + 1. R6: 000xxhJNC TONI ; Jump if no
carry... ; Carry occurred
请注意:在下面两个情况中使用 ADDA 以实现更佳的代码密度和执行性能。
ADDX.A Rsrc,RdstADDX.A #imm20,Rdst
217
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集说明
www.ti.com.cn
4.6.3.3 ADDCX
ADDCX.A 将源地址字和进位加入目的地址字
ADDCX.[W] 将源字和进位加入目的字
ADDCX.B 将源字节和进位加入目的字节
ADDCX.A src,dst
句法
ADDCX srcMdstADDCX.W srcMdst
ADDCX.B srcMdst
运行src+dst+Cdst
说明 源操作数和进位位 C被加入到目的操作数。 目的操作数之前的内容丢失。 两个操作数都
位于完全地址空间内。
状态态位N 如果结果为负 (MSB=1),则置位,如果为正 (MSB=0),则复位
Z: 如果结果为零则置位,否则复位
C 如果有一个来自结果的 MSB 的进位,则置位,否则复位
V: 如果两个正操作数的结果为负,或者如果两个负数的结果为正,则置位,否则复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例 常数值 15 和之前指令的进位被加入到位于两个字内的 20 位计数器 CNTR 内。
ADDCX.A #15,&CNTR ; Add 15 + C to 20-bit CNTR
示例 R520 位地址)指向的一个表格字和进位 C被加入 R6。 在一个进位上执行跳转到标
TONI
ADDCX.W @R5,R6 ; Add table word + C to R6JC TONI ; Jump if carry... ; No carry
示例 R520 位地址)指向的表格字节和进位位 C被加入到 R6。 如果没有进位发生,执行
到标签 TONI 的跳转。 表格指针自动加 1
ADDCX.B @R5+,R6 ; Add table byte + C to R6. R5 + 1JNC TONI ; Jump if no carry... ;
Carry occurred
218 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集说明
4.6.3.4 ANDX
ANDX.A 源地址字与目的地址字的逻辑与
ANDX.[W] 源字与目的字的逻辑与
ANDX.B 源字节与目的字节的逻辑与
ANDX.A srcMdst
句法
ANDX srcMdstANDX.W srcMdst
ANDX.B srcMdst
运行src .and. dstdst
说明 源操作数与目的操作数被逻辑与。 结果被放置在目的操作数内。 源操作数不受影响。 两
个操作数都位于完全地址空间内。
状态态位N 如果结果为负 (MSB=1),则置位,如果为正 (MSB=0),则复位
Z: 如果结果为零则置位,否则复位
C 如果结果不为零则置位,否则复位。 C=(.not. Z)
V: 复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例R520 位数据)中置位的位被用作一个针对两个字内地址字 TOM 的掩码 (AAA55h)。 如
果结果为零,一个分支指令被指向标签 TONI
MOVA #AAA55h,R5 ; Load 20-bit mask to R5ANDX.A R5,TOM ; TOM .and. R5 -
> TOMJZ TONI ; Jump if result 0... ; Result > 0
或更短:
ANDX.A #AAA55h,TOM ; TOM .and. AAA55h -> TOMJZ TONI ; Jump if result 0
示例 R520 位地址)指向的一个表格字节被与 R6 逻辑与。 R6.19:8=0。 表格指针自动加
1
ANDX.B @R5+,R6 ; AND table byte with R6. R5 + 1
219
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集说明
www.ti.com.cn
4.6.3.5 BICX
BICX.A 清零目的地址字中源地址字内置位的位
BICX.[W] 清零目的字中源字内置位的位
BICX.B 清零目的字节中源字节内置位的位
BICX.A srcMdst
句法
BICX srcMdst BICX.W srcMdst
BICX.B srcMdst
运行(.not. src) .and. dstdst
说明 被反转的源操作数和目的操作数被逻辑与。 结果被放置在目的操作数内。 源操作数不受影
响。 两个操作数都位于完全地址空间内。
状态态位N: 不受影响
Z: 不受影响
C: 不受影响
V: 不受影响
模式式位OSCOFFCPUOFF GIE 不受影响。
示例R520 位数据)的位 19:15 被清零。
BICX.A #0F8000h,R5 ; Clear R5.19:15 bits
示例 R520 位地址)指向的一个表格字被用于清零 R7 中的位。 R7.19:16=0
BICX.W @R5,R7 ; Clear bits in R7
示例 R520 位地址)指向的一个表格字节被用来清零输出 Port1 中的位。
BICX.B @R5,&P1OUT ; Clear I/O port P1 bits
220 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集说明
4.6.3.6 BISX
BISX.A 置位在目的地址字中源地址字内置位的位
BISX.[W] 置位在目的字中源字内置位的位
BISX.B 置位在目的字节中源字节内置位的位
BISX.A srcMdst
句法
BISX srcMdst BISX.W srcMdst
BISX.B srcMdst
运行src .or. dstdst
说明 源操作数与目的操作数被逻辑与。 结果被放置在目的操作数内。 源操作数不受影响。 两
个操作数都位于完全地址空间内。
状态态位N: 不受影响
Z: 不受影响
C: 不受影响
V: 不受影响
模式式位OSCOFFCPUOFF GIE 不受影响。
示例R520 位数据)的位 16 和位 15 被置位为 1
BISX.A #018000h,R5 ; Set R5.16:15 bits
示例R520 位地址)指向的一个表格字被用于置位 R7 中的位。
BISX.W @R5,R7 ; Set bits in R7
示例 R520 位地址)指向的一个表格字节被用来置位输出 Port1 中的位。
BISX.B @R5,&P1OUT ; Set I/O port P1 bits
221
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集说明
www.ti.com.cn
4.6.3.7 BITX
BITX.A 测试在目的地址字中源地址字内置位的位
BITX.[W] 测试在目的字中源字内置位的位
BITX.B 测试在目的字节中源字节内置位的位
BITX.A srcMdst
句法
BITX srcMdstBITX.W srcMdst
BITX.B srcMdst
运行src .and. dstdst
说明 源操作数与目的操作数被逻辑与。 结果只影响状态位。 两个操作数都位于完全地址空间
内。
状态态位N 如果结果为负 (MSB=1),则置位,如果为正 (MSB=0),则复位
Z: 如果结果为零则置位,否则复位
C 如果结果不为零则置位,否则复位。 C=(.not. Z)
V: 复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例 测试是否 R520 位数据)的为 16 15 被置位。 如果被置位则跳转至标签。
BITX.A #018000h,R5 ; Test R5.16:15 bitsJNZ TONI ; At least one bit is set... ; Both
are reset
示例R520 位地址)指向的一个表格字被用于测试 R7 中的位。 如果至少一个位被置位,则
跳转至标签 TONI
BITX.W @R5,R7 ; Test bits in R7: C = .not.ZJC TONI ; At least one is set... ; Both are
reset
示例 R520 位地址)指向的一个表格字节被用来测试输入 Port1 中的位。 如果没有位被置
位,则跳转至标签 TONI。 下一个表格字节被寻址。
BITX.B @R5+,&P1IN ; Test input P1 bits. R5 + 1JNC TONI ; No corresponding input bit is
set... ; At least one bit is set
222 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集说明
4.6.3.8 CLRX
* CLRX.A 清零目的地址字
* CLRX.[W] 清零目的字
* CLRX.B 清零目的字节
CLRX.A dst
句法
CLRX dstCLRX.W dst
CLRX.B dst
运行0dst
MOVX.A #0Mdst
仿仿真
MOVX #0Mdst
MOVX.B #0Mdst
说明明 目的操作数被清零。
状态态位位 状态位不受影响。
示例RAM 地址字 TONI 被清零。
CLRX.A TONI ; 0 -> TONI
223
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集说明
www.ti.com.cn
4.6.3.9 CMPX
CMPX.A 将源地址字与目的地址字相比较
CMPX.[W] 将源字与目的字相比较
CMPX.B 将源字节与目的字节相比较
CMPX.A srcMdst
句法
CMPX srcMdstCMPX.W srcMdst
CMPX.B srcMdst
运行(.not. src)+1+dst dst-src
说明 通过将源 + 1 1s 补数加入目的,源操作数被从目的操作数中刨除。 结果只影响状态
位。 两个操作数都位于完全地址空间内。
状态态位N 如果结果为负 (src>dst),则置位,如果为正则复位 (srcdst)
Z 如果为零 (src=dst) 则置位,否则复位 (srcdst)
C 如果有来自 MSB 的进位,则置位,否则复位
V: 如果从一个正目的操作数中减去一个负源操作数得到一个负结果,或者如果从一个负
目的操作数中减去一个正源操作数得到一个正结果,则置位,否则复位(无溢出)。
模式式位OSCOFFCPUOFF GIE 不受影响。
示例 EDE 与一个 20 位常数 18000h 相比较。 如果 EDE 等于常数则跳转至标签 TONI
CMPX.A #018000h,EDE ; Compare EDE with 18000hJEQ TONI ; EDE contains 18000h... ; Not
equal
示例R520 位地址)指向的一个表格字与 R7 相比较。 如果 R7 包含一个较低的、带符号的
16 位数,则跳转至标签 TONI
CMPX.W @R5,R7 ; Compare two signed numbersJL TONI ; R7 < @R5... ; R7 >= @R5
示例 R520 位地址)指向的一个表格字节与输入到I/O Port1 中的值相比较。 如果这两个值
相等,则跳转至标签 TONI。 下一个表格字节被寻址。
CMPX.B @R5+,&P1IN ; Compare P1 bits with table. R5 + 1JEQ TONI ; Equal contents... ;
Not equal
请注意:在下面两个情况中使用 CMPA 以实现更佳的代码密度和执行性能。
CMPA Rsrc,RdstCMPA #imm20,Rdst
224 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集说明
4.6.3.10 DADCX
* DADCX.A 将十进制进位增加到目的地址字
* DADCX.[W] 将十进制进位增加到目的字
* DADCX.B 将十进制进位增加到目的字节
DADCX.A dst
句法
DADCX dstDADCX.W dst
DADCX.B dst
运行dst+Cdst(用十进制)
DADDX.A #0,dst
仿仿真
DADDX #0Mdst
DADDX.B #0Mdst
说明 进位位 (C) 被用十进制增加到目的操作数。
状态态位N 如果结果的 MSB 1(地址字 > 79999h,字 > 7999h,字节 > 79h)则置位,如果
MSB 0则复位
Z: 如果结果为零则置位,否则复位
C 如果 BCD 结果太大(地址字 > 99999h,字 > 9999h,字节 > 99h)则置位,否则复
V: 未定义
模式式位OSCOFFCPUOFF GIE 不受影响。
示例R12 R13 指向的 40 位计数器被用十进制方法递增。
DADDX.A #1,0(R12) ; Increment lower 20 bitsDADCX.A 0(R13) ; Add carry to upper 20 bits
225
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集说明
www.ti.com.cn
4.6.3.11 DADDX
DADDX.A 将源地址字和进位用十进制方法加入目的地址字
DADDX.[W] 将源字和进位用十进制的方法加入目的字
DADDX.B 将源字节和进位用十进制的方法加入目的字节
DADDX.A srcMdst
句法
DADDX srcMdstDADDX.W srcMdst
DADDX.B src,dst
运行src+dst+Cdst(用十进制)
说明 源操作数和目的操作数被视为具有正符号的两个 (.B),四个 (.W) 或五个 (.A) 的二进制编码
的十进制 (BCD) 数。 源操作数和进位位 C被用十进制加入到目的操作数。 源操作数不受
影响。 目的操作数之前的内容丢失。 此结果不针对非 BCD 数定义。 两个操作数都位于完
全地址空间内。
状态态位N 如果结果的 MSB 1(地址字 > 79999h,字 > 7999h,字节 > 79h)则置位,如果
MSB 0则复位
Z: 如果结果为零则置位,否则复位
C 如果 BCD 结果太大(地址字 > 99999h,字 > 9999h,字节 > 99h)则置位,否则复
V: 未定义
模式式位OSCOFFCPUOFF GIE 不受影响。
示例 十进制 10 被加入到位于两个字内的 20 BCD 计数器 DECCNTR 内。
DADDX.A #10h,&DECCNTR ; Add 10 to 20-bit BCD counter
示例 包含在 20 位地址 BCD BCD+2 中的 8BCD 数被用十进制加入到包含在 R4 R5
中的一个 8BCD 数中(BCD+2 R5 包含 MSD)。
CLRC ; Clear carryDADDX.W BCD,R4 ; Add LSDsDADDX.W BCD+2,R5 ; Add MSDs with carryJC
OVERFLOW ; Result >99999999: go to error routine... ; Result ok
示例 包含在 20 位地址 BCD 中的两位 BCD 数被用十进制增加到包含在 R4 中的一个两位 BCD
数中。
CLRC ; Clear carryDADDX.B BCD,R4 ; Add BCD to R4 decimally.; R4: 000ddh
226 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集说明
4.6.3.12 DECX
* DECX.A 递减目的地址字
* DECX.[W] 递减目的字
* DECX.B 递减目的字节
DECX.A dst
句法
DECX dstDECX.W dst
DECX.B dst
运行dst-1dst
SUBX.A #1Mdst
仿仿真
SUBX #1Mdst
SUBX.B #1Mdst
说明 目的操作数减 1。 原先的内容丢失。
状态态位N: 如果结果为负则置位,如果为正则复位
Z 如果 dst 包含 1则置位,否则复位
C如果 dst 包含 0则置位,否则复位
V: 如果一个算术溢出发生则置位,否则复位。
模式式位OSCOFFCPUOFF GIE 不受影响。
示例RAM 地址字 TONI 1
DECX.A TONI ; Decrement TONI
227
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集说明
www.ti.com.cn
4.6.3.13 DECDX
* DECDX.A 双递减目的地址字
* DECDX.[W] 双递减目的字
* DECDX.B 双递减目的字节
DECDX.A dst
句法
DECDX dstDECDX.W dst
DECDX.B dst
运行dst-2dst
SUBX.A #2Mdst
仿仿真
SUBX #2Mdst
SUBX.B #2Mdst
说明 目的操作数递减 2。 原先的内容丢失。
状态态位N: 如果结果为负则置位,如果为正则复位
Z 如果 dst 包含 2则置位,否则复位
C 如果 dst 包含 0则复位,否则置位
V: 如果一个算术溢出发生则置位,否则复位。
模式式位OSCOFFCPUOFF GIE 不受影响。
示例RAM 地址字 TONI 递减 2
DECDX.A TONI ; Decrement TONI
228 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集说明
4.6.3.14 INCX
* INCX.A 递增目的地址字
* INCX.[W] 递增目的字
* INCX.B 递增目的字节
INCX.A dst
句法
INCX dstINCX.W dst
INCX.B dst
运行dst+1dst
ADDX.A #1Mdst
仿仿真
ADDX #1Mdst
ADDX.B #1Mdst
说明 目的操作数被递增 1。 原先的内容丢失。
状态态位N: 如果结果为负则置位,如果为正则复位
Z 如果 dst 包含 0FFFFFh 则置位,否则复位
如果 dst 包含 0FFFFh 则置位,否则复位
如果 dst 包含 0FFh 则置位,否则复位
C 如果 dst 包含 0FFFFFh 则置位,否则复位
如果 dst 包含 0FFFFh 则置位,否则复位
如果 dst 包含 0FFh 则置位,否则复位
V 如果 dst 包含 07FFFh 则置位,否则复位
如果 dst 包含 07FFFh 则置位,否则复位
如果 dst 包含 07Fh 则置位,否则复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例RAM 地址字 TONI 1
INCX.A TONI ; Increment TONI (20-bits)
229
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集说明
www.ti.com.cn
4.6.3.15 INCDX
* INCDX.A 双递增目的地址字
* INCDX.[W] 双递增目的字
* INCDX.B 双递增目的字节
INCDX.A dst
句法
INCDX dstINCDX.W dst
INCDX.B dst
运行dst+2dst
ADDX.A #2Mdst
仿仿真
ADDX #2Mdst
ADDX.B #2Mdst
说明 目的操作数被递增 2。 原先的内容丢失。
状态态位N: 如果结果为负则置位,如果为正则复位
Z 如果 dst 包含 0FFFFEh 则置位,否则复位
如果 dst 包含 0FFFEh 则置位,否则复位
如果 dst 包含 0FEh 则置位,否则复位
C 如果 dst 包含 0FFFFEh 0FFFFFh 则置位,否则复位
如果 dst 包含 0FFFEh 0FFFFh 则置位,否则复位
如果 dst 包含 0FEh 0FFh 则置位,否则复位
V 如果 dst 包含 07FFFEh 07FFFFh 则置位,否则复位
如果 dst 包含 07FFEh 07FFFh 则置位,否则复位
如果 dst 包含 07Eh 07Fh 则置位,否则复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例RAM 字节 LEO 递增 2PC 指向上部存储器。
INCDX.B LEO ; Increment LEO by two
230 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集说明
4.6.3.16 INVX
* INVX.A 反转目的操作数
* INVX.[W] 反转目的操作数
* INVX.B 反转目的操作数
INVX.A dst
句法
INVX dstINVX.W dst
INVX.B dst
运行.not.dstdst
XORX.A #0FFFFFhMdst
仿仿真
XORX #0FFFFhMdst
XORX.B #0FFhMdst
说明 目的操作数被反转。 原先的内容丢失。
状态态位N: 如果结果为负则置位,如果为正则复位
Z 如果 dst 包含 0FFFFFh 则置位,否则复位
如果 dst 包含 0FFFFh 则置位,否则复位
如果 dst 包含 0FFh 则置位,否则复位
C 如果结果不为零则置位,否则复位 (=.NOT. 零位)
V: 如果初始目的操作数为负则置位,否则复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例R5 20 位内容被求反(2s 补数)。
INVX.A R5 ; Invert R5INCX.A R5 ; R5 is now negated
示例 存储器字节 LEO 的内容被求反。 PC 正指向上部存储器。
INVX.B LEO ; Invert LEOINCX.B LEO ; MEM(LEO) is negated
231
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集说明
www.ti.com.cn
4.6.3.17 MOVX
MOVX.A 将源地址字移至目的地址字
MOVX.[W] 将源字移动到目的字
MOVX.B 将源字节移动到目的字节
MOVX.A src,dst
句法
MOVX srcMdst MOVX.W srcMdst
MOVX.B srcMdst
运行srcdst
描述 源操作数被复制到目的操作数。 源操作数不受影响。 两个操作数都位于完全地址空间内。
状态态位N: 不受影响
Z: 不受影响
C: 不受影响
V: 不受影响
模式式位OSCOFFCPUOFF GIE 不受影响。
示例 将一个 20 位常数 18000h 移动到绝对地址字 EDE
MOVX.A #018000h,&EDE ; Move 18000h to EDE
示例 EDE 的内容(字数据,20 位地址)被复制到表 TOM。 表的长度为 030h 字。
MOVA #EDE,R10 ; Prepare pointer (20-bit address)Loop MOVX.W @R10+,TOM-EDE-
2(R10) ; R10 points to both tables.; R10+2CMPA #EDE+60h,R10 ; End of table reached?JLO
Loop ; Not yet... ; Copy completed
示例 EDE 的内容(字节数据,20 位地址)被复制到表 TOM。 表的长度为 020h 字节。
MOVA #EDE,R10 ; Prepare pointer (20-
bit)MOV #20h,R9 ; Prepare counterLoop MOVX.W @R10+,TOM-EDE-
2(R10) ; R10 points to both tables.; R10+1DEC R9 ; Decrement counterJNZ Loop ; Not yet
done... ; Copy completed
MOVX.A 指令的 28 个可能寻址组合中的 10 个可使用 MOVA 指令。 这节省了两个字节和
代码周期。 寻址组合的示例如下:
MOVX.A Rsrc,Rdst MOVA Rsrc,Rdst ; Reg/RegMOVX.A #imm20,Rdst MOVA #imm20,Rdst ;
Immediate/RegMOVX.A &abs20,Rdst MOVA &abs20,Rdst ; Absolute/RegMOVX.A @Rsrc,Rdst MOVA
@Rsrc,Rdst ; Indirect/RegMOVX.A @Rsrc+,Rdst MOVA @Rsrc+,Rdst ; Indirect,Auto/RegMOVX.A
Rsrc,&abs20 MOVA Rsrc,&abs20 ; Reg/Absolute
只有当 16 位索引已能满足寻址需求时,下四个复位才可行:
MOVX.A z20(Rsrc),Rdst MOVA z16(Rsrc),Rdst ; Indexed/RegMOVX.A Rsrc,z20(Rdst) MOVA
Rsrc,z16(Rdst) ; Reg/IndexedMOVX.A symb20,Rdst MOVA symb16,Rdst ; Symbolic/RegMOVX.A
Rsrc,symb20 MOVA Rsrc,symb16 ; Reg/Symbolic
232 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集说明
4.6.3.18 POPM
POPM.A 从堆栈中恢复 nCPU 寄存器(20 位数据)
POPM.[W] 从堆栈中恢复 nCPU 寄存器(16 位数据)
POPM.A #nMRdst
句法1n16
POPM.W #nMRdst POPM #nMRdst 1n16
运行POPM.A:将堆栈内的寄存器值恢复至指定的 CPU 寄存器。 针对每个从堆栈中恢复的寄
存器,SP 4。 堆栈(每寄存器两个字)的 20 位值被恢复至寄存器。
POPM.W:将堆栈中的 16 位寄存器值恢复至指定的 CPU 寄存器。 针对每个从堆栈中恢
复的寄存器,SP 2。 堆栈(每寄存器一个字)的 16 位值被恢复至 CPU 寄存器。
请注意:这条指令并不使用扩展字。
说明POPM.A:被压入堆栈的 CPU 寄存器被移动至扩展 CPU 寄存器,从 CPU 寄存器开
始(Rdst-n+1)。 运算后,SP 增加 (nx4)
POPM.A:被压入堆栈的 16 位寄存器被移回至 CPU 寄存器,从 CPU 寄存器开
始(Rdst-n+ 1)。 运算后,SP 增加 (nx 2)。 被恢复 CPU 寄存器的 MSB (Rdst.19:16)
被清零。
状态态位 状态位不受影响,除了包含在运算中的 SR
模式式位OSCOFFCPUOFF GIE 不受影响。
示例 从堆栈恢复 20 位寄存器 R9R10R11R12R13
POPM.A #5,R13 ; Restore R9, R10, R11, R12, R13
示例 从堆栈恢复 16 位寄存器 R9R10R11R12R13
POPM.W #5,R13 ; Restore R9, R10, R11, R12, R13
233
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集说明
www.ti.com.cn
4.6.3.19 PUSHM
PUSHM.A 在堆栈上保存 nCPU 寄存器(20 位数据)
PUSHM.[W] 在堆栈上保存 nCPU 寄存器(16 位数据)
PUSHM.A #nMRdst
句法1n16
PUSHM.W #nMRdst PUSHM #nMRdst 1n16
运行PUSHM.A:将 20 CPU 寄存器值保存在堆栈上。 对于每个存储在堆栈上的寄存
器,SP 4MSB 被首先存储(较高地址)。
PUSHM.W:将 16 CPU 寄存器值保存在堆栈上。 对于每个存储在堆栈上的寄存
器,SP 2
说明PUSHM.A:从 Rdst 开始向后的 nCPU 寄存器被存储在堆栈上。 运算后,SP 减少
(nx4)。 被压入的 CPU 寄存器的数据 (Rn.19:0) 不受影响。
PUSHM.W:从 Rdst 开始向后的 n个寄存器被存储在堆栈上。 运算后,SP 减少 (nx2)
被压入的 CPU 寄存器的数据 (Rn.19:0) 不受影响。
请注意:这条指令不使用扩展字。
状态态位位 状态位不受影响。
模式式位OSCOFFCPUOFF GIE 不受影响。
示例 在堆栈上保存 520 位寄存器 R9R10R11R12R13
PUSHM.A #5,R13 ; Save R13, R12, R11, R10, R9
示例 在堆栈上保存 516 位寄存器 R9R10R11R12R13
PUSHM.W #5,R13 ; Save R13, R12, R11, R10, R9
234 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集说明
4.6.3.20 POPX
* POPX.A 从堆栈恢复单个地址字
* POPX.[W] 从堆栈恢复单个字
* POPX.B 从堆栈恢复单个字节
POPX.A dst
句法
POPX dstPOPX.W dst
POPX.B dst
运算 将堆栈中的 8/16/20 位值恢复至目的操作数。可使用 20 位数据。 SP 2(字节和字操
作数)和加 4(地址字操作数)。
MOVX(.B,.A) @SP+Mdst
仿仿真
说明TOS 上的项目被写入目的操作数。 可使用寄存器模式、已索引模式、符号模式、和绝对
模式。 SP 2或者加 4
请注意:对于字节运算,SP 也加 2
状态态位位 状态位不受影响。
模式式位OSCOFFCPUOFF GIE 不受影响。
示例 TOS 上的 16 位值写入 20 位地址 &EDE
POPX.W &EDE ; Write word to address EDE
示例 TOS 上的 20 位值写入 R9
POPX.A R9 ; Write address-word to R9
235
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集说明
www.ti.com.cn
4.6.3.21 PUSHX
PUSHX.A 将单地址字保存至堆栈
PUSHX.[W] 将单字写入堆栈
PUSHX.B 将单字节写入堆栈
PUSHX.A src
句法
PUSHX srcPUSHX.W src
PUSHX.B src
运算 保存 TOS 上的 8/16/20 位值。可使用 20 位地址。 写入操作前,SP 2(字节和字操作
数)和减 4(地址字操作数)。
说明SP 2(字节和字操作数)或减 4(地址字操作数)。 然后源操作数被写入 TOS。 对
于源操作数,所有七个寻址模式均可使用。
状态态位位 状态位不受影响。
模式式位OSCOFFCPUOFF GIE 不受影响。
示例 将字节保存在堆栈上的 20 位地址 &EDE 内。
PUSHX.B &EDE ; Save byte at address EDE
示例 20 位值保存在堆栈上的 R9 中。
PUSHX.A R9 ; Save address-word in R9
236 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
C
19 0
MSB
0000
15
LSB
C
19 0
MSB LSB
16
0
0
www.ti.com.cn
指令集说明
4.6.3.22 RLAM
RLAM.A 算术左旋 20 CPU 寄存器内容
RLAM.[W] 算术左旋 16 CPU 寄存器内容
RLAM.A #nMRdst
句法1n4
RLAM.W #nMRdstRLAM #nMRdst 1n4
运算CMSBMSB-1 .... LSB+1LSB0
说明明 如4-43所示,目的操作数被用算术的方法左移 1234个位位置。 RLAM 运行为
一个 24816 的倍乘(带符号和不带符号的)。 字指令 RLAM.W 清零位
Rdst.19:16
请注意:这条指令不使用扩展字。
状态态位N: 如果结果为负则置位
.A: Rdst.19=1,如果 Rdst.19=0 则复位
.W: Rdst.15=1,如果 Rdst.15=0 则复位
Z: 如果结果为零则置位,否则复位
C MSB (n=1)MSB-1 (n=2)MSB-2 (n=3)MSB-3 (n=4) 载入
V: 未定义
模式式位OSCOFFCPUOFF GIE 不受影响。
示例R5 中的 20 位操作数被左移三个位置。 它的操作与一个算术 8倍乘等效。
RLAM.A #3,R5 ; R5 = R5 x 8
4-43. 用算算术术的的方方法法左左移- RLAM[.W] RLAM.A
237
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
MSB
C0
LSB
0
指令集说明
www.ti.com.cn
4.6.3.23 RLAX
* RLAX.A 算术左旋地址字
* RLAX.[W] 算术左旋字
* RLAX.B 算术左旋字节
RLAX.A dst
句法
RLAX dstRLAX.W dst
RLAX.B dst
运算CMSBMSB-1 .... LSB+1LSB0
ADDX.A dstMdst
仿仿真
ADDX dstMdst
ADDX.B dstMdst
说明明 如4-44中所示,目的操作数向左移动一个位置。 MSB 被移入进位位 (C),而 LSB 0
填充。RLAX 指令运行为一个带符号的 2倍乘。
状态态位N: 如果结果为负则置位,如果为正则复位
Z: 如果结果为零则置位,否则复位
C MSB 载入
V 如果一个算术溢出发生:初始值为 040000hdst<0C0000h,则置位;否则复位
如果一个算术溢出发生:初始值为 04000hdst<0C000h,则置位:否则复位
如果一个算术溢出发生:初始值为 040hdst<0C0h,则置位;否则复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例R7 中的 20 位值乘以 2
RLAX.A R7 ; Shift left R7 (20-bit)
4-44. 目的的操操作作数-算术术左左移移位
238 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
MSB
0
CLSB
www.ti.com.cn
指令集说明
4.6.3.24 RLCX
* RLCX.A 通过进位地址字左旋
* RLCX.[W] 通过进位字左旋
* RLCX.B 通过进位字节左旋
RLCX.A dst
句法
RLCX dstRLCX.W dst
RLCX.B dst
运算CMSBMSB-1 .... LSB+1LSBC
ADDCX.A dstMdst
仿仿真
ADDCX dstMdst
ADDCX.B dstMdst
说明明 如4-45中所示,目的操作数向左移动一个位置。 进位位 (C) 被移入 LSB,而 MSB
移入进位位 (C)
状态态位N: 如果结果为负则置位,如果为正则复位
Z: 如果结果为零则置位,否则复位
C MSB 载入
V 如果一个算术溢出发生:初始值为 040000hdst<0C0000h,则置位;否则复位
如果一个算术溢出发生:初始值为 04000hdst<0C000h,则置位;否则复位
如果一个算术溢出发生:初始值为 040hdst<0C0h,则置位;否则复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例R5 中的 20 位值被向左移动一个位置。
RLCX.A R5 ; (R5 x 2) + C -> R5
示例RAM 字节 LEO 被向左移位一个位置。 PC 正指向上部存储器。
RLCX.B LEO ; RAM(LEO) x 2 + C -> RAM(LEO)
4-45. 目的的操操作作数-进位位左左移移位
239
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
C
19 0
MSB
0000
15
LSB
C
19 0
MSB LSB
16
指令集说明
www.ti.com.cn
4.6.3.25 RRAM
RRAM.A 算术右旋 20 CPU 内容
RRAM.[W] 算术右旋 16 CPU 内容
RRAM.A #n,Rdst
句法1n4
RRAM.W #nMRdstRRAM #nMRdst 1n4
运算MSBMSBMSB-1... LSB+1LSBC
说明明 如4-46所示,目的操作数被用算术的方法右移 1234个位位置。 MSB 保持其
值(符号)。 BRAM 的运行与一个带符号的 2/4/8/16 除法等效。 MSB 被保持并且被移
MSB-1LSB+1 被移入 LSB,而 LSB 被移入进位位 C。字指令 RRAM.W 清零位
Rdst.19:16
请注意:这条指令不使用扩展字。
状态态位N: 如果值为负则置位
.A: Rdst.19=1,如果 Rdst.19=0 则复位
.W: Rdst.15=1,如果 Rdst.15=0 则复位
Z: 如果结果为零则置位,否则复位
C LSB (n=1)LSB+1 (n=2)LSB+2 (n=3),或 LSB+3 (n=4) 载入
V: 复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例R5 中带符号的 20 位数被用算术的方法向右移位两个位置。
RRAM.A #2,R5 ; R5/4 -> R5
示例R15 中的 20 位值乘以 0.75(0.5+0.25)×R15
PUSHM.A #1,R15 ; Save extended R15 on stackRRAM.A #1,R15 ; R15 y 0.5 -
> R15ADDX.A @SP+,R15 ; R15 y 0.5 + R15 = 1.5 y R15 -
> R15RRAM.A #1,R15 ; (1.5 y R15) y 0.5 = 0.75 y R15 -> R15
4-46. 算术术右右旋RRAM[.W] RRAM.A
240 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集说明
4.6.3.26 RRAX
RRAX.A 算术右旋 20 位操作数
RRAX.[W] 算术右旋 16 位操作数
RRAX.B 算术右旋 8位操作数
RRAX.A Rdst
句法
RRAX.W Rdst
RRAX Rdst
RRAX.B Rdst
RRAX.A dst
RRAX dstRRAX.W dst
RRAX.B dst
运算MSBMSBMSB-1... LSB+1LSBC
说明明 针对目的操作数的寄存器模式:如4-47所示,目的操作数右移一个位位置。 MSB 保持
其值(符号)。 字指令 RRAX.W 清零位 Rdst.19:16,字节指令 RRAX.B 清零位
Rdst.19:8MSB 保持其值(符号),LSB 被移入进位位。 RRAX 的运行与带符号的被 2
除等效。
针对目的操作数的所有其它模式:如4-48所示,目的操作数被算术右移一个位位置。
MSB 保持其值(符号),LSB 被移入进位位。 这里 RRAX 的运行与带符号的被 2除等
效。除立即模式之外的所有寻址模式可在整个存储器内使用。
状态态位N: 如果结果为负则置位,如果为正则复位
.A: dst.19=1,如果 dst.19=0 则复位
.W: dst.15=1,如果 dst.15=0 则复位
.B: dst.7=1,如果 dst.7=0 则复位
Z: 如果结果为零则置位,否则复位
C LSB 载入
V: 复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例R5 中带符号的 20 位数被用算术右移位一个位置。
RPT #4RRAX.A R5 ; R5/16 -> R5
241
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
C
0
MSB
7
LSB
C
15 0
MSB LSB
C
19 0
MSB LSB
31 20
0 0
C
0
MSB
7
LSB
C
15 0
MSB LSB
C
19 0
MSB LSB
819
0 0
19 16
0000
指令集说明
www.ti.com.cn
示例EDE 中的带符号 8位值乘以 0.5
RRAX.B &EDE ; EDE/2 -> EDE
4-47. 算术术右右旋RRAX (.B.A) - 寄存存器器模模式
4-48. 算术术右右旋RRAX (.B.A) - 非寄寄存存器器模模式
242 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
C
19 0
MSB
0
15
LSB
C
19 0
MSB LSB
16
www.ti.com.cn
指令集说明
4.6.3.27 RRCM
RRCM.A 通过进位 20 CPU 寄存器内容右旋
RRCM.[W] 通过进位 16 CPU 寄存器内容右旋
RRCM.A #nMRdst
句法1n4
RRCM.W #nMRdstRRCM #nMRdst 1n4
运算CMSBMSB-1... LSB+1LSBC
说明明 如4-49所示,目的操作数右移 1234个位位置。 进位位 C被移入 MSB,而
LSB 被移入进位位。 字指令 RRCM.W 清零位 Rdst.19:16
请注意:这条指令不使用扩展字。
状态态位N: 如果值为负则置位
.A: Rdst.19=1,如果 Rdst.19=0 则复位
.W: Rdst.15=1,如果 Rdst.15=0 则复位
Z: 如果结果为零则置位,否则复位
C LSB (n=1)LSB+1 (n=2)LSB+2 (n=3),或 LSB+3 (n=4) 载入
V: 复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例R5 中的地址字被右移三个位置。 将 1载入 MSB-2
SETC ; Prepare carry for MSB-2RRCM.A #3,R5 ; R5 = R5 » 3 + 20000h
示例R6 中的地址字被右移两个位置。 将 LSB 载入 MSB。 将进位标志载入 MSB-1
RRCM.W #2,R6 ; R6 = R6 » 2. R6.19:16 = 0
4-49. 通过过进进位RRCM[.W] RRCM.A 右旋
243
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集说明
www.ti.com.cn
4.6.3.28 RRCX
RRCX.A 通过进位 20 位操作数右旋
RRCX.[W] 通过进位 16 位操作数右旋
RRCX.B 通过进位 8位操作数右旋
RRCX.ARdst
句法
RRCX.WRdst
RRCX Rdst
RRCX.B Rdst
RRCX.A dst
RRCX dstRRCX.W dst
RRCX.B dst
运算CMSBMSB-1... LSB+1LSBC
说明明 针对目的操作数的寄存器模式:如4-50所示,目的操作数右移一个位位置。 字指令
RRCX.W 清零位 Rdst.19:16,字节指令 RRCX.B 清零位 Rdst.19:8。进位位 C被移入
MSB,而 LSB 被移入进位位。
针对目的操作数的所有其它模式:如4-51所示,目的操作数被算术右移一个位位置。
进位位 C被移入 MSB,而 LSB 被移入进位位。 除立即模式之外的所有寻址模式可在整
个存储器内使用。
状态态位N: 如果值为负则置位
.A: dst.19=1,如果 dst.19=0 则复位
.W: dst.15=1,如果 dst.15=0 则复位
.B: dst.7=1,如果 dst.7=0 则复位
Z: 如果结果为零则置位,否则复位
C LSB 载入
V: 复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例 地址 EDE 上的 20 位操作数被右移一个位置。 将 1载入 MSB
SETC ; Prepare carry for MSBRRCX.A EDE ; EDE = EDE » 1 + 80000h
244 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
C
0
MSB
7
LSB
C
15 0
MSB LSB
C
19 0
MSB LSB
31 20
0 0
C
19 0
MSB
0 - - - - - - - - - - - - - - - - - - - - 0
7
LSB
C
19 0
MSB LSB
8
C
15 0
MSB LSB
19 16
0 0 0 0
www.ti.com.cn
指令集说明
示例R6 中的字被右移 12 个位置。
RPT #12RRCX.W R6 ; R6 = R6 » 12. R6.19:16 = 0
4-50. 通过过进进位RRCX (.B.A) 右旋-寄存存器器模模式
4-51. 通过过进进位RRCX (.B.A) 右旋-非寄寄存存器器模模式
245
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
C
19 0
MSB
0000
15
LSB
C
19 0
MSB LSB
0
0
16
指令集说明
www.ti.com.cn
4.6.3.29 RRUM
RRUM.A 通过进位 20 CPU 寄存器内容右旋
RRUM.[W] 通过进位 16 CPU 寄存器内容右旋
RRUM.A #nMRdst
句法1n4
RRUM.W #nMRdstRRUM #nMRdst 1n4
运算0MSBMSB-1.... LSB+1LSBC
说明明 如4-52所示,目的操作数右移 1234个位位置。 零被移入 MSB,而 LSB 被移
入进位位。 RRUM 运行为一个无符号 24816 除法。 字指令 RRUM.W 清零位
Rdst.19:16
请注意:这条指令不使用扩展字。
状态态位N: 如果值为负则置位
.A: Rdst.19=1,如果 Rdst.19=0 则复位
.W: Rdst.15=1,如果 Rdst.15=0 则复位
Z: 如果结果为零则置位,否则复位
C LSB (n=1)LSB+1 (n=2)LSB+2 (n=3),或 LSB+3 (n=4) 载入
V: 复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例R5 中的无符号地址字被 16 除。
RRUM.A #4,R5 ; R5 = R5 » 4. R5/16
示例R6 中的字被右移一个位。 将 0载入 MSB R6.15
RRUM.W #1,R6 ; R6 = R6/2. R6.19:15 = 0
4-52. 右旋旋无无符符号RRUM[.W] RRUM.A
246 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
C
19 0
MSB0 - - - - - - - - - - - - - - - - - - - - 0
7
LSB
C
19 0
MSB LSB
8
C
15 0
MSB LSB
19 16
0 0 0 0
0
0
0
www.ti.com.cn
指令集说明
4.6.3.30 RRUX
RRUX.A 无符号右移 20 CPU 寄存器内容
RRUX.[W] 无符号右移 16 CPU 寄存器内容
RRUX.B 无符号右移 8CPU 寄存器内容
RRUX.A Rdst
句法
RRUX.W Rdst
RRUX Rdst
RRUX.B Rdst
运算C=0MSBMSB-1 ... LSB+1LSBC
描述RRUX 只对寄存器模式有效:如4-53所示,目的操作数右移一个位位置。 字指令
RRUX.W 清零位 Rdst.19:16。 字节指令 RRUX.B 清零位 Rdst.19:8。零被移入 MSB,而
LSB 被移入进位位。
状态态位N: 如果值为负则置位
.A: dst.19=1,如果 dst.19=0 则复位
.W: dst.15=1,如果 dst.15=0 则复位
.B: dst.7=1,如果 dst.7=0 则复位
Z: 如果结果为零则置位,否则复位
C LSB 载入
V: 复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例R6 中的字被右移 12 个位置。
RPT #12RRUX.W R6 ; R6 = R6 » 12. R6.19:16 = 0
4-53. 右旋旋无无符符号RRUN (.B.A) - 寄存存器器模模式
247
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集说明
www.ti.com.cn
4.6.3.31 SBCX
* SBCX.A 将借位(.NOT. 进位)从目的地址字中减去
* SBCX.[W] 将借位(.NOT. 进位)从目的字中减去
* SBCX.B 将借位(.NOT. 进位)从目的字节中减去
SBCX.A dst
句法
SBCX dstSBCX.W dst
SBCX.B dst
运算dst+0FFFFFh+Cdst
dst+0FFFFh+Cdst
dst+0FFh+Cdst
SBCX.A #0Mdst
仿仿真
SBCX #0Mdst
SBCX.B #0Mdst
说明 进位位 (C) 被加至目的操作数减一。 目的操作数之前的内容丢失。
状态态位N: 如果结果为负则置位,如果为正则复位
Z: 如果结果为零则置位,否则复位
C 如果有一个来自结果的 MSB 的进位,则置位,否则复位
如果无借位则置位为 1,如果有借位则复位
V: 如果一个算术溢出发生,则置位,否则复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例R13 指向的 8位计数器被从一个 R12 指向的 16 位计数器内。
SUBX.B @R13,0(R12) ; Subtract LSDsSBCX.B 1(R12) ; Subtract carry from MSD
:借位位执执行
借位被视为一个 .NOT.进位:
借位位 进进位位位
支持 0
1
248 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集说明
4.6.3.32 SUBX
SUBX.A 从目的地址字中减去源地址字
SUBX.[W] 从目的字中减去源字
SUBX.B 从目的字节中减去源字节
SUBX.A srcMdst
句法
SUBX srcMdst SUBX.W srcMdst
SUBX.B srcMdst
运算(.not. src)+1+dstdst dst-srcdst
说明 从目的操作数中减去源操作数。 这通过在目的中增加源 + 1 1s 补数来完成。 源操作数
不受影响。 结果被写入目的操作数。 两个操作数都位于完全地址空间内。
状态态位N 如果结果为负 (src>dst),则置位,如果为正则复位 (srcdst)
Z 如果为零 (src=dst) 则置位,否则复位 (srcdst)
C 如果有来自 MSB 的进位,则置位,否则复位
V: 如果从一个正目的操作数中减去一个负源操作数得到一个负结果,或者如果从一个负
目的操作数中减去一个正源操作数得到一个正结果,则置位,否则复位(无溢出)。
模式式位OSCOFFCPUOFF GIE 不受影响。
示例 EDE (LSB) EDE+2 (MSB) 中减去一个 20 位常87654h
SUBX.A #87654h,EDE ; Subtract 87654h from EDE+2|EDE
示例R520 位地址)指向的一个表格字被从 R7 中减去。 指令后,如果 R7 包含零,则跳转
至标签 TONIR5 自动增量 2R7.19:16=0
SUBX.W @R5+,R7 ; Subtract table number from R7. R5 + 2JZ TONI ; R7 = @R5 (before
subtraction)... ; R7 <> @R5 (before subtraction)
示例 从指向完全地址空间的字节 R12 中减去字节 CNT。地CNT PC±512K 内。
SUBX.B CNT,0(R12) ; Subtract CNT from @R12
请注意:在下面两个情况中使用 SUBA 以实现更佳的代码密度和执行性能。
SUBX.A Rsrc,RdstSUBX.A #imm20,Rdst
249
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集说明
www.ti.com.cn
4.6.3.33 SUBCX
SUBCX.A 从目的地址字中减去带有进位的源地址
SUBCX.[W] 从目的字中减去带有进位的源字
SUBCX.B 从目的字节中减去带有进位的源字节
SUBCX.A srcMdst
句法
SUBCX srcMdstSUBCX.W srcMdst
SUBCX.B srcMdst
运算(.not. src)+C+dstdst dst-(src-1)+Cdst
说明 从目的操作数中减去源操作数。 这通过在目的中增加源+进位的 1s 补数来完成。 源操作
数不受影响,结果被写入目的操作数。 两个操作数都位于完全地址空间内。
状态态位N 如果结果为负 (MSB=1),则置位,如果为正 (MSB=0),则复位
Z: 如果结果为零则置位,否则复位
C 如果有来自 MSB 的进位,则置位,否则复位
V: 如果从一个正目的操作数中减去一个负源操作数得到一个负结果,或者如果从一个负
目的操作数中减去一个正源操作数得到一个正结果,则置位,否则复位(无溢出)。
模式式位OSCOFFCPUOFF GIE 不受影响。
示例 一个 20 位常数 87654h 被从带有来自之前指令进位的 R5 中减去。
SUBCX.A #87654h,R5 ; Subtract 87654h + C from R5
示例 从由 R7 指向的 RAM 中的一个 48 位计数器内减去由 R520 位地址)指向的一个 48
数(3个字)。 R5 自动增量来指向下一个 48 位数。
SUBX.W @R5+,0(R7) ; Subtract LSBs. R5 + 2SUBCX.W @R5+,2(R7) ; Subtract MIDs with C. R5
+ 2SUBCX.W @R5+,4(R7) ; Subtract MSBs with C. R5 + 2
示例 R12 指向的字节中减去字节 CNT 。 使用之前指令的进位。20 位地址。
SUBCX.B &CNT,0(R12) ; Subtract byte CNT from @R12
250 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
15 8 7 0
Low ByteHigh Byte
Before SWPBX.A
After SWPBX.A
X
19 16
31 20
X
15 8 7 0
High ByteLow Byte
0
19 16
31 20
X
15 8 7 0
15 8 7 0
Low Byte
Low ByteHigh Byte
High Byte
Before SWPBX.A
After SWPBX.A
X
X
19
19
16
16
www.ti.com.cn
指令集说明
4.6.3.34 SWPBX
SWPBX.A 较低字的交换字节
SWPBX.[W] 字的交换字节
SWPBX.A dst
句法
SWPBX dstSWPBX.W dst
运算dst.15:8dst.7:0
说明明 寄存器模式:Rn.15:8 Rn.7:0 交换。当使用 .A 扩展名时,Rn.19:16 保持不变。 当使用
.W 扩展名时,Rn.19:16 被清零。
其它模式:当使用 .A 扩展名时,目的地址的位 31:20 被清零,位 19:16 保持不变,而位
15:8 与位 7:0 交换。当使用 .W 扩展名时,位 15:8 与被寻址字的位 7:0 交换。
状态态位位 状态位不受影响。
模式式位OSCOFFCPUOFF GIE 不受影响。
示例 交换 RAM 地址字 EDE 的字节
MOVX.A #23456h,&EDE ; 23456h -> EDESWPBX.A EDE ; 25634h -> EDE
示例 交换 R5 的字节
MOVA #23456h,R5 ; 23456h -> R5SWPBX.W R5 ; 05634h -> R5
4-54. 交换换字字节SWPBX.A 寄存存器器模模式
4-55. 在存存储储器器中中交交换SWPBX.A 字节
251
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
15 8 7 0
15 8 7 0
Low Byte
Low ByteHigh Byte
High Byte
Before SWPBX
After SWPBX
15 8 7 0
15 8 7 0
Low Byte
Low ByteHigh Byte
High Byte
Before SWPBX
After SWPBX
X
0
19
19
16
16
指令集说明
www.ti.com.cn
4-56. 交换换字字节SWPBX[.W] 寄存存器器模模式
4-57. 在存存储储器器中中交交换SWPBX[.W] 字节
252 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
15 8 7 6 0
S
15 8 7 6 019 16
S
19 16
SXTX[.W] Rdst
SXTX[.W] dst
15 8 7 6 019 162031
0 0...... S
19 16
15 8 7 6 019 16
S
19 16
SXTX.A Rdst
SXTX.A dst
www.ti.com.cn
指令集说明
4.6.3.35 SXTX
SXTX.A 将较低字节的符号扩展为地址字
SXTX.[W] 将较低字节的符号扩展为字
SXTX.A dst
句法
SXTX dstSXTX.W dst
运算dst.7dst.15:8Rdst.7Rdst.19:8(寄存器模式)
说明 寄存器模式:操作数 (Rdst.7) 低字节的符号被扩展至位 Rdst.19:8 内。
其他模式:SXTX.A:操作数 (dst.7) 低字节的符号被扩展至位 dst.19:8 内。位 dst.31:20
被清零。
SXTX[.W]:操作数 (dst.7) 低字节的符号被扩展至位 dst.15:8 内。
状态态位N: 如果结果为负则置位,否则复位
Z: 如果结果为零则置位,否则复位
C 如果结果不为零则置位,否则复位 (C=.NOT.Z)
V: 复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例EDE.7:0 内的带符号的 8位数据符号被扩展至 20 位:EDE.19:8。位于 EDE+2 内的位
31:20 被清零。
SXTX.A &EDE ; Sign extended EDE -> EDE+2/EDE
4-58. 符号号扩扩展SXTX.A
4-59. 符号号扩扩展SXTX[.W]
253
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集说明
www.ti.com.cn
4.6.3.36 TSTX
* TSTX.A 测试目的地址字
* TSTX.[W] 测试目的字
* TSTX.B 测试目的字节
TSTX.A dst
句法
TSTX dstTSTX.W dst
TSTX.B dst
运算dst+0FFFFFh+1
dst+0FFFFh+1
dst+0FFh+1
CMPX.A #0Mdst
仿仿真
CMPX #0Mdst
CMPX.B #0Mdst
说明 目的操作数与零相比较。 根据结果置位状态位。 目的操作数不受影响。
状态态位N: 如果目的操作数为负则置位,如果为正则复位
Z: 如果目的操作数包含零则置位,否则复位
C: 设置
V: 复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例RAM 字节 LEO 被测试;PC 正指向上部存储器。 如果它为负,则继续在 LEONEG 上执
行;如果为正但又不为零,则继续在 LEOPOS 上执行。
TSTX.B LEO ; Test LEOJN LEONEG ; LEO is negativeJZ LEOZERO ; LEO is zeroLEOPOS ......
; LEO is positive but not zeroLEONEG ...... ; LEO is negativeLEOZERO ...... ; LEO is
zero
254 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集说明
4.6.3.37 XORX
XORX.A 将源地址字与目的地址字进行异或操作
XORX.[W] 源字与目的字异或操作
XORX.B 源字节与目的字节异或操作
XORX.A srcMdst
句法
XORX srcMdst XORX.W srcMdst
XORX.B srcMdst
运算src .xor. dstdst
说明 源操作数和目的操作数被异或操作。 结果被放置在目的操作数内。 源操作数不受影响。
目的操作数之前的内容丢失。 两个操作数都位于完全地址空间内。
状态态位N 如果结果为负 (MSB=1),则置位,如果为正 (MSB=0),则复位
Z: 如果结果为零则置位,否则复位
C 如果结果不为零则置位,否则复位 (C=.not. 零位)
V: 如果两个操作数均为负(在执行前)则置位,否则复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例 用地址字 TONI20 位地址)内的信息切换地址字 CNTR20 位数据)内的位。
XORX.A TONI,&CNTR ; Toggle bits in CNTR
示例R520 位地址)指向的一个表格字被用于切换 R6 中的位。
XORX.W @R5,R6 ; Toggle bits in R6. R6.19:16 = 0
示例R7 中低字节内复位为零的那些位与位于字节 EDE20 位地址)内的位不同。
XORX.B EDE,R7 ; Set different bits to 1 in R7INV.B R7 ; Invert low byte of R7. R7.19:8
= 0.
255
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集说明
www.ti.com.cn
4.6.4 MSP430X
寻址址指指令
MSP430X 寻址指令支持 20 位操作数,但是具有受限的寻址模式。 寻址模式限制为寄存器模式和立即模
式,除了 MOVA 指令。 对寻址模式的限制免除了对于额外扩展字运算代码的需要,从而改进了代码密度和
执行时间。 在下面的部分中对 MSP430X 寻址指令进行了说明。
MSP430X 扩展指令请参阅4.6.3 ,而标准MSP430X 指令请参阅4.6.2
256 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集说明
4.6.4.1 ADDA
ADDA 将一个 20 位源添加到一个 20 位地址寄存器
ADDA RsrcMRdst
句法
ADDA #imm20MRdst
运算src+RdstRdst
说明20 位源操作数被添加到 20 位目的 CPU 寄存器。 目的操作数之前的内容丢失。 源操作
数不受影响。
状态态位N 如果结果为负 (Rdst.19=1),则置位,如果为正 (Rdst.19=0),则复位
Z: 如果结果为零则置位,否则复位
C 如果有来自 20 位结果的进位,则置位,否则复位
V: 如果两个正操作数的结果为负,或者如果两个负数的结果为正,则置位,否则复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例R5 增加 0A4320h。 如果进位发生,执行到标签 TONI 的跳转。
ADDA #0A4320h,R5 ; Add A4320h to 20-
bit R5JC TONI ; Jump on carry... ; No carry occurred
257
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集说明
www.ti.com.cn
4.6.4.2 BRA
* BRA 到目的的分指令
BRA dst
句法
运算dstPC
MOVA dstMPC
仿仿真
说明 一个无条件分支指令被完全地址空间内任何位置的 20 位地址 可使用所有七个源寻址模
式。 分支指令是一个地址字指令。 如果目的地址被包含在一个存储器位置 X,它被包含
在两个上升字内:X (LSB) (X + 2) (MSB)
状态态位N: 不受影响
Z: 不受影响
C: 不受影响
V: 不受影响
模式式位OSCOFFCPUOFF GIE 不受影响。
示例例 给出了针对所有寻址模式的示例。
立即模式:分支至位于 20 位地址空间内任一位置的标签 EDE 或者到地址。
BRA #EDE ; MOVA #imm20,PCBRA #01AA04h
符号模式:分支至包含在地址 EXEC (LSB) EXEC+2 (MSB) 内的 20 位地址。 EXEC
位于地址 (PC+X) 上,其中 X+32K 内。间接寻址。
BRA EXEC ; MOVA z16(PC),PC
请注意:如果 16 位索引不能满足需要,可用下列指令使用一个 20 位索引。
MOVX.A EXEC,PC ; 1M byte range with 20-bit index
绝对模式:分支至包含在绝对地址 EXEC (LSB) EXEC+2 (MSB) 20 位地址。 间接
寻址
BRA &EXEC ; MOVA &abs20,PC
寄存器模式:分支至包含在寄存器 R5 中的 20 位地址。 间接 R5
BRA R5 ; MOVA R5,PC
间接模式:分支至包含在由寄存器 R5 (LSB) 指向的字内的 20 位地址。 MSB 具有地址
(R5+2)。 间接,间接 R5
BRA @R5 ; MOVA @R5,PC
258 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集说明
间接、自动增量模式:分支至包含在由 R5 指向的字内的 20 位地址并且之后 R5 中的地
址增 4。下次 S/W 使用 R5 作为一个指针,访问由 R5 指向表中的下一个字地址使得它能
够改变程序执行。 间接,间接 R5
BRA @R5+ ; MOVA @R5+,PC. R5 + 4
已索引模式:分支至包含在由寄存器 (R5+X) 指向的地址内 20 位地址(例如,开始地址
X的表)。 (R5+X) 指向 LSB(R5+X+2) 指向地址的 MSBXR5+32 内。间接,
间接 (R5+X)
BRA X(R5) ; MOVA z16(R5),PC
请注意:如果 16 位索引不能满足需要,可用下列指令使用一个 20 位索引 X
MOVX.A X(R5),PC ; 1M byte range with 20-bit index
259
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集说明
www.ti.com.cn
4.6.4.3 CALLA
CALLA 调用一个子例程
CALLA dst
Syntax
运算dsttmp 20 dst 被评估和存储
SP-2SP
PC.19:16@SP 用到 TOS 的返回地址更新 PC (MSB)
SP-2SP
PC.15:0@SP 更新到 TOS PC (LSB)
tmpPC 保存 20 dst PC
说明 在完全地址空间内任何位置的一个 20 位地址进行子例程调用。 可使用所有七个源寻址模
式。 调用指令是一个地址字指令。 如果目的地址被包含在存储器位置 X,它包含在两个
上升字内,X (LSB) (X+2) (MSB)。 返回地址需要堆栈上的两个字。 使用指令 RETA
来完成返回。
状态态位N: 不受影响
Z: 不受影响
C: 不受影响
V: 不受影响
模式式位OSCOFFCPUOFF GIE 不受影响。
示例例 给出了针对所有寻址模式的示例。
立即模式:调用一个标签 EXEC 上的子例程或者直接调用一个地址。
CALLA #EXEC ; Start address EXECCALLA #01AA04h ; Start address 01AA04h
符号模式:调用一个包含在地址 EXEC (LSB) EXEC+2 (MSB) 内的 20 位地址上的子
例程。 EXEC 位于地址 (PC+X) 上,其中 XPC+32K 内。间接寻址。
CALLA EXEC ; Start address at @EXEC. z16(PC)
绝对模式:调用一个包含在绝对地址 EXEC (LSB) EXEC+2 (MSB) 内的 20 位地址上
的子例程。 间接寻址
CALLA &EXEC ; Start address at @EXEC
寄存器模式:调用一个包含在寄存器 R5 中的 20 位地址上的子例程。 间接 R5
CALLA R5 ; Start address at @R5
间接模式:调用一个 20 位地址上的子例程,此地址包含在由寄存器 R5 指向的字 内。
MSB 具有地址 (R5+2)。 间接,间接 R5
CALLA @R5 ; Start address at @R5
260 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集说明
间接,自动增量模式:调用一个包含在由 R5 指向的字中的 20 位地址上的子例程,之后
R5 中的 20 位地址增加 4。下次 S/W 使用 R5 作为一个指针,访问由 R5 指向表中的下
一个字地址使得它能够改变程序执行。 间接,间接 R5
CALLA @R5+ ; Start address at @R5. R5 + 4
已索引模式:调用一个包含在由 (R5+X) 指向的地址中的 20 位地址上的子例程;例如,
一个起始地址为 X的表。(R5+X) 指向 LSB(R5+X) 指向字地址的 MSBXR5+32K
内。间接,间接 (R5+X)
CALLA X(R5) ; Start address at @(R5+X). z16(R5)
261
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集说明
www.ti.com.cn
4.6.4.4 CLRA
* CLRA 清零 20 位目的寄存器
CLRA Rdst
句法
运算0Rdst
MOVA #0MRdst
仿仿真
说明明 目的寄存器被清零。
状态态位位 状态位不受影响。
示例R10 内的 20 位值被清零。
CLRA R10 ; 0 -> R10
262 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集说明
4.6.4.5 CMPA
CMPA 20 位源与 20 位目的寄存器相比较。
CMPA RsrcMRdst
句法
CMPA #imm20MRdst
运算(.not. src)+1+Rdst Rdst-src
说明 20 位目的 CPU 寄存器中减去 20 位源操作数。 通过在目的寄存器中增加源 + 1 1s
补数来完成。 结果只影响状态位。
状态态位N 如果结果为负 (src>dst),则置位,如果为正则复位 (srcdst)
Z 如果为零 (src=dst) 则置位,否则复位 (srcdst)
C 如果有来自 MSB 的进位,则置位,否则复位
V: 如果从一个正目的操作数中减去一个负源操作数得到一个负结果,或者如果从一个
负目的操作数中减去一个正源操作数得到一个正结果,则置位,否则复位(无溢
出)。
模式式位OSCOFFCPUOFF GIE 不受影响。
示例 将一个 20 位直接操作数与 R6 相比较。 如果他们相等,程序继续在标签 EQUAL 上执
行。
CMPA #12345h,R6 ; Compare R6 with 12345hJEQ EQUAL ; R5 = 12345h... ; Not equal
示例 比较 R5 R6 中的 20 位值。 如果 R5 大于(带符号)或等于 R6,程序继续在标签
GRE 上执行。
CMPA R6,R5 ; Compare R6 with R5 (R5 - R6)JGE GRE ; R5 >= R6... ; R5 < R6
263
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集说明
www.ti.com.cn
4.6.4.6 DECDA
* DECDA 双递减 20 位目的寄存器
DECDA Rdst
句法
运算Rdst-2Rdst
SUBA #2MRdst
仿仿真
说明 目的寄存器递减 2。 原先的内容丢失。
状态态位N: 如果结果为负则置位,如果为正则复位
Z 如果 Rdst 包含 2则置位,否则复位
C 如果 Rdst 包含 01则复位,否则置位
V: 如果一个算术溢出发生则置位,否则复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例R5 中的 20 位值被乘以 2
DECDA R5 ; Decrement R5 by two
264 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集说明
4.6.4.7 INCDA
* INCDA 双递增 20 位目的寄存器
INCDA Rdst
句法
运算Rdst+2Rdst
ADDA #2MRdst
仿仿真
说明 目的寄存器被递增 2。 原先的内容丢失。
状态态位N: 如果结果为负则置位,如果为正则复位
Z 如果 Rdst 包含 0FFFFFEh 则置位,否则复位
如果 Rdst 包含 0FFFEh 则置位,否则复位
如果 Rdst 包含 0FEh 则置位,否则复位
C 如果 Rdst 包含 0FFFFEh 0FFFFFh 则置位,否则复位
如果 Rdst 包含 0FFFEh 0FFFFh 则置位,否则复位
如果 Rdst 包含 0FEh 0FFh 则置位,否则复位
V 如果 Rdst 包含 07FFFEh 07FFFFh 则置位,否则复位
如果 Rdst 包含 07FFEh 07FFFh 则置位,否则复位
如果 Rdst 包含 07Eh 07Fh 则置位,否则复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例R5 中的 20 位值被乘以 2
INCDA R5 ; Increment R5 by two
265
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集说明
www.ti.com.cn
4.6.4.8 MOVA
MOVA 20 位源操作数移动到 20 位目的操作数
MOVA RsrcMRdst
句法
MOVA #imm20MRdst
MOVA z16(Rsrc)MRdst
MOVA EDEMRdst
MOVA &abs20MRdst
MOVA @RsrcMRdst
MOVA @Rsrc+MRdst
MOVA RsrcMz16(Rdst)
MOVA RsrcM&abs20
运算srcRdst
Rsrcdst
说明20 位源操作数被移到至 20 位目的操作数。 源操作数不受影响。 目的操作数之前的内容
丢失。
状态态位N: 不受影响
Z: 不受影响
C: 不受影响
V: 不受影响
模式式位OSCOFFCPUOFF GIE 不受影响。
示例 R9 20 位复制到 R8
MOVA R9,R8 ; R9 -> R8
20 位立即值 12345h 写入到 R12
MOVA #12345h,R12 ; 12345h -> R12
将由 (R9+100h) 寻址的 20 位值复制到 R8。地(R9+100h) LSB (R9+102h) MSB
中的源操作数。
MOVA 100h(R9),R8 ; Index: + 32 K. 2 words transferred
20 位绝对地址 EDE (LSB) EDE+2 (MSB) 内的 20 位值移动到 R12
MOVA &EDE,R12 ; &EDE -> R12. 2 words transferred
20 位地址 EDE (LSB) EDE+2 (MSB) 内的 20 位值移动到 R12PC 索引 ±32K
MOVA EDE,R12 ; EDE -> R12. 2 words transferred
将指向(20 位地址)的 20 位值复制至 R8。地@R9 LSB @(R9+2) MSB 内的源
操作数。
MOVA @R9,R8 ; @R9 -> R8. 2 words transferred
266 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集说明
将指向(20 位地址)的 20 位值复制至 R8。之R9 增加 4。地@R9 LSB @(R9
+ 2) MSB 内的源操作数。
MOVA @R9+,R8 ; @R9 -> R8. R9 + 4. 2 words transferred.
R8 内的 20 位值复制到 (R9+100h) 寻址的目的操作数。 地址 @(R9+100h) LSB
@(R9+102h) MSB 内的目的操作数。
MOVA R8,100h(R9) ; Index: +- 32 K. 2 words transferred
R13 内的 20 位值移动到 20 位绝对地址 EDE (LSB) EDE+2 (MSB)
MOVA R13,&EDE ; R13 -> EDE. 2 words transferred
R13 内的 20 位值移动到 20 位地址 EDE (LSB) EDE+2 (MSB)PC 索引 ± 32K
MOVA R13,EDE ; R13 -> EDE. 2 words transferred
267
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集说明
www.ti.com.cn
4.6.4.9 RETA
* RETA 从子例程返回
RETA
句法
运算@SP PC.15:0 LSBs (15:0) of saved PC to PC.15:0
SP+2SP
@SP PC.19:16 MSBs (19:16) of saved PC to PC.19:16
SP+2SP
MOVA @SP+MPC
仿仿真
说明 被一个 CALLA 指令压入堆栈的 20 位返回地址被恢复至 PC。 程序继续在子例程调用之
后的地址上执行。 SR SR.11:0 不受影响。 这可实现包含这些位的信息的传送。
状态态位N: 不受影响
Z: 不受影响
C: 不受影响
V: 不受影响
模式式位OSCOFFCPUOFF GIE 不受影响。
示例 调用一个 20 位地址空间内的任一位置上的子例程 SUBR 并且在 CALLA 之后返回至地址
CALLA #SUBR ; Call subroutine starting at SUBR... ; Return by RETA to hereSUBR PUSHM.A
#2,R14 ; Save R14 and R13 (20 bit data)... ; Subroutine codePOPM.A #2,R14 ; Restore
R13 and R14 (20 bit data)RETA ; Return (to full address space)
268 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
指令集说明
4.6.4.10 TSTA
* TSTA 测试 20 位目的寄存器
TSTA Rdst
句法
运算dst+0FFFFFh+1
dst+0FFFFh+1
dst+0FFh+1
CMPA #0MRdst
仿仿真
说明 目的寄存器与零相比较。 根据结果置位状态位。 目的寄存器不受影响。
状态态位N: 如果目的寄存器为负则置位,如果为正则复位
Z: 如果目的寄存器包含零则置位,否则复位
C: 设置
V: 复位
模式式位OSCOFFCPUOFF GIE 不受影响。
示例R7 中的 20 位值被测试。 如果它为负,则继续在 R7NEG 上执行;如果为正但又不为
零,则继续在 R7POS 上执行。
TSTA R7 ; Test R7JN R7NEG ; R7 is negativeJZ R7ZERO ; R7 is zeroR7POS ...... ; R7 is
positive but not zeroR7NEG ...... ; R7 is negativeR7ZERO ...... ; R7 is zero
269
ZHCU032IDecember 2004Revised January 2012 CPUX
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
指令集说明
www.ti.com.cn
4.6.4.11 SUBA
SUBA 20 位目的寄存器中减去 20 位源。
SUBA RsrcMRdst
句法
SUBA #imm20MRdst
运算(.not.src)+1+RdstRdst Rdst-srcRdst
说明 20 位目的寄存器中减去 20 位源操作数。 通过在目的中增加源 + 1 1s 补数来完
成。 结果被写入目的寄存器,源操作数不受影响。
状态态位N 如果结果为负 (src>dst),则置位,如果为正则复位 (srcdst)
Z 如果为零 (src=dst) 则置位,否则复位 (srcdst)
C 如果有来自 MSB (Rdst.19) 的进位,则置位,否则复位
V: 如果从一个正目的操作数中减去一个负源操作数得到一个负结果,或者如果从一个
负目的操作数中减去一个正源操作数得到一个正结果,则置位,否则复位(无溢
出)。
模式式位OSCOFFCPUOFF GIE 不受影响。
示例 R6 中减去 R5 中的 20 位值。 如果一个进位发生,程序继续在标签 TONI 上执行。
SUBA R5,R6 ; R6 - R5 -> R6JC TONI ; Carry occurred... ; No carry
270 CPUX ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Chapter 5
ZHCU032IDecember 2004Revised January 2012
基本本时钟模模块
+
基本时钟模块+MSP430x2xx 系列提供了时钟。 本章阐述了 MSP430x2xx 器件系列的基本时钟模块+
操作。
Topic ........................................................................................................................... Page
5.1 基本本时时钟钟模模块+介绍........................................................................................... 272
5.2 基本本时时钟钟模模块+的操操作........................................................................................ 274
5.3 基本本时时钟钟模模块+寄存存器........................................................................................ 280
271
ZHCU032IDecember 2004Revised January 2012
基本时钟模块
+
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
基本时钟模块
+
介绍
www.ti.com.cn
5.1 基本本时时钟钟模模块+介绍
基本时钟模块+支持低系统成本和超低功耗。 采用三种内部时钟信号,用户可以选择性能和低功耗的最佳平
衡。 为了实现无任何外部元件操作,可在全软件控制下,用一个外部电阻、一个或两个外部晶振、或用振荡
器来配置基本时钟模块+
基本时钟模块+2个,3个或 4个时钟源:
• LFXT1CLK:低频/高频振荡器可以与低频时钟晶振或外接 32768Hz 时钟源,或与标准晶振、振荡器,外
400KHz16MHz 的外部时钟源一起使用。
• XT2CLK:可以与标准晶振、振荡器,或外部 400KHz16MHz 的外部时钟源一起使用的可供选择的高
频振荡器。
• DCOCLK:内部数控振荡器 (DCO)
• VLOCLK:内部超低功耗、12KHz 典型频率的低频振荡器。
基本时钟模块+可提供的三种时钟信号:
• ACLK:辅助时钟。 ACLK 是由软件选择来作为 LFXT1CLK VLOCLKACLK1248分频后
得到。ACLK 可由软件选作各个外围模块。
• MCLK:主机时钟。 MCLK 由软件选择作 LFXT1CLKVLOCLKXT2CLK(如果片上提供),或
DCOCLKMCLK 1248分频得到。MCLK 用于 CPU 和系统。
• SMCLK:系统子时钟。 SMCLK 由软件选作 LFXT1CLKVLOCLKXT2CLK(如果片上提供),或
DCOCLKSMCLK 1248分频得到。SMCLK 可由软件选作各个外围模块。
MSP430F2xx 器件中的基本时钟模块+的方框图如5-1所示。
MSP430AFE2xx 器件中的基本时钟模块+的方框图如5-2所示。
272
基本时钟模块
+ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Divider
/1/2/4/8
DIVAx
MCLK
CPUOFF
LFXT1CLK
DCOCLK
XIN
XOUT
Divider
/1/2/4/8
DIVMx
SMCLK
SCG1
DIVSx
ACLK
Main System Clock
Auxillary Clock
Sub System Clock
DCO
DCOx
DC
Generator
SCG0 RSELx
off
SELS
1
0
SELMx
00
01
10
11 1
0
1
0
Divider
/1/2/4/8
Modulator
1
0
n
n+1
XTS
XCAPx
LFXT1 Oscillator
LF
0 V
LFOff
0 V
Min. Puls
Filter
LFXT1Sx
MODx
else
10
Min. Pulse
Filter
Internal
LP/LF VLOCLK
XT2IN
XT2OUT
XT2OFF
XT
Min. Pulse
Filter
Connected only when
XT2 not present on−chip
XT2S
VCC
1
0
DCOR
Oscillator
XT1Off
XT2 Oscillator
Rosc
OSCOFF
XT
www.ti.com.cn
基本时钟模块
+
介绍
5-1. 基本本时时钟钟模模块+框图— MSP430F2xx
: 特定定器器件件的的时时钟钟变变化
并不是在所有的 MSP430x2xx 器件上所有的时钟特性都可用:
MSP430G22x0:没有 LFXT1,没有 XT2,不支持 ROSC
MSP430F20xxMSP430G2xx1MSP430G2xx2MSP430G2xx3LFXT1 不支持 HF
式,没有XT2,不支持 ROSC
MSP430x21x1:没有内部 LP/LF 振荡器,没有 XT2,不支持ROSC
MSP430x21x2:没有 XT2
MSP430F22xx, MSP430x23x0:没有 XT2
273
ZHCU032IDecember 2004Revised January 2012
基本时钟模块
+
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Divider
/1/2/4/8
DIVAx
MCLK
CPUOFF
DCOCLK
Divider
/1/2/4/8
DIVMx
SMCLK
SCG1
DIVSx
ACLK
Main System Clock
Auxillary Clock
Sub System Clock
DCO
DCOx
DC
Generator
SCG0 RSELx
off
SELS
1
0
SELMx
00
01
10
11
1
0
1
0
Divider
/1/2/4/8
Modulator
1
0
n
n+1
Min. Puls
Filter
MODx
else
10
Internal
LP/LF
VLOCLK
XT2IN
XT2OUT
XT2OFF
XT
Min. Pulse
Filter
XT2Sx
VCC
XT2 Oscillator
OSCOFF
LFXT1Sx
基本时钟模块
+
的操作
www.ti.com.cn
5-2. 基本本时时钟钟模模块+框图— MSP430AFE2xx
:MSP430AFE2xx 器件中没有 LFXT1
5.2 基本本时时钟钟模模块+的操操作
在一个 PUC 后,MCLK SMCLK 来自 1.1MHz DCOCLK(有关数据请参阅《特定器件数据
表》),ACLK 来自于带有一个 6pF 电容内部负载的处于高频模式的 LFXT1CLK
状态寄存器中的位 SCG0SCG1OSCOFF,和 CPUOFF 配置 MSP430操作模式和使能或禁止部分基本
时钟模块+(请参阅
系统复位,中断,和运行模式
章节)。 DCOCTLBCSCTL1BCSCTL2,和
BCSCTL3 寄存器配置基本时钟模块+
在程序执行时,基本时钟模块+能够通过软件设置或重设置,例如:
CLR.B &DCOCTL ; Select lowest DCOx; and MODx settingsBIS.B #RSEL2+RSEL1+RSEL0,&BCSCTL1 ; Select
range 7BIS.B #DCO2+DCO1+DCO0,&DCOCTL ; Select max DCO tap
5.2.1
低功功耗耗应应用用的的基本时时钟钟模模块
+
的特特性
电池供电应用中通常存在相互矛盾的要求。
274
基本时钟模块
+ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
XT2 is an Internal Signal
XT2 = 0: Devices without XT2 oscillator
XT2 = 1: Devices with XT2 oscillator
ACLK_request
MCLK_request
OSCOFF
CPUOFF
SCG1
SELS
SMCLK_request
SELM0
XSELM1
XT2
XTS
LFOff
XT1Off
LFXT1Off
www.ti.com.cn
基本时钟模块
+
的操作
低时钟频率,以节约能源和测时
针对快速对事件做出反应及快速突发处理能力的高时钟频率。
运行温度和电源电压上的时钟稳定
基本时钟模块+通过允许用户从三个可用的时钟信号中做出选择来解决上述相互矛盾的要求:ACLKMCLK
SMCLK。 对于理想的低功耗模式,ACLK 来自一个低功耗的 32768Hz 时钟晶振(如果可用的话),为
系统和低功耗操作提供一个稳定的时钟基础,当晶振的精确度时间保持不被要求时,或可来自内部低频振荡
器。 当请求中断驱动事件发时,为了由可激活的片上 DCO 运行,MCLK 可被配置。 为了由一个晶振或
DCO 运行,SMCLK可被配置,这取决于外围设备要求。 可提供一个灵活的时钟分配和分频系统来对各个时
钟要求进行微调。
5.2.2
内部部超超低低功功耗耗低频振振荡荡器
(VLO)
内部超低功耗、低频率振荡器 (VLO) 不需要一个晶振就能提供12kHz(有关参数请参阅《特定器件的数据手
册》)的典型频率。 当 XTS = 0 时,可通过设置 LFXT1Sx = 10 来选定 VLOCLK源。OSCOFF 位禁用
LPM4 VLO。当 VLO 被要求减小电流消耗时,LFXT1 晶体振荡器被关闭。VLO 在不使用时不消耗功
率。
为了把VLO 用作 ACLK,应该配置没有 LFXT1(例如,MSP430G22x0)的器件。
5.2.3 LFXT1
振荡荡器
MSP430G22x0 器件系列中没有执行 LFXT1 振荡器。
LFXT1 振荡器通过在 LF 模式下 (XTS=0) 采用 32768Hz 时钟晶振来支持极小电流消耗。 一个时钟晶振连接
XIN XOUT 不需要任何其他外部组件。 在 LF 模式中,可选的软件 XCAPx 位为 LFXT1晶振配置内部
提供的负载电容。 这个电容值可以被选作 1pF6pF10pF、或典型z12.5pF。 必要的话还可添加额外的
外部电容。
当在 HF 模式(XTS=1) 时,LFXT1 振荡器还支持高速晶振或者振荡器。 高速晶振或振荡器可接到 XIN
XOUT ,且两端都需外部电容。 应当根据晶振或振荡器来决定电容的大小。 当 LFXT1 处于 HF 模式
时,LFXT1Sx 位选择操作的范围。
LFXT1Sx11OSCOFF=0 XCAPx = 00 时,可以把 LFXT1 与在 XIN 引脚上的处于 HF LF 模式
的外部时钟信号一起使用。 当与外部时钟信号一起使用时,外部频率必须满足已选模式的数据手册参数。
当输入频率低于指定的最低限时,为了防止 CPU 采用被 LFXT1CLK 计时,必须置位 LFXT1OF 位。
如果 LFXT1CLK 不来自 SMCLK MCLK,软件可以通过设置 OSCOFF 来禁用 LFXT1,如5-3中所示。
5-3. LFXT1 振荡荡器器的的关关闭闭信信号
275
ZHCU032IDecember 2004Revised January 2012
基本时钟模块
+
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
MCLK_request
CPUOFF
SCG1
SELS
SMCLK_request
XSELM1
SYNC
DCOCLK
XT2CLK
QD
SCG0
DCOCLK_on
1: on
0: off
1: on
0: off
DCO_Gen_on
DCOCLK
MCLK_request
CPUOFF
SCG1
SELS
SMCLK_request
SELM0
XSELM1
XT2OFF
XT2off (Internal Signal)
基本时钟模块
+
的操作
www.ti.com.cn
: LFXT1 振荡荡器器的的特特性
低频率晶振通常需要几百毫秒的来启动,具体取决于晶振。
超低功耗振荡器如 LFXT1 LF 模式下应当远离其他来源的耦合的噪音干扰。 通过晶振外壳
接地且用接地走线保护晶振走线来使晶振应尽量靠近 MSP430
5.2.4 XT2
振荡荡器
有些器件有一个第二晶振振荡器,XT2XT2 来源于 XT2CLK,且特性和处于 HF 模式的 LFXT1 是相同
的。 XT2Sx 位选择 XT2的操作范围。 如果 XT2CLK 没有被用作 MCLK SMCLK 的时钟源,则 XT2OFF
位会禁用 XT2 振荡器,如5-4所示。
XT2Sx11 XT2OFF0时,XT2 可以与 XT2IN 引脚上的外部时钟信号一起使用。当与外部信号一起
使用时,外部频率必须满足 XT2 数据手册中的参数。 当输入频率低于指定的最低值时,为了防止 CPU
XT2CLK 作为时钟,可对 XT2OF 进行置位。
5-4. XT2 振荡荡器器的的关关闭闭信信号
5.2.5
数控控振振荡荡器
(DCO)
DCO 是一个内置的数字控制振荡器。 DCO 的频率可通过软件使用 DCOxMODx,和 RSELx 位来调节。
5.2.5.1 禁用DCO
DCOCLK 在活动模式中没被用作 MCLK SMCLK 信号源时,可通过设置 SCG0 用软件使能
DCOCLK,如在5-5中所示。
5-5. DCO 的开/关控控制
276
基本时钟模块
+ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
RSEL=0
RSEL = 15
DCO=0 DCO=7DCO=4DCO=1 DCO=2 DCO=3 DCO=5 DCO=6
fDCO
20000 kHz
100 kHz
1000 kHz
RSEL = 7
www.ti.com.cn
基本时钟模块
+
的操作
5.2.5.2 调整DCO 的频频率
在一个 PUC 之后,RSELx = 7 DCOx = 3,可允许 DCO 在一个中段频率启动。 MCLK SMCLK 都来
DCO。因CPU 执行来自 MCLK 的编码,MCLK来源于快速启动的 DCO,代码通常从 PUC 不到 2μs
时开始执行。5-6给出了典型的 DCOx RSELx 的范围和阶跃。
COCLK 的频率根据以下功能设定:
四个 SELx 位选择 DCO 16 个标称频率范围其中的一个。在特定器件的数据手册中针对一个单独器件
的对这些范围进行了定义。
3 DCOX 位把由 RSELx 位选择的 DCO的范围分频成 8个频率阶跃,大约 10% 分频。
5 MODx 位,在由 DCOX 位选择的频率和下一个由 DCOX+1 设置的更高的频率之间的切换。 当
DCOx07H 时,由于DCOx 已经处于已选 RSELx 范围的最高设置,因此 MODx 位无效。
5-6. 典型型的DCOX 范围围和RSELx 的阶阶跃
每一个 MSP430F2xx 器件(以及大多数 MSP430G2xx 器件;请参阅《特定器件的数据手册》已为存放在信
息存储段 A中的特殊频率校准了 DCOCTL BCSCTL1 寄存器的设置。为了使用校准设置,信息被复制到
DCOCTLBCSCTL1寄存器中。 已校准设置会影响DCOxMODx,和 RSELx 位,除了 XT2OFF 位保持
设置外,所有其它位都被清零。 剩余的 BCSCTL1 位能够根据需要通过 BIS.B BIC.B 指令来置位或清
零。
; Set DCO to 1 MHz:CLR.B &DCOCTL ; Select lowest DCOx; and MODx settingsMOV.B
&CALBC1_1MHZ,&BCSCTL1 ; Set rangeMOV.B &CALDCO_1MHZ,&DCOCTL ; Set DCO step + modulation
5.2.5.3 一个个外外部部电电阻(ROSC)用于DCO
DCOR=1 时,一些 MSP430F2xx 器件通过一个外部电阻,,ROSC,接到 DVCC来为 DCO 电流源提供选
择。在这种情况下,DCO MSP430x1xx 系列具有相同的特性,除 RSEL3 被忽略外,RSELX 设置被限定
07。 为了通过改变电阻值来调整 DCO的频率,这个选择为此提供了另一种方法。 有关参数请参阅《
特殊器件数据手册》。
5.2.6 DCO
调制制器
为了 fDCOfDCO+1能在fDCOfDCO+1 之间产生一个有效中段频率并发出时钟能量,减小电磁干扰 (EMI),该调节器混合了
两种 DCO 频率。 该调制器为 32 DCOCLK时钟周期混合了 fDCOfDCO+1,且是用 MODx 位配置的。
MODx = 0 时,该调制器关闭。
调制器混频公式为:
t = (32-MODx) × tDCO+ MODx ×tDCO+1
277
ZHCU032IDecember 2004Revised January 2012
基本时钟模块
+
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
MODx
Lower DCO Tap Frequency f
DCO
31
24
16
15
5
4
3
2
1
0
Upper DCO Tap Frequency f
DCO+1
基本时钟模块
+
的操作
www.ti.com.cn
由于 fDCO低于有效频率而fDCO+1高于有效频率,所以有效频率误差的积分为零。 它不会累积。 有效频率的误
差每 32 DCOCLK就归零。5-7说明了调节器操作。
调节器设置和 DCO 控制都是用软件配置的。 DCOCLK 可以和一个已知值的稳定频率进行对比,并用
DCOxRSELx MODx 位进行调节。 有关应用说明和 DCO 配置代码示例请参
http://www.msp430.com
5-7. 调制制器器模模式
5.2.7
基本本时时钟钟模模块
+
的故故障障安安全全操操作
基本时钟模块+集成了一个振荡器故障的故障安全功能。 该功能能够检测到 LFXT1 XT2 的振荡器故障,
如在5-8中所示。 可能失效的情况有:
LF 模式下 LFXT1 的低频振荡器故障 (LFXT1OF)
HF 模式下 LFXT1 的高频振荡器故障 (LFXT1OF)
XT2 的高频振荡器故障 (XT2OF)
如果相应的晶振振荡器打开且操作不当时,晶振振荡器故障位 LFXT1OF,和 XT2OF 就会被置位。 只要故
障条件存在故障位就保持置位,直到使能振荡器得到正常操作才自动清零。
当测试到振荡器故障(LFXT1OF XT2OF) 时,OFIFG 振荡器故障标志被置位,并且锁定到 POR。 当
OFIFG 被置位时,MCLK DCO 为源,且如果 OFIE 被置位,则 OFIFG 会请求一个不可屏蔽 (NMI)
断。 当中断得到响应,OFIE 会自动复位。 必须由软件清零 OFIFG 标志。 可以通过测试各个故障位确定失
效源。
假如在以 MCLK 为源的晶振振荡器中检测到故障,则 MCLK会被自动切换到以 DCO 为时钟源。 这不会改
SELMx 位的设置。 这种情况由用户软件操作。
278
基本时钟模块
+ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
DCOCLK
LFXT1CLK
MCLK
LFXT1CLK
DCOCLK
Select
LFXT1CLK
Wait for
LFXT1CLK
LF_OscFault
XT1_OscFault
XT2_OscFault
XTS
XT2OF
LFXT1OF
Set OFIFG Flag
www.ti.com.cn
基本时钟模块
+
的操作
5-8. 振荡荡器器故故障障逻逻辑
5.2.7.1 MCLK 以晶晶振振为为时时钟钟源
一次 PUC 之后,基本时钟模块+DCOCLK 用于 MCLK。 如果需要,MCLK 也可以来自 LFXT1 XT2 -
如果可用的话。
MCLK 的源从 DCO 时钟转换成晶振时钟(LFXT1CLK XT2CLK) 的顺序是:
1. 打开晶体振荡器并选择合适的模式
2. 清零 OFIFG 标志
3. 等待至少 50uS
4. 测试 OFIFG,并重复 24的步骤,直到 OFIFG 保持被清零。
; Select LFXT1 (HF mode) for MCLKBIC.W #OSCOFF,SR ; Turn on osc.BIS.B #XTS,&BCSCTL1 ; HF
modeMOV.B #LFXT1S0,&BCSCTL3 ; 1-
3MHz CrystalL1 BIC.B #OFIFG,&IFG1 ; Clear OFIFGMOV.W #0FFh,R15 ; DelayL2 DEC.W R15 ; JNZ L2
;BIT.B #OFIFG,&IFG1 ; Re-
test OFIFGJNZ L1 ; Repeat test if neededBIS.B #SELM1+SELM0,&BCSCTL2 ; Select LFXT1CLK
5.2.8
时钟钟信信号号的的同同步
当把 MCLK SMCLK 从一个时钟源切换到另一个时,为了避免临界竞争条件,该转换必须同步,如在
5-9中所示。
当前时钟周期持续到下一个上升沿。
时钟保持高电平直到新时钟的下一个上升沿。
新时钟源被选择并且持续全高电平一段时间。
5-9. MCLK DCOCLK 切换换至LFXT1CLK
279
ZHCU032IDecember 2004Revised January 2012
基本时钟模块
+
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
基本时钟模块
+
寄存器
www.ti.com.cn
5.3 基本本时时钟钟模模块+寄存存器
5-1中列出了基本时钟模块+寄存器。
5-1. 基本本时时钟钟模模块+寄存存器
寄存存器 简表表 寄寄存存器器类型 地地址址 初初始化状状态
DCO 控制寄存器 DCOCTL 读取/写入 056h 060h PUC
基本时钟系统控制 1 BCSCTL1 读取/写入 057h 087h POR(1)
基本时钟系统控制 2 BCSCTL2 读取/写入 058h PUC 复位
基本时钟系统控制 3 BCSCTL3 读取/写入 053h 005h PUC(2)
SFR 中断使能寄存器 1 IE1 读取/写入 000h PUC 复位
SFR 中断标志寄存器 1 IFG1 读取/写入 002h PUC 复位
(1) 一些寄存器位也被 PUC 初始化(请参见5.3.2 )。
(2) MSP430AFE2xx器件中 BCSCTL3 的初始状态是 000h
280
基本时钟模块
+ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
基本时钟模块
+
寄存器
5.3.1 DCOCTL
DCO
控制制寄寄存存器
76543210
DCOx MODx
rw-0 rw-1 rw-1 rw-0 rw-0 rw-0 rw-0 rw-0
DCOx 7-5 DCO 频率选择。 这些位选择是 RSELx 设置的界定范围中的八个离散 DCO 频率中的一个。
MODx 4-0 调制器选择。 这几位决定在一个 32 DCOCLK 周期内 fDCO+1频率被用的次数。 在持续的时钟周期内 (32-
MOD),使用了 fDCO频率。 当 DCOx=7时 不被采用。
5.3.2 BCSCTL1
,基基础础时时钟钟系系统控制制寄寄存存器
1
76543210
XT2OFF XTS(1)(2) DIVAx RSELx
rw-(1) rw-(0) rw-(0) rw-(0) rw-0 rw-1 rw-1 rw-1
XT2OFF 7 XT2 关闭。 此位关闭了 XT2 振荡器
0 XT2 被开启
1如果不使用 MCLK SMCLK 的话,XT2 就会被关闭。
XTS 6 LFXT1 模式选择。
0低频模式
1高频模式
DIVAx 5-4 ACLK 分压器
00 /1
01 /2
10 /4
11 /8
RSELx 3-0 范围选择。 16 个不同的频率范围可用。 通过设置 RSELx= 0 来选择最低频率范围。当 DCOR= 1 RSEL3
被忽略。
(1) MSP430x20xx MSP430G2xx器件中不支持 XTS = 1(有关所有器件所支持设置的详细信息,请参阅5-15-2)。
(2) MSP430AFE2xx器件中保留了该位。
281
ZHCU032IDecember 2004Revised January 2012
基本时钟模块
+
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
基本时钟模块
+
寄存器
www.ti.com.cn
5.3.3 BCSCTL2
,基基础础时时钟钟系系统控制制寄寄存存器
2
76543210
SELMx DIVMx SELS DIVSx DCOR(1)(2)
rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0
SELMx 7-6 选择 MCLK。 这些位选择 MCLK 源。
00 DCOCLK
01 DCOCLK
10 当片上有 XT2 振荡器时,XT2CLK。 当片上没有XT2 振荡器时,LFXT1CLK VLOCLK
11 LFXT1CLKVLOCLK
DIVMx 5-4 MCLK 分压器
00 /1
01 /2
10 /4
11 /8
SELS 3选择 SMCLK。 该位选择 SMCLK 的来源。
0 DCOCLK
1当有 XT2 振荡器时,XT2CLK。 当没有 XT2 振荡器时,LFXT1CLK VLOCLK
DIVSx 2-1 SMCLK 分压器
00 /1
01 /2
10 /4
11 /8
DCOR 0 DCO 电阻选择。 不适用于所有设备。 请参阅《特定器件数据手册》。
0内部电阻
1外部电阻
(1) 不适用于 MSP430x20xx MSP430x21xx器件。
(2) MSP430AFE2xx器件中保留了该位。
282
基本时钟模块
+ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
基本时钟模块
+
寄存器
5.3.4 BCSCTL3
,基基础础时时钟钟系系统控制制寄寄存存器
3
76543210
XT2Sx LFXT1Sx(1) XCAPx(2) XT2OF(3) LFXT1OF(2)
rw-0 rw-0 rw-0 rw-0 rw-0 rw-1 r0 r-(1)
XT2Sx 7-6 XT2 范围选择。 这些位为 XT2 选择频率范围。
00 0.4 1MHz 的晶振或谐振器
01 1 13MHz 的晶振或谐振器
10 3 16MHz 的晶振或谐振器
11 数字化外部 0.4 16MHz 的时钟源
LFXT1Sx 5-4 低频率时钟选择和 LFXT1 范围选择。 当 XTS = 0 时, 这些位在 LFXT1VLO 之间选择,且当 XTS = 1 时,
会选择 LFXT1 频率范围。
XTS = 0 时:
00 LFXT1 上的 32768Hz 晶振
01 被保留
10 VLOCLK(保留在 MSP430F21x1 器件中)
11 数字外部时钟源
XTS =1 时(不适用于 MSP430x20xx器件,MSP430G2xx1/2/3
00 0.4 1MHz 的晶振或谐振器
01 1 13MHz 的晶振或谐振器
10 3 16MHz 的晶振或谐振器
11 数字化外部 0.4 16MHz 的时钟源
MSP430AFE2xx器件的 LFXT1Sx 定义:
00 被保留
01 被保留
10 VLOCLK
11 被保留
XCAPx 3-2 振荡器的电容选择。 当 XTS = 0 时,这些位选择有效电容,请参见 LFXT1 晶振。如果 XTS =1 LFXT1Sx=
11XCAPx 应该是 00
00 ~1pF
01 ~6pF
10 ~10pF
11 ~12.5pF
XT2OF 1 XT2 振荡器失效
0不存在失效条件
1存在失效条件
LFXT1OF 0 LFXT1 振荡器失效
0不存在失效条件
1存在失效条件
(1) MSP430G22x0:在初始化和启动代码选择 VLOCLK 期间,LFXT1Sx 位应该被编程为 10b(更多信息请参阅数字 I/O章节)。 其它位被保
留且不应该改变。
(2) MSP430AFE2xx器件中保留了该位。
(3) 不适用于 MSP430x2xxMSP430x21xx,或MSP430x22xx 器件。
283
ZHCU032IDecember 2004Revised January 2012
基本时钟模块
+
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
基本时钟模块
+
寄存器
www.ti.com.cn
5.3.5 IE1
,中中断断使使能能寄寄存
1
76543210
OFIE(1)
rw-0
7-2 这些位可以用于其他模块。 请参阅《特定器件数据手册》。
OFIE 1振荡器故障中断使能.该位使能 OFIFG 中断。 因为在 IE1 中其他位可用于其他模块,故建议使用 BIS.B
BIC.B 指令,而非 MOV.B CLR.B 指令来置位或清零此位。
0中断未被启用
1中断被启用
0该位可用于其他模块。 请参阅《特定器件数据手册》。
(1) MSP430G22x0:该位不应被置位。
5.3.6 IFG1
,中中断断标标志志寄寄存
1
76543210
OFIFG(1)
rw-1
7-2 这些位可用于其他模块。 请参阅《特定器件数据手册》。
OFIFG 1振荡器故障中断标志。 因为在 IFG1 中其他位可用于其他模块,故建议使用 BIS.BBIC.B 指令,而非MOV.B
CLR.B 指令来置位或清零此位。
0无中断等待
1中断等待
0该位可用于其他模块。 请参阅《特定器件数据手册》。
(1) MSP430G22x0LFXT1 振荡器的引脚在这个器件中不可用。 振荡器故障标志将始终由硬件置位。 不应设置中断使能位。
284
基本时钟模块
+ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Chapter 6
ZHCU032IDecember 2004Revised January 2012
DMA
控制制器
在无需 CPU 干预的情况下,DMA 控制器模块可将数据从一个地址移动到另外一个地址。 这一章将介绍
MSP430x5xx 器件系列中 DMA 控制器的操作。
Topic ........................................................................................................................... Page
6.1 DMA 介绍........................................................................................................ 286
6.2 DMA 操作........................................................................................................ 288
6.3 DMA 寄存存器..................................................................................................... 300
285
ZHCU032IDecember 2004Revised January 2012 DMA
控制器
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
DMA
介绍
www.ti.com.cn
6.1 DMA 介绍
直接存储器存取 (DMA) 控制器可以在全部地址范围内把数据从一个地址传输到另外一个地址,而无须 CPU
干预。 例如,DMA 控制器可以把数据从 ADC12 转换存储器中直接传输到 RAM 中。
包含一个 DMA 控制器的器件可能有一个,两个,或三个可用的 DMA 通道。 因此,根据 DMA 通道数量的
不同,在这一章中有些特性并不对适用于所有器件。
通过使用 DMA 控制器可增加外设模块的吞吐量。 通过使 CPU 保持在睡眠模式,而无需将其唤醒来从一个
外设中移动数据,它也会减少系统功耗。
DMA 控制器的功能包括:
多达 8个独立的传输通道
可配置的 DMA 通道的优先级
每次传输仅需要两个 MCLK 时钟周期
字节或字和混合字/字节传输能力
字区大小高达 65536 字节或字
可配置的传输触发选择
可选择的边沿或电平触发传输
四种寻址方式
单次,块,或突发块传输模式
6-1中给出了 DMA 控制器的结构图。
286 DMA
控制器
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
ENNMI
DT
DMA Channel 2
DMASRSBYTE
DMA2SZ
DMA2DA
DMA2SA
DMADSTBYTE
DMASRCINCRx
DMADSTINCRx
2
2
3
DMADTx
DMAEN
DT
DMA Channel 1
DMASRSBYTE
DMA1SZ
DMA1DA
DMA1SA
DMADSTBYTE
DMASRCINCRx
DMADSTINCRx
2
2
3
DMADTx
DMAEN
DT
DMA Channel 0
DMASRSBYTE
DMA0SZ
DMA0DA
DMA0SA
DMADSTBYTE
DMASRCINCRx
DMADSTINCRx
2
2
3
DMADTx
DMAEN
Address
Space
NMI Interrupt Request
JTAG Active
Halt
Halt CPU
ROUNDROBIN
DMAONFETCH
DAC12_0IFG
DMAE0
DMAREQ
DMA0TSELx
4
DMA2IFG
TACCR2_CCIFG
TBCCR2_CCIFG
ADC12_IFGx
0000
0001
0010
0011
0100
0101
1101
1111
1110
0110
USCI A0 data receive
USCI A0 data transmit
1100
0111
USCI B0 data transmit
USCI B0 data receive
TACCR0_CCIFG
1000
TBCCR0_CCIFG
1010
1001
USCI A1 data Tx
USCI A1 data Rx
1011
Multiplier ready
DMA Priority And Controll
DAC12_0IFG
DMAE0
DMAREQ
DMA1TSELx
4
DMA0IFG
TACCR2_CCIFG
TBCCR2_CCIFG
ADC12_IFGx
0000
0001
0010
0011
0100
0101
1101
1111
1110
0110
1100
0111
TACCR0_CCIFG
1000
TBCCR0_CCIFG
1010
1001
1011
Multiplier ready
DAC12_0IFG
DMAE0
DMAREQ
DMA2TSEL
4
DMA1IFG
TACCR2_CCIFG
TBCCR2_CCIFG
ADC12_IFGx
0000
0001
0010
0011
0100
0101
1101
1111
1110
0110
1100
0111
TACCR0_CCIFG
1000
TBCCR0_CCIFG
1010
1001
1011
Multiplier ready
USCI A0 data receive
USCI A0 data transmit
USCI B0 data transmit
USCI B0 data receive
USCI A0 data receive
USCI A0 data transmit
USCI B0 data transmit
USCI B0 data receive
USCI A1 data Tx
USCI A1 data Rx
USCI A1 data Tx
USCI A1 data Rx
www.ti.com.cn
DMA
介绍
6-1. CAN 控制制器器结结构构图
287
ZHCU032IDecember 2004Revised January 2012 DMA
控制器
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Address SpaceAddress Space
DMA
Controller Address Space Address Space
DMA
Controller
DMA
Controller
DMA
Controller
Fixed Address To Block Of Addresses
Fixed Address To Fixed Address
Block Of Addresses To Fixed Address Block Of Addresses To Block Of Addresses
DMA
操作
www.ti.com.cn
6.2 DMA 操作
DMA 控制器由用户软件配置。 DMA 的建立和操作将在下面的部分进行讨论。
6.2.1 DMA
寻址址模模式
DMA 控制器有四种寻址模式。 对于每个 DMA 通道的寻址模式都是可独立可配置的。 例如,通道 0可以在
两个固定的地址间传输,而通道 1可在地址的两个块间传输。 在6-2中给出了寻址模式。 这些寻址模式
是:
固定的地址到固定的地址
固定的地址到地址块
地址块到固定的地址
地址块到地址块
寻址方式由 DMASRCINCRx DMADSTINCRx 控制位配置。 DMASRCINCRx 位选择在每次传输结束后
源地址是否不变、增加还是减少。 DMADSTINCRx 位选择在每次传输结束后目标地址是否不变、增加还是
减少。
传输可以是字节到字节、字到字、字节到字、或字到字节。 当字到字节传输时,只有源字节的低字节会被传
输。 当是字节到字传输时,目标字的高字节将会在传输发生的时候被清除。
6-2. DMA 寻址址模模式
288 DMA
控制器
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
DMA
操作
6.2.2 DMA
传输输模模式
如在6-1中所给,DMA 控制器有六种传输模式,这些模式都由 DMADTx 位选择。 每个通道都可以独立配
置其传输模式。 例如,可在单次传输模式下配置通道 0,而通道 1可以配置为突发块传输模式,且通道 2
可在重复块模式下操作。 传输模式独立于寻址模式进行配置。 任何寻址模式都可以使用任何传输模式。
DMAxCTL DSTBYTE SRCBYTE 区域选择的数据的两种类型可以被传输。 源和/或目标位置都可以是
字或字数据。 它也可以在字节到字节、字到字或任何组合之间的进行传输。
6-1. DMA 传输输模模式
DMADTx 传输输模式 说说明
000 单次传输 每次传输都需要一个单独的触发。 当 DMAxSZ 传输已经生成时 DMAEN 会被自动
清零。
001 块传输 一个整块将会在一个触发后传输。 在块传输结束时 DMAEN 会被自动清零。
010, 011 突发块传输 CPU 操作与块传输交叉进行。 DMAEN 位会在突发块传输结束时自动清零。
100 重复单次传输 每次传输需要一个触发。 DMAEN 保持被启用。
101 重复块传输 一个完整块传输需要一个触发。 DMAEN 保持被启用。
110, 111 重复突发块传输 CPU 操作与块传输交叉进行。 DMAEN 保持被启用。
289
ZHCU032IDecember 2004Revised January 2012 DMA
控制器
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Reset
Wait for Trigger
Idle
Hold CPU,
Transfer one word/byte
[+Trigger AND DMALEVEL = 0 ]
OR
[Trigger=1AND DMALEVEL=1]
DMAABORT=0
DMAABORT = 1
2 x MCLK
DMAEN = 0
Modify T_SourceAdd
Modify T_DestAdd
Decrement DMAxSZ
[ENNMI = 1
AND NMI event]
OR
[DMALEVEL = 1
AND Trigger = 0]
[ DMADTx = 0
AND DMAxSZ = 0]
OR DMAEN = 0
DMAxSZ T_Size
DMAxSA T_SourceAdd
DMAxDA T_DestAdd
DMAREQ = 0
DMAxSZ > 0
AND DMAEN = 1
DMAEN = 0
DMAEN = 1
T_Size DMAxSZ
DMAxSA T_SourceAdd
DMAxDA T_DestAdd
DMADTx = 4
AND DMAxSZ = 0
AND DMAEN = 1
DMAEN = 0
DMAREQ = 0
T_Size DMAxSZ
DMA
操作
www.ti.com.cn
6.2.2.1 单次次传传输
在单次传输模式中,每字节/字的传输都需要一个单独的触发。 在6-3中给出了单次传输状态图。
DMAxSZ 寄存器用来定义每次传输的数目。 DMADSTINCRx DMASRCINCRx 位用来选择在每次传输结
束后目标地址和源地址是否增加或减少。 如果 DMAxSZ=0,则没有传输发生。
DMAxSADMAxDA,和 DMAxSZ 寄存器都会被复制到临时寄存器中。 在每次传输结束后,DMAxSA
DMAxDA 的临时值都会增加或者减少。 在每次传输结束后 DMAxSZ 寄存器中的值会减少。 当 DMAxSZ
存器的值减少至 0时,将会从其临时寄存器中重载并且相应的 DMAIFG 标志将会置位。 当 DMADTx=0
时,DMAEN 位将会被自动清零,当 DMAxSZ 减至 0时必须为下一次传输的产生重新设置。
在重复的单次传输模式中,DMAEN=1 DMA 控制器保持被启用,每当一个触发后就会发生一个传输。
6-3. DMA 单次次传传输输的的状状态态图
290 DMA
控制器
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
DMA
操作
6.2.2.2 块传传输
在块传输模式中,数据的一个整块的一个传输将会在一个触发后开始传输。 当 DMADTx=1 时,在块传输结
束后 DMAEN 位将会被清零并需在另一个块传输被触发前重新置位。 在一个块传输被触发后,在块传输的
过程中接下来的触发信号将会被忽略。 在6-4中给出了块传的输状态图。
DMAxSZ 寄存器用来定义块的大小,DMADSTINCRx DMASRCINCRx 位用来选择在每次块传输结束后
目标地址和源地址是否增加或减少。 如果 DMAxSZ=0,则没有块传输发生。
DMAxSADMAxDA,和 DMAxSZ 寄存器都会被复制到临时寄存器中。 在每次块传输结束后,DMAxSA
DMAxDA 的临时值都会增加或者减少。 在每次块传输结束后 DMAxSZ 寄存器中的值会减少并且会指示
块中还剩余多少数据。 当 DMAxSZ 寄存器的值减少至 0时将会从其临时寄存器中重载并且相应的 DMAIFG
标志将被置位。
在一个块传输中,在块传输完成时 CPU 将会暂停。 块传输将用 2 x MCLK x DMAxSZ 个时钟周期来完成。
在块传输完成后 CPU 将会以其先前的状态继续执行。
在重复块传输模式中,在每个块传输完成后 DMAEN 位将保持置位。 在一个重复块传输的一个完成后,下
一个触发将触发另一个块传输。
291
ZHCU032IDecember 2004Revised January 2012 DMA
控制器
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Reset
Wait for Trigger
Idle
Hold CPU,
Transfer one word/byte
[+Trigger AND DMALEVEL = 0 ]
OR
[Trigger=1AND DMALEVEL=1]
DMAABORT=0
DMAABORT = 1
2 x MCLK
DMAEN = 0
Modify T_SourceAdd
Modify T_DestAdd
Decrement DMAxSZ
DMAxSZ > 0
[ENNMI = 1
AND NMI event]
OR
[DMALEVEL = 1
AND Trigger = 0]
[DMADTx = 1
AND DMAxSZ = 0]
OR
DMAEN = 0
DMAxSZ T_Size
DMAxSA T_SourceAdd
DMAxDA T_DestAdd
DMAREQ = 0
T_Size DMAxSZ
DMAxSA T_SourceAdd
DMAxDA T_DestAdd
DMADTx = 5
AND DMAxSZ = 0
AND DMAEN = 1
DMAEN = 0
DMAEN = 1
DMAEN = 0
DMAREQ = 0
T_Size DMAxSZ
DMA
操作
www.ti.com.cn
6-4. DMA 块传传输输的的状状态态图
292 DMA
控制器
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
DMA
操作
6.2.2.3 突发发块块传传输
在突发模式中,传输是在 CPU 交叉存取下的块传输。 在每个块的四个字节/字传输后,CPU 将运行 2
MCLK 周期,如此导致了 20% CPU 运行容量。 在突发块之后,CPU 将会在 100% 的容量下运行并且
DMAEN 位将被清零。 在另一个突发块传输被触发前 DMAEN 位必须重新置位。 在一个突发块传输被触发
后,在突发块传输期间,接下来的触发信号将会被忽略。 在6-5中给出了突发块传输的状态图。
DMAxSZ 寄存器用来定义块的大小,且 DMADSTINCRx DMASRCINCRx 用来选择在每次块传输后目标
地址和源地址是否增加或者减少。 如果 DMAxSZ=0,则没有传输发生。
DMAxSADMAxDA,和 DMAxSZ 寄存器都会被复制到临时寄存器中。 在每次块传输结束后 DMAxSA
DMAxDA 的临时值都会增加或者减少。 在每次块传输结束后 DMAxSZ 寄存器中的值会减少并且会指示块中
还剩余多少数据。 当 DMAxSZ 寄存器的值减少至 0时将会从其临时寄存器中重载并且相应的 DMAIFG
志将被置位。
在重复突发块模式中,在突发块传输完成后,DMAEN 位将保持置位且不再需要额外的触发信号来启动另一
次突发块传输。 另一个突发块传输将在一个突发块传输完成后立即开始。 在这种情况下,通过清零
DMAEN 位必须停止传输,或当 ENNMI 被置位时由一个 NMI 中断引起。 在重复突发块模式中,CPU 持续
20% 的容量运行直到重复突发块传输停止。
293
ZHCU032IDecember 2004Revised January 2012 DMA
控制器
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
2 x MCLK
Reset
Wait for Trigger
Idle
Hold CPU,
Transfer one word/byte
Burst State
(release CPU for 2xMCLK)
[+Trigger AND DMALEVEL= 0 ]
OR
[Trigger=1AND DMALEVEL=1]
DMAABORT=0
DMAABORT = 1
2 x MCLK
DMAEN = 0
Modify T_SourceAdd
Modify T_DestAdd
Decrement DMAxSZ
[DMADTx = {6, 7}
AND DMAxSZ = 0]
[ENNMI = 1
AND NMI event]
OR
[DMALEVEL = 1
AND Trigger = 0]
[DMADTx = {2, 3}
AND DMAxSZ = 0]
OR
DMAEN = 0
DMAxSZ T_Size
DMAxSA T_SourceAdd
DMAxDA T_DestAdd
T_Size DMAxSZ
DMAxSA T_SourceAdd
DMAxDA T_DestAdd
DMAEN = 0
DMAEN = 1
DMAxSZ > 0
DMAxSZ > 0 AND
a multiple of 4 words/bytes
were transferred
DMAxSZ > 0
DMAEN = 0
DMAREQ = 0
T_Size DMAxSZ
DMA
操作
www.ti.com.cn
6-5. DMA 突发发块块传传输输的的状状态态图
294 DMA
控制器
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
DMA
操作
6.2.3
初始始化
DMA
传输
每个 DMA 通道都可以独立的由 DMAxTSELx 位配置为自身的触发源,如在6-2中所述。 应该在
DMACTLx DMAEN 位为 0时修改 DMAxTSELx 位。否则,不确定的 DMA 触发或许会发生。
当选择触发时,必须确保触发还没有发生,或传输将不会发生。 例如,如果 TACCR2 CCIFG 位被选作一个
触发,并且它已经被置位时,将不会发生转移直到下一次 TACCR2 CCIFG 位被置位。
6.2.3.1 边沿沿触触发发的的触触发发器
DMALEVEL=0 时,边沿触发将被使用并且有触发信号的上升沿初始化该传输。 在单次传输模式中,每次
传输都需要其自身的触发。 当使用块或者突发块模式时,仅需要一个触发来启动块或者突发块传输。
6.2.3.2 电平平触触发发的的触触发发器
DMALEVEL=1 时,使用电平触发的触发器。 为了适当的操作,电平触发的触发器仅用在当外部触发
DMAE0 被选做触发时。 只要触发源信号为高电平就会有 DMA 传输被触发并且 DMAEN 位保持置位。
为了块或突发块传输的完成,触发信号必须保持为高电平 在一个块或突发块传输时,如果触发信号变低,则
DMA 控制器将会保持在当前状态直到触发变高或者直到 DMA 寄存器被软件修改。 如果 DMA 寄存器没被
软件修改,当触发信号再次变高时,传输将会恢复到触发信号变低的那个状态。
DMALEVEL=1 时,建议当 DMADTx = {0123} 时选择传输模式时, 因为 DMAEN 位是在传输配置
后自动置位的。
6.2.3.3 DMA传输输的的暂暂停停执执行行执执指指令
DMAONFETCH 位控制何时 CPU 为一个 DMA 传输暂停时。 当 DMAONFETCH=0 时,CPU 立即被暂停且
当接受到一个触发信号时传输开始。 当 DMAONFETCH=1 时,CPU 将会在 DMA 控制器暂停 CPU 和传输
开始前完成当前的执行指令。
:DMA 写入入闪闪存存时时必必须须使使用DMAONFETCH
如果 DMA 控制器是用来写入闪存存储器的,那么必须置位 DMAONFETCH 位。 否则,可能
会导致不可预知的操作。
6-2. DMA 触发发操操作
DMAxTSELx 运行
0000 DMAREQ 位被置位时一个传输被触发。 当该传输开始时 DMAREQ 位自动复位。
0001 DMAxIFG 标志置位时一个传输被触发。 当该传输开始时 TACCR2 CCIFG 标志自动复位。 如果 TACCR2
CCIE 位被置位,TACCR2 CCIFG 标志将不会触发一个传输。
0010 TBCCR2 CCIFG 标志置位时一个传输被触发。 当该传输开始时 TBCCR2 CCIFG 标志自动复位。 如果
TBCCR2 CCIE 位被置位,TBCCR2 CCIFG 标志将不会触发一个传输。
0011 当串行接口接收到新的数据时会触发一个传输。
USCI_A0 模块的器件:当 USCI_A0 收到新的数据时会触发一个传输 传输开始后 UCA0RXIFG 自动复位。 如
UCA0RXIE 被置位, UCA0RXIFG 标志将不会触发一个传输。
0100 当串行接口准备好传输一个新的数据时会触发一个传输。
USCI_A0 模块的器件:当 USCI_A0 准备好发送新的数据时会触发一个传输。 传输开始后 UCA0TXIFG 自动复
位。 如果 UCA0TXIE 被置位, UCA0TXIFG 标志将不会触发一个传输。
0101 DAC12_0CTL DAC12IFG 标志被置位时会触发一个传输。 传输开始时 DAC12_0CTL DAC12IFG 标志会自
动清零。 如果 DAC12_0CTL DAC12IE 位被置位,DAC12_0CTL DAC12IFG 标志将不会触发一个传输。
0110 ADC12IFGx 标志来触发一个传输。 当执行单通道转换后,相应的 ADC12IFGx 会被触发。 如果用到序列转
, ADC12IFGx 在转换序列中的最后一次转换被触发。 在转换完成后传输被触发并且 ADC12IFGx 被置位。 软
件设置 ADC12IFGx 不会触发一个传输。 当相关的 ADC12MEMx 寄存器被 DMA 控制器访问时,所有的
ADC12IFGx 标志会自动复位。
295
ZHCU032IDecember 2004Revised January 2012 DMA
控制器
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
DMA
操作
www.ti.com.cn
6-2. DMA 触发发操操作(continued)
DMAxTSELx 运行
0111 TACCR0 CCIFG 标志被置位时一个传输被触发。 当该传输开始时 TACCR0 CCIFG 标志自动复位。 如果
TACCR0 CCIE 位被置位,TACCR0 CCIFG 标志将不会触发一个传输。
1000 TBCCR0 CCIFG 标志被置位时一个传输被触发。 当该传输开始时 TBCCR0 CCIFG 标志自动复位。 如果
TBCCR0 CCIE 位被置位,TBCCR0 CCIFG 标志将不会触发一个传输。
1001 UCA1RXIFG 标志被置位时一个传输被触发。 传输开始后 UCA1RXIFG 自动复位。 如果 URXIE1 被置位,
UCA1RXIFG 标志将不会触发一个传输。
1010 UCA1TXIFG 标志被置位时一个传输被触发。 传输开始后 UCA1TXIFG 自动复位。 如果 UTXIE1 被置位,
UCA1TXIFG 标志将不会触发一个传输。
1011 在硬件乘法器准备一个新的操作数时会触发一个传输。
1100 没有传输被触发。
USCI_B0 模块的器件:当 USCI_B0 收到新的数据时会触发一个传输。 传输开始后 UCB0RXIFG 自动复位。
如果 UCB0RXIE 被置位, UCB0RXIFG 标志将不会触发一个传输。
1101 没有传输被触发。
USCI_B0 模块的器件:当 USCI_B0 准备好发送新的数据时会触发一个传输。 传输开始后 UCB0TXIFG 自动复
位。 如果 UCB0TXIE 被置位, UCB0TXIFG 标志将不会触发一个传输。
1110 DMAxIFG 标志被置位时一个传输被触发。 DMA0IFG 触发通道 1DMA1IFG 触发通道 2,且 DMA2IFG
发通道 0。当传输开始时没有 DMAxIFG 标志会自动复位。
1111 通过外部触发 DMAE0 来触发一个传输。
6.2.4
停止
DMA
传输
有两种方法可以停止正在进行的 DMA 传输:
如果 DMACTL1 寄存器的 ENNMI 位被置位,一个单次,块,或突发块传输可以被一个 NMI 中断所停
止。
可以通过清零 DMAEN 位来停止一个突发块传输。
296 DMA
控制器
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
DMA
操作
6.2.5 DMA
通道道的的优优先先级
默认的 DMA 通道优先级是 DMA0-DMA1-DMA2。 如果两个或三个触发同时发生或者挂起,拥有最高优先
级的通道将会首先完成传输(单次,块或者突发块传输),然后是第二优先级的通道,最后是第三优先级的
通道。 如果一个较高优先级的通道被触发,进行中的传输中将不会被暂停。 一直到进行中的传输完成后较
高优先级的传输才开始。
DMA 通道的优先级由 ROUNDROBIN 位配置。 当 ROUNDROBIN 位被置位时,完成一个传输的通道的优
先级会变为最低。 通道的优先级的
顺序
总保持相同,DMA0-DMA1-DMA2(请参阅6-3)。
6-3. 通道道的的优优先先级
DMA 优先先级 传输输发 新的DMA 优先先级
DMA0 - DMA1 - DMA2 DMA1 DMA2 - DMA0 - DMA1
DMA2 - DMA0 - DMA1 DMA2 DMA0 - DMA1 - DMA2
DMA0 - DMA1 - DMA2 DMA0 DMA1 - DMA2 - DMA0
ROUNDROBIN 位被清零时,通道的优先级回到默认优先级。
6.2.6 DMA
传输输周周期
在每次单传输或者完整块或者突发块传输前 DMA 控制器需要一个或两个MCLK 时钟周期来同步。 同步后每
个字节/字传输需要两个 MCLK 周期,且传输后有一个周期的等待时间。 因为 DMA 控制器使用 MCLK,所
DMA 周期决定于 MSP430 的操作模式和时钟系统的设置。
如果 MCLK 源活动,但是 CPU 关闭,则 DMA 控制器将使用 MCLK 源来完成每次传输,而无需重新启用
CPU。当MCLK 源关闭时,DMA 控制器将临时重新开启 MCLK ,以 DCOCLK 为源,以便完成单次传输
或者整块或者突发块传输。 且在传输完成后,CPU 保持关闭,MCLK 关闭。 各种操作模式下的最大 DMA
周期见6-4
6-4. 最大大单单次次传传输DMA 周期
CPU 操作作模 时钟钟源 最大DMA
激活模式 MCLK=DCOCLK 4 MCLK 周期
激活模式 MCLK=LFXT1CLK 4 MCLK 周期
低功耗模式 LPM0/1 MCLK=DCOCLK 5 MCLK 周期
低功耗模式 LPM3/4 MCLK=DCOCLK 5 MCLK 周期 + 6µs(1)
低功耗模式 LPM0/1 MCLK=LFXT1CLK 5 MCLK 周期
低功耗模式 LPM3 MCLK=LFXT1CLK 5 MCLK 周期
低功耗模式 LPM4 MCLK=LFXT1CLK 5 MCLK 周期 + 6µs(1)
(1) 额外的 6μs用于需要启动 DCOCLK。 它是数据手册中的 t(LPMx)参数。
6.2.7
使使用用带带有有系系统统中断的
DMA
DMA 传输不会被系统中断所打断。 系统中断将会保持挂起直到传输完成。 如果 ENNMI 位被置位的
话,NMI 中断可以中断 DMA 控制器。
系统中断服务子程序将会被 DMA 传输打断。 如果系统中断服务子程序或者其他程序必须在没有中断的情况
下运行,则 DMA 控制器必须在该子程序被执行前被禁止。
297
ZHCU032IDecember 2004Revised January 2012 DMA
控制器
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
DMA
操作
www.ti.com.cn
6.2.8 DMA
控制制器器中中断
每个 DMA 通道都有自己的 DMAIFG 标志。 当相应的 DMAxSZ 寄存器计数到 0时,每个 DMAIFG 标志都
可以在任何模式下被设置。 如果相应的 DMAIE GIE 位都被设置,则会产生一个中断请求。
所有的 DMAIFG 标志只源自 DMA 控制器中断向量且,在一些器件上,可以和其他模块分享该中断向量。
进一步更多详细信息请参阅《特定器件的数据手册》。 对这些器件来说,软件必须检查 DMAIFG 和相应的
模块标志来判断中断源。 DMAIFG 标志不会自动复位且必须由软件复位。
此外,一些器件使用 DMAIV 寄存器。 为了源自同一个中断向量源,所有 DMAIFG 标志都被优先级化,和
正成为最高优先级的 DMA0IFG 一起,被结合在一起 。 最高优先级的被启用的中断产生在 DMAIV 寄存器
中生成了一个数字。 为了自动进入相应的软件程序,可以对这个数字进行评估,或将其添加到程序计数器。
禁用的 DMA 中断不影响 DMAIV 的值。
任何对 DMAIV 寄存器的访问,读取,或写入都将自动复位最高的正在挂起的中断标志。 如果另一个中断标
志被置位,则另一个中断将会在最初的中断服务结束后立即产生。 例如,假设 DMA0 有最高的优先级。 如
DMA0IFG DMA2IFG 标志被置位,当中断服务子程序在访问 DMAIV 寄存器时,DMA0IFG 会自动复
位。 在中断服务子程序执行完 RETI 指令后,DMA2IFG 将会生成另一个中断。
下面的软件示例是 DMAIV 和处理开销的推荐用法。 为了自动跳转到相应的程序,DMAIV 值将被添加到
PC
在右边距的数字显示了每条指令所需的 CPU 周期。 不同中断源的这个软件开销包括中断响应和中断返回的
周期,但不处理的任务本身。
Example 6-1. DMAIV
软件件示示例
;Interrupt handler for DMA0IFG, DMA1IFG, DMA2IFG CyclesDMA_HND ... ; Interrupt latency 6ADD &DMAIV,PC
; Add offset to Jump table 3RETI ; Vector 0: No interrupt 5JMP DMA0_HND ; Vector 2: DMA channel 0
2JMP DMA1_HND ; Vector 4: DMA channel 1 2JMP DMA2_HND ; Vector 6: DMA channel 2 2RETI ; Vector 8:
Reserved 5RETI ; Vector 10: Reserved 5RETI ; Vector 12: Reserved 5RETI ; Vector 14: Reserved
5DMA2_HND ; Vector 6: DMA channel 2... ; Task starts hereRETI ; Back to main program 5DMA1_HND ;
Vector 4: DMA channel 1... ; Task starts hereRETI ; Back to main program 5DMA0_HND ; Vector 2: DMA
channel 0... ; Task starts hereRETI ; Back to main program 5
6.2.9
DMA
控制制器器下下使使用
USCI_B I2C
模块
USCI_B I2C模块为 DMA 控制器提供了两个触发源。 当接收到 I2C数据且当需要传输该数据时,USCI_B
I2C模块可以触发一个传输。
如果 UCB0RXIFG 被置位会触发一个传输。 当 DMA 控制器应答该传输时 UCB0RXIFG 会自动清零。 如果
UCB0RXIE 被置位, UCB0RXIFG 将不会触发一个传输。
如果 UCB0TXIFG 被置位会触发一个传输。 当 DMA 控制器应答该传输时 UCB0TXIFG 会自动清零。 如果
UCB0TXIE 被置位, UCB0TXIFG 将不会触发一个传输。
6.2.10
DMA
控制制器器下下使使用
ADC12
拥有一个集成的 DMA 控制器的 MSP430 器件可以自动地把数据从任何 ADC12MEMx 寄存器移动到任何位
置。 DMA 传输可以在没有 CPU 的干预下完成并且不受任何低功耗模式的影响。 ADC12 模块增加了DMA
控制器的吞吐量,并且当数据传输发生时,通过允许 CPU 保持在关闭状态来提高低功耗应用的性能。
DMA 传输可以被任何 ADC12IFGx 标志触发。 当 CONSEQx={02} 时,被用作转换的 ADC12MEMx
ADC12IFGx 标志可以触发一个 DMA 传输。 当 CONSEQx={13} 时,在顺序转换中的最后一个
ADC12MEMx ADC12IFGx 标志可以触发一个 DMA 传输。 当 DMA 控制器访问相应的 ADC12MEMx
时候,任何 ADC12IFGx 标志都会被自动清零。
298 DMA
控制器
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
DMA
操作
6.2.11
DMA
控制制器器下下使使用
DAC12
拥有一个集成的 DMA 控制器的 MSP430 器件可以自动地把数据移动到 DAC12_xDAT 寄存器。 DMA 传输
可以在没有 CPU 的干预下完成并且不受任何低功耗模式的影响。 DMA 控制器增加了 DAC12 模块的吞吐
量,并且当数据传输发生的时候,通过允许 CPU 保持在关闭状态来增强低功耗应用的性能。
需要周期性波形生成的应用程序可以受益于使用 DMA 控制器的 DAC12。 例如,一个产生正弦波的应用程
序可以把正弦波的值存储在一个表格中。 为了产生正弦波,,DMA 控制器可以在特定的时间间隔内自动地
并且连续不断地把这些值传输到 DAC12, 并且不需要 CPU 的执行。 当 DMA 控制器访问 DAC12_xDAT
寄存器时,DAC12_xCTL DAC12IFG 标志将会被自动清零。
6.2.12
DMA
控制制器器下下写写入入闪
带有一个集成的 DMA 控制器的 MSP430 器件可以自动地把数据移动到闪存存储器中。 DMA 传输可以在没
CPU 的干预下完成并且不受任何低功耗模式的影响。 DMA 控制器会把数据字/字节移动到闪存。 写入时
序控制是由闪存控制器完成的。 如果在闪存控制器被设置先于 DMA 传输且如果闪存不忙,转移到闪存存储
器的写入就会成功,。 要设置闪存控制器的写入访问,请参阅
《闪存存储器控制器
章节》。
299
ZHCU032IDecember 2004Revised January 2012 DMA
控制器
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
DMA
寄存器
www.ti.com.cn
6.3 DMA 寄存存器
6-5中列出了 DMA 寄存器。
6-5. DMA 寄存存器
寄存存器 简表表 寄寄存存器器类型 地地址址 初初始化状状态
DMA 控制 0 DMACTL0 读取/写入 0122h POR 复位
DMA 控制 1 DMACTL1 读取/写入 0124h POR 复位
DMA 中断向量 DMAIV 只读 0126h POR 复位
DMA 通道 0控制 DMA0CTL 读取/写入 01D0h POR 复位
DMA 通道 0源地址 DMA0SA 读取/写入 01D2h 未改变
DMA 通道 0目标地址 DMA0DA 读取/写入 01D6h 未改变
DMA 通道 0传送大小 DMA0SZ 读取/写入 01DAh 未改变
DMA 通道 1控制 DMA1CTL 读取/写入 01DCh POR 复位
DMA 通道 1源地址 DMA1SA 读取/写入 01DEh 未改变
DMA 通道 1目标地址 DMA1DA 读取/写入 01E2h 未改变
DMA 通道 1发送尺寸 DMA1SZ 读取/写入 01E6h 未改变
DMA 通道 2控制 DMA2CTL 读取/写入 01E8h POR 复位
DMA 通道 2源地址 DMA2SA 读取/写入 01EAh 未改变
DMA 通道 2目标地址 DMA2DA 读取/写入 01EEh 未改变
DMA 通道的 2个传输大小 DMA2SZ 读取/写入 01F2h 未改变
300 DMA
控制器
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
DMA
寄存器
6.3.1 DDMACTL0
DMA
控制制寄寄存存器
0
15 14 13 12 11 10 9 8
被保保留DMA2TSELx
rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0)
76543210
DMA1TSELx DMA0TSELx
rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0)
被保保留 15-12 被保留
DMA2TSELx 11-8 DMA 的触发选择。 这些位选择 DMA 的传输触发。
0000 DMAREQ 位(软件触发)
0001 TACCR2 CCIFG
0010 TBCCR2 CCIFG
0011 接收的串行数据 UCA0RXIFG
0100 串行数据传输就绪 UCA0TXIFG
0101 DAC12_0CTL DAC12IFG
0110 ADC12 ADC12IFGx
0111 TACCR0 CCIFG
1000 TBCCR0 CCIFG
1001 接收的串行数据 UCA1RXIFG
1010 串行数据传输就绪 UCA1TXIFG
1011 乘法器就绪
1100 接收的串行数据 UCB0RXIFG
1101 串行数据传输就绪 UCB0TXIFG
1110 DMA0IFG 位触发 DMA 通道 1
DMA1IFG 位触发 DMA 通道 2
DMA2IFG 位触发 DMA 通道 0
1111 外部触发 DMAE0
DMA1TSELx 7-4 DMA2TSELx 一样
DMA0TSELx 3-0 DMA2TSELx 一样
6.3.2 DDMACTL1
DMA
控制制寄寄存存器
1
15 14 13 12 11 10 9 8
00000000
r0 r0 r0 r0 r0 r0 r0 r0
76543210
0 0 0 0 0 DMAON ROUND ENNMI
FETCH ROBIN
r0 r0 r0 r0 r0 rw-(0) rw-(0) rw-(0)
被保保留 15-3 被保留。 只读.始终读为 0
DMAONFETCH 2 DMA 上读取
0立即发生 DMA 传输。
1在触发后,DMA 传输发生在下一条指令的读取上。
ROUNDROBIN 1轮循。 该位启用轮循 DMA 通道优先级。
0 DMA 通道的优先级是 DMA0 - DMA1 - DMA2
1每次传输 DMA 通道优先级的变化
ENNMI 0启用 NMI。 该位通过一个 NMI 中断来启用一个 DMA 传输中断。 当一个 NMI 中断一个 DMA 传输时,当
前传输正常完成,接下来的传输被停止,DMAABORT 被置位。
0 NMI 中断不中断 DMA 传输
1 NMI 中断中断一个 DMA 传输
301
ZHCU032IDecember 2004Revised January 2012 DMA
控制器
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
DMA
寄存器
www.ti.com.cn
6.3.3 DMAxCTL
DMA
通道
x
控制制寄寄存存器
15 14 13 12 11 10 9 8
被保保留DMADTx DMADSTINCRx DMASRCINCRx
rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0)
76543210
DMADST DMASRC DMALEVEL DMAEN DMAIFG DMAIE DMAABORT DMAREQ
BYTE BYTE
rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0)
被保保留 15 被保留
DMADTx 14-12 DMA 传输模式。
000 单次传输
001 块传输
010 突发块传输
011 突发块传输
100 重复单次传输
101 重复块传输
110 重复突发块传输
111 重复突发块传输
DMADSTINCRx 11-10 DMA 的目标增量。 在每个字节或字传输后该位选择目的地址的自动递增或递减。 当
DMADSTBYTE=1 ,目标地址加/1。当DMADSTBYTE=0 ,目标地址加/2DMAxDA
复制到一个临时的寄存器中,且这个临时寄存器是递增或递减。 DMAxDA 不会增加或者减小。
00 目标地址不变
01 目标地址不变
10 目标地址递减
11 目标地址递增
DMASRCINCRx 9-8 DMA 源增量。 在每个字节/字传输完成后此位选择源地址自动递增或递减。 当 DMASRCBYTE=1
,源地址加/1。当DMASRCBYTE=0 ,源地址加/2DMAxSA 被复制到一个临时的寄存
器中,且这个临时寄存器将是递增或递减 。 DMAxSA 不会增加或者减少。
00 源地址不变
01 源地址不变
10 源地址递减
11 源地址递增
DMADSTBYTE 7 DMA 目标字节。 此位选择目标作为字节或字。
0
1字节
DMASRCBYTE 6 DMA 源字节。 此位选择源作为字节或字。
0
1字节
DMALEVEL 5 DMA 电平 此位在边沿敏感或电平敏感之间选择。
0边沿敏感(上升沿)
1电平敏感(高电平)
DMAEN 4 DMA 使能
0被禁用
1被启用
DMAIFG 3 DMA 中断标志
0无中断挂起
1中断挂起
DMAIE 2 DMA 中断使能
0被禁用
1被启用
302 DMA
控制器
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
DMA
寄存器
DMAABORT 1 DMA 中断。 此位表明一个 DMA 传输被一个 NMI 中断。
0 DMA 传输没有被中断
1 DMA 传输被 NMI 中断
DMAREQ 0 DMA 请求。 软件控制的 DMA 启动。 DMAREQ 被自动复位。
0没有 DMA 启动
1启动 DM
6.3.4 DMAxSA
DMA
源地地址址寄寄存存器
15 14 13 12 11 10 9 8
被保保留
r0 r0 r0 r0 r0 r0 r0 r0
76543210
被保保留DMAxSAx
r0 r0 r0 r0 rw rw rw rw
15 14 13 12 11 10 9 8
DMAxSAx
rw rw rw rw rw rw rw rw
76543210
DMAxSAx
rw rw rw rw rw rw rw rw
DMAxSA 15-0 DMA 源地址
源地址寄存器指向单次传输 DMA 源地址或者指向块传输的第一个源地址。 源地址寄存器在块或者和突发块传
输中保持不变。
有可寻址的内存范围为 64KB 或低于 64KB 的器件包含一个单 DMAxSA 字。 当用字操作写入时,上部字会被
自动清零。 从这个位置读取总是读为 0
有可寻址的内存范围超出 64KB 的器件包含一个额外的源地址的字。 新增加字的 15-4 位被保留且始终读为
0。 当用字格式写入 DMAxSA 时,这个额外的字会被自动清零。 使用字格式读取这个字的,且始终读为 0
303
ZHCU032IDecember 2004Revised January 2012 DMA
控制器
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
DMA
寄存器
www.ti.com.cn
6.3.5 DMAxDA
DMA
目的的地地址址寄寄存存器
15 14 13 12 11 10 9 8
被保保留
r0 r0 r0 r0 r0 r0 r0 r0
76543210
被保保留DMAxDAx
r0 r0 r0 r0 rw rw rw rw
15 14 13 12 11 10 9 8
DMAxDAx
rw rw rw rw rw rw rw rw
76543210
DMAxDAx
rw rw rw rw rw rw rw rw
DMAxDA 15-0 DMA 目标地址
目的地址寄存器指向单次传输 DMA 目的地址或者指向块传输的第一个目的地址。 目的地址寄存器在块或者和
突发块传输中保持不变。
有可寻址的内存范围为 64KB 或低于 64KB 的器件包含一个单 DMAxDA 字。
有可寻址的内存范围超出 64KB 的器件包含一个额外的目的地址的字。 新增加字的 15-4 位被保留且始终读为
0。 当用字格式写入 DMAxDA 时,这个额外的字会被自动清零。 使用字格式读取这个字的,且始终读为 0
6.3.6 DMAxSZ
DMA
大小小地地址址寄寄存存器
15 14 13 12 11 10 9 8
DMAxSZx
rw rw rw rw rw rw rw rw
76543210
DMAxSZx
rw rw rw rw rw rw rw rw
DMAxSZx 15-0 DMA 大小。 DMA 大小寄存器定义了每个块传输的字节/字的数量。 DMAxSZ 寄存器伴随着每个字/字节传输
递减。 当 DMAxSZ 减至 0,以前被初始化时的值会马上自动重载。
00000h 传输被禁用
00001h 将被传输的一个字节或者字
00002h 要传输的两个字节或者字
0FFFFh 必须传输 65536 个字节或者字
304 DMA
控制器
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
DMA
寄存器
6.3.7 DMAIV
DMA
中断断向向量量寄寄存存器
15 14 13 12 11 10 9 8
00000000
r0 r0 r0 r0 r0 r0 r0 r0
76543210
0 0 0 0 DMAIVx 0
r0 r0 r0 r0 r--(0) r--(0) r--(0) r0
DMAIVx 15-0 DMA 中断向量值
DMAIV 内容 中断 中断断标标志志 中中断优先先级
00h 无中断等待 -
02h DMA 通道 0 DMA0IFG 最高
04h DMA 通道 1 DMA1IFG
06h DMA 通道 2 DMA2IFG
08h 被保留 -
0Ah 被保留 -
0Ch 被保留 -
0Eh 被保留 -最低
305
ZHCU032IDecember 2004Revised January 2012 DMA
控制器
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Chapter 7
ZHCU032IDecember 2004Revised January 2012
闪存存存储器器控制器
本章对 MSP430x2xx 闪存存储器控制器的运行进行了说明。
Topic ........................................................................................................................... Page
7.1 闪存存存存储储器器介介绍................................................................................................. 307
7.2 闪存存存存储储器器分分段................................................................................................. 307
7.3 闪存存存存储储器器运运行................................................................................................. 309
7.4 闪存存存存储储器器寄寄存存器.............................................................................................. 321
306
闪存存储器控制器
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Enable
Data Latch
Enable
Address
Latch
Address Latch Data Latch
MAB MDB
FCTL1
FCTL2
FCTL3
Timing
Generator
Programming
Voltage
Generator
Flash
Memory
Array
FCTL4
www.ti.com.cn
闪存存储器介绍
7.1 闪存存存存储储器器介介绍
MSP430 闪存存储器位、字节、和 字可寻址并且可编程。 闪存存储器模块有一个控制编程和擦除操作的集
成型控制器。 控制器有四个寄存器、一个时序发生器、和一个电压生成器来为编程和擦除供电。
MSP430 闪存存储器特性包括:
内部编程电压生成
位、字节或字可编程
超低功耗运行
段擦除和批量擦除
边界 0和边界 1测试模式(可选,请参与器件专用数据表)
7-1显示了闪存存储器和控制器的方框图。
:闪存存写写入入或或者者擦擦除除期期间间的的最最小VCC
闪存写入或者擦除操作期间的最小 VCC电压为2.2V。如果 CC在写入或擦除期间下降至低于
2.2V,写入或擦除的结果则无法预计。
7-1. 闪存存存存储储器器模模块块方方框框图
7.2 闪存存存存储储器器分分段
MSP430 闪存存储器被分为三个段。 单位、字节、或者 字被写入到闪存存储器,但是段是可被擦除的最小
尺寸的闪存存储器。
闪存存储器被分为主和信息存储器部分。 主和信息存储器部分的运行没有不同。 代码或者数据可位于两个
部分中的任何一个。 两个部分的区别在于段尺寸和物理地址。
信息存储器有四个 64 字节段。 主存储器有多于两个的512 字节段。 一个器件的完整存储器映射请参阅器件
专用数据表。
307
ZHCU032IDecember 2004Revised January 2012
闪存存储器控制器
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
32-kbyte
Flash
Main Memory
Segment 0
512-byte
Flash
Information Memory
Segment 1
Segment 2
Segment 61
Segment 62
Segment 63
0x0FFFF
0x0F000
0x010FF
0x01000
Segment A
Segment B
Segment C
Segment D
0x0FFFF
0x08000
0x010FF
0x01000
0x0FE00
0x0FDFF
0x0FC00
Block
0x0FFFF
0x0FFC0
0x0FFBF
0x0FF80
0x0FF7F
0x0FF40
0x0FF3F
0x0FF00
Block
Block
Block
Block
0x0FFFF
0x0FEC0
0x0FEBF
0x0FE80
0x0FE7F
0x0FE40
0x0FE3F
0x0FE00
Block
Block
Block
闪存存储器分段
www.ti.com.cn
这些段被进一步分为块。
7-2显示了使用一个 32KB 闪存示例的闪存分段,此示例有八个主段和四个信息段。
7-2. 闪存存存存储储器器段段,32KB 示例
7.2.1
A
LOCKA 位将信息存储器的段 A与所有其它段分开锁定。 当 LOCKA=1 时,段 A不能被写入或者擦除并
且所有信息存储器被保护,以防止一个批量擦除或者生产编程期间的擦除。 当 LOCKA=0 时,段 A作为任何
其它闪存存储器段被擦除和写入,并且在一个批量擦除或者生产编程期间,所有信息存储器被擦除。
当一个 1被写入 LOCKA 位时,它的状态被切换。 将一个 0写入 LOCKA无效。 这样可在无需更改的情况
下,使用现有的闪存编程例程。
; Unlock SegmentABIT #LOCKA,&FCTL3 ; Test LOCKAJZ SEGA_UNLOCKED ; Already unlocked?MOV
#FWKEY+LOCKA,&FCTL3 ; No, unlock SegmentASEGA_UNLOCKED ; Yes, continue; SegmentA is unlocked;
Lock SegmentABIT #LOCKA,&FCTL3 ; Test LOCKAJNZ SEGA_LOCKED ; Already locked?MOV
#FWKEY+LOCKA,&FCTL3 ; No, lock SegmentASEGA_LOCKED ; Yes, continue; SegmentA is locked
308
闪存存储器控制器
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
FN5 FN0 PUC
........... EMEX
Flash Timing Generator
Divider, 1−64
BUSY WAIT
Reset
fFTG
FSSELx
SMCLK
SMCLK
ACLK
MCLK
00
01
10
11
www.ti.com.cn
闪存存储器运行
7.3 闪存存存存储储器器运运行
闪存存储器缺省模式为读取模式。 在读取模式中,闪存存储器不被擦除或被写入,闪存时序发生器和电压生
成器关闭,并且存储器运行方式与 ROM 完全一样。
MSP430 闪存存储器系统内可编程 (ISP),而无需额外的外部电压。 CPU 可编辑它自己的闪存存储器。 用
BLKWRTWRTMERAS ERASE 位来选择闪存存储器写入/擦除模式,这些模式为:
字节/字写入
块写入
段擦除
批量擦除(所有主存储器段)
所有擦除(所有段)
禁止在闪存存储器被编程或者擦除时对其进行读取或写入操作。如果在写入或擦除期间要求 CPU 执行,被
执行的代码必须位于 RAM 中。 可从闪存存储器或 RAM 中启动对任一闪存的升级。
7.3.1
闪存存存存储储器器时时序发生生器
写入和擦除操作由7-3中显示的闪存时序发生器控制。 闪存时序发生器运行频率,fFTG,必须在大约
257kHz 到大约 476kHz 的范围内(请见器件专用数据表。)
7-3. 闪存存存存储储器器时时序序发发生生器器方方框框图
7.3.1.1 闪存存时时序序发发生生器器时时钟钟选选择
闪存时序发生器可由 ACLKSMCLK,或 MCLK 供源。 选择的时钟源应该用 FNx 位进行分频来满足fFTG
频率要求。 如果 fFTG频率在写入或擦除操作期间偏离了额定值,写入或擦除的结果也许无法预计,或者闪存
存储器的应力值也许会在可靠运行的限值以上。
如果在写入或擦除操作期间检测到时钟故障,操作被异常中断,故障 (FAIL) 标志被设定,并且运行的结果无
法预计。
在一个写入或擦除操作有效时,不能通过将 MSP430置于一个功耗模式来禁用所选择的时钟源。 在被禁用
前,所选择的时钟源将保持有效,直到操作完成。
309
ZHCU032IDecember 2004Revised January 2012
闪存存储器控制器
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
BUSY
Erase Operation Active
tmass erase = 10593/fFTG, tsegment erase = 4819/fFTG
Erase Time, VCC Current Consumption is Increased
Generate
Programming Voltage
Remove
Programming Voltage
闪存存储器运行
www.ti.com.cn
7.3.2
擦除除闪闪存存存存储储器
一个闪存存储器位的被擦除电平为 1。每个为可被单独从 1设定为 0,但是将 0重编程为 1则要求一个擦除
周期。 可被擦除的闪存最小数量是一个扇区。 可用7-1中列出的 ERASE MERAS 位选择三个擦除模
式。
7-1. 擦除除模模式
MERAS ERASE 除模模式
0 1 段擦除
1 0 批量擦除(所有主存储器段)
LOCKA=0:擦除主和信息闪存存储器。
1 1 LOCKA=1:只擦除主闪存存储器。
所有的擦除由一个到将被擦除的地址范围内的假写入启动。 假写入启动闪存时序发生器和擦除操作。7-4
显示了擦除周期时序。 BUSY 在假写入之后被立即置位并且在整个擦除周期内保持置位。 当周期完成
时,BUSYMERAS ERASE 被自动清除。 擦除周期的时序并不取决于出现在器件的闪存存储器的数
量。 对于所有 MSP430F2xx MSP430G2xx器件,擦除周期时间相等。
7-4. 擦除除周周期期时时序
到一个将被擦除的范围之外地址的假写入不会启动擦除周期,并不影响闪存存储器,并且无论如何也不会被
标记。 这个错误的假写入被忽略。
310
闪存存储器控制器
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Setup flash controller and erase
mode
Disable watchdog
Set LOCK=1, re-enable watchdog
Dummy write
www.ti.com.cn
闪存存储器运行
7.3.2.1 从闪闪存存存存储储器器内内启启动动一一个个擦擦除
可从闪存存储器或者 RAM 中启动一个擦除周期。 当一个闪存段擦除操作从闪存存储器内启动时,所有时序
由闪存控制器控制,并且在擦除周期完成时被保持。 在擦除周期完成后,CPU 用假写入之后的指令来恢复
代码执行。
当一个擦除周期从闪存存储器内部启动时,可在擦除之后来擦除代码执行所需的代码。 如果这个情况发生,
那么在擦除周期之后,CPU 的执行将无法预计。
7-5中显示了从闪存启动一个擦除的流程。
7-5. 闪存存存存储储器器内内的的擦擦除除周周期
; Segment Erase from flash. 514 kHz < SMCLK < 952 kHz; Assumes ACCVIE = NMIIE = OFIE = 0.MOV
#WDTPW+WDTHOLD,&WDTCTL ; Disable WDTMOV #FWKEY+FSSEL1+FN0,&FCTL2 ; SMCLK/2MOV #FWKEY, &FCTL3 ;
Clear LOCKMOV #FWKEY+ERASE, &FCTL1 ; Enable segment eraseCLR &0FC10h ; Dummy write, erase S1MOV
#FWKEY+LOCK, &FCTL3 ; Done, set LOCK ... ; Re-enable WDT?
311
ZHCU032IDecember 2004Revised January 2012
闪存存储器控制器
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
yes
BUSY = 1
yes
BUSY = 1
Disable watchdog
Setup flash controller and
erase mode
Dummy write
Set LOCK = 1, re-enable
watchdog
闪存存储器运行
www.ti.com.cn
7.3.2.2 RAM 启动动一一个个擦擦除
任何擦除周期都可从 RAM 发起。 在这个情况下,CPU 不被保持并且可继续执行 RAM 内的代码。 必须轮
BUSY 位来在 CPU 能够再次访问任一闪存地址之前确定擦除周期的末尾。 如果在 BUSY=1 时一个闪存
访问发生,那么它是一个访问违反,ACCVIFG 将被置位,并且擦除结果不可预计。
7-6中显示了从 RAM 内的闪存中发起一个擦除的流程。
7-6. 来自RAM 内的的擦擦除除周周期
; Segment Erase from RAM. 514 kHz < SMCLK < 952 kHz; Assumes ACCVIE = NMIIE = OFIE = 0.MOV
#WDTPW+WDTHOLD,&WDTCTL ; Disable WDTL1 BIT #BUSY, &FCTL3 ; Test BUSYJNZ L1 ; Loop while busyMOV
#FWKEY+FSSEL1+FN0, &FCTL2 ; SMCLK/2MOV #FWKEY&FCTL3 ; Clear LOCKMOV #FWKEY+ERASE, &FCTL1 ; Enable
eraseCLR &0FC10h ; Dummy write, erase S1L2 BIT #BUSY, &FCTL3 ; Test BUSYJNZ L2 ; Loop while
busyMOV #FWKEY+LOCK&FCTL3 ; Done, set LOCK... ; Re-enable WDT?
312
闪存存储器控制器
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
BUSY
Programming Operation Active
Programming Time, VCC Current Consumption is Increased
tWord Write = 30/fFTG
Generate
Programming Voltage
Remove
Programming Voltage
www.ti.com.cn
闪存存储器运行
7.3.3
写入入闪闪存存存存储储器
7-2中列出了由 WRT BLKWRT 位选择的写入模式。
7-2. 写入入模模式
BLKWRT WRT 写入入模
0 1 字节/字写入
1 1 块写入
两个写入模式都使用一个单独写入指令序列,但是使用块写入模式会比字节/字模式快大约一倍,这是因为在
整个块写入时,电压生成器保持打开。 任何修改一个目的的指令可被用于修改字节/字模式或者块写入模式
中的一个闪存位置。 在擦除之间,一个闪存字(低+高字节)一定不能被写入多于两次。 否则,会发生器件
损坏。
在一个写入操作时,BUSY 位被置位,而当操作完成时,这个位被清零。 如果写入操作从 RAM 中发
起,CPU 一定不能在 BUSY=1 时访问闪存。 否则,会出现一个访问违反,ACCVIFG 被置位,并且闪存写
入不可预计。
7.3.3.1 字节/字写写入
可从闪存存储器或者 RAM 内发起一个字节/字写入操作。当从闪存存储器内发起时,所有时序由闪存控制器
控制,并且CPU 在写入完成时被保持。 在写入完成后,CPU 用写入之后的指令来恢复代码执行。 7-7
显示了字节/字写入时序。
7-7. 字节/字写写入入时时序
当一个字节/字写入从 RAM 中执行时,CPU 继续执行来自RAM 的代码。 在 CPU 再次访问闪存前,BUSY
位必须为零,否则一个访问违反会出现,ACCVIFG 被置位,并且写入结果不可预计。
在字节/字模式中,对于 30fFTG周期,每次写入一个字节或字内部生成的编程电压被应用于完整 64 字节
块,。 在每个字节或者字写入时,块的定时数量取决于积累的编程电压。 累积编程时间,tCPT,一定不能超
过任何块。 如果累积编程时间被满足,在执行任何到快内任何地址的进一步写入前,块必须被擦除。 技术
规格请见器件专用数据表。
313
ZHCU032IDecember 2004Revised January 2012
闪存存储器控制器
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Setup flash controller
and set WRT=1
Disable watchdog
Set WRT=0, LOCK=1,
re-enable watchdog
Write byte or word
闪存存储器运行
www.ti.com.cn
7.3.3.2 从闪闪存存存存储储器器内内发发起起一一个个字字节/字写写入
7-8中显示了一个从闪存发起一个字节/字写入的例程。
7-8. 从闪闪存存发发起起一一个个字字节/字写写入
; Byte/word write from flash. 514 kHz < SMCLK < 952 kHz; Assumes 0FF1Eh is already erased;
Assumes ACCVIE = NMIIE = OFIE = 0.MOV #WDTPW+WDTHOLD,&WDTCTL ; Disable WDT MOV
#FWKEY+FSSEL1+FN0,&FCTL2 ; SMCLK/2MOV #FWKEY,&FCTL3 ; Clear LOCKMOV #FWKEY+WRT,&FCTL1 ; Enable
writeMOV #0123h,&0FF1Eh ; 0123h -
> 0FF1EhMOV #FWKEY,&FCTL1 ; Done. Clear WRT MOV #FWKEY+LOCK,&FCTL3 ; Set LOCK... ; Re-enable WDT?
314
闪存存储器控制器
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
yes
BUSY = 1
yes
BUSY = 1
Disable watchdog
Setup flash controller
and set WRT=1
Write byte or word
Set WRT=0, LOCK = 1
re-enable watchdog
www.ti.com.cn
闪存存储器运行
7.3.3.3 RAM 发起起一一个个字字节/字写写入
7-9中显示了从 RAM 中发起一个字节/字写入的流程。
7-9. RAM 中发发起起一一个个字字节/字写写入
; Byte/word write from RAM. 514 kHz < SMCLK < 952 kHz; Assumes 0FF1Eh is already erased; Assumes
ACCVIE = NMIIE = OFIE = 0.MOV #WDTPW+WDTHOLD,&WDTCTL ; Disable WDTL1 BIT #BUSY,&FCTL3 ; Test
BUSYJNZ L1 ; Loop while busyMOV #FWKEY+FSSEL1+FN0,&FCTL2 ; SMCLK/2MOV #FWKEY,&FCTL3 ; Clear
LOCKMOV #FWKEY+WRT,&FCTL1 ; Enable writeMOV #0123h,&0FF1Eh ; 0123h -
> 0FF1EhL2 BIT #BUSY,&FCTL3 ; Test BUSYJNZ L2 ; Loop while busyMOV #FWKEY,&FCTL1 ; Clear WRTMOV
#FWKEY+LOCK,&FCTL3 ; Set LOCK... ; Re-enable WDT?
315
ZHCU032IDecember 2004Revised January 2012
闪存存储器控制器
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
BUSY
WAIT
Generate Programming Operation Active
tBlock, 0 = 25/fFTG tBlock, 1-63 = 18/fFTG
Write to flash e.g., MOV#123h, &Flash
BLKWRT bit
tBlock, 1-63 = 18/fFTG tend = 6/fFTG
Cumulative Programming Time tCPT =< 4ms, VCC Current Consumption is Increased
Programming Voltage
Remove
Programming Voltage
闪存存储器运行
www.ti.com.cn
7.3.3.4 块写写入
当需要编辑很多连续的字节或者字时,块写入可被用于计算闪存写入进程。 在写入 64 字节块的持续时间
内,闪存编程电压保持打开。 块写入期间,对于任何一个块写入,一定不能超过累积编程时间 tCPT
不能从闪存存储器内发起一个块写入。 块写入只能从RAM 发起。 在块写入的整个持续时间内,BUSY 位保
持置位。 在块内写入每个字节或者字之间,WAIT 位必须被检查。 当 WAIT 被置位时,才可写入块的下一
个字节或者字。 当写入连续的块时,在当前块写入完成时,BLKWRT位必须被检查。 在由 t指定所需的闪
存恢复时间后,BLKWRT 可被置位为启动写一个块写入。 在一每一个块写入完成之后,BUSY 位被清零,
这表明可写入下一个块。7-10显示了块写入时序。
7-10. 块写写入入周周期期时时序
316
闪存存储器控制器
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
yes
BUSY = 1
Disable watchdog
Setup flash controller
Set BLKWRT=WRT=1
Write byte or word
no Block Border?
yes WAIT=0?
yes
BUSY = 1
Set BLKWRT=0
yes Another
Block?
Set WRT=0, LOCK=1
re-enable WDT
www.ti.com.cn
闪存存储器运行
7.3.3.5 块写写入入流流程程和和示示例
7-11中显示了一个块写入流程和以下示例。
7-11. 块写写入入流流程
317
ZHCU032IDecember 2004Revised January 2012
闪存存储器控制器
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
闪存存储器运行
www.ti.com.cn
; Write one block starting at 0F000h.; Must be executed from RAM, Assumes Flash is already
erased.; 514 kHz < SMCLK < 952 kHz; Assumes ACCVIE = NMIIE = OFIE = 0.MOV #32,R5 ; Use as write
counterMOV #0F000h,R6 ; Write pointerMOV #WDTPW+WDTHOLD,&WDTCTL ; Disable WDTL1 BIT #BUSY,&FCTL3
; Test BUSYJNZ L1 ; Loop while busyMOV #FWKEY+FSSEL1+FN0,&FCTL2 ; SMCLK/2MOV #FWKEY,&FCTL3 ;
Clear LOCKMOV #FWKEY+BLKWRT+WRT,&FCTL1 ; Enable block writeL2 MOV Write_Value,0(R6) ; Write
locationL3 BIT #WAIT,&FCTL3 ; Test WAITJZ L3 ; Loop while WAIT = 0INCD R6 ; Point to next wordDEC
R5 ; Decrement write counterJNZ L2 ; End of block?MOV #FWKEY,&FCTL1 ; Clear WRT,BLKWRTL4 BIT
#BUSY,&FCTL3 ; Test BUSYJNZ L4 ; Loop while busyMOV #FWKEY+LOCK,&FCTL3 ; Set LOCK... ; Re-
enable WDT if needed
7.3.4
写入入或或擦擦除除期期间的闪闪存存存存储储器器访访问
当任一写入或者擦除操作从 RAM 内发起且 BUSY=1 时,CPU可以对任一闪存位置进行读取或者写入操作。
否则,会出现一个访问违反,ACCVIFG被置位,并且结果不可预计。 同样的,如果在 WRT=0 时尝试一个
到闪存的写入,ACCVIFG 中断标志被置位,而闪存存储器不受影响。
当一个字节/字写入或者任一擦除操作从闪存存储器内发起时,闪存控制器在写一个取指令时将运行代码
03FFFh 返回到 CPU。 运行代码03FFFh JMP PC 指令。 这使得 CPU 循环执行,直到闪存操作被完
成。 操作完成且 BUSY=0 时,闪存控制器将允许 CPU取合适的运行代码并且程序执行继续。
BUSY=1 时的闪存访问条件列于7-3中。
7-3. BUSY=1 时的的闪闪存存访访问
闪存存操 闪存存存WAIT 结果
读取 0 ACCVIFG=003FFFh 是被读取的值。
任何擦除,或 写入 0 ACCVIFG=1。写入被忽略。
字节/字写入
取指令 0 ACCVIFG=0CPU 03FFFh。 这条是 JMP PC指令。
任一 0 ACCVIFG=1LOCK=1
读取 1 ACCVIFG=003FFFh 是被读取的值。
块写入 写入 1 ACCVIFG=0。被写入。
取指令 1 ACCVIFG=1LOCK=1
EEI=0 并且 EEIEX=0 时,在 EEI EEIEX 不出现的 MSP430x20xx MSP430G2xx 器件上,中断会
在任一闪存操作期间被自动禁用。 在闪存操作完成完成后,中断被自动重新启用。 操作期间任一发生的中
断的相关标志将被置位,并且在被重新启用时将生成一个中断请求。
EEIEX=1 GIE=1 时,一个中断将立即中断任何闪存操作并且FAIL 标志将被置位。 当
EEI=1GIE=1,并且 EEIEX=0 时,一个段擦除将在每 32 fFTG周期被一个等待的中断中断。 在处理中断
后,段擦除继续至少 32 fFTG周期或者直到它完成。 在中断处理期间,BUSY 保持被置位,但是闪存存储
器可由 CPU 访问,而不会导致一个访问违反发生。 不支持嵌套中断和使用中断处理例程内的 RETI 指令
的。
安全装置定时器(处于安全装置模式内)应该在一个闪存擦除周期前被禁用。 一个复位将中止擦除并且此结
果将无法预计。 擦除周期被完成之后,安全装置可被重新启用。
7.3.5
停止止一一个个写写入入或擦除除周周期
在写入或擦除操作正常完成前,通过设置紧急退出位 EMEX,此操作可被停止。 设置 EMEX 位将立即停止
有效操作并且停止闪存控制器。 所有闪存操作停止,闪存返回到读取模式,并且所有FCTL1 寄存器内的位
被复位。 目的操作的结果无法预计。
318
闪存存储器控制器
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
闪存存储器运行
7.3.6
边界界读读取取模模式
边界读取模式可被用于验证闪存存储器内容的完整性。 这个特性在所选的 2xx 器件内执行;可用性请参阅
器件专用数据表。 在边界读取模式,边界编辑的闪存存储器位位置可被检测到。 会产生这一情况的事件包
括不适当的 fFTG设置,或者在擦除/编程操作期间违反最小 VCC。 识别此类存储器位置的一个方法将在闪存存
储器的一个部分上(例如,一个闪存段)定期执行一个校验和计算并且在边界读取模式被启用时重复这一步
骤。 如果它们不匹配,这将表明一个不充分已编辑闪存存储器位置。 可通过禁用边界读取模式,复制至
RAM,擦除闪存段,并且将其从 RAM 写回来刷新受影响的闪存存储器。
检查闪存存储器内容的程序必须从 RAM 执行。 从闪存执行代码将自动禁用边界读取模式。 边界读取模式
MRG0 MRG1 寄存器位控制。 设置 MRG1 被用来检测未充分编辑的包含一个‘1’(被擦除的位)的闪
存单元。 设置 MRG0 被用来检测未充分编辑的包含一个‘0’(已编辑的位)的闪存单元。 应该一次只设定这
些位中的一个。 因此,一个完全边界读取检查将要求两次合格的闪存存储器内容完整性检查。 边界读取模
式期间,闪存访问速度 (MCLK) 必须被限制在 1MHz(请参阅器件专用数据表)。
7.3.7
配置置和和访访问问闪闪存存储储器器控控制制器
FCLTx 寄存器是 16 位,受密码保护的,读取/写入寄存器。 任何读取或者写入访问必须使用字指令,而读
取访问必须在上部字节中包括写入密码 0A5h。 上部字节中的值不是 0A5h 的任何到 FCTLx 寄存器的写入
是一个安全密钥违反,将设定 KEYV 表中并且触发一个 PUC 系统复位。 到任何 FCTLx寄存器的读取将读
取上部字节内的 096h 值。
在擦除或者字节/字写入操作期间,到 FCTL1 的任何写入操作是一个访问违反并且将 ACCVIFG 置位。 当
WAIT=1 时,允许块写入模式下的到 FCTL1 的写入,但是当 WAIT=0 时,块写入模式下的到FCTL1 的写入
是一个访问违反并且将 ACCVIFG 置位。
BUSY=1 时,任何到 FCTL1 的写入是一个访问违反。
BUSY=1 时,可读取任一 FCTLx 寄存器。读取不会导致访问违反。
7.3.8
闪存存存存储储器器控控制器中中断
闪存控制器有两个中断源,KEYV,和 ACCVIFG。 当一个访问违法发生时,ACCVIFG 被置位。 当一个闪
存写入或擦除之后,ACCVIFG 被重新启用时,一个设置ACCVIFG 标志的操作将生成一个中断请求。
ACCVIFG NMI 中断矢量供源,所以对于ACCVIFG 中断请求没必要设定 GIE。 也可通过软件来检查
ACCVIFG 以确定是否发生了访问违反。 ACCVIFG 必须由软件复位。
当使用一个不正确的密码写入任一闪存控制寄存器时,密码违反标志 KEYV 被置位。 当这一情况发生时,
通过复位器件,PUC 被立即生成。
7.3.9
编辑辑闪闪存存存存储储器器件
有三个选项可用来编辑 MSP430 闪存器件 所有选项支持系统内编程:
通过 JTAG 编程
通过引导加载程序编程
听过一个定制解决方案编程
7.3.9.1 通过JTAG 编辑辑闪闪存存存存储储器
MSP430 可通过 JTAG 端口编程。 JTAG 接口要求四个信号(在 20 引脚和 28 引脚上为五个信号),接地
和可选的VCCRST/NMI
319
ZHCU032IDecember 2004Revised January 2012
闪存存储器控制器
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Host
Flash Memory
UART,
Px.x,
SPI,
etc.
CPU executes
user software
Commands, data, etc.
Read/write flash memory
MSP430
闪存存储器运行
www.ti.com.cn
JTAG 端口由一个熔丝保护。 完全熔断熔丝将禁用 JTAG端口并且不可恢复。 无法再通过 JTAG 来访问此
器件。 详细信息,请参阅
《通过
JTAG
接口进行
MSP430
编程用户指南》
(SLAU320)
7.3.9.2 通过过引引导导加加载载程程序(BSL) 编辑辑闪闪存存存存储储器
大多数 MSP430 闪存器件包含一个引导加载程序。 执行细节请参阅器件专用数据表。 BSL 使用户能够采用
一个 UART 串行接口来读取或编辑闪存存储器。 通过 BSL MSP430 闪存存储器的访问由一个用户定义
256 位密码保护。 更多细节,请参阅
《通过 引导加载程序进行
MSP430
编程用户指南》
(SLAU319)
7.3.9.3 通过过一一个个定定制制解解决决方方案案编编辑辑闪闪存存存存储储器
MSP430 CPU 向其自身闪存存储器的写入功能可实现系统内和外部定制编程解决方案,如7-12所示。 用
户可以选择通过可用的任何方式(UARTSPI 等)来为 MSP430 通过数据。 用户开发的软件能够接收数据
并且便捷闪存存储器。 由于这个解决方案类型由用户开发,它可被完全定制以符合针对编程、擦除、或升级
闪存存储器的应用需要。
7-12. 用户户开开发发的的编编程程解解决决方方案
320
闪存存储器控制器
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
闪存存储器寄存器
7.4 闪存存存存储储器器寄寄存存器
7-4中列出了闪存存储器寄存器。
7-4. 闪存存存存储储器器寄寄存存器
寄存存器 简氏氏 寄寄存存器类型型 地地址 初始始状状态
闪存存储器控制寄存器 1 FCTL1 读取/写入 0x0128 带有 PUC 0x9600
闪存存储器控制寄存器 2 FCTL2 读取/写入 0x012A 带有 PUC 0x9642
带有 PUC
闪存存储器控制寄存器 3 FCTL3 读取/写入 0x012C 0x9658(1)
闪存存储器控制寄存器 4(2) FCTL4 读取/写入 0x01BE 带有 PUC 0x0000
中断使能 1 IE1 读取/写入 0x0000 带有 PUC 的复位
中断标志 1 IFG1 读取/写入 0x0002
(1) KEYV POR 复位。
(2) 并不出现在所有器件上。 请见器件专用数据表。
321
ZHCU032IDecember 2004Revised January 2012
闪存存储器控制器
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
闪存存储器寄存器
www.ti.com.cn
7.4.1 FCTL1
,闪闪存存存存储储器器控制寄寄存存器
15 14 13 12 11 10 9 8
FRKEY读取为 096h
FWKEY,必须被写为 0A5h
76543210
BLKWRT WRT 被保EEIEX(1) EEI(1) MERAS ERASE 被保保留
rw-0 rw-0 r0 rw-0 rw-0 rw-0 rw-0 r0
FRKEY 15-8 FCTLx 密码。 一直读取为 096h。 必须被写为 0A05h 或者一个 PUC被生成。
FWKEY
BLKWRT 7块写入模式。 对于块写入模式,WRT 必须被设定。 当 EMEX 被置位时,BLKWRT 被自动复位。
0块写入模式关闭
1块写入模式打开
WRT 6写入。 这个位被用于选择任一写入模式。 当EMEX 被置位时,WRT 被自动复位。
0写入模式关闭
1块写入模式打开
被保保留 5被保留。 一直读取为 0
EEIEX 4使能紧急中断退出。 当 GIE=1 时,设置这个位启用一个位来引起一个从闪存操作中的紧急退出。当 EMEX
置位时,EEIEX 被自动复位。
0退出中断被禁用。
1在中断上退出被启用。
EEI 3启用擦除中断。 对这个位的设置可通过一个中断请求来中断一个段擦除。 中断被处理后,擦除周期重新开
始。
0段擦除被禁用期间的中断。
1段擦除被启用期间的中断。
MERAS 2批量擦除和擦除。 这些位被一起用来选择擦除模式。 当 EMEX 被置位时,MERASERASE 被自动复位。
ERASE 1
MERAS ERASE 擦除周期
0 0 无擦除
0 1 只擦除单独的段
1 0 擦除所有主存储器段
1 1 LOCKA= 0:擦除主和信息闪存存储器。
LOCKA= 1:只擦除主闪存存储器。
被保保留 0被保留。 一直读取为0
(1) MSP430x20xx MSP430G2xx器件上不出现。
7.4.2 FCTL2
,闪闪存存存存储储器器控制寄寄存存器
15 14 13 12 11 10 9 8
FWKEYx,读取为 096h
必须被写为 0A5h
76543210
FSSELx FNx
rw-0 rw-1 rw-0 rw-0 rw-0 rw-0 rw-1 rw-0
FWKEYx 15-8 FCTLx 密码。 一直读取为 096h。 必须被写为 0A05h 或者一个 PUC被生成。
FSSELx 7-6 闪存控制器时钟源选择
00 ACLK
01 MCLK
10 SMCLK
11 SMCLK
FNx 5-0 闪存控制器时钟分频器。 这些位为闪存控制器时钟选择分频器。 除数值为 FNx+1。例如,当 FNx=00h 时,
除数为 1。当FNx=03Fh 时,除数为 64
322
闪存存储器控制器
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
闪存存储器寄存器
7.4.3 FCTL3
,闪闪存存存存储储器器控制寄寄存存器
15 14 13 12 11 10 9 8
FWKEYx,读取为 096h
必须被写为 0A5h
76543210
FAIL LOCKA EMEX LOCK WAIT ACCVIFG KEYV BUSY
r(w)-0 r(w)-1 rw-0 rw-1 r-1 rw-0 rw-(0) r(w)-0
FWKEYx 15-8 FCTLx 密码。 一直读取为 096h。 必须被写为 0A05h 或者一个 PUC被生成。
FAIL 7运行故障。 如果 fFTG 时钟源故障,则这个位被置位,或者当 EEIEX=1 时,一个闪存操作被一个中断中止。
必须用软件复位 FAIL
0无故障
1故障
LOCKA 6A和信息锁定。 写入一个 1到这个位来改变其状态。 写入 0无效。
0在批量擦除期间,段 A被解锁并且所有信息存储器被擦除。
1在批量擦除期间,段 A被锁定并且所有信息存储器被保护不被擦除。
EMEX 5紧急退出
0无紧急退出
1紧急退出
LOCK 4锁定。 这个位解锁闪存存储器使其能够被写入或擦除。 在一个字节/字写入或者擦除操作期间 LOCK 位可随时
被置位,并且操作将正常完成。在块写入模式中,如果 LOCK 位被置位且 BLKWRT=WAIT=1,那么
BLKWRT WAIT 被复位并且模式正常终止。
0未锁定
1已锁定
WAIT 3等待。 表明闪存存储器正在被写入。
0闪存存储器没有为下一个字节/字写入做好准备
1闪存存储器已为为下一个字节/字写入做好准备
ACCVIFG 2访问违反中断标志
0无中断挂起
1中断挂起
KEYV 1闪存安全密码违反。 当置位时,这个位表明一个不正确的 FCTLx 密码被写入任一闪存控制寄存器并且生成一
PUC。 必须用软件来复位 KEYV
0 FCTLx密码被正确写入
1 FCTLx密码写入不正确
BUSY 0忙。 这个位表明闪存时序发生器的状态。
0不忙
1
323
ZHCU032IDecember 2004Revised January 2012
闪存存储器控制器
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
闪存存储器寄存器
www.ti.com.cn
7.4.4 FCTL4
,闪闪存存存存储储器器控制寄寄存存器
并不是所有器件都提供这个寄存器。 细节请参阅器件专用数据表。
15 14 13 12 11 10 9 8
FWKEYx,被读取为 096h
必须被写为 0A5h
76543210
MRG1 MRG0
r-0 r-0 rw-0 rw-0 r-0 r-0 r-0 r-0
FWKEYx 15-8 FCTLx 密码。 一直读取为 096h。 必须被写为 0A05h 或者一个 PUC 将被生成。
被保保留 7-6 被保留。 一直读取为 0
MRG1 5边界读取 1模式。 这个位启用边界 1读取模式。 如果 CPU 从闪存存储器开始执行,边界读取 1位被清除。
如果 MRG1 MRG0 都被置位,MRG1 有效,而 MRG0 被忽略。
0边界 1读取模式被禁用。
1边界 1读取模式被启用
MRG0 4边界读取 0模式 这个位启用边界 0读取模式。 如果 CPU 从闪存存储器开始执行,边界读取模式 0被清除。
如果 MRG1 MRG0 都被置位,MRG1有效,而 MRG0 被忽略。
0边界0读取模式被禁用。
1边界0读取模式被启用
被保保留 3-0 被保留。 一直读取为 0
7.4.5 IE1
,中中断断启启用用寄寄存
1
76543210
ACCVIE
rw-0
7-6 其它模块可使用这些位。 请参阅器件专用数据表。
ACCVIE 5闪存存储器非法访问中断启用.这个位启用 ACCVIFG中断。 由于 IE1 中的其它位可被用于其它模块,建议使
BIS.B 或者 BIC.B 指令来置位或者清除这个位,而不是使用 MOV.B CLR.B 指令。
0中断未被启用
1中断被启用
4-0 其它模块可使用这些位。 请参阅器件专用数据表。
324
闪存存储器控制器
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Chapter 8
ZHCU032IDecember 2004Revised January 2012
数字
I/O
本章对数字 I/O 端口的运行进行了说明。
Topic ........................................................................................................................... Page
8.1 数字I/O 介绍.................................................................................................... 326
8.2 数字I/O 运行.................................................................................................... 326
8.3 输入I/O 寄存存器................................................................................................. 331
325
ZHCU032IDecember 2004Revised January 2012
数字
I/O
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
数字
I/O
介绍
www.ti.com.cn
8.1 数字I/O 介绍
MSP430 执行多达 8个数字 I/O 端口,P1 P8。 每个端口有多达 8I/O 引脚。 每个 I/O 引脚可针对输
入或输出方向单独配置,并且可对每个 I/O 线路单独进行读取或写入操作。
端口 P1 P2 有中断功能。 每个针对 P1 P2 I/O 线路的中断可被单独启用并被配置成在一个输入信号的
上升或者下降边沿上提供一个中断。 所有 I/O 线路提供一个单一中断矢量,并且所有 P2 I/O 线路提供一个
不同的,单中断矢量。
数字 I/O 特性包括:
单独可编程独立 I/O
输入或输出的任意组合
单独可配置的 P1 P2 中断
独立输入和输出数据寄存器
单独可配置的上拉或者下拉电阻器
单独可配置的引脚振荡器功能(某些 MSP430 器件)
: MSP430G22x0:这些器件特有数字 I/O 引脚P1.2P1.5P1.6 P1.7。通用输入输出
(GPIO) P1.0P1.1P1.3P1.4P2.6 P2.7 在这个器件上执行,但是不在器件上提供输
出引脚。 为了避免悬空输入,这些 GPIO,这些数字 I/O 应该通过运行一个启动代码来适当的
初始化。 初始化代码如下
mov.b #0x1B, P1REN;; 适当终止不可用的端口 1;配置为输入且下拉电阻器被启用
xor.b #0x20, BCSCTL3;; VLO 选为低频时钟
初始化代码配置 GPIO P1.0P1.1P1.3,和 P1.4 为输入,且下拉电阻器被启
用(即,P1REN.x=1)并且通过将 VLOCLK 选为 ACLK 来中止 GPIO P2.6 P2.7,细节请
参阅基本时钟系统一章。 在初始化代码被执行后,寄存器
P1OUTP1DIRP1IFGP1IEP1IES P1REN 中的寄存器位P1.0P1.1P1.3 P1.4
不应被改变。 此外,所有端口 2寄存器不应被改变。
8.2 数字I/O 运行
使用用户软件来配置数字 I/O。 在下面的小节中讨论数字I/O 的设置和运行。
8.2.1
输入入寄寄存存器
PxIN
当引脚被配置为 I/O 功能时,PxIN 寄存器中的每个位反映相应 I/O 引脚上输入信号的值。
= 0:输入为低电平
= 1:输入为高电平
:写入入只只读读寄寄存存器PxIN
写入这些只读寄存器将在写入尝试被激活时增加流耗。
8.2.2
输出出寄寄存存器
PxOUT
当引脚被配置为 I/O 功能,输出方向,和上拉/下拉电阻器被禁用时,每个 PxOUT 寄存器中的每个位是相应
I/O 引脚上将被输出的值
= 0:输出为低电平
= 1:输出位高电平
如果引脚上的上拉/下拉电阻器被启用,PxOUT寄存器中的相应位选择上拉或下拉电阻器。
326
数字
I/O ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
数字
I/O
运行
= 0:引脚被下拉
= 1:引脚被上拉
8.2.3
方向向寄寄存存器
PxDIR
每个 PxDIR 寄存器中的每个位选择相应 I/O 引脚的方向,这与为引脚选择的功能无关。 被选择用于其它功
能的 I/O 引脚的 PxDIR 位必须按照其它功能的要求进行设定。
= 0:端口引脚被切换至输入方向
= 1:端口引脚被切换至输出方向
8.2.4
上拉
/
下拉拉电电阻阻器器使使能寄存存器
PxREN
每个 PxREN 寄存器中的每个位启用或者禁用相应 I/O 引脚的上拉/下拉电阻器。 PxOUT 寄存器中的相应位
选择是否上拉或下拉引脚。
= 0:上拉/下拉电阻器被禁用
= 1:上拉/下拉电阻器被启用
8.2.5
功能能选选择择寄寄存存器
PxSEL
PxSEL2
端口引脚通常与其它外设模块功能复用。 请参见器件专用数据表来确定引脚功能。 每个 PxSEL PxSEL2
位被用来选择引脚功能 - I/O 端口或者外设模块功能。
8-1. PxSEL PxSEL2
PxSEL2 PxSEL 脚功功能
0 0 I/O 功能被选择。
0 1 主外设模块功能被选择。
1 0 被保留。 请参阅器件专用数据表。
1 1 第二外设模块功能被选择。
设置 PxSELx=1 不能自动设定引脚方向。 其它外设模块功能也许要求 PxDIRx 位被按照模块功能所需的方
向进行配置。 请参阅器件专用数据表中的引脚电路原理图。
:PxSEL=1 时设设置PxREN=1
MSP430F261x MSP430F2416/7/8/9 的某些 I/O 端口上,在模块功能被选择时
(Pxsel=1) 启用上拉/下拉电阻器 (PxREN=1) 不会禁用逻辑输出驱动器。 不建议采用这个组
合,并且这个组合有可能导致流经电阻器的有害电流。 要获得更多信息,请参阅器件专用数据
表。
;Output ACLK on P2.0 on MSP430F21x1BIS.B #01h,&P2SEL ; Select ACLK function for pinBIS.B
#01h,&P2DIR ; Set direction to output *Required*
:PxSEL=1 时,P1 P2 中断断被被禁禁用
P1SELx P2SELx 位中的任何一个被置位时,相应引脚的中断功能被禁用。 因此,这些
引脚上的信号将不会生成 P1 或者 P2 中断,这与相应 P1IE P2IE 位的状态无关。
当一个端口引脚被选为一个到外设的输入时,到外设的输入信号表示器件引脚上信号被锁存。 当 PxSELx=1
时, 内部输入信号在引脚上的信号之后。 然而,如果 PxSELx=0,到外设的输入在 PxSELx 位被复位前保
持器件引脚上输入信号的值。
327
ZHCU032IDecember 2004Revised January 2012
数字
I/O
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Divider
1/2/4/8
DVSS
DVCC
TAxCLK
1
0
1
TASSELx
3
2
1
0
ID.x
16-bit Timer
TAR
Capture Register
CCRx
Part of Digital I/OPx.y
Part of Timer_A
PAD
数字
I/O
运行
www.ti.com.cn
8.2.6
引脚脚振振荡荡器
某些 MSP430 器件有一个内置于某些信号内的引脚振荡器功能。 引脚振荡器功能可被用在电容触感应用中
以免除对外部无源组件的需要。 此外,引脚振荡器可被用在传感器应用中。
无需使用外部组件生成振荡
电容式传感器可被直接连接至 MSP430 引脚
大约为 0.7V 的稳健,典型内置滞后
当引脚振荡器功能被启用时,其它的引脚配置被写覆盖。 在弱上拉/下拉电阻器被启用并且由引脚本身上的
电压电平控制时,输入驱动器被关闭。I/O 上的电压被馈入引脚的施密特触发器,然后被路由至一个定时
器。 到定时器的连接为器件专用,因此,在器件专用数据表中进行了定义。施密特触发器输出被反转,然后
决定是否启用上拉或下拉电阻器。由于反转,一旦引脚振荡器引脚配置被选择,引脚开始振荡。 在路由至一
个定时器时钟输出或定时器捕捉通道前,某些引脚振荡器输出被通过逻辑与操作组合在一起。 因此,应该每
一次只启用一个引脚振荡器。 每个引脚的振荡器频率由引脚上的负载和 I/O类型定义。 带有模拟功能的 I/O
通常显示了比纯数字I/O 更低的振荡频率。 有关详细信息,请参阅器件专用数据表。 无外部负载的引脚显示
的典型振荡频率在 1MHz 3MHz 之间。
电容容式式触触摸摸应应用用中中的的引引脚脚振振荡荡器
8-1中显示了一个使用引脚振荡器的典型触摸板应用。
8-1. 使使用用引引脚脚振振荡荡器器的的示示例例电电路路和和配配置
触摸板电容的变化(外部电容负载)会影响引脚振荡器频率。 一个正在接近的指尖增加了触摸板的电容,从
而导致一个由更长充电时间引起的较低自身振荡频率。 可在一个内置定时器通道中捕捉振荡频率。 一个引
脚敏感度的典型值显示在8-2中。
328
数字
I/O ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
CLOAD − External Capacitance − pF
Fosc − Typical Oscillation Frequency − MHz− T
0.00
0.15
0.30
0.45
0.60
0.75
0.90
1.05
1.20
1.35
1.50
10 50 100
VCC = 3.0 V
www.ti.com.cn
数字
I/O
运行
8-2. 典型型引引脚脚振振荡荡频频率
8.2.7 P1
P2
中断
端口 P1 P2 中的每个引脚有中断功能,此功能由 PxIFGPxIE,和 PxIES 寄存器配置。 所有 P1 引脚提
供一个单一中断矢量,而所有 P2 引脚提供一个不同的单一中断矢量。 可测试 PxIFG 寄存器来确定一个 P1
P2 中断的源。
8.2.7.1 中断断标标志志寄寄存存器P1IFGP2IFG
每个 PxIFGx 位是针对其相应 I/O 引脚的中断标志,并且当被选择的输入信号边沿出现在引脚上时被置位。
当它们相应的 PxIE 位和 GIE 位被置位时,所有 PxIFGx 中断标志要求一个中断。 每个 PxIFG 标志必须由
软件复位。 软件也可设定每个 PxIFG 标志,从而提供了一个生成软件初始中断的方法。
= 0:无中断等待
= 1:一个中断等待
只有转换,而非静态电平,导致中断。 如果在一个 Px 中断处理例程期间任何 PxIFGx 标志被置位,或者在
一个 Px 中断处理例程的 RETI 指令被执行后被置位的话,被置位的 PxIFGx 标志生成另外一个中断。 这确
保每个转换被确认。
:当改改变PxOUT PxDIR 时的PxIFG 标志
写入 P1OUTP1DIRP2OUT,或 P2DIR 可导致设置相应的P1IFG 或者 P2IFG 标志。
8.2.7.2 中断断边边沿沿选选择择寄寄存存器P1IESP2IES
每个 PxIES 位位相应的 I/O 引脚选择中断标志。
= 0:用一个低电平到高电平转换来设定 PxIFGx 标志
= 1:用一个高电平到低电平转换来设定 PxIFGx 标志
329
ZHCU032IDecember 2004Revised January 2012
数字
I/O
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
数字
I/O
运行
www.ti.com.cn
:写入PxIESx
P1IES,或者 P2IES 的写入可导致相应中断标志的设置。
PxIESx PxINx PxIFGx
01 0 可被置位
01 1 未改变
10 0 未改变
10 1 可被置位
8.2.7.3 中断断使使能P1IEP2IE
每个 PxIE 位启用相关的 PxIFG 中断标志。
= 0:中断被禁用。
= 1:中断被启用。
8.2.8
配置置未未使使用用的的端口引引脚
未使用的 I/O 引脚应该被配置为 I/O 功能,输出方向,并在板上保持未连接状态,以防止一个悬空输入并减
少流耗。 由于引脚未连接,PxOUT 位的值无关。 或者,集成的上拉/下拉电阻器可通过设定未使用引脚的
PxREN 位来启用以防止悬空输入。 未使用引脚的终止,请参阅
系统复位、中断、和运行模式
一章。
330
数字
I/O ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
输入
I/O
寄存器
8.3 输入I/O 寄存存器
8-2中列出了数字 I/O 寄存器。
8-2. 数字I/O 寄存存器
端口 寄存存器 简氏 址 寄寄存存器类型 初始始状状态
输入 P1IN 020h 只读 -
输出 P1OUT 021h 读取/写入 未改变
方向 P1DIR 022h 读取/写入 PUC 复位
中断标志 P1IFG 023h 读取/写入 PUC 复位
P1 中断边沿选择 P1IES 024h 读取/写入 未改变
中断使能 P1IE 025h 读取/写入 PUC 复位
端口选择 P1SEL 026h 读取/写入 PUC 复位
端口选择 2 P1SEL2 041h 读取/写入 PUC 复位
电阻器使能 P1REN 027h 读取/写入 PUC 复位
输入 P2IN 028h 只读 -
输出 P2OUT 029h 读取/写入 未改变
方向 P2DIR 02Ah 读取/写入 PUC 复位
中断标志 P2IFG 02Bh 读取/写入 PUC 复位
P2 中断边沿选择 P2IES 02Ch 读取/写入 未改变
中断使能 P2IE 02Dh 读取/写入 PUC 复位
端口选择 P2SEL 02Eh 读取/写入 PUC 0C0h
端口选择 2 P2SEL2 042h 读取/写入 PUC 复位
电阻器使能 P2REN 02Fh 读取/写入 PUC 复位
输入 P3IN 018h 只读 -
输出 P3OUT 019h 读取/写入 未改变
方向 P3DIR 01Ah 读取/写入 PUC 复位
P3 端口选择 P3SEL 01Bh 读取/写入 PUC 复位
端口选择 2 P3SEL2 043h 读取/写入 PUC 复位
电阻器使能 P3REN 010h 读取/写入 PUC 复位
输入 P4IN 01Ch 只读 -
输出 P4OUT 01Dh 读取/写入 未改变
方向 P4DIR 01Eh 读取/写入 PUC 复位
P4 端口选择 P4SEL 01Fh 读取/写入 PUC 复位
端口选择 2 P4SEL2 044h 读取/写入 PUC 复位
电阻器使能 P4REN 011h 读取/写入 PUC 复位
输入 P5IN 030h 只读 -
输出 P5OUT 031h 读取/写入 未改变
方向 P5DIR 032h 读取/写入 PUC 复位
P5 端口选择 P5SEL 033h 读取/写入 PUC 复位
端口选择 2 P5SEL2 045h 读取/写入 PUC 复位
电阻器使能 P5REN 012h 读取/写入 PUC 复位
输入 P6IN 034h 只读 -
输出 P6OUT 035h 读取/写入 未改变
方向 P6DIR 036h 读取/写入 PUC 复位
P6 端口选择 P6SEL 037h 读取/写入 PUC 复位
端口选择 2 P6SEL2 046h 读取/写入 PUC 复位
电阻器使能 P6REN 013h 读取/写入 PUC 复位
331
ZHCU032IDecember 2004Revised January 2012
数字
I/O
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
输入
I/O
寄存器
www.ti.com.cn
8-2. 数字I/O 寄存存器(continued)
端口 寄存存器 简氏 址 寄寄存存器类型 初始始状状态
输入 P7IN 038h 只读 -
输出 P7OUT 03Ah 读取/写入 未改变
方向 P7DIR 03Ch 读取/写入 PUC 复位
P7 端口选择 P7SEL 03Eh 读取/写入 PUC 复位
端口选择 2 P7SEL2 047h 读取/写入 PUC 复位
电阻器使能 P7REN 014h 读取/写入 PUC 复位
输入 P8IN 039h 只读 -
输出 P8OUT 03Bh 读取/写入 未改变
方向 P8DIR 03Dh 读取/写入 PUC 复位
P8 端口选择 P8SEL 03Fh 读取/写入 PUC 复位
端口选择 2 P8SEL2 048h 读取/写入 PUC 复位
电阻器使能 P8REN 015h 读取/写入 PUC 复位
332
数字
I/O ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Chapter 9
ZHCU032IDecember 2004Revised January 2012
电源源电压监监控
(SVS)
本章描述了 SVS 的运行。 SVS 在已选 MSP430x2xx 器件上执行。
Topic ........................................................................................................................... Page
9.1 电源源电电压压监监控控器(SVS) 介绍................................................................................. 334
9.2 SVS 运行......................................................................................................... 335
9.3 SVS 寄存存器...................................................................................................... 337
333
ZHCU032IDecember 2004Revised January 2012
电源电压监控器
(SVS)
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
+
1.2V
Brownout
Reset
VCC
Set SVSFG
tReset ~ 50us
Reset
SVSCTL Bits
0001
0010
1011
1111
1101
1100
G
D
S
SVSOUT
G
D
S
VLD SVSONPORON SVSOP SVSFG
~ 50us
SVS_POR
SVSIN
AVCC
AVCC
电源电压监控器
(SVS)
介绍
www.ti.com.cn
9.1 电源源电电压压监监控控器(SVS) 介绍
SVS 被用于监控 AVCC电源电压或一个外部电压。 当电源电压或外部电压降至一个用户已选的阈值以下时,
可以配置 SVS 来置位一个标志或产生一个 POR 复位。
SVS 的功能包括:
• AVCC监控
POR 的可选生成
软件可访问的 SVS 比较器输出
低电压条件下被锁存和可由软件访问
14 个可选择的阈值水平
外部通道管理外部电压
9-1中显示了 SVS 结构图。
9-1. SVS 结构构图
334
电源电压监控器
(SVS) ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
SVS
运行
9.2 SVS 运行
SVS 检测 AVCC电压是否降至一个可选择的水平以下。 发生一个低电压状况时,它可以被配置以便提供一个
POR 或置位一个标志。 在一个掉电复位后禁用 SVS,以减少电流消耗。
9.2.1
配置
SVS
VLDx 位被用于使能/禁用 SVS 和为与 AVCC比较选择 14 个可选择的阈值水平 (V(SVS_IT-))中的一个。 当
VLDx=0 时,SVS 关闭和 VLDx>0 时,SVS 打开。SVSON 不能打开 SVS。 相反,它反映了 SVS 的打开/
关闭状态并且当 SVS 打开时,它可用于决定 SVS 的状态。
VLDx=1111 时,外部 SVSIN 通道被选用。 把 SVSIN 上的电压和一个约为 1.25V 的内部电平相比较。
9.2.2 SVS
比较较器器运运行
AVCC降至所选阈值以下时,或外部电压降至它的 1.25V 阈值以下时,会出现一个低电压状态。 任何低电
压状态都会置位 SVSFG 位。
PORON 位使能或禁用 SVS 的器件复位功能。 如果 PORON=1,那么当 SVSFG 位被置位时,将会产生一
POR。如PORON=0,一个低电压状态置位 SVSFG,但不会产生一个 POR
SVSFG 位被锁存。 这将允许用户软件确定之前是否发生了一个低电压状态。 SVSFG 位必须由软件复位。
如果 SVSFG 复位后,低电压状态仍然存在,那么立即被 SVS 再一次置位。
9.2.3
更改
VLDx
VLDx 位从 0到其他非零值改变时,它将应用一个自动的稳定延迟 td (SVSon)从而允许 SVS 电路去结算。 td
(SVSon) 延迟约为 50µs。 在本次延迟期间,SVS 将不会标志一个低电压状态或复位器件,并且 SVSON 被清
除。 软件可以检测 SVSON 位来确定延迟何时会过去及 SVS 何时正常的监控电压。 在 SVSON=0 期间,
写入 SVSCTL 将会中止 SVS自动的结算延迟,td(SVSon),并立即切换 SVS 到激活模式。 这样做,SVS 电路
可能不会被结算,就会导致不可预知的行为。
VLDx 位从 0到其他非零值改变时,电路需要时间 t稳定去结算。 稳定时间 t稳定最大为 ~12 µs。 设置特定
器件数据表。 没有阻止 SVSFG 被置位或器件复位的自动延迟可使用。 在不同水平间的切换建议流程显示
在下列的代码中。
; Enable SVS for the first time:MOV.B #080h,&SVSCTL ; Level 2.8V, do not cause POR; ...; Change
SVS levelMOV.B #000h,&SVSCTL ; Temporarily disable SVSMOV.B #018h,&SVSCTL ; Level 1.9V, cause
POR; ...
335
ZHCU032IDecember 2004Revised January 2012
电源电压监控器
(SVS)
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
V
CC(start)
AV
CC
V
(B_IT−)
Brownout
Region
V
(SVSstart)
V
(SVS_IT−)
td(SVSR)
undefined
Vhys(SVS_IT−)
0
1
td(BOR)
Brownout
0
1
td(SVSon)
td(BOR)
0
1
Set SVS_POR
Brown-
Out
Region
SVS Circuit Active
SVSOUT
Vhys(B_IT−)
Software Sets VLD>0
SVS
运行
www.ti.com.cn
9.2.4 SVS
运行行范范围
AVCC接近阈值时,每一个 SVS 水平都有滞后,以此来降低对小型电源电压改变的敏感度。 在9-2中显
示了 SVS 运行和 SVS/掉电交互运行。
9-2. SVS 运行行水水平平和和掉掉电/复位位电电路
336
电源电压监控器
(SVS) ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
SVS
寄存器
9.3 SVS 寄存存器
9-1中列出了 SVS 寄存器。
9-1. SVS 寄存存器
寄存存器 简式式 寄寄存存器器类型 地地址 初态
SVS 控制寄存器 SVSCTL 读取/写入 055h BOR 复位
337
ZHCU032IDecember 2004Revised January 2012
电源电压监控器
(SVS)
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
SVS
寄存器
www.ti.com.cn
9.3.1 SVSCTL, SVS
控制制寄寄存存器
76543210
VLDx PORON SVSON SVSOP SVSFG
rw-0(1) rw-0(1) rw-0(1) rw-0(1) rw-0(1) r(1) r(1) rw-0(1)
VLDx 7-4 电压电平检测 这些位打开 SVS 并选择标称 SVS 阈值电压电平。 有关参数请参阅《器件专用数据表》。
0000 SVS 关闭
0001 1.9V
0010 2.1V
0011 2.2V
0100 2.3V
0101 2.4V
0110 2.5V
0111 2.65V
1000 2.8V
1001 2.9V
1010 3.05V
1011 3.2V
1100 3.35V
1101 3.5V
1110 3.7V
1111 1.25V 比较外部输入电压 SVSIN
PORON 3 POR 打开。 该位通过使能 SVSFG 标志来引起 POR 器件复位。
0 SVSFG 没有导致一个 POR
1 SVSFG 导致一个 POR
SVSON 2 SVS 打开。 该位反映了 SVS 的运行状态。 该位没有打开 SVS。 通过设置 VLDx>0 打开 SVS
0 SVS 被关闭
1 SVS 被打开
SVSOP 1 SVS 输出。 该位反映了 SVS 比较器的输出值。
0 SVS 比较器的输出是低电平
1 SVS 比较器的输出是高电平
SVSFG 0 SVS 标志。 该位表示一个低电压状态。 在一个低电压状态后 SVSFG 保持置位直到由软件复位。
0无低电压情况发生
1低电压情况出现或已经发生
(1) 只能由一个掉电复位来复位,不能由 POR PUC 复位。
338
电源电压监控器
(SVS) ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Chapter 10
ZHCU032IDecember 2004Revised January 2012
安全全装置定定时
+ (WDT+)
安全装置定时器+WDT+)是一个 16 位定时器,可以用来作为安全装置或作为一个间隔定时器。 本章介
绍了 WDT+WDT+ 已在所有 MSP430x2xx 器件中执行。
Topic ........................................................................................................................... Page
10.1 安全全装装置置定定时时器+ (WDT+) 介绍............................................................................. 340
10.2 安全全装装置置定定时时器+操作........................................................................................ 342
10.3 安全全装装置置定定时时器+寄存存器..................................................................................... 344
339
ZHCU032IDecember 2004Revised January 2012
安全装置定时器
+ (WDT+)
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
安全装置定时器
+ (WDT+)
介绍
www.ti.com.cn
10.1 安全全装装置置定定时时器+ (WDT+) 介绍
安全装置定时器 (WDT+) 模块的主要功能是在软件问题发生后执行受控的系统重启。 如果选定的时间间隔
结束,则产生一个系统复位。 如果在一个应用中不需要安全装置功能,则该模块可被禁用或配置为一个间隔
定时器,并能在选定的时间间隔内产生中断。
安全装置定时器+模块的功能包括:
4 个软件可选时间间隔
安全装置
间隔模式
WDT+ 控制寄存器的访问受密码保护
RST/NMI 引脚功能的控制
可选时钟源
可以停止来节省电能
时钟故障安全功能
10-1中给出了 WDT+ 的结构图。
:安全全装装置置定定时时器+加电电有有效
在一个 PUC 后,WDT+ 模块在安全装置模式下自动配置,通过使用 DCOCLK,用一个最初的
32768 个时钟周期复位间隔。 用户必须在初始复位间隔期满前设置或暂停 WDT+
340
安全装置定时器
+ (WDT+) ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
WDTQn
Y
0
1
2
3Q6
Q9
Q13
Q15
16−bit
Counter
CLK
A
B
1
1
A EN
PUC
SMCLK
ACLK
Clear
Password
Compare
0
0
0
0
1
1
1
1
WDTCNTCL
WDTTMSEL
WDTNMI
WDTNMIES
WDTIS1
WDTSSEL
WDTIS0
WDTHOLD
EQU
EQU Write Enable
Low Byte R / W
MDB
LSB
MSB
WDTCTL
(Asyn)
Int.
Flag
Pulse
Generator
SMCLK Active
MCLK Active
ACLK Active
16−bit
Fail-Safe
Logic
Clock
Request
Logic
MCLK
www.ti.com.cn
安全装置定时器
+ (WDT+)
介绍
10-1. 安全全装装置置定定时时器+方框框图
341
ZHCU032IDecember 2004Revised January 2012
安全装置定时器
+ (WDT+)
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
安全装置定时器
+
操作
www.ti.com.cn
10.2 安全全装装置置定定时时器+操作
WDT+ 模块可以被配置为一个安全装置或带有 WDTCTL 寄存器间隔定时器。 WDTCTL寄存器中还包含控制
位来配置RST/NMI 引脚。 WDTCTL是一个 16 位的,密码保护的,读取/写入寄存器。 任何读取或写入访问
必须使用字指令且写入密码必须包括高字节中的写入密码 05Ah。 任何用除了 05Ah 以外的其他任何高字节
值写入 WDTCTL 都是一个安全密钥违反,且会触发一个 PUC 系统复位而与定时器模式无关。 任何
WDTCTL 的读取会读取高字节中的 069h WDT+ 计数器的时钟速度应当较慢或等于系统频率 (MCLK)
10.2.1
安全全装装置置定定时时器
+
计数数器
安全装置定时器+计数器 (WDTCNT) 是一个 16 位的不能直接用软件访问递增计数器。 WDTCNT 通过安全
装置定时器+控制寄存器 WDTCTL 来控制 WDTCNT 和选择时间间隔。
WDTCNT 可以来源于 ACLK SMCLK。用WDTSSEL 位时钟源选择。
10.2.2
安全全装装置置模模式
在一个 PUC 条件后,通过使用 DCOCLK 来用一个最初的 32768 个周期复位间隔配置 WDT+ 模块。 用户
必须在初始复位间隔或将产生另一个 PUC 到期满前设置、暂停、或清零 WDT+。当WDT+ 被配置为在安
全装置模式下操作时,要么是用不正确的密码写入 WDTCTL,要么已选时间间隔到期时触发一个 PUC。 一
PUC WDT+ 复位到其缺省状态并把RST/NMI 引脚配置复位模式。
10.2.3
间隔隔定定时时器器模模式
WDTTMSEL 位设置为 1能选择间隔定时器模式。 这种模式可用于提供周期性中断。 在间隔定时器模式
下,在选定时间间隔期满时 WDTIFG 标志被置位。 在间隔定时器模式下,在选定定时器的间隔期满时不会
产生一个 PUC,且 WDTIFG 使能位 WDTIE 保持不变。
WDTIE 位和 GIE 位被置位时,WDTIFG 标志会请求一个中断。 当中断标志 WDTIFG 的中断请求被服务
时它会自动复位时,或能通过软件被置位。 在间隔定时器模式下的中断向量地址与在安全装置模式下是不同
的。
:修改改安安全全装装置置定定时时器+
为了即时 PUC 或中断避免意外,WDT+ 的间隔时间应该与在一个单指令中的 WDTCNTCL=1
一起改变。
为了避免可能出现不正确的时间间隔,在改变时钟源前应暂停 WDT+
10.2.4
安全全装装置置定定时时器
+
的中中断
WDT+ 为中断控制使用了 SFR 中的两个位。
WDT+ 中断标志,WDTIFG,位于 IFG1.0
WDT+ 中断使能,WDTIE,位于 IE1.0
当在安全装置模式下使用 WDT+ 时,WDTIFG 标志源自一个复位向量中断。 通过复位中断服务子例程,该
WDTIFG 可用于以确定安全装置是否引起了器件复位。 如果该标志被置位,那么安全装置定时器+就会要
么通过超时要么通过一个违反安全密钥来初始化复位状态。 如果 WDTIFG 被清零,那么复位就是由一个不
同的源引起的。
在间隔定时器模式下使用 WDT+,如果 WDTIE GIE 位被置位,在选定的时间间隔请求一个 WDT+ 间隔
定时器中断后,WDTIFG 标志就会被置位。 间隔定时器中断向量与安全装置下模式下的复位向量是不同
的。 在间隔定时器模式下,当中断得到服务时 WDTIFG 标志自动复位,或可以用软件复位。
342
安全装置定时器
+ (WDT+) ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
安全装置定时器
+
操作
10.2.5
安全全装装置置定定时时器
+
时钟钟故故障障安安全全操
WDT+ 模块提供了一个失效安全时钟功能,来确保在安全装置模式下 WDT+ 的时钟不能被禁用。 这意味着
WDT+ 时钟选择可能会受到影响低功耗模式。 例如,如果 ACLK WDT+ 的时钟源,LPM4 将无法使用,
因为 WDT+ 将防止 ACLK 被禁用。 另外,如果 ACLK SMCLK 在来自 WDT+ 时失败,WDT+ 的时钟源
会自动切换到 MCLK。 在这种情况下,如果 MCLK 来源于晶振,但晶体已失效,那么失效保护功能将激活
DCO 并把它用作为 MCLK 的源。
WDT+ 模块用于在间隔定时器模式下时,没有时钟源的失效安全功能。
10.2.6
在低低功功耗耗模模式式下的操操作
MSP430 器件具有多种低功耗模式。 不同的时钟信号可在不同的低功耗模式中使用。 用户的应用程序要求
和使用的时钟类型决定了应如何配置 WDT+。 例如,如果用户想使用低功耗模式 3,就不应该在安全装置模
式下把 SMCLK 配置为 WDT+ 的时钟源,因为 WDT+ 将为保持 SMCLK 的其时钟源一直使能 SMCLK,这
将增加了 LPM3 的电流消耗。 当对安全装置定时器+没有要求时,WDTHOLD 位可以用来保持 WDTCNT
这就降低了功耗。
10.2.7
软件件示示例
任何对 WDTCTL 的写入操作都必须为一个字的高字节 05Ah 操作 (WDTPW):
; Periodically clear an active watchdogMOV #WDTPW+WDTCNTCL,&WDTCTL;; Change watchdog timer+
intervalMOV #WDTPW+WDTCNTL+WDTSSEL,&WDTCTL;; Stop the watchdogMOV #WDTPW+WDTHOLD,&WDTCTL;; Change
WDT+ to interval timer mode, clock/8192 intervalMOV #WDTPW+WDTCNTCL+WDTTMSEL+WDTIS0,&WDTCTL
343
ZHCU032IDecember 2004Revised January 2012
安全装置定时器
+ (WDT+)
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
安全装置定时器
+
寄存器
www.ti.com.cn
10.3 安全全装装置置定定时时器+寄存存器
10-1中列出了 WDT+ 寄存器。
10-1. 安全全装装置置定定时时器+寄存存器
寄存存器 简式式 寄寄存器类类型型 地 初始始化状态
安全装置定时器+控制寄存器 WDTCTL 读取/写入 0120h 06900h PUC
SFR 中断使能寄存器 1 IE1 读取/写入 0000h PUC 复位
SFR 中断标志寄存器 1 IFG1 读取/写入 0002h PUC 复位(1)
(1) POR 复位 WDTIFG
344
安全装置定时器
+ (WDT+) ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
安全装置定时器
+
寄存器
10.3.1 WDTCTL
,安安全全装装置置定定时
+
寄存存器
15 14 13 12 11 10 9 8
WDTPW,读为 069h
必须写为 05Ah
76543210
WDTHOLD WDTNMIES WDTNMI WDTTMSEL WDTCNTCL WDTSSEL WDTISx
rw-0 rw-0 rw-0 rw-0 r0(w) rw-0 rw-0 rw-0
WDTPW 15-8 安全装置定时器+密码。 总是读为 069h。 必须写为 05Ah,否则就会产生一个 PUC
WDTHOLD 7安全装置定时器+保持。 该位阻止了安全装置定时器+。设WDTHOLD=1 时, 在不使用 WDT+ 时节省了
功耗。
0安全装置定时器+没被停止。
1安全装置定时器+被停止。
WDTNMIES 6安全装置定时器+NMI 沿选择。 当 WDTNMI=1 时,该位为 NMI 中断选择中断边沿。修改该位可以触发一
NMI。 为了避免引发意外 NMI,当 WDTIE=0 时,修改该位。
0上升沿上的 NMI
1下降沿上的 NMI
WDTNMI 5安全装置定时器+ NMI 选择。 该位为RSTNMI 引脚选择功能。
0复位功能
1 NMI 功能
WDTTMSEL 4安全装置定时器+模式选择
0安全装置模式
1间隔定时器模式
WDTCNTCL 3安全装置定时器+计数清零。 设置 WDTCNTCL=1,清零计数值到 0000hWDTCNTCL 被自动复位。
0无操作
1 WDTCNT=0000h
WDTSSEL 2安全装置定时器+时钟源选择。
0 SMCLK
1 ACLK
WDTISx 1-0 安全装置定时器+间隔选择。 这些位选择安全装置定时器+的时间间隔来设置 WDTIFG 的标志和/或来产生一
PUC
00 安全装置时钟源 /32768
01 安全装置时钟源 /8192
10 安全装置时钟源 /512
11 安全装置时钟源 /64
345
ZHCU032IDecember 2004Revised January 2012
安全装置定时器
+ (WDT+)
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
安全装置定时器
+
寄存器
www.ti.com.cn
10.3.2 IE1
,中中断断使使能能寄寄存
1
76543210
NMIIE WDTIE
rw-0
7-5 这些位也可以被其他模块使用。 请参阅《器件专用数据表》。
NMIIE 4 NMI 中断使能。 该位启用 NMI 中断。 由于 IE1 中的其他位可以用于其他模块中,建议使用 BIS.B BIC.B
指令,而不是 MOV.B CLR.B 指令来设置或清零该位。
0中断未被启用
1中断被启用
3-1 这些位也可以被其他模块使用。 请参阅《器件专用数据表》。
WDTIE 0安全装置定时器+中断使能。 该位启用间隔定时器模式下的 WDTIFG 中断。 没有必要为安全装置模式设置此
位。 由于 IE1 中的其他位可以用于其他模块中,建议使用 BIS.B BIC.B 指令,而不是 MOV.B CLR.B
令来设置或清零该位。
0中断未被启用
1中断被启用
10.3.3 IFG1
,中中断断标标志志寄寄存
1
76543210
NMIIFG WDTIFG
rw-0 rw-(0)
7-5 这些位也可以被其他模块使用。 请参阅《器件专用数据表》。
NMIIFG 4 NMI 中断标志。 NMIIFG 必须由软件复位。 由于 IFG1 中的其他位可以用于其他模块中,建议使用 BIS.B
BIC.B 指令,而不是 MOV.B CLR.B 指令清零 NMIIFG
0无中断等待
1中断等待
3-1 这些位也可以被其他模块使用。 请参阅《器件专用数据表》。
WDTIFG 0安全装置定时器+中断使能。 在安全装置模式下,WDTIFG 保持直到被软件复位。 在间隔模式下,通过处理
中断来自动复位 WDTIFG,或者可以由软件复位。 由于 IFG1 中的其他位可以用于其他模块中,建议使用
BIS.B BIC.B 指令,而不是 MOV.B CLR.B 指令来清零 WDTIFG
0无中断等待
1中断等待
346
安全装置定时器
+ (WDT+) ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Chapter 11
ZHCU032IDecember 2004Revised January 2012
硬件件乘法器
本章介绍了硬件乘法器。 硬件乘法器用在一些 MSP430x2xx 器件中。
Topic ........................................................................................................................... Page
11.1 硬件件乘乘法法器器介介绍................................................................................................. 348
11.2 硬件件乘乘法法器器操操作................................................................................................. 348
11.3 硬件件乘乘法法器器寄寄存存器.............................................................................................. 352
347
ZHCU032IDecember 2004Revised January 2012
硬件乘法器
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
OP2 138h
16 x 16 Multipiler
32−bitAdder
32−bit Multiplexer
015
15 0
Multiplexer
C
MPY 130h
MPYS 132h
MAC 134h
MACS 136h
RESHI 13Ch
S
SUMEXT 13Eh
OP1
RESLO 13Ah
031
MPY, MPYS MAC, MACS
MACS MPYS
MAC
MPY = 0000
rw
rw
rwrw015 r
Accessible
Register
硬件乘法器介绍
www.ti.com.cn
11.1 硬件件乘乘法法器器介介绍
硬件乘法器是一个外设和但不是 MSP430 CPU 的一部分。 这意味着,它的活动不干扰 CPU 的活动。 乘法
器寄存器是用 CPU 指令加载和读取的外设寄存器。
硬件乘法器支持:
无符号的乘法
有符号的乘法
无符号乘法累加
有符号的乘法累加
16×16 位,16×8 位,8×16 位,8×8
11-1中给出了硬件乘法器的方框图。
11-1. 硬件件乘乘法法器器方方框框图
11.2 硬件件乘乘法法器器操操作
硬件乘法器支持无符号乘法,有符号乘法,无符号乘法累加,和有符号乘法累加操作。 通过寻址写入的第一
个操作数来选择操作类型。
硬件乘法器有两个 32 位操作数寄存器,OP1 OP2,和三个结果寄存器,RESLORESHI,和
SUMEXTRESL0 用于存储结果的低字,RESHI 用于存储结果的高字,和 SUMEXT 用于存储结果的信
息。 除非使用一个间接寻址模式来访问结果,在 3MCLK 周期内结果就可以准备就绪且在写入 OP2
可用下一条指令读取。 当使用对结果间接寻址时,在结果准备就绪之前需要一个 NOP
348
硬件乘法器
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
硬件乘法器操作
11.2.1
操作作数数寄寄存存器
一个操作数寄存器 OP1 有四个地址,已在11-1中给出,用于选择乘法器模式。 把第一个操作数写入指定
的地址会选择乘法运算的类型,但不启动任何操作。 把第二个操作数写入两个操作数寄存器 OP2 会初始化
乘法运算。 写入 OP2 会用存储在 OP1 OP2 中的值启动所选操作。 结果将被写入这 3个结果寄存
器:RESLORESHI,和 SUMEXT
如果 OP1 的值用于连续操作,则重复的乘法操作可以无需重新加载 OP1 进行 。 没有必要为了执行操作而
重新写入 OP1 值。
11-1. OP1 的各各地地址
OP1 的各各地址 寄寄存存器名称 运行
0130h MPY 无符号乘法
0132h MPYS 有符号乘法
0134h MAC 无符号乘法累加
0136h MACS 有符号倍乘加
11.2.2
结果果寄寄存存器
结果低寄存器 RESLO 保存了计算结果的低 16 位。 结果高位寄存器 RESHI 的内容取决于乘法运算,并在
11-2列出。
11-2. RESHI 的内内容
模式RESHI 的内
MPY 结果的高 16
MPYS MSB 是结果的符号。 剩余位是结果的高 15 位。 二的补码表示法用于结果。
MAC 结果的高 16
MACS 结果的高 16 位。 二的补码表示法用于结果。
总和扩展寄存器 SUMEXT 的内容依赖于乘法运算,并在11-3列出。
11-3. SUMEXT 的内内容
模式SUMEXT
MPY SUMEXT 始终是 0000H
SUMEXT 包含结果的扩展符号
MPYS 00000H = 结果为正数或零
0FFFFh = 结果为负
SUMEXT 包含的结果的进位
MAC 0000H = 结果无进位
0001H = 结果有进位
SUMEXT 包含结果的扩展符号
MACS 00000H = 结果为正数或零
0FFFFh = 结果为负
349
ZHCU032IDecember 2004Revised January 2012
硬件乘法器
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
硬件乘法器操作
www.ti.com.cn
11.2.2.1 MACS 下溢溢和和上上溢
该乘法器不会自动检测 MACS 模式中的下溢和上溢。 累加器的为正数范围是 07FFF FFFFh 且为负数范
围是 0FFFF FFFFh 8000 0000H。 当两个负数的总和产生一个介于一个正数范围的结果时,发生下溢。
当两个正数的总和产生一个介于一个负数范围的结果时,发生上溢。 在这两种情况下,SUMEXT 寄存器包
含结果的符号,0FFFFh 是上溢而 0000H 为下溢。 用户必须用软件检测并适当地处理这些条件。
11.2.3
软件件示示例
下面是所有乘法器模式的例子。 当使用标准定义文件上的标签时,所有 8x8 模式都使用寄存器的绝对地
址,因为汇编器将不会允许 B访问字寄存器。
在软件中没有必要进行符号扩展。 在有符号运行期间用一个字节指令访问乘法器将自动导致一个乘法器模块
内的字节的符号扩展。
; 16x16 Unsigned MultiplyMOV #01234h,&MPY ; Load first operandMOV #05678h,&OP2 ; Load second
operand; ... ; Process results; 8x8 Unsigned Multiply. Absolute addressing.MOV.B #012h,&0130h ;
Load first operandMOV.B #034h,&0138h ; Load 2nd operand; ... ; Process results; 16x16 Signed
MultiplyMOV #01234h,&MPYS ; Load first operandMOV #05678h,&OP2 ; Load 2nd operand; ... ; Process
results; 8x8 Signed Multiply. Absolute addressing.MOV.B #012h,&0132h ; Load first operandMOV.B
#034h,&0138h ; Load 2nd operand; ... ; Process results; 16x16 Unsigned Multiply AccumulateMOV
#01234h,&MAC ; Load first operandMOV #05678h,&OP2 ; Load 2nd operand; ... ; Process results; 8x8
Unsigned Multiply Accumulate. Absolute addressingMOV.B #012h,&0134h ; Load first operandMOV.B
#034h,&0138h ; Load 2nd operand; ... ; Process results; 16x16 Signed Multiply AccumulateMOV
#01234h,&MACS ; Load first operandMOV #05678h,&OP2 ; Load 2nd operand; ... ; Process results; 8x8
Signed Multiply Accumulate. Absolute addressingMOV.B #012h,&0136h ; Load first operandMOV.B
#034h,R5 ; Temp. location for 2nd operandMOV R5,&OP2 ; Load 2nd operand; ... ; Process results
350
硬件乘法器
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
硬件乘法器操作
11.2.4 RESLO
的间间接接寻寻址
当使用间接或间接自动增量的寻址模式访问的结果寄存器时,在加载第二个操作数和访问一个结果寄存器之
间至少需要一条指令。
; Access multiplier results with indirect addressingMOV #RESLO,R5 ; RESLO address in R5 for
indirectMOV &OPER1,&MPY ; Load 1st operandMOV &OPER2,&OP2 ; Load 2nd operandNOP ; Need one
cycleMOV @R5+,&xxx ; Move RESLOMOV @R5,&xxx ; Move RESHI
11.2.5
使使用用中中断
如果在写入 OP1 后,但写入 OP2 之前发生了一个中断,且乘法器被用于服务该中断,那么就会失去原来的
乘法器模式选择且结果是不可预知的。 为了避免这种情况,应在使用硬件乘法器前禁止中断或不在中断服务
程序中使用乘法器。
; Disable interrupts before using the hardware multiplierDINT ; Disable interruptsNOP ; Required
for DINTMOV #xxh,&MPY ; Load 1st operandMOV #xxh,&OP2 ; Load 2nd operandEINT ; Interrupts may be
enable before ; Process results
351
ZHCU032IDecember 2004Revised January 2012
硬件乘法器
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
硬件乘法器寄存器
www.ti.com.cn
11.3 硬件件乘乘法法器器寄寄存存器
11-4中列出了硬件乘法器寄存器。
11-4. 硬件件乘乘法法器器寄寄存存器
寄存存器 简式式 寄寄存存器类型型 地地址 始状状态
操作数 1 - 乘法 MPY 读取/写入 0130h 未改变
操作数 1 - 有符号乘法 MPYS 读取/写入 0132h 未改变
操作数 1 - 乘法累加 MAC 读取/写入 0134h 未改变
操作数 1 - 有符号乘法累加 MACS 读取/写入 0136h 未改变
操作数 2 OP2 读取/写入 0138h 未改变
结果低字 RESLO 读取/写入 013Ah 未定义
结果高字 RESHI 读取/写入 013Ch 未定义
总和扩展寄存器 SUMEXT 读取 013Eh 未定义
352
硬件乘法器
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Chapter 12
ZHCU032IDecember 2004Revised January 2012
定时时器
_A
定时器_A 是一个带有复用捕捉/比较寄存器的 16 位定时器/计数器。 本章描述了 MSP430x2xx 器件系列的
定时器_A 的运行。
Topic ........................................................................................................................... Page
12.1 定时时器_A 介绍.................................................................................................. 354
12.2 定时时器_A 的运运行............................................................................................... 355
12.3 定时时器_A 寄存存器............................................................................................... 367
353
ZHCU032IDecember 2004Revised January 2012
定时器
_A
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
定时器
_A
介绍
www.ti.com.cn
12.1 定时时器_A 介绍
定时器_A 是具有 3个捕捉/比较寄存器的 16 位定时器/计数器。 定时器_A 能支持多个捕捉/比较,PWM
出,和反相时序。 定时器_A 还有广泛的中断功能。 中断可由计数器在溢出条件上产生也可以由每一个捕
/比较寄存器产生。
定时器_A 功能包括:
在四种运行模式下异步 16 位定时器/计数器
可选择和可配置的时钟源
两个或三个可配置的捕捉/比较寄存器
可配置的 PWM 输出功能
异步输入和输出锁存
对所有定时器_A 中断快速响应的中断向量寄存器
定时器_A 的框图如12-1所示。
:字数
计数数的的使使用
在本章中使用计数。 这就意味着计数器要在发生操作的地方进行计数。 如果一个特殊值被直
接写入计数器,那么相关的动作将不再发生。
354
定时器
_A ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Comparator 2
CCI
15 0
CCISx
OUTMODx
Capture
Mode
CMx
Sync
SCS
COVlogic
Output
Unit2 DSet Q
EQU0
OUT
OUT2 Signal
Reset
GND
VCC
CCI2A
CCI2B
EQU2
Divider
1/2/4/8
Count
Mode
16−bit Timer
TAR
RC
ACLK
SMCLK
TACLK
INCLK Set TAIFG
15 0
TASSELx MCxIDx
00
01
10
11
Clear
Timer Clock
EQU0
Timer Clock
Timer Clock
SCCI Y A
EN
CCR1
POR
TACLR
CCR0
Timer Block
00
01
10
11
CAP
1
0
1
0
CCR2
Set TACCR2
CCIFG
TACCR2
www.ti.com.cn
定时器
_A
的运行
12-1. 定时时器_A 的方方框框图
12.2 定时时器_A 的运运行
使用用户软件配置定时器_A 模块。 定时器_A 的建立和运行在下面的部分会进行讨论。
12.2.1 16
位定定时时计计数数器
16 位定时/计数器寄存器,TAR,随着每个时钟信号的上升沿增/减(这由操作模式决定)。 TAR 可以通过
软件读取或写入。另外,当它溢出时,定时器可以产生一个中断。
TAR 可以通过设置 TACLR 位被清除。 在增/减模式下,设置 TACLR 也可以清除时钟分频器和计数器方
向。
355
ZHCU032IDecember 2004Revised January 2012
定时器
_A
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
0h
0FFFFh
TACCR0
定时器
_A
的运行
www.ti.com.cn
:修改改定定时时器_A 寄存存器
建议在修改定时器的运行(除了中断使能、和中断标志)前,先停止定时器,以避免产生未知
的错误操作。
当定时器时钟与 CPU 时钟异步时,任何对 TAR 的读取都会发生而定时器却不运行或者运行结
果是不可信的。 另外,定时器在运行期间需要被多次读取,通过软件多数表决的方式来确定正
确的读数。 对 TAR 的任何写入都将立即生效。
12.2.1.1 时钟钟源源选选择择和和分分频
定时器的时钟源可以是内部时钟源 ACLK, SMCLK,或外部源 TACLK INCLK。时钟源是由 TASSELx
来选择的。 所选择的时钟可以通过 IDx 位直接传递给定时器或进行 248分频。 当 TACLR 被置位
时,定时器时钟分频器被复位。
12.2.2
启动动定定时时器
定时器可以已下列的方法启动,或复位:
MCx0时,定时器计数并且时钟源活跃。
当定时器模式为增/减的任一种时,定时器都可以通过把0写入 TACCR0 而停止。 然后,可以通过将一
个非零值写入 TACCR0 来重启定时器。 这种情况下,定时器开始从零向上递增。
12.2.3
定时时器器模模式式控控制
定时器有四种运行模式,如12-1所描述的:停止,增,连续,和增/减。 运行模式由MCx 位选择。
12-1. 定时时器器模模式
MCx 模式式 说说明
00 停止 定时器被暂停
01 向上 定时器从 0开始到 TACCR0 的值重复计数。
10 连续 定时器从 0开始到 0FFFFh 重复计数。
11 增加/减少 定时器从 0开始递增加到 TACCR0的值并返回到 0重复计数。
12.2.3.1 上数数模模式
如果定时器周期一定要和 0FFFFh 计数不同,那么就要用到上数模式了。 定时器重复计数增加至比较寄存
TACCR0 的值,该值定义了周期,正如在12-2所示。 周期中定时器计数的数量是 TACCR0+1。 当定
时器的值等于 TACCR0 的值时,定时器重新从 0开始计数。 在上数模式下,当定时器的值大于 TACCR0
的值时,定时器立即从 0开始重新计数。
12-2. 上数数模模式
当定时器
计数
TACCR0 的值时,TACCR0 CCIFG 中断标志被置位。 当定时器
TACCR0
计数
0
时,TAIFG 中断标志位被置位。12-3显示了标志置位周期。
356
定时器
_A ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
FFFEh FFFFh 0h
Timer Clock
Timer
Set TAIFG
1h FFFEh FFFFh 0h
0h
0FFFFh
CCR0−1 CCR0 0h
Timer Clock
Timer
Set TAIFG
Set TACCR0 CCIFG
1h CCR0−1 CCR0 0h
www.ti.com.cn
定时器
_A
的运行
12-3. 上数数模模式式标标志志设设置
12.2.3.2 改变变周周期期寄寄存存器TACCR0
当在定时器运行时改变 TACCR0 时,如果新周期大于或等于旧周期,或者大于当前的计数值,那么定时器
增加至新周期。 如果新周期低于当前计数值,则定时器返回到 0。 然而,在计数器返回到 0前可能会出现
一个额外的计数。
12.2.3.3 连续续模模式
在连续模式中,定时器重复计数增加至 0FFFFh 并且从0重新开始,如12-4所示。 捕捉/比较寄存器
TACCR0 和其他的捕捉/比较寄存器一样以相同的方式工作。
12-4. 连续续模模式
当定时器
0FFFFh
开始计数
0时,TAIFG 中断标志被置位。12-5显示了标志置位周期。
12-5. 连续续模模式式标标志志置置位
12.2.3.4 连续续模模式式的的使使用
连续模式可以用于产生独立的时间间隔和输出频率。 当每个时间间隔完成时,就会产生一个中断。 在中断
服务程序中,下一个时间间隔被添加到 TACCRx 寄存器中。12-6显示了两个独立的时间间隔 t0t1被添加
到捕捉/比较寄存器。 在该应用中,时间间隔被硬件控,而不是软件,对中断延迟无影响。 使用所有的 3
捕捉/比较寄存器可以产生高达3个独立的时间间隔或输出频率。
357
ZHCU032IDecember 2004Revised January 2012
定时器
_A
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
0h
TACCR0
0FFFFh
0FFFFh
TACCR0a
TACCR0b TACCR0c TACCR0d
t1
t0t0
TACCR1a
TACCR1b TACCR1c
TACCR1d
t1t1
t0
定时器
_A
的运行
www.ti.com.cn
12-6. 连续续模模式式下下的的时时间间间间隔
时间间隔在其他模式下也能产生,其中 TACCR0 被作为周期寄存器。 由于旧的 TACCRx 数据和新的周期
总和可能高于 TACCR0 值,所以它们的处理更加的复杂。 当以前的 TACCRx 值加上tx高于 TACCR0 数据
时,TACCR0 + 1 必须被减掉以此来获得正确的时间间隔。
12.2.3.5 增加/减少少模模式
增加/减少模式是在定时器周期不同于 0FFFFH 计数,且需要产生一个对称的脉冲时使用的。 定时器重复计
数增加至比较寄存器 TACCR0 的值并且减少到 0,如12-7所示。 周期是 TACCR0 中值的两倍。
12-7. 上数/下数数模模式
计数方向被锁定。 这就允许定时器停止比并且能以它被停止以前的计数方向重新开始。 如果不需要这些,
那么必须先将TACLR 置位以清零方向。 TACLR 位同样清除 TAR 值和定时器时钟分频。
在上数/下数模式中,TACCR0 CCIFG 中断标志和 TAIFG 中断标志在一个周期中只置位一次,由 1/2 定时
器周期隔开。 当定时器
计数
TACCR01TACCR0 时, TACCR0 CCIFG 中断标志被置位;而定时器
完成
计数
0001h 下降到0000h 时,TAIFG被置位。12-8显示了标志置位周期。
358
定时器
_A ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
0h
0FFFFh
TAIFG
Output Mode 2:Toggle/Reset
Output Mode 6:Toggle/Set
TACCR0
TACCR1
EQU1 TAIFG Interrupt Events
EQU1
EQU0
EQU1 EQU1
EQU0
TACCR2
EQU2 EQU2EQU2 EQU2
Dead Time
CCR0−1 CCR0 CCR0−1
Timer Clock
Timer
Set TAIFG
Set TACCR0 CCIFG
CCR0−2 1h 0h
Up/Down
www.ti.com.cn
定时器
_A
的运行
12-8. 上数/下数数模模式式标标志志置置位
12.2.3.6 改变变周周期期寄寄存存器TACCR0
当定时器运行时,改变 TACCR0 的值,如果正处于计数减少的方向,定时器会继续减少到 0TACCR0
的值被立即锁进 TACL0,然而,新周期会在计数器减少到 0后生效。
如果正处于增计数状态,并且新周期大于或等于原来的周期,或比当前计数值要大,定时器会在计数下降前
增加计数到新周期。 如果正处于增加计数状态,并且新周期小于当前计数值,定时器立刻开始减少计数。
但是,在定时器开始减少计数之前会有一个额外的计数出现。
12.2.3.7 上数/下数数模模式式的的使使用
上数/下数模式支持那些在输出信号之间有空载时间的应用(请参阅
《定时器
_A
输出单元》
部分)。 例如,
为了避免过载情况,2个输出驱动一个 H桥不能同时为高。例子中显示了在12-9t死区中是:
t死区=t定时器(TACCR1 –TACCR2)
其中,
t死区=两种输出都不活动的时间段
t定时器=定时器时钟的周期时间
TACCRx= 捕捉/比较寄存器 x的内容
TACCRx 寄存器不被缓冲。 当被写入后,它们立即更新。因此,任何要求的空载时间都不会自动被保留。
12-9. 在上上数/下数数模模式式中中的的输输出出单单元
359
ZHCU032IDecember 2004Revised January 2012
定时器
_A
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
n−2 n−1
Timer Clock
Timer
Set TACCRx CCIFG
n+1 n+3 n+4
CCI
Capture
n+2n
定时器
_A
的运行
www.ti.com.cn
12.2.4
捕捉
/
比较较区区块
定时器_A 中有 2个或 3个相同的捕捉/比较模块 TACCRx。 任何区块都可能被用于捕捉定时器数据,或产
生时间间隔。
捕捉模式
CAP=1 时,捕捉模式被选用。捕捉模式被用于记录时间事件。它可被用于速度估计或时间测量。 捕捉输
CCIxA CCIxB 被连接到外部引脚或内部信号并且由 CCISx 位选择。 CMx 位选择输入信号的捕捉沿作
为上升沿,下降沿或两者都是。 捕捉发生在选择的输入信号沿上。 如果发生捕捉:
定时器的值被复制仅 TACCRx 寄存器
中断标志 CCIFG 被置位。
在任何时刻都可以通过 CCI 位读取输入信号的电平。 MSP430x2xx 系列器件有不同的信号连接到 CCIxA
CCIxB。 对于这些信号的连接,请参阅《器件专用数据表》。
捕捉信号可能会和定时器时钟不同步并导致竞争条件的发生。设置 SCS 位使其可以与下个定时器时钟捕捉
信号同步。 设置 SCS 位以使其可以与建议的定时器时钟捕捉信号同步。 这显示在12-10中。
12-10. 捕捉捉信信号(SCS = 1)
如果在第一次捕捉的值被读取之前发生一个第二次捕捉,那么捕捉比较寄存器就会产生一个溢出逻辑。 当这
种情况发生时,位 COV 被置位,如12-11所示。 COV 位必须有软件复位。
360
定时器
_A ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Second
Capture
Taken
COV = 1
Capture
Taken
No
Capture
Taken
Read
Taken
Capture
Clear Bit COV
in Register TACCTLx
Idle
Idle
Capture
Capture Read and No Capture
Capture
Capture ReadCapture
Capture
www.ti.com.cn
定时器
_A
的运行
12-11. 捕捉捉周周期
12.2.4.1 由软软件件初初始始化化捕捕捉
捕捉可由软件初始化。 CMx 位可以在两种触发沿上配置捕捉 然后,软件设置 CCIS1=1 和切换位 CCIS0
切换在VCCGND,之间的捕捉信号,每次 CCIS0 改变状态时,都要初始化捕捉器:
MOV #CAP+SCS+CCIS1+CM_3,&TACCTLx ; Setup TACCTLxXOR #CCIS0,&TACCTLx ; TACCTLx = TAR
12.2.4.2 比较较模模式
CAP=0 时,选用比较模式。比较模式被用于产生 PWM输出信号或在特定的时间间隔上产生中断。 当
TAR
计数
TACCRx 中的值时:
中断标志 CCIFG 被置位
内部信号 EQUx=1
EQUx 根据输出模式来影响输出信号
输入信号 CCI 锁存到 SCCI
12.2.5
输出出单单元
每一个捕捉/比较区块都包括一个输出单元。 该输出单元被用于产生输出信号,如 PWM 信号。 每个输出单
元可以根据 EQU0 EQUx 产生8种模式的信号。
12.2.5.1 输出出模模式
输出模式由 OUTMODx 位来确定,如12-2中所描述的。 对于除了模式 0以外的所有模式来说,OUTx
号都是随着定时器时钟的上升沿而改变的。输出模式 236,和 7对于输出单元 0无效,因为在这些模式
下,EQUx =EQU0
361
ZHCU032IDecember 2004Revised January 2012
定时器
_A
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
0h
0FFFFh
EQU0
TAIFG
Output Mode 1: Set
Output Mode 2:Toggle/Reset
Output Mode 3: Set/Reset
Output Mode 4:Toggle
Output Mode 5: Reset
Output Mode 6:Toggle/Set
Output Mode 7: Reset/Set
TACCR0
TACCR1
EQU1 EQU0
TAIFG
EQU1 EQU0
TAIFG Interrupt Events
定时器
_A
的运行
www.ti.com.cn
12-2. 输出出模模式
OUTMODx 模式式 说说明
000 输出 输出信号 OUTx OUTx 位定义。 当 OUTx 位更新时,OUTx信号立刻更新。
当定时器
计数
TACCRx 值时,输出被置位。 它保持置位直到定时器复位或选择了另一个输
001 置位 出模式并影响了输出。
010 切换/复位 当定时器
计数
TACCRx 值时,输出被切换。 当定时器
计数
TACCR0 值时,它被复位。
011 置位/复位 当定时器
计数
TACCRx 值时,输出被置位。 当定时器
计数
TACCR0 值时,它被复位。
100 切换 当定时器
计数
TACCRx 值时,输出被切换。 输出周期是定时器周期的二倍。
当定时器
计数
TACCRx 值时,输出被复位。 它保持复位直到选用另外一种输出模式并且影
101 复位 响到了输出。
110 切换/置位 当定时器
计数
TACCRx 值时,输出被切换。 当定时器
计数
TACCR0 值时,它被置位。
111 复位/置位 当定时器
计数
TACCRx 值时,输出被复位。 当定时器
计数
TACCR0 值时,它被置位。
12.2.5.2 输出出举举例在单单调调增增加加模模式式中中的的定定时时器
当定时器
计数
增加到 TACCRx 的值,并从 TACCR0 返回到 0时,OUTx 信号根据输出模式而改变。 在
12-12中显示了一个使用了 TACCR0 TACCR1的例子。
12-12. 输出出举举例在单单调调增增加加模模式式中中的的定定时时器
12.2.5.3 输出出举举例在连连续续模模式式中中的的定定时时器
当定时器计数达到到 TACCRx TACCR0 时,OUTx 信号会根据选择的输出模式发生改变。 在12-13
显示了一个使用了 TACCR0 TACCR1 的例子。
362
定时器
_A ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
0h
0FFFFh
TAIFG
Output Mode 1: Set
Output Mode 2:Toggle/Reset
Output Mode 3: Set/Reset
Output Mode 4:Toggle
Output Mode 5: Reset
Output Mode 6:Toggle/Set
Output Mode 7: Reset/Set
TACCR0
TACCR1
EQU1 TAIFG EQU1 EQU0 Interrupt EventsEQU0
www.ti.com.cn
定时器
_A
的运行
12-13. 输出出举举例在连连续续模模式式中中的的定定时时器
363
ZHCU032IDecember 2004Revised January 2012
定时器
_A
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
0h
0FFFFh
TAIFG
Output Mode 1: Set
Output Mode 2:Toggle/Reset
Output Mode 3: Set/Reset
Output Mode 4:Toggle
Output Mode 5: Reset
Output Mode 6:Toggle/Set
Output Mode 7: Reset/Set
TACCR0
TACCR2
EQU2
TAIFG Interrupt Events
EQU2
EQU0
EQU2 EQU2
EQU0
定时器
_A
的运行
www.ti.com.cn
12.2.5.4 输出出举举例在增增加/减少少 模模式式中中的的定定时时器
当定时器的值在任一计数方向上出现了等于 TACCRx TACCR0 的值时,OUTx 信号都会按选择的输出模
式发生改变。 在12-14中显示了一个使用了 TACCR0 TACCR2 的例子。
12-14. 输出出举举例在上上数/下数数模模式式中中的的定定时时器
:在输输出出模模式式间间切切换
当在输出模式之间进行切换时,OUTMODx 的一个位必须在过渡时保持置位,除非是切换到模
0。否则,会因为一个NOR 门解码输出模式 0而导致出现输出干扰。在输出模式之间切换
的一个安全方法就是用输出模式 7作为过渡状态。
BIS #OUTMOD_7,&TACCTLx ; Set output mode=7BIC #OUTMODx, &TACCTLx ; Clear
unwanted bits
364
定时器
_A ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
DSet QIRQ, Interrupt Service Requested
Reset
Timer Clock
POR
CAP
EQU0
Capture
IRACC, Interrupt RequestAccepted
CCIE
www.ti.com.cn
定时器
_A
的运行
12.2.6
定时时器
_A
中断
16 位定时器_A 2个中断向量相关联:
TACCR0 CCIFG TACCR0 中断向量
所有的其他 CCIFG 标志和 TAIFG TAIV 中断向量
在捕捉模式下,当一个定时器的值在其相关的TACCRx 寄存器被捕捉时, CCIFG 标志被置位。 在比较模式
下,如果 TAR
计数
到相应的 TACCRx 值时,CCIFG 标志被置位。 软件也可以清除或置位任何CCIFG
志。 当相应的 CCIE 位和 GIE 位被置位时,所有的 CCIFG 标志都会请求一个中断。
12.2.6.1 TACCR0 中断
TACCR0 CCIFG 标志拥有最高的定时器_A 中断优先级,并有一个专用的中断向量,如12-15所示。 当进
TACCR0 中断后,TACCR0 CCIFG 标志自动复位。
12-15. 捕捉/比较TACCR0 中断断标标志
12.2.6.2 TAIV,中中断断向向量量发发生生器
TACCR1 CCIFGTACCR2 CCIFG,和 TAIFG 标志被优先连接到一个单独的中断向量源。 中断向量寄存
TAIV 用于确定它们中的哪个标志响应中断请求。
最高优先级在 TAIV 寄存器中产生一个数字使能中断(见寄存器说明)。 此数字被评估并被添加到项目计数
器中从而自动的进入相应的子程序。 禁用定时器_A 不会影响TAIV 的值。
TAIV 寄存器的任何访问,读取或写入都会自动复位最高优先级的挂起中断标志。 如果另一个中断标志置
位,在结束原有的中断响应后会,该中断响应立即发生。 例如,当中断服务子程序访问 TAIV 寄存器时,如
TACCR1 TACCR2 CCIFG 标志被置位,则 TACCR1 CCIFG 自动复位。 在中断服务子程序的 RETI
命令执行后,TACCR2CCIFG 标志会产生另一个中断。
365
ZHCU032IDecember 2004Revised January 2012
定时器
_A
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
定时器
_A
的运行
www.ti.com.cn
12.2.6.3 TAIV 软件件举举例
下列软件例子说明了 TAIV 和处理开销的建议方法。 TAIV 的值被加入到 PC 来自动跳转到相应的子程序。
右边空白处的数字表明了 CPU 的每条指令所需要的周期。不同的中断源的软件开销包括中断延迟和返回中
断周期,但并不包含任务本身的执行时间。 延迟是:
捕捉比较/模块 TACCR011 个周期
捕捉比较/模块 TACCR1TACCR2:16 个周期
定时器溢出 TAIFG14 个周期
; Interrupt handler for TACCR0 CCIFG CyclesCCIFG_0_HND; ... ; Start of handler Interrupt latency
6RETI 5; Interrupt handler for TAIFG, TACCR1 and TACCR2 CCIFGTA_HND... ; Interrupt latency 6ADD
&TAIV,PC ; Add offset to Jump table 3RETI ; Vector 0: No interrupt 5JMP CCIFG_1_HND ; Vector 2:
TACCR1 2JMP CCIFG_2_HND ; Vector 4: TACCR2 2RETI ; Vector 6: Reserved 5RETI ; Vector 8: Reserved
5TAIFG_HND ; Vector 10: TAIFG Flag... ; Task starts hereRETI 5CCIFG_2_HND ; Vector 4: TACCR2... ;
Task starts hereRETI ; Back to main program 5CCIFG_1_HND ; Vector 2: TACCR1... ; Task starts
hereRETI ; Back to main program 5
366
定时器
_A ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
定时器
_A
寄存器
12.3 定时时器_A 寄存存器
定时器_A 寄存器在12-3中列出。
12-3. 定时时器_A3 寄存存器
寄存存器 简氏氏 寄寄存存器器类型 地地址 初态
定时器_A 控制 TACTL 读取/写入 0160h POR 复位
定时器_A 计数器 TAR 读取/写入 0170h POR 复位
定时器_A 捕捉/比较控制 0 TACCTL0 读取/写入 0162h POR 复位
定时器_A 捕捉/比较 0 TACCR0 读取/写入 0172h POR 复位
定时器_A 捕捉/比较控制 1 TACCTL1 读取/写入 0164h POR 复位
定时器_A 捕捉/比较 1 TACCR1 读取/写入 0174h POR 复位
定时器_A 捕捉/比较控制 2 TACCTL2(1) 读取/写入 0166h POR 复位
定时器_A 捕捉/比较 2 TACCR2(1) 读取/写入 0176h POR 复位
定时器_A 中断矢量 TAIV 只读 012Eh POR 复位
(1) MSP430F20xx 和其他器件一样,MSP430 器件上没有定时器_A2
367
ZHCU032IDecember 2004Revised January 2012
定时器
_A
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
定时器
_A
寄存器
www.ti.com.cn
12.3.1 TACTL
,定定时时器
_A
控制制寄寄存存器
15 14 13 12 11 10 9 8
未使使用TASSELx
rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0)
76543210
IDx MCx 未使使用TACLR TAIE TAIFG
rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0)
未使使用 15-10 未使用
TASSELx 9-8 定时器_A 时钟源选择
00 TACLK
01 ACLK
10 SMCLK
11 INCLKINCLK 是器件专用并且常被分配到反相的 TBCLK)(请参阅《器件专用数据表》)
IDx 7-6 输入分频器。 这些位为输入时钟选择分频器。
00 /1
01 /2
10 /4
11 /8
MCx 5-4 模式控制。 当定时器_A 在不使用时,设置 MCX=00h 从而节省了功耗。
00 停止模式:定时器被暂停。
01 上数模式:定时器计数增加至 TACCR0
10 连续模式:定时器计数增加至 0FFFFh
11 上数/下数模式:定时器增加至 TACCR0 然后减至 0000h
未使使用 3未使用
TACLR 2定时器_A 清零 将这些位置位复位 TAR,时钟分频器,和计数方向。 TACLR 位自动复位并且总是读取为 0
TAIE 1定时器_A 中断使能。 这些位启用 TAIFG 中断请求。
0中断被禁用
1中断被启用
TAIFG 0定时器_A 中断标志
0无中断等待
1中断等待
368
定时器
_A ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
定时器
_A
寄存器
12.3.2 TAR
,定定时时器
_A
寄存存器
15 14 13 12 11 10 9 8
TARx
rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0)
76543210
TARx
rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0)
TARx 15-0 定时器_A 寄存器。 TAR寄存器是定时器_A 的计数。
12.3.3 TACCRx
,定定时时器
_A
捕捉
/
比较较寄寄存存器
x
15 14 13 12 11 10 9 8
TACCRx
rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0)
76543210
TACCRx
rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0)
TACCRx 15-0 定时器_A 捕捉/比较寄存器。
比较模式:TACCRx 保存用于与定时器_A 寄存器中的定时器值进行比较的数据,TAR
捕捉模式:当一个捕捉被执行时,定时器_A 寄存器,TAR,被复制进 TACCRx 寄存器。
369
ZHCU032IDecember 2004Revised January 2012
定时器
_A
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
定时器
_A
寄存器
www.ti.com.cn
12.3.4 TACCTLx
,捕捕捉
/
比较较控控制制寄寄存存器
15 14 13 12 11 10 9 8
CMx CCISx SCS SCCI 未使使用CAP
rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) r r0 rw-(0)
76543210
OUTMODx CCIE CCI OUT COV CCIFG
rw-(0) rw-(0) rw-(0) rw-(0) r rw-(0) rw-(0) rw-(0)
CMx 15-14 捕捉模式
00 无捕捉
01 上升沿上的捕捉
10 下降沿上的捕捉
11 上升沿和下降沿二者的捕捉
CCISx 13-12 捕捉/比较输入选择 这些位选择 TACCRx 输入信号。 有关特定信号的连接请参阅《器件专用数据表》。
00 CCIxA
01 CCIxB
10 GND
11 VCC
SCS 11 同步捕捉源。 该位被用于使用定时器时钟同步捕捉输入信号。
0不同步捕捉
1同步捕捉
SCCI 10 同步捕捉/比较输入 所选择的 CCI 输入信号由EQUx 信号锁存,并可通过该位读取
未使使用 9未使用。 只读。 总是读取为 0
CAP 8捕捉模式
0比较模式
1捕捉模式
OUTMODx 7-5 输出模式。 模式 2367不能用于 TACCR0,这是因为EQUx = EQU0
000 OUT 位值
001 置位
010 切换/复位
011 置位/复位
100 切换
101 复位
110 切换/置位
111 复位/置位
CCIE 4捕捉/比较中断使能。 该位启用相应 CCIFG 标志的中断请求。
0中断被禁用
1中断被启用
CCI 3捕捉/比较输出。 选择的输入信号可以通过该位读取。
OUT 2输出。 在输出模式 0中,该位直接控制输出的状态。
0输出低电平
1输出高电平
COV 1捕捉溢出。 该位表明一个捕捉溢出的发生。 COV 位必须由软件复位。
0无捕捉溢出发生
1捕捉溢出发生
CCIFG 0捕捉/比较中断标志
0无中断等待
1中断等待
370
定时器
_A ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
定时器
_A
寄存器
12.3.5 TAIV
,定定时时器
_A
中断断矢矢量量寄寄存存器
15 14 13 12 11 10 9 8
00000000
r0 r0 r0 r0 r0 r0 r0 r0
76543210
0 0 0 0 TAIVx 0
r0 r0 r0 r0 r-(0) r-(0) r-(0) r0
TAIVx 15-0 定时器_A 中断矢量值
TAIV 内容 中断断源 中断断标志 中中断断优先级
00h 无中断挂起 -
02h 捕捉/比较 1 TACCR1 CCIFG 最高:
04h 捕捉/比较 2(1) TACCR2 CCIFG
06h 被保留 -
08h 被保留 -
0Ah 定时器溢出 TAIFG
0Ch 被保留 -
0Eh 被保留 -最低
(1) 没有在 MSP430x20xx器件中执行。
371
ZHCU032IDecember 2004Revised January 2012
定时器
_A
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Chapter 13
ZHCU032IDecember 2004Revised January 2012
定时时器
_B
定时器_B 是一个带有多个捕捉/比较寄存器的 16 位定时器/计数器。 本章主要讲述了 MSP430x2xx 器件系
列定时器_B 的操作。
Topic ........................................................................................................................... Page
13.1 定时时器_B 的介介绍............................................................................................... 373
13.2 定时时器_B 的操操作............................................................................................... 375
13.3 定时时器_B 的寄寄存存器............................................................................................ 388
372
定时器
_B ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
定时器
_B
的介绍
13.1 定时时器_B 的介介绍
定时器_B 是一个带有 3个或 7个捕捉/比较寄存器的 16 位定时器/计数器。 定时器_B 能支持多个捕获/比较
寄存器,PWM 输出和间隔定时。 定时器_A 也具有扩展的中断功能。 计数器在溢出发生时可生成中断而每
个捕获/比较寄存器也可生成中断。
定时器_B 的特性包括:
4 种操作模式和 4个可选长度的异步 16 位定时器/计数器
可选和可配置的时钟源
3 个或 7个可配置的捕获/比较寄存器
具有 PWM 功能的可配置输出
加载同步的双缓冲比较锁存器
对所有定时器_B 中断快速响应的中断向量寄存器
13-1中给出了定时器_B 的方框图。
:
数的的使使用
本章中使用了计数
。 这意味着计数器必须在在计数动作的过程中计数。 如果一个特定的值被
直接写入计数器,那么相应的操作就不会发生。
13.1.1
与定定时时器
_A
的相相似似和和不不同同之
除了下列情况外,定时器_B 与定时器_A 都相同:
定时器_B 的可被编程到 81012,或 16 位。
定时器_B TBCCRx 寄存器是双缓冲的,且可以被集合。
所有的定时器_B 都可以被放入一个高阻抗状态。
在定时器_B 上未执行 SCCI 位的功能。
373
ZHCU032IDecember 2004Revised January 2012
定时器
_B
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
CCR6
Comparator 6
CCI
15 0
OUTMODx
Capture
Mode
CMx
Sync
COVlogic
Output
Unit6 DSet Q
EQU0
OUT
OUT6 Signal
Reset
POR
EQU6
Divider
1/2/4/8
Count
Mode
16−bit Timer
TBR
Set TBIFG
15 0
MCxIDx
Clear
TBCLR
Timer Clock
CCR0
EQU0
Timer Clock
Timer Clock
VCC
TBR=0
UP/DOWN
EQU0
CLLDx
CNTLx
Load
CCR1
CCR2
CCR3
CCR4
CCR5
Timer Block
TBCCR6
RC
10 12 168
TBCLGRPx
CCR5
CCR4
CCR1
Group
Load Logic
Group
Load Logic
TBSSELx
00
01
10
11
GND
VCC
CCI6A
CCI6B
00
01
10
11
CCISx
00
01
10
11
00
01
10
11 CAP
1
0
SCS
1
0
Set TBCCR6
CCIFG
Compare Latch TBCL6
ACLK
SMCLK
TBCLK
INCLK
定时器
_B
的介绍
www.ti.com.cn
NOTE: INCLK 是器件特定的,通常被分配给反相的 TBCLK,请参阅《特定器件数据手册》。
13-1. 定时时器_B 的方方框框图
374
定时器
_B ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
定时器
_B
的操作
13.2 定时时器_B 的操操作
定时器_B 的模块由用用户软件进行配置。 定时器_B 的设置和操作将在下面的章节讨论。
13.2.1 16
位定定时时器器计计数数器
16 位定时器/计数器寄存器,TBR,随着时钟信号的每个上升沿增/减(由操作模式决定)。 TBR 可以由软
件进行读取或写入。 此外,定时器溢出时,它可以产生一个中断。
可通过设置 TBCLR 位来清除 TBR。设TBCLR 也会清除时钟分频器和针对上数/下数的计数方向。
:修改改定定时时器_B 寄存存器
为了避免产生错误的操作状况,建议在修改定时器的操作(中断使能、中断标志,和 TBCLR
除外)前先停止定时器。
当定时器时钟和 CPU 时钟异步时,任何对 TBR 的读取会由于定时器未运行而导致所读的结果
是不可预料的。 因此,当定时器运行时,需要多读几次,通过软件多数表决来确定正确的读
。对TBR 的写入操作是立即生效的。
13.2.1.1 TBR 的长长度
定时器_B 可以通过 CNTLx 位将它配置为 81012 16 位定时器。 最大的计数数值,TBR(最大),可选
长度可分别为 0FFh03FFh0FFFh,和 0FFFFh。在810,和 12 位模式下,写入 TBR 寄存器中的数
据是右对齐,带前导零。
13.2.1.2 时钟钟源源选选择择和和分分频频器
定时器的时钟源可以是 ACLKSMCLK,或外部通过 TBCLK INCLKINCLK 是特定于器件的,通常被
分配给反相 TBCLK,请参见《器件专用数据表》)。 时钟源由 TBSSELx 位来选择。 所选择的时钟源可以
直接被传递给计时器或通过使用 IDx 位进行 248分频。 当 TBCLR 被置位时,时钟分频器复位。
13.2.2
启动动定定时时器
定时器可以通过以下方式启动或重新启动:
MCX>0 时,定时器计数到并且时钟源处于活动状态时。
当定时器模式为增/减模式时,定时器可以通过把 0载入 TBCL0 来停止计数。 之后定时器可以通过把一
个非 0的数值载入 TBCL0 来重新开始计数。 在这种情况下,计时器开始以增加的方向从零递增。
13.2.3
定时时器器模模式式控控制
定时器有 4种操作模式,见13-1:停止、增、连续和增/减。 操作模式由 MCx 位来选择。
13-1. 定时时器器模模式
MCx 模式式 说说明
00 停止 该定时器暂停。
01 向上 定时器循环地从 0增到比较寄存器 TBCL0 的值。
10 连续 定时器循环地从 0连续增加到由 CNTLx 位选择的值。
11 / 定时器循环地从 0增到 TBCL0 的值再连续减至 0
375
ZHCU032IDecember 2004Revised January 2012
定时器
_B
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
0h
TBR(max)
TBCL0−1 TBCL0 0h
Timer Clock
Timer
Set TBIFG
Set TBCCR0 CCIFG
1h TBCL0−1 TBCL0 0h
0h
TBR(max)
TBCL0
定时器
_B
的操作
www.ti.com.cn
13.2.3.1 增模模式
用于如果计数周期不同于 TBR(最大)计数,则使用增模式。 定时器重复递增计数比较锁存器 TBCL0 的值,
该值定义了周期,如在13-2中所示。 在此期间的定时器计数的值是 TBCL0+1。 当定时器的值等于
TBCL0 时,定时器就回到 0重新开始计数。 当定时器的值大于 TBCL0 时,如果选择增模式,定时器立即
0重新开始计数。
13-2. 增模模式
当定时器
计数
TBCL0 值时,TBCCR0 CCIFG 中断标志被置位。 当定时器
TBCL0
0
计数
时,TBIFG 中断标志置位。13-3说明了标志置位循环。
13-3. 增模模式式标标志志的的置置位
13.2.3.2 更改改周周期期寄寄存存器TBCL0
当在定时器运行时修改 TBCL0,并且 TBCL0 加载事件为
立即
时,CLLD0=00,如果新的周期大于或等于旧
的周期,或大于当前计数值,那么定时器就会计数至新的周期。 如果新周期小于当前的计数值,那么定时器
回到 0。 但是,在计数器回到 0之前会多出一个额外的计数。
13.2.3.3 连续续模模式
在连续模式中,定时器重复计数增到 TBR(最大)然后重新从 0开始增计数,如在13-4中所示。 比较锁存器
TBCL0 与其他捕获/比较寄存器的工作方式一样。
13-4. 连续续模模式
当定时器
TBR
(最大)
0计数时,TBIFG 中断标志被置位。13-5说明了标志置位循环。
376
定时器
_B ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
0h
EQU0 Interrupt
TBCL0a
TBCL0b TBCL0c TBCL0d
t1
t0t0
TBCL1a
TBCL1b TBCL1c
TBCL1d
t1t1
t0
EQU1 Interrupt
TBR(max)
TBR (max)
−1 TBR (max) 0h
Timer Clock
Timer
Set TBIFG
1h TBR (max) 0hTBR (max)
−1
www.ti.com.cn
定时器
_B
的操作
13-5. 连续续模模式式标标志志的的置置位
13.2.3.4 连续续模模式式的的使使用
连续模式可以用于产生独立的时间间隔和输出频率。 每次一个间隔完成时,就会产生一个中断。 下一个时
间间隔被添加到中断服务子程序中的 TBCLx 锁存器。13-6显示了 2个独立的时间间隔 t0t1正被添加至
捕获/比较寄存器。 该时间间隔由硬件控制,而不是软件,不受中断延迟的影响。 多达 3个(定时器_B3
7个(定时器_B7)独立的时间间隔或输出频率可以通过使用捕获/比较寄存器生成。
13-6. 连续续模模式式时时间间间间隔
时间间隔也可以由其他模式产生,在此 TBCL0 也可以被用作周期寄存器。 由于旧的 TBCLx 数据之和新周
期的总和比 TBCL0 值大,所以操作就复杂得多。 当前一个 TBCLx 值加上 txTBCL0 数据大时,那么为了
获得正确的时间间隔,必须减去 TBCL0+1
13.2.3.5 /减模模式
如果定时器周期肯定不会与 TBR(最大)计数相同, 且需要产生对称的脉冲时,才会使用增/减模式。 定时器
重复递增计数比较锁存器 TBCL0 的值,之后再减至 0,如在13-7中所示。 该周期是 TBCL0 值的 2倍。
: TBCL0 > TBR(最最大大)
如果 TBCL0 > TBR(最大),那么计数操作就和连续模式的配置一样。 不会从 TBR(最大)减到 0
377
ZHCU032IDecember 2004Revised January 2012
定时器
_B
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
TBCL0−1 TBCL0 TBCL0−1
Timer Clock
Timer
Set TBIFG
Set TBCCR0 CCIFG
TBCL0−2 1h 0h 1h
Up/Down
0h
TBCL0
定时器
_B
的操作
www.ti.com.cn
13-7. /减模模式
计数方向是锁定的。 这就使得定时器停止后再能在停止前以相同的方向重新启动计数。 如果不想这样的
话,就需要用 TBCLR 位来清零方向。 TBCLR 位也会清零 TBR 值和时钟分频。
在增减模式中,TBCCR0 CCIFG 中断标志和 TBIFG 中断标志在该周期中只被置位一次,它们相隔 1/2 个定
时器周期。 当定时器
TBCL01
TBCL0
计数
时,TBCCR0 CCIFG 中断标志被置位;而定时器完成
0001h
减至
0000h
的计数
时,TBIFG 被置位。13-8说明了标志置位循环。
13-8. /模式式标标志志的的置置位
13.2.3.6 改变变周周期期寄寄存存器TBCL0 的值
如果在定时器正在计数,且以减的方向计数时改变 TBCL0,且当 TBCL0 加载事件为
立即的
时,定时器会继
续下降直至减至 0。新的周期在减到0后开始。 TBCCR0 中的值被立即锁存到 TBCL0 中;然而,在计数器
计数下降至 0之后,新周期生效。
如果定时器正以增的方向计数,并且当新的周期已经锁存到 TBCL0 中时,且新的周期大于或等于旧的周
期,或比当前计数值大,定时器会在减计数之前增计数到新的周期。 如果定时器正以增的方向计数,且当载
TBCL0 时新周期小于当前计数值,定时器会开始减计数。 但是,在计数器开始减计数之前可能会产生一
个额外的计数。
13.2.3.7 /减模模式式的的使使用
/减模式支持在输出信号之间需要死区时间的应用(请参阅
《定时器
_B
输出单元》
小结部分)。 例如,为
避免出现过载情况,2个输出驱动一个 H桥绝不能同时处于一个高状态。 在13-9t空载给出的例子是;
t空载=t定时器×(TBCL1-TBCL3)
其中,
t空载=在此期间的两个输出需要处于非活动状态
t定时器=定时器时钟周期时间
TBCLx=比较锁存器 x的内容
378
定时器
_B ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
n−2 n−1
Timer Clock
Timer
Set TBCCRx CCIFG
n+1 n+3 n+4
CCI
Capture
n+2n
TBIFG
0h
TBR(max)
Output Mode 2:Toggle/Reset
Output Mode 6:Toggle/Set
TBCL0
TBCL1
EQU1 TBIFG Interrupt Events
EQU1
EQU0
EQU1 EQU1
EQU0
TBCL3
EQU3 EQU3EQU3 EQU3
Dead Time
www.ti.com.cn
定时器
_B
的操作
可以同时加载集合的比较锁存器来保证死区时间。
13-9. /减模模式式的的输输出出单单元
13.2.4
捕捉
/
比较较块
在定时器_B 中有 3个或 7个相同的捕捉/比较块,TBCCRx。 这些块中的任一个都可用于捕获定时器数据或
生成时间间隔。
13.2.4.1 捕获获模模式
CAP=1 时,就会选择捕获块。捕获块用于记录时间事件。 它可用于快速估计或时间测量。 捕获输入
CCIxA CCIxB 被连接到一个外部引脚上或内部信号上,这通过 CCISx 位 选择。 CMx 位选择捕获输入信
号的边沿如上升,下降,或两者兼而有之。 一个捕获发生在已选输入信号的边沿。 如果执行了一个捕获:
定时器的值就会被复制到 TBCCRx 寄存器。
中断标志 CCIFG 被置位。
在任何时刻,可以通过 CCI 位读取输入信号的电平。 MSP430x2xx 系列的器件可能会有被连接到 CCIxA
CCIxB 的不同信号。 有关这些信号连接的详细信息请参阅《特定器件数据手册》。
捕获信号可能会和定时器时钟异步,并导致一个竞争条件的发生。 置位 SCS 位可以在下个定时器时钟使捕
获同步。 建议置位 SCS 位来使定时器时钟与捕获同步。 在13-10给出了有关这的图例说明。
13-10. 捕获获信信号(SCS = 1)
为了显示是否一个二次捕获在第一次捕获的值被读取之前发生,在每个捕获/比较寄存器中就会提供一个溢出
逻辑。 如在13-11中所示,当这种情况发生时,位 COV 被置位。 COV 位必须由软件复位。
379
ZHCU032IDecember 2004Revised January 2012
定时器
_B
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Second
Capture
Taken
COV = 1
Capture
Taken
No
Capture
Taken
Read
Taken
Capture
Clear Bit COV
in Register TBCCTLx
Idle
Idle
Capture
Capture Read and No Capture
Capture
Capture ReadCapture
Capture
定时器
_B
的操作
www.ti.com.cn
13-11. 捕获获循循环
13.2.4.1.1
通过过软软件件初初始始化化捕捕获
可通过软件初始化捕获。 CMx 位可以配置捕获的两个边沿。 之后为了在 VCCGND 之间切换捕获信号,
软件会置位位 CCIS1=1 且切换 CCIS0,每当 CCIS0 更改状态时就会初始化一个捕获:
MOV #CAP+SCS+CCIS1+CM_3,&TBCCTLx ; Setup TBCCTLxXOR #CCIS0, &TBCCTLx ; TBCCTLx = TBR
380
定时器
_B ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
定时器
_B
的操作
13.2.4.2 比较较模模式
CAP = 0 时,选择比较模式。比较模式用于生成 PWM 输出信号或在特定的时间间隔中断。 当 TBR
计数
到一个 TBCLx 值时:
中断标志 CCIFG 被置位。
内部信号 EQUx=1
EQUx 根据输出模式影响输出
13.2.4.2.1
比较较锁锁存存器
TBCLx
比较锁存器 TBCLx,在比较模式中为定时器值的比较保持数据。 TBCLx TBCCRx 缓冲。 当一个比较周
期更新时,已缓冲的比较锁存器会为用户提供控制权。 用户不能直接访问 TBCLx。 比较数据被写入每个
TBCCRx 后自动传递到 TBCLx 。从TBCCRx TBCLx 传递的时间是用户可通过 CLLDx 位选择的,如
13-2中所述。
13-2. TBCLx 加载载事事件
CLLDx 说明
00 TBCCRx 被写入时,新数据将被立即从 TBCCRx 转移到 TBCLx 中。
01 TRB
计数
0时,新数据将被从 TBCCRx 转移到 TBCLx 中。
当在增和连续模式中 TRB
计数
0时,新数据将被从 TBCCRx 转移到 TBCLx 中。 当在增/减模式中 TRB
计数
0
10 时,新数据将被从 TBCCRx 转移到 TBCLx 中。
11 TRB
计数
至旧的 TBCLx 值时,新数据将被从 TBCCRx 转移到 TBCLx 中。
13.2.4.2.2
编组组比比较较锁锁存存器
多个比较锁存寄器可以通过 TBCLGRPx 位编组,以便于同步更新。 当使用编组时,组中序号最小的
TBCCRx CLLDx 位决定该组的每个比较锁存器的加载事件,把 TBCLGRP=3 时除外,如在13-3中所
示。 不得把 CLLDx 控制的 TBCCRx 位设置为零。 当把 CLLDx 控制的 TBCCRx 位设置为零时,所有比较
锁存器就会在他们对应的 TBCCRx 被写入时立即更新;不存在比较锁存器编组。
当编组时,则需要加载的比较锁存器必须存在 2个条件。 第一,即使是 TBCCRx 数据=原来的 TBCCRx
据时,该组的所有 TBCCRx 寄存器必须也都更新。 第二,加载事件必须发生。
13-3. 比较较锁锁存存器器的的操操作作模模式
TBCLGRPx 编组组 已已更新的的控
00 无 个人
TBCL1+TBCL2 TBCCR1
01 TBCL3+TBCL4 TBCCR3
TBCL5+TBCL6 TBCCR5
TBCL1+TBCL2+TBCL3 TBCCR1
10 TBCL4+TBCL5+TBCL6 TBCCR4
11 TBCL0+TBCL1+TBCL2+TBCL3+TBCL4+TBCL5+TBCL6 TBCCR1
381
ZHCU032IDecember 2004Revised January 2012
定时器
_B
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
定时器
_B
的操作
www.ti.com.cn
13.2.5
输出出单单元
每个捕获/比较块包含一个输出单元。 输出单元用于产生如 PWM 这样的信号。 每个输出单元有 8种可以根
EQU0 EQUx 信号产生信号的操作模式。 TBOUTH 的引脚功能可以用于将所有的定时器_B 输出拉近
一个高阻抗状态。 当为该引脚选择 TBOUTH 引脚功能时,且当该引脚被上拉时,所有的定时器_B 输出会
处于一个高阻抗状态。
13.2.5.1 输出出模模式
输出模式由 OUTMODx 位来确定,如13-4在中所述。 对于除了模式 0以外的所有模式来说,OUTx 信号
随着定时器时钟的上升沿而改变。输出模式 236,和 7对输出单元 0来说是无用的,因为 EQUx =
EQU0
13-4. 输出出模模式
OUTMODx 模式式 说说明
000 输出 输出信号 OUTx OUTx 位定义。 当 OUTx 位更新时,OUTx 信号会立刻更新。
当定时器
计数
TBCLx 值时,输出被置位。 它保持置位直到一个定时器复位,或直到选择另一个
001 置位 输出模式并影响该输出。
010 切换/复位 当定时器
计数
TBCLx 值时,输出被切换。 当定时器
计数
TBCL0 值时,它被复位。
011 置位/复位 当定时器
计数
TBCLx 值时,输出被置位。 当定时器
计数
TBCL0 值时,它被复位。
100 切换 当定时器
计数
TBCLx 值时,输出被切换。 输出周期为双定时器周期。
当定时器
计数
TBCLx 值时,输出被复位。 直到另一个输出模式被选择时且影响输出时,它才不
101 复位 保持复位状态。
110 切换/置位 当定时器
计数
TBCLx 值时,输出被切换。 当定时器
计数
TBCL0 值时,它被置位。
111 复位/置位 当定时器
计数
TBCLx 值时,输出被复位。 当定时器
计数
TBCL0 值时,它被置位。
382
定时器
_B ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
0h
TBR(max)
EQU0
TBIFG
Output Mode 1: Set
Output Mode 2:Toggle/Reset
Output Mode 3: Set/Reset
Output Mode 4:Toggle
Output Mode 5: Reset
Output Mode 6:Toggle/Set
Output Mode 7: Reset/Set
TBCL0
TBCL1
EQU1 EQU0
TBIFG
EQU1 EQU0
TBIFG Interrupt Events
www.ti.com.cn
定时器
_B
的操作
13.2.5.1.1
输出出示示例例,,增增模模式式中中的的定定时时器
当定时器
计数
增至 TBCLx 值,且从 TBCL0 降到 0时,OUTx 信号根据输出模式而改变。 在13-12中给
出了使用 TBCL0 TBCL1 的一个例子。
13-12. 输出出示示例例,,定定时时器器处处于于增增模模式
383
ZHCU032IDecember 2004Revised January 2012
定时器
_B
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
0h
TBR(max)
TBIFG
Output Mode 1: Set
Output Mode 2:Toggle/Reset
Output Mode 3: Set/Reset
Output Mode 4:Toggle
Output Mode 5: Reset
Output Mode 6:Toggle/Set
Output Mode 7: Reset/Set
TBCL0
TBCL1
EQU1 TBIFG EQU1 EQU0 Interrupt EventsEQU0
定时器
_B
的操作
www.ti.com.cn
13.2.5.1.2
输出出示示例例,,定定时时器器处处于于连连续续模模式
当定时器达到 TBCLx TBCL0 值时,OUTx 信号根据输出模式而改变,在13-13中给出了使用 TBCL0
TBCL1 的一个例子。
13-13. 输出出示示例例,,定定时时器器处处于于连连续续模模式
384
定时器
_B ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
0h
TBR(max)
TBIFG
Output Mode 1: Set
Output Mode 2:Toggle/Reset
Output Mode 3: Set/Reset
Output Mode 4:Toggle
Output Mode 5: Reset
Output Mode 6:Toggle/Set
Output Mode 7: Reset/Set
TBCL0
TBCL3
EQU3
TBIFG Interrupt Events
EQU3
EQU0
EQU3 EQU3
EQU0
www.ti.com.cn
定时器
_B
的操作
13.2.5.1.3
输出出示示例例,,定定时时器器处处于于增
/
减模模式
当定时器在任一计数方向上等于 TBCLx 和定时器等于 TBCL0 时,OUTx 信号会根据输出模式而改变。 在
13-14中给出了使用 TBCL0 TBCL1 的一个例子。
13-14. 输出出示示例例,,定定时时器器处处于于增/减模模式
:在输输出出模模式式间间切切换
当在输出模式之间切换时,在过渡期间 OUTMODx 位的其中一个应保持置位,除非切换至模
0。否则会由于一个非门解码输出模式 0而导致出现脉冲干扰。在输出模式之间安全切换的
一个方法是用输出模式 7作为一个过度状态:
BIS #OUTMOD_7,&TBCCTLx ; Set output mode=7BIC #OUTMODx, &TBCCTLx ; Clear
unwanted bits
385
ZHCU032IDecember 2004Revised January 2012
定时器
_B
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
DSet QIRQ, Interrupt Service Requested
Reset
Timer Clock
POR
CAP
EQU0
Capture
IRACC, Interrupt RequestAccepted
CCIE
定时器
_B
的操作
www.ti.com.cn
13.2.6
定时时器
_B
的中中断
2个中断向量与 16 位定时器_B 相关联:
TBCCR0 CCIFG TBCCR0 中断向量
所有其他 CCIFG 标志和 TBIFG TBIV 中断向量
在捕获模式下,当在相应的 TBCCRx 寄存器中捕获到一个定时器的值时, 任何 CCIFG 标志都被置位。 在
比较模式下,当 TBR
计数
至相关的 TBCLx 值时,任何 CCIFG 标志都被置位。 软件也可以置位或清零任何
CCIFG 标志。 当它们相应的 CCIE 位和 GIE 位被置位时,所有 CCIFG 标志就会要求产生一个中断。
13.2.6.1 TBCCR0 的中中断断向向量
TBCCR0 CCIFG 标志拥有定时器_B 的最高中断优先级,并有一个专用的中断向量,如在13-15中所示。
TBCCR0 的中断要求被服务之后,TBCCR0 CCIFG 标志会自动复位。
13-15. 捕捉/比较TBCCR0 中断断标标志
13.2.6.2 TBIV,中中断断向向量量发发生生器
TBIFG 志和TBCCRx CCIFG 标志(不包括 TBCCR0 CCIFG)被优先化且被组合在一起共用一个中断向
量。 中断向量寄存器 TBIV 用于确定哪个标志要求了一个中断。
使能的最高优先级的中断(不包括 TBCCR0 CCIFG)在 TBIV 寄存器中产生了一个数字(见寄存器描
述)。 为了自动进入相应的软件程序,可以对这个数字进行评估或将其添加到程序计数器中,。 禁止定时
_B 中断不会影响 TBIV 的值。
任何对 TBIV 寄存器的访问、读取或写入都会自动复位最高优先级的挂起中断标志。 如果另一个中断标志被
置位,在服务完最初的中断后会立即产生另一个中断。 例如,当中断服务子程序访问 TBIV 寄存器时,如果
TBCCR1 TBCCR2 CCIFG 标志被置位,则 TBCCR1 CCIFG 会被自动复位。 在中断服务子程序的 RETI
命令被执行后,TBCCR2 CCIFG 标志会产生另一个中断。
13.2.6.3 TBIV,中中断断处处理理程程序序示示例
以下软件示例给出了 TBIV 和处理开销的使用和操作 TBIV 的值被加入 PC 以便自动跳转到相应的子程序。
右边空白处的数字表明了每条指令所需的 CPU 时钟周期。 不同中断源的软件开销包含中断延迟时间和返回
中断周期,但并不包含任务本身的执行时间。 延迟时间为:
捕获/比较块 CCR011 个周期
捕获/比较模块 CCR1 CCR616 个周期
定时器溢出 TBIFG14 个周期
Example 13-1给出了建议的定时器_B3 TBIV 的使用。
386
定时器
_B ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
定时器
_B
的操作
Example 13-1.
建议议的
TBIV
的使使用
; Interrupt handler for TBCCR0 CCIFG. CyclesCCIFG_0_HND... ; Start of handler Interrupt latency 6RETI
5; Interrupt handler for TBIFG, TBCCR1 and TBCCR2 CCIFG.TB_HND ... ; Interrupt latency 6ADD &TBIV,PC
; Add offset to Jump table 3RETI ; Vector 0: No interrupt 5JMP CCIFG_1_HND ; Vector 2: Module 1 2JMP
CCIFG_2_HND ; Vector 4: Module 2 2RETI ; Vector 6RETI ; Vector 8RETI ; Vector 10RETI ; Vector
12TBIFG_HND ; Vector 14: TIMOV Flag... ; Task starts hereRETI 5CCIFG_2_HND ; Vector 4: Module 2... ;
Task starts hereRETI ; Back to main program 5; The Module 1 handler shows a way to look if any other;
interrupt is pending: 5 cycles have to be spent, but ; 9 cycles may be saved if another interrupt is
pendingCCIFG_1_HND ; Vector 6: Module 3 ... ; Task starts hereJMP TB_HND ; Look for pending ints 2
387
ZHCU032IDecember 2004Revised January 2012
定时器
_B
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
定时器
_B
的寄存器
www.ti.com.cn
13.3 定时时器_B 的寄寄存存器
13-5列出了定时器_B 的寄存器。
13-5. 定时时器_B 的寄寄存存器
寄存存器 简氏氏 寄寄存存器器类型 地地址址 初初始化状状态
定时器_B 控制 TBCTL 读取/写入 0180h POR 复位
定时器_B 计数器 TBR 读取/写入 0190h POR 复位
定时器_B 的捕获/比较控制 0 TBCCTL0 读取/写入 0182h POR 复位
定时器_B 的捕获/比较 0 TBCCR0 读取/写入 0192h POR 复位
定时器_B 的捕获/比较控制 1 TBCCTL1 读取/写入 0184h POR 复位
定时器_B 的捕获/比较 1 TBCCR1 读取/写入 0194h POR 复位
定时器_B 的捕获/比较控制 2 TBCCTL2 读取/写入 0186h POR 复位
定时器_B 的捕获/比较 2 TBCCR2 读取/写入 0196h POR 复位
定时器_B 的捕获/比较控制 3 TBCCTL3 读取/写入 0188h POR 复位
定时器_B 的捕获/比较 3 TBCCR3 读取/写入 0198h POR 复位
定时器_B 的捕获/比较控制 4 TBCCTL4 读取/写入 018Ah POR 复位
定时器_B 的捕获/比较 4 TBCCR4 读取/写入 019Ah POR 复位
定时器_B 的捕获/比较控制 5 TBCCTL5 读取/写入 018Ch POR 复位
定时器_B 的捕获/比较 5 TBCCR5 读取/写入 019Ch POR 复位
定时器_B 的捕获/比较控制 6 TBCCTL6 读取/写入 018Eh POR 复位
定时器_B 的捕获/比较 6 TBCCR6 读取/写入 019Eh POR 复位
定时器_B 中断矢量 TBIV 只读 011Eh POR 复位
388
定时器
_B ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
定时器
_B
的寄存器
13.3.1
定时时器
_B
的控控制制寄寄存存器
TBCTL
15 14 13 12 11 10 9 8
未使使用TBCLGRPx CNTLx 未使使用TBSSELx
rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0)
76543210
IDx MCx 未使使用TBCLR TBIE TBIFG
rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) w-(0) rw-(0) rw-(0)
未使使用 15 未使用
TBCLGRP 14-13 TBCLx 编组
00 每个 TBCLx 锁存器都独立加载
01 TBCL1 + TBCL2TBCCR1 CLLDx 位控制更新)
TBCL3 + TBCL4TBCCR3 CLLDx 位控制更新)
TBCL5 + TBCL6TBCCR5 CLLDx 位控制更新)
TBCL0 无关
10 TBCL1 + TBCL2 + TBCL3TBCCR1 CLLDx 位控制更新)
TBCL4 + TBCL5 + TBCL6TBCCR4 CLLDx 位控制更新)
TBCL0 无关
11 TBCL0 + TBCL1 + TBCL2 + TBCL3 + TBCL4 + TBCL5 + TBCL6TBCCR1 CLLDx 位控制更新)
CNTLx 12-11 计数器的长度
00 16 位,TBR(最大)=0FFFFh
01 12 位,TBR(最大)=0FFFh
10 10 位,TBR(最大)=03FFh
11 8 位,TBR(最大)=0FFh
未使使用 10 未使用
TBSSELx 9-8 定时器_B 的时钟源选择。
00 TBCLK
01 ACLK
10 SMCLK
11 INCLKINCLK 是器件专用的,通常被分配给反相 TBCLK)(请参阅《器件专用数据表》)
IDx 7-6 输入分频。 这些位为输入时钟选择分频。00 /101 /210 /411 /8
MCx 5-4 模式控制。 当不使用定时器_B 时,设置 MCX=00H 能节省功耗。
00 停止模式:定时器被暂停
01 上数模式:定时器计数增至 TBCL0
10 连续模式:定时器计数到由 CNTLx 设定的值
11 上数/下数模式:定时器计数到 TBCL0 并下降至 0000h
未使使用 3未使用
TBCLR 2定时器_B 清零。 设置该位会复位 TBR,时钟分频器,和计数方向。 TBCLR 位自动复位且始终读为 0
TBIE 1定时器_B 中断使能。 该位启用 TBIFG 的中断请求。
0中断被禁止
1中断被启用
TBIFG 0定时器_B 中断标志。
0无中断等待
1中断等待
389
ZHCU032IDecember 2004Revised January 2012
定时器
_B
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
定时器
_B
的寄存器
www.ti.com.cn
13.3.2 TBR
,定定时时器
_B
的寄寄存存器
15 14 13 12 11 10 9 8
TBRx
rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0)
76543210
TBRx
rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0)
TBRx 15-0 定时器_B 寄存器. TBR 寄存器是定时器_B 的计数。
13.3.3 TBCCRx
,定定时时器
_B
的捕捕捉
/
比较较寄寄存存器
x
15 14 13 12 11 10 9 8
TBCCRx
rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0)
76543210
TBCCRx
rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0)
TBCCRx 15-0 定时器_B 的捕获/比较寄存器。
比较模式:比较数据被写入每个 TBCCRx 且被自动传递到 TBCLx 中。 TBCLx 保存了与定时器_B 的寄存
器,TBR,定时器的值相比较的数据。
捕捉模式:定时器_B 的寄存器,TBR,当一个捕获被执行时,TBR 就被复制到 TBCCRx 寄存器中。
390
定时器
_B ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
定时器
_B
的寄存器
13.3.4 TBCCTLx
,捕捕获
/
比较较控控制制寄寄存存器
15 14 13 12 11 10 9 8
CMx CCISx SCS CLLDx CAP
rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) r-(0) rw-(0)
76543210
OUTMODx CCIE CCI OUT COV CCIFG
rw-(0) rw-(0) rw-(0) rw-(0) r rw-(0) rw-(0) rw-(0)
CMx 15-14 捕捉模式
00 无捕捉
01 在上升沿的捕捉
10 在下降沿的捕捉
11 在上升和下降沿都捕捉
CCISx 13-12 捕捉/比较输入选择。 这些位选择 TBCCRx 的输入信号。 有关特定信号的连接请参阅《器件专用数据表》。
00 CCIxA
01 CCIxB
10 GND
11 VCC
SCS 11 同步捕捉源。 此位是用来同步定时器时钟与捕获输入信号的。
0异步捕捉
1同步捕捉
CLLDx 10-9 比较锁存载入。 该位选择比较锁存载入事件。
00 TBCCRx 写入时 TBCLx 载入
01 TBR
计数
0时加载 TBCLx
10 TBR
计数
0时加载 TBCLx(上数或连续模式)
TBR
计数
TBCL0 或至 0时加载 TBCLx(上数/下数模式)
11 TBR
计数
TBCLx 时加载 TBCLx
CAP 8捕获模式
0比较模式
1捕捉模式
OUTMODx 7-5 输出模式。 模式 236,和 7TBCL0 来说是无用的,这是因为 EQUx = EQU0
000 输出位的值
001 置位
010 切换/复位
011 置位/复位
100 切换
101 复位
110 切换/置位
111 复位/置位
CCIE 4捕捉/比较中断使能。 该位使能相应 CCIFG 标志的中断请求。
0中断禁止
1中断使能
CCI 3捕捉/比较输入。 所选输入信号可以由该位读出。
OUT 2输出。 对于输出模式 0,该位直接控制输出的状态。
0输出低电平
1输出高电平
COV 1捕捉溢出。 该位表示一个已发生的捕捉溢出。 COV 位必须由软件复位。
0没有捕捉溢出发生
1捕捉溢出发生
CCIFG 0捕捉/比较中断标志
0无中断等待
1中断等待
391
ZHCU032IDecember 2004Revised January 2012
定时器
_B
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
定时器
_B
的寄存器
www.ti.com.cn
13.3.5 TBIV
,定定时时器
_B
的中中断断向向量量寄寄存
15 14 13 12 11 10 9 8
00000000
r0 r0 r0 r0 r0 r0 r0 r0
76543210
0 0 0 0 TBIVx 0
r0 r0 r0 r0 r-(0) r-(0) r-(0) r0
TBIVx 15-0 定时器_B 中断矢量值
TBIV 的目目录 中断断源 中断断标志 中中断断优先级
00h 无中断等待 -
02h 捕捉/比较 1 TBCCR1 CCIFG 最高
04h 捕捉/比较 2 TBCCR2 CCIFG
06h 捕捉/比较 3(1) TBCCR3 CCIFG
08h 捕捉/比较 4(1) TBCCR4 CCIFG
0Ah 捕捉/比较 5(1) TBCCR5 CCIFG
0Ch 捕捉/比较 6(1) TBCCR6 CCIFG
0Eh 定时器溢出 TBIFG 最低
(1) 不适用于所有设备
392
定时器
_B ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Chapter 14
ZHCU032IDecember 2004Revised January 2012
通用用串行接接口
(USI)
通用串行接口 (USI) 模块提供与一个硬件模块的 SPI I2C串行通信。 本章讨论两个模式。
Topic ........................................................................................................................... Page
14.1 USI 介绍.......................................................................................................... 394
14.2 USI 运行.......................................................................................................... 397
14.3 USI 寄存存器....................................................................................................... 403
393
ZHCU032IDecember 2004Revised January 2012
通用串行接口
(USI)
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
USI
介绍
www.ti.com.cn
14.1 USI 介绍
USI 模块提供支持同步串行通信的基本功能性。 在其最简单的形式中,它是一个可被用于输出数据帧的 8
位或 16 位移位寄存器,或者当与最少软件组合使用时,它可执行串行通信。 此外,USI 包括简化 SPI
I2C通信的内置硬件功能性。 USI 模块还包括中断来进一步减少针对串行通信和保持 MSP430 超低功耗功能
所需软件开销。
USI 模块特性包括:
三线制 SPI 模式支持
• I2C模式支持
可变数据长度
LPM4 中的从器件运行;无需内部时钟
可选 MSB LSB 数据顺序
针对带有自动 SCL 控制的 I2C模式的 START STOP 检测
主控模式下的仲裁丢失检测
可编程时钟生成
可选时钟极性和相位控制
14-1显示了 SPI 模式中的 USI 模块。14-2显示了 I2C模式中的 USI 模块。
394
通用串行接口
(USI) ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
8/16 Bit Shift Register
USIGE USIOE
SDI
SCLK
Set USIIFG
0
1
USICKPL
USICNTx
Shift Clock
USICKPH
USISSELx
SMCLK
SMCLK
SCLK
ACLK
000
001
010
011
TA1
TA2
USISWCLK
TA0
100
101
110
111
Clock Divider
/1/2/4/8... /128
USIDIVx
0
1USICLK
HOLD
USIIFG
USIMST
SDO
USI16B
D
G
Q
EN
ENUSISWRST
USILSB
USIPE6
USIPE7
USIPE5
USISR
Bit Counter
USIIFGCC
USII2C = 0
www.ti.com.cn
USI
介绍
14-1. USI 方框框图图:SPI 模式
395
ZHCU032IDecember 2004Revised January 2012
通用串行接口
(USI)
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
8−Bit Shift Register
USISRL
MSB LSB
USIGE
D
G
Q
SDA
D Q Set USIAL,
Clear USIOE
SCL
USIIFG
USIMST
START
Detect Set USISTTIFG
Shift Clock
0
1
Set USIIFG
USICNTx
USICKPL
USICKPH
USIOE
STOP
Detect Set USISTP
USISTTIFG
USISSELx
SMCLK
SMCLK
SCLK
ACLK
000
001
010
011
TA1
TA2
SWCLK
TA0
100
101
110
111
Clock Divider
/1/2/4/8... /128
USIDIVx
0
1
USICLK
HOLD
SCL Hold
EN
ENUSISWRST
USISCLREL
USIPE7
USIPE6
Bit Counter
USIIFGCC
USII2C = 1
USICKPL = 1
USICKPH = 0
USILSB = 0
USI16B = 0
USI
介绍
www.ti.com.cn
14-2. USI 方框框图图:I2C模式
396
通用串行接口
(USI) ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
USI
运行
14.2 USI 运行
USI 模块是一个移位寄存器和包含支持 SPI I2C通信逻辑的位计数器。 USI 移位寄存器 (USISR) 可由软
件直接访问并且包含将被传送或者已经被接收到的数据。
位计数器计算被采样位的数量并且当 USICNTx 值变为零时设定 USI 中断标志 USIIFG,通过递减或者直接
将零写入 USICNTx 。当USIIFG=0 时,将一个大于 0值写入 USICNTx 将自动清除 USIIFG,否则
USIIFG 不受影响。 当它们变为 0时,USICNTx 位停止递减。它们不会下溢至 0FFh
计数器和移位寄存器由同一个移位时钟驱动。 在一个上升的移位时钟边沿,USICNTx 递减并且 USISR
样下一个位输入。 被连接到移位寄存器的输出的锁存将输出的改变延迟至移位时钟的下降沿。 通过设置
USIGE 位,它可被透明完成。 根据 USILSB 位,这个设置将立即将 USISR MSB 或者 LSB 输出到 SDO
引脚。
14.2.1 USI
初始始化
USI 软件复位位,USISWRST 被置位,标志 USIIFGUSISTTIFGUSISTP USIAL 将被保持在复位
状态。 不对 USISR USICNTx 计时,并且它们的内容不受影响。 在 I2C模式中,通过 USI 硬件,SCL
线路也被释放至闲置状态。
为了激活 USI 端口功能性,在 USI 控制寄存器中的相应 USIPEx 位被置位。 这将为引脚选择 USI 功能并且
也为引脚保持 PxIN PxIFG 功能。 借助于这个特性,由软件通过 PxIN 寄存器读取端口输入电平并且进入
的数据流能够生成数据传输上的端口中断。 例如,这将有助于在一个 START 边沿上生成一个端口中断。
14.2.2 USI
时钟钟生生成
USI 时钟生成器包含一个时钟选择复用器、一个分频器、和选择14-114-2中显示的方框图内时钟极
性的功能。
可从内部时钟 ACLK 或者 SMCLK,从一个外部时钟 SCLK,以及从 Timer_A 的捕捉/比较输出内选择时钟
源。 此外,当 USISSELx=100 时,可使用 USISWCLK 位通过软件来为模块计时。
USIDIVx 位可被用于通过一个 2128 的倍数来将所选的时钟的分频。 当 USIIFG=0 或者 当模块运行在受
控模式下的时候,生成的时钟,USICLK 被停止。
USICKPL 位被用于选择 USICLK 的极性。 当 USICKPL=0 时,USICLK 的无效电平为低电平。 当
USICKPL=1 时,USICLK 的无效电平为高电平。
397
ZHCU032IDecember 2004Revised January 2012
通用串行接口
(USI)
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
USI
CKPH
USI
CKPL USICNTx
SCLK
SCLK
SCLK
SCLK
SDO/SDI
SDO/SDI
USIIFG
0
1
0
0
01
1 1
0 X
1 X
MSB
MSB
8 7 6 5 4 3 2 1
LSB
LSB
00
Load USICNTx
USI
运行
www.ti.com.cn
14.2.3 SPI
模式
USII2C=0 时,USI 模块被配置为 SPI 模式。控制位 USICKPL 选择 SPI 时钟的无效电平,而 USICKPH
选择 SDO 被更新和 SDI 被采样上的时钟边沿。14-3显示了针对一个 8位,MSB 首先传送的时钟/数据关
系。 USIPE5USIPE6 USIPE7 被置位来启用 SCLKSDO SDI 端口功能。
14-3. SPI 时序
14.2.3.1 SPI 主控控模模块
通过设置主控位 USIMST 和清除 I2CUSII2CUSI 模块被配置为 SPI 主控。 由于主控为受控提供时钟,
需要选择一个适当的时钟源并且 SCLK 被配置为输出。 当 USIPE5=1 时,SCLK 被配置为一个输出。
当 USIIFG=0 USICNTx>0 时,时钟生成被启用并且主控将使用 USISR 开始计时输入/输出数据。
在新数据被写入移位寄存器用于传输时,必须将接收到的数据从移位寄存器中读出。 在一个典型应用
中,USI 软件将从 USISR 中读取接收到的数据,将被发送的数据写入 USISR,并且通过将被发送的一定数
量的位写入 USICNTx 来启用用于下次传输的模块。
14.2.3.2 SPI 受控控模模式
通过清除 USIMST USII2C 位,USI 模块被配置为 SPI 受控模式。 在这个模式下,当 USIPE5=1
时,SCLK 被自动配置为一个输入并且 USI 从外部接收来自主器件的时钟。
如果 USI 将传输数据,在主器件提供第一个时钟边沿之前,必须将数据载入到移位寄存器。 通过设置
USIOE,输出被启用。 当 USICKPH=1 时,载入移位寄存器后,MSB 将立即在 SDO 上可见。
通过清除 USIOE 位,SDO 位可被禁用。 如果从器件不在总线上有多个从器件的环境中寻址,这一功能将
有所帮助。
一旦所有位被接收,在来自主控的下一个时钟边沿之前,数据必须从 USISR 中读取并且新数据被载入到
USISR 中。 在一个典型应用中,在接收数据后,USI 软件将读取 USISR 寄存器,将被传送的新数据写入
USISR,并且通过将一定数量的位传送至 USICNTx 来为下一次传输来启用 USI 模块。
14.2.3.3 USISR 操作
16 USISR 由两个 8位寄存器,USISRL USISR 组成。 控制位 USI16B 选择用于数据传输和接收的
USISR 的位的数量。 当 USI16B=0 时,只使用较低的 8位,USISRL
398
通用串行接口
(USI) ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Transmit data in memory
USISRL
Received data in memory
Transmit data in memory
USISRL
Received data in memory
7-bit SPI Mode, MSB first 7-bit SPI Mode, LSB first
USISRL USISRL
TX TX
RX
RX
Shift with software Move
Move Shift with software
7-bit Data 7-bit Data
7-bit Data
7-bit Data
www.ti.com.cn
USI
运行
为了传输小于 8位的数据,数据必须被载入到 USISRL,这样未使用的位没有被移除。 根据 USILSB,数据
必须 MSB 或者 LSB 对齐。14-4显示了一个 7位数据处理的示例。
14-4. 针对7SPI 数据据的的数数据据调调整
USI16B=1 时,所有 16 位被用于数据处理。 当使用 USISR 来访问 USISRL USISRH 时,当小于 16
位的数据的使用方式与14-4中显示的方式一样时,数据需要被适当调整。
14.2.3.4 SPI 中断
有一个与 USI 模块相关的中断矢量,以及一个相对于 SPI 操作的中断标志,USIIFG。当USIIE GIE
置位时,中断标志将生成一个中断请求。
USICNTx 变为零时(被计算或者直接将 0写入 USICNTx 位),USIIFG 被置位。 当 USIIFGCC=0,或
者被软件直接写入时,通过将一个大于 0的值写入 USICNTx 位,USIIFG 被清零。
399
ZHCU032IDecember 2004Revised January 2012
通用串行接口
(USI)
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
USI
运行
www.ti.com.cn
14.2.4 I2C
模式
USII2C=1USICKPL=1,并且 USICKPH=0 时,USI 模块在 I2C模式中被配置。为了实现 I2C数据兼容
性,USILSB USI16B 必须被清除。 USIPE6 USIPE7 必须被置位来启用 SCL SDA 端口功能。
14.2.4.1 I2C主控控模模式
为了将 USI 模块配置为一个 I21C主器件,必须将 USIMST 位置位。 在主控模式下,时钟由 USI 模块生成
并且在 USIIFG=0 时输出至 SCL 线路。当 USIIFG=1 时,SCL 将在闲置,或高电平时停止。 如仲裁部分中
描述的那样支持多主控运行。
只有当 USIDIVx>0 时,主控才支持将 SCL 线路保持在低电平的从器件。当 USIDIVx 被设定为 /1 时钟分频
(USIDIVx=0) 时,被连接的从器件在数据传输时不能将 SCL 线路保持在低电平。 否则通信可能失败。
14.2.4.2 I2C受控控模模式
为了将 USI 模块配置为一个 I2C从器件,USIMST 位被清零。 在受控模式,如果
USIIFG=1USISTTIFG=1 或者如果 USICNTx=0SCL 被保持在低电平。在从器件被设置并且已经为从一
个主器件接收从地址做好准备后,USISTTIFG必须由软件清除。
14.2.4.3 I2C发送送器
在发送器模式中,数据被首先载入到 USISRL。 通过设置 USIOE,输出被启用,并且通过将 8写入
USICNTx,传输被启动。 这清除了 USIIFG,并且 SCL 在主控模式中被清除,或者在受控模式中从被保持
低电平释放。 在传输了所有 8个位后,USIIFG 被置位,并且在主控模式中,SCL 上的时钟信号被停止或者
在受控模式的下一个低相位上被保持低电平。
为了接收 I2C确认位,USIOE 被用软件清零并且 USICNTx 被载入 1。这清除了 USIIFG 并且一个位被写入
USISRL。当USIIFG 再次被置位时,USISRL LSB 是接收到的确认位,并且用软件测试。
; Receive ACK/NACKBIC.B #USIOE,&USICTL0 ; SDA inputMOV.B #01h,&USICNT ; USICNTx =
1TEST_USIIFGBIT.B #USIIFG,&USICTL1 ; Test USIIFGJZ TEST_USIIFGBIT.B #01h,&USISRL ; Test received
ACK bitJNZ HANDLE_NACK ; Handle if NACK...Else, handle ACK
400
通用串行接口
(USI) ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
USI
运行
14.2.4.4 I2C接收收器
I2C接收器模式中,必须通过清除 USIOE 将输出禁用,并且通过写入 8USICNTxUSI 模块为接收做
好准备。 这清除了 USIIFG,并且在主控模式中生成 SCL 或者在受控模式中被从低电平保持中释放。 8
时钟后,USIIFG 位将被置位。 这停止了主控模式中 SCL 上的时钟信号或者在受控模式中的下一个相位上
SCL 保持在低电平。
为了传送一个确认位或者不确认位,将 0或者 1载入移位寄存器的 MSB,用软件将 USIOE 位置位来启用
输出,并且将 1写入 USICNTx 位。 只要 MSB 位被移出,USIIFG 将被置位,并且模块可为接收下一个 I2C
数据类型做好准备。
; Generate ACKBIS.B #USIOE,&USICTL0 ; SDA outputMOV.B #00h,&USISRL ; MSB = 0MOV.B #01h,&USICNT ;
USICNTx = 1TEST_USIIFGBIT.B #USIIFG,&USICTL1 ; Test USIIFGJZ TEST_USIIFG...continue...; Generate
NACKBIS.B #USIOE,&USICTL0 ; SDA outputMOV.B #0FFh,&USISRL ; MSB = 1MOV.B #01h,&USICNT ; USICNTx =
1TEST_USIIFGBIT.B #USIIFG,&USICTL1 ; Test USIIFGJZ TEST_USIIFG...continue...
14.2.4.5 START 条件
SCL 为高电平时,一个 START 条件是一个从高电平到低电平的转换。 通过将移位寄存器中的 MSB
置为 0可生成 START 条件。 设置 USIGE USIOE 位使得输出锁存透明,并且移位寄存器中的 MSB
立即提供给 SDA,并将线路拉至低电平。 清除 USIGE 可重新开始时钟锁存功能并在输出随 SCL 移除之前
SDA 上保持 0
; Generate STARTMOV.B #000h,&USISRL ; MSB = 0BIS.B #USIGE+USIOE,&USICTL0 ; Latch/SDA output
enabledBIC.B #USIGE,&USICTL0 ; Latch disabled...continue...
14.2.4.6 STOP 条件
SCL 为高电平时,一个 STOP 条件是在 SDA 上的一个低电平到高电平的转换。 为了完成确认位并且将
SDA 拉至低电平来为一个 STOP 条件生成做好准备,要求清除移位寄存器中的 MSB 并且将 1载入
USICNTx。 这将在低相位 SDA 被拉至低电平期间在 SCL 上生成一个低相位。 由于模块处于主控模
式,SCL 在闲置,或高电平状态中停止。 为了生成低电平到高电平的转换,MSB 在移位寄存器中被置位并
且将 1载入 USICNTx。设置 USIGE USIOE 位使得输出锁存透明,并且 USISRL MSB SDA 释放
至闲置状态。 清除 USIGE MSB 存储在输出锁存中,并且通过清除 USIOE 来禁用输出。 SDA 保持高电
平,直到有一个外部上拉电阻器导致的 START 条件生成。
; Generate STOPBIS.B #USIOE,&USICTL0 ; SDA=outputMOV.B #000h,&USISRL ; MSB = 0MOV.B #001h,&USICNT
; USICNT = 1 for one clockTEST_USIIFGBIT.B #USIIFG,&USICTL1 ; Test USIIFGJZ test_USIIFG ;MOV.B
#0FFh,&USISRL ; USISRL = 1 to drive SDA highBIS.B #USIGE,&USICTL0 ; Transparent latch
enabledBIC.B #USIGE+USIOE,&USICTL; Latch/SDA output disabled...continue...
401
ZHCU032IDecember 2004Revised January 2012
通用串行接口
(USI)
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
USI
运行
www.ti.com.cn
14.2.4.7 释放SCL
如果它被 USI 模块保持在低电平,在无需清除 USIIFG 的情况下,设置 USISCLREL 位将释放 SCL。 如果
一个 START 条件被接收并且 SCL 线路将在下一个时钟上被保持低电平,USISCLREL 位将被自动清除。
在受控模式运行中,当从器件已经检测到它不由主器件编址时,这个位应该被用来防止 SCL 被保持低电
平。 在下一个 START 条件时,USISCLREL 将被清除并且 USISTTIFG 将被置位。
14.2.4.8 仲裁
USI 可检测一个多主控 I2C系统中失败的仲裁条件。 I2C仲裁过程通过发送器竞争来使用出现在 SDA 上的
数据。 第一个生成逻辑高电平的主控发射器在与相对生成逻辑低电平的主控发射器竞争时失败。 通过比较
出现在总线上的值和从总线中读取的值可检测 USI 模块中的仲裁失败。 如果这两个值不相等,那么仲裁失
败并且仲裁丢失标志,USIAL,被置位。 这也将清除输出使能位 USIOE 并且 USI 模块不再驱动总线。 在
这个情况下,用户软件必须同时检查 USIAL 标志和 USIIFG 并且当仲裁失败时将 USI 配置为从接收器
USIAL 标志必须由软件清除。
为了防止其它更快速的主控在仲裁过程期间生成时钟,如果总线上的其它主控将 SCL 驱动为低电平并且
USIIFG USISTTIFG 被置位,或者如果 USICNTx=0 的话,SCL 被保持在低电平。
14.2.4.9 I2C中断
这是一个中断矢量,它通过两个针对 I2C运行的中断标志,USIIFG USISTTIFG,与 USI 模块相关联。
每个中断标志由其自己的中断使能位,USIIE USISTTIE。 当一个中断被启用并且 GIE 位被置位时,一个
被置位的中断标志将生成一个中断请求。
USICNTx 变为零(通过计数或者通过直接向 USICNTx 位写入 0),USIIFG 被置位。 当 USIIFGCC=0
时,通过写入一个大于 0的值到 USICNTx 位,USIIFG 被清除,或者直接由软件清除。
当检测到一个 START 条件时,USISTTIFG 被置位。 USISTTIFG 必须由软件清除。
USISTP 标志表示接收到一个 START 条件,但是没有与 USISTP 标志相关的中断功能。 当 USIIFGCC=
0时,通过将一个大于 0的值写入 USICNTx 位,USISTP 被清零,或者被软件直接清除。
402
通用串行接口
(USI) ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
USI
寄存器
14.3 USI 寄存存器
14-1中列出了 USI 寄存器。
14-1. USI 寄存存器
寄存存器 简氏氏 寄寄存存器器类型 地地址 初始始状状态
USI 控制寄存器 0 USICTL0 寄存器 078h 带有 PUC 01h
USI 控制寄存器 1 USICTL1 读取/写入 079h 带有 PUC 01h
USI 时钟控制 USICKCTL 读取/写入 07Ah 带有 PUC 的复位
USI 位计数器 USICNT 读取/写入 07Bh 带有 PUC 的复位
USI 低字节移位寄存器 USISRL 读取/写入 07Ch 未经改变
USI 高字节移位寄存器 USISRH 读取/写入 07Dh 未经改变
可使用14-2中显示的字指令访问 USI 寄存器。
14-2. USI 寄存存器器的的字字访访问
寄存存器 简氏 高字字节节寄存器器 低低字节寄寄存 地址
USI 控制寄存器 USICTL USICTL1 USICTL0 078h
USI 时钟和计数器控制寄存器 USICCTL USICNT USICKCTL 07Ah
USI 移位寄存器 USISR USISRH USISRL 07Ch
403
ZHCU032IDecember 2004Revised January 2012
通用串行接口
(USI)
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
USI
寄存器
www.ti.com.cn
14.3.1 USICTL0
USI
控制制寄寄存存器
0
76543210
USIPE7 USIPE6 USIPE5 USILSB USIMST USIGE USIOE USISWRST
rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-1
USIPE7 7 USI SDI/SDA 端口启用。 SPI 模式中的输入,I2C模式中的输入或者开漏输出。
0 USI 功能被禁用
1 USI 功能被启用
USIPE6 6 USI SDO/SCL 端口启用。 SPI 模式中的输出,I2C模式中的输入或者开漏输出。
0 USI 功能被禁用
1 USI 功能被启用
USIPE5 5 USI SCLK 端口启用。 SPI 受控模式或 I2C模式中的输入,SPI 主控模式中的输出。
0 USI 功能被禁用
1 USI 功能被启用
USILSB 4首先选择 LSB。 这个位控制接收和发送移位寄存器的方向。
0 MSB 优先
1最低有效位 (LSB)优先
USIMST 3主器件选择
0从器件模式
1主器件模式
USIGE 2输出锁存控制
0输出锁存启用取决于移位时钟
1输出锁存一直被启用并且透明
USIOE 1数据输出启用
0输出被禁用
1输出被启用
USISWRST 0 USI 软件复位
0 USI 被释放进行操作。
1 USI 逻辑被保持在复位状态,
404
通用串行接口
(USI) ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
USI
寄存器
14.3.2 USICTL1
USI
控制制寄寄存存器
1
76543210
USICKPH USII2C USISTTIE USIIE USIAL USISTP USISTTIFG USIIFG
rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-1
USICKPH 7时钟相位选择
0数据在第一个 SCLK 边沿上被改变并且在下一个边沿上被捕捉。
1数据在第一个 SCLK 边沿上被捕捉并且在下一个边沿上被改变。
USII2C 6 I2C模式启用
0 I2C模式被禁用
1 I2C模式被启用
USISTTIE 5 START 条件中断-启用
0 START 条件上的中断被禁用
1 START 条件上的中断被启用
USIIE 4 USI 计数器中断启用
0中断被禁用
1中断被启用
USIAL 3仲裁失败
0无仲裁失败条件
1仲裁失败
USISTP 2 STOP 条件被接收。 当 USIIFGCC=0 时,如果 USICNTx 被载入一个大于 0的值,USISTP 被自动清除。
0没有接收到 STOP 条件。
1接收到 STOP 条件
USISTTIFG 1 START 条件中断标志
0没有接收到 START 条件。 无中断挂起。
1接收到 START 条件。 中断挂起
USIIFG 0 USI 计数器中断标志。 当 USICNTx=0 时置位。当 USIIFGCC=0 时,如果 USICNTx 被载入一个大于 0
值,被自动清除。
0无中断挂起
1中断挂起
405
ZHCU032IDecember 2004Revised January 2012
通用串行接口
(USI)
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
USI
寄存器
www.ti.com.cn
14.3.3 USICKCTL
USI
时钟钟控控制制寄寄存存器
76543210
USIDIVx USISSELx USICKPL USISWCLK
rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0
USIDIVx 7-5 时钟分频选择
000 除以 1
001 除以 2
010 除以 4
011 除以 8
100 除以 16
101 除以 32
110 除以 64
111 除以 128
USISSELx 4-2 时钟源选择。 未在受控模式下使用。
000 SCLK(未在 SPI 模式中使用)
001 ACLK
010 SMCLK
011 SMCLK
100 USISWCLK
101 TACCR0
110 TACCR1
111 TACCR2(在 MSP430F20xx 器件上被保留)
USICKPL 1时钟极性选择
0无效状态为低电平
1无效状态为高电平
USISWCLK 0软件时钟
0输入时钟为低电平
1输入时钟为高电平
14.3.4 USICNT
USI
位计计数数器器寄寄存存器
76543210
USISCLREL USI16B USIIFGCC USICNTx
rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0
USISCLREL 7 SCL 释放。 SCL 线路被从低电平释放到闲置状态。 如果检测到一个 START 条件,USISCLREL 被清除。
0如果 USIIFG 被置位,SCL 线路被保持在低电平
1 SCL 线路被释放
USI16B 6 16 位移位寄存器启用
0 8 位移位寄存器模式。 低字节寄存器 USISRL 被使用。
1 16 位移位寄存器模式。 高字节和低字节寄存器 USISRL USISRH 都被使用。 USISR 同时寻址所
16 位。
USIIFGCC 5 USI 中断标志清除控制。 当 USIIFGCC=0 并且 USICNTx 被写入一个大于 0的值时,USIIFG 将不能被自动
置位。
0 USICNTx 更新时,USIIFG 被自动清除
1 USIIFG 不被自动清除
USICNTx 4-0 USI 位计数。 USICNTx 位设定将被接收或发出的位的数量。
406
通用串行接口
(USI) ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
USI
寄存器
14.3.5 USISRL
USI
低字字节节移移位位寄寄存
76543210
USISRLx
rw rw rw rw rw rw rw rw
USISRLx 7-0 USI 低字节移位寄存器的内容
14.3.6 USISRH
USI
高字字节节移移位位寄寄存
76543210
USISRHx
rw rw rw rw rw rw rw rw
USISRHx 7-0 USI 高字节移位寄存器的内容 当 USI16B=0 时被忽略。
407
ZHCU032IDecember 2004Revised January 2012
通用串行接口
(USI)
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Chapter 15
ZHCU032IDecember 2004Revised January 2012
通用用串行通通信接口口,
UART
模式
通用串行通信接口 (USCI) 在同一个硬件模块下支持多路串行通信模式。 本章讨论了异步 UART 模式的操
作。
Topic ........................................................................................................................... Page
15.1 USCI 概述........................................................................................................ 409
15.2 USCI 介绍绍:UART 模式..................................................................................... 409
15.3 USCI 操作作:UART 模式..................................................................................... 411
15.4 USCI 寄存存器器:UART 模式.................................................................................. 426
408
通用串行通信接口,
UART
模式
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
USCI
概述
15.1 USCI 概述
通用串行通信接口 (USCI) 模块支持多路串行通信模式。 不同的 USCI 模块支持不同的模式。 每种不同的
USCI 模块以一个不同的字母命名。 例如,USCI_A 就不同于 USCI_B, 等等。 如果在一个设器件上执行
了不止一个相同的 USCI 模块,那么这些模块将以递增的数字命名。 例如,当一个器件有两个 USCI_A
块时,它们应该被命名为 USCI_A0 USCI_A1。 如有需要,请参阅《器件专用数据表》来确定哪些 USCI
模块可以在哪些设备上执行。
USCI_Ax 模块支持:
UART 模式
IrDA 通信的脉冲整形
LIN 通信的自动波特率检测
SPI 模式
USCI_Bx 模块支持:
• I2C模式
SPI 模式
15.2 USCI 介绍绍:UART 模式
在异步模式中,USCI_Ax 模块通过两个外部引脚,UCAxRXD UCAxTXD,把 MSP430 和一个外部系统
连接起来。 当 UCSYNC 位被清零时就选择了 UART 模式。
UART 模式的特性包括:
7 8位奇,偶,或无奇偶校验的数据
独立的发送和接收移位寄存器
独立的发送和接收缓冲寄存器
最低有效位 (LSB) 优先或最高有效位 (MSB) 优先的数据发送和接收
多处理器系统中内置空闲线和地址位通信协议
接收器开始边沿检测从 LMPx 模式中自动唤醒
支持分数波特率的可编程调制波特率
状态标志的错误检测和抑制
地址检测的状态标志
独立接收和发送中断的能力
15-1给出了配置为 UARG 模式的 USCI_Ax
409
ZHCU032IDecember 2004Revised January 2012
通用串行通信接口,
UART
模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Modulator
ACLK
SMCLK
SMCLK
00
01
10
11
UCSSELx
UC0CLK
Prescaler/Divider
Receive Baudrate Generator
UC0BRx
16
UCBRFx
4
UCBRSx
3
UCOS16
UCRXERR
Error Flags
Set Flags
UCPE
UCFE
UCOE
UCABEN
Receive Shift Register
Receive Buffer UC 0RXBUF
Receive State Machine
1
0
UCIREN
UCPEN UCPAR UCMSB UC7BIT
UCDORMUCMODEx
2
UCSPB
Set UCBRK
Set UCADDR/UCIDLE
0
1
UCLISTEN
UC0RX
1
0
UCIRRXPL
IrDA Decoder
UCIRRXFE
UCIRRXFLx
6
Transmit Buffer UC 0TXBUF
Transmit State Machine
UCTXADDR
UCTXBRK
Transmit Shift Register
UCPEN UCPAR UCMSB UC7BIT UCIREN
UCIRTXPLx
6
0
1
IrDA Encoder UC0TX
Transmit Clock
Receive Clock
BRCLK
UCMODEx
2
UCSPB
UCRXEIE
UCRXBRKIE
Set UC0RXIFG
Set UC0TXIFG
Set RXIFG
USCI
介绍:
UART
模式
www.ti.com.cn
15-1. USCI_Ax 框图图:UART 模式(UCSYNC=0)
410
通用串行通信接口,
UART
模式
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
[Parity Bit, UCPEN = 1]
[Address Bit, UCMODEx = 10]
Mark
Space
D0 D6 D7 AD PA SP SP
[Optional Bit, Condition]
[2nd Stop Bit, UCSPB = 1]
[8th Data Bit, UC7BIT = 0]
ST
www.ti.com.cn
USCI
操作:
UART
模式
15.3 USCI 操作作:UART 模式
UART 模式下,USCI 发送和接收的字符以每一个位速率异步于到另一个器件。 每个字符传输的计时取决
于所选的 USCI 波特率。 传输和接收功能使用相同的波特率。
15.3.1 USCI
初始始化化和和复复位
USCI 在一个 PUC 后或者通过设置 UCSWRST 位来复位。 在一个 PUC 后,UCSWRST 位自动置位,保
持了 USCI 处于一个复位状态。 当置位时,UCSWRST 位复位
UCAxRXIEUCAxTXIEUCAxRXIFGUCRXERRUCBRKUCPEUCOEUCFEUCSTOE
UCBTOE 位置位 UCAxTXIFG 位。 清零 UCSWRST 释放了 UCSI 的操作。
:初始始化化或或者者重重新新配配置USCI 模块
建议的 USCI 初始化/重配置过程如下:
1. 置位 UCSWRST (BIS.B #UCSWRST&UCAxCTL1)
2. UCSWRST=1 时初始化所有 UCSI 寄存器(包括 UCAxCTL1
3. 配置端口
4. 软件清除 UCSWRSTBIC.B #UCSWRST&UCAxCTL1)
5. 通过 UCAxRXIE /UCAxTXIE 是使能中断(可选)
15.3.2
字符符格格式
UART 的字符格式,展示在15-2中,包括一个开始位,7个或 8个数据位,一个奇//无校验位,一个地
址位(地址位模式),和一个或两个停止位。 UCMSB 位控制传输的方向以及优先选择 LSB 还是 MSB
UART 通信典型地要求先发送 LSB
15-2. 字符符格格式
15.3.3
异步步通通信信格格式
当两个器件异步通信时,协议不需要多处理器格式。 当三个或更多的器件通信时,USCI 支持空闲线和地址
位多处理器通信格式。
15.3.3.1 空闲闲线线多多处处理理器器格格式
UCMODEx=01 时,空闲线多处理器格式被选中.数据块在发送或接收线上被一段空闲时间隔开,如
15-3所示。 在一个字符的一个或两个停止位后,当接收到 10 个或更多的持续标志(标志)时,一条空闲
接收线就会被监测。 在接收到一条空闲线后,直到下一次开始边沿被监测到时波特率发生器才被切断。 当
检测到一条空闲线路时,UCIDLE 就置位。
在一个空闲周期之后接收的第一个字符是地址字符。 UCIDLE 位被用作每个字符块的地址标签。 在线路空
闲多处理器模式下,当接收的一个字符是一个地址时该位就会被置位。
411
ZHCU032IDecember 2004Revised January 2012
通用串行通信接口,
UART
模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
ST Address SP ST Data SP ST Data SP
Blocks of
Characters
Idle Periods of 10 Bits or More
UCAxTXD/RXD Expanded
UCAxTXD/RXD
First Character Within Block
Is Address. It Follows Idle
Period of 10 Bits or More
Character Within Block
Idle Period Less Than 10 Bits
Character Within Block
UCAxTXD/RXD
USCI
操作:
UART
模式
www.ti.com.cn
15-3. 空闲闲线线格格式
在多处理器模式下的 UCDORM 位被用于控制数据接收。 当 UCDORM=1 时,所有非地址字符被拼装起来
但不会被移送到 UCAxRXBUF,也不会产生中断。 当接收到一个地址字符时,该字符被移送到
UCAxRXBUFUCAxRXIFG 被置位,当 UCRXEIE=1 时任何可用的错误标志都被置位。当 UCRXEIE=0
且接收到一个地址字符,但该字符发生了帧错误或奇偶错误,字符不会被移送到 UCAxRXBUFUCRXIFG
也不会置位。
如果接收到一个地址,用户软件可以验证此地址且必须复位 UCDORM 才可以继续接收数。 如果 UCDORM
保持置位,将只能接收地址字符。 在接收一个字符期间若 UCDORM 被清零,则在接收完成后接收中断标志
将被置位。 UCDORM 位不会被 USCI 硬件自动修改。
对在空闲线多处理器模式下发送地址而言,在 UCAxTXD 上产生地址字符标识的 USCI 会产生一个精确的空
闲周期。 如果下一个字符先于 11 位的空闲线被载入 UCAxTXBUF,这将通过双缓存 UCTXADDR 标志展示
出来。 当开始位发生时 UCTXADDR 将被自动清零。
15.3.3.2 发送送一一个个空空闲闲帧
以下程序通过发送一个空闲帧来表示一个地址字符及随后其关联的数据:
1. 置位 UCTXADDR,然后把地址字符写入 UCAxTXBUFUCAxTXBUF 必须为新数据做好准备
(UCAxTXIFG=1)
这可以产生一个地址字符之后的 11 位空闲周期。 当地址字符从 UCAxTXBUF 中传输到移位寄存器
时,UCTXADDR 自动复位。
2. UCAxTXBUF 中写入预期数据。 UCAxTXBUF 必须为新数据做好准备 (UCAxTXIFG=1)
写入 UCAxTXBUF 中的数据被传输到移位寄存器中并且一旦移位寄存器为新数据做好准备就开始发送。
空闲周期不能超过地址和数据传输之间或者数据和数据传输的时间。 否则传输的数据将被误解为一个地
址。
412
通用串行通信接口,
UART
模式
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
ST Address SP ST Data SP ST Data SP
Blocks of
Characters
Idle Periods of No Significance
UCAxTXD/UCAxRXD
Expanded
UCAxTXD/UCAxRXD
First Character Within Block
Is an Address. AD Bit Is 1
AD Bit Is 0 for
Data Within Block. Idle Time Is of No Significance
UCAxTXD/UCAxRXD 1 0 0
www.ti.com.cn
USCI
操作:
UART
模式
15.3.3.3 地址址位位多多处处理理器器格格式
UCMODEx=10 时,地址位多处理器格式被选中。 如15-4所示,每个已处理的字符包含一个用作一个
地址指示的额外位。 一个字符块的第一个字符带有一组指示字符是一个地址的地址位。 当一个接收到的字
符有其自身的地址位组并被转移到 UCAxRXBUF 时,USCI UCADDR 位被置位。
在地址位多处理器模式下,UCDORM 位被用于控制数据接收。 当 UCDORM 被置位,地址位=0 的数据字
符被接收器组装但,不会传输到 UCAxRXBUF 中,且没有产生中断。 当接收到一个包含一组地址位的字符
时,该字符被移送到 UCAxRXBUFUCAxRXIFG 被置位,且当 UCRXEIE=1 时任何可用的错误标志都被
置位。当 UCRXEIE=0 并且接收到一个包含一组地址位的字符,但该字符发生了帧错误或奇偶错误,字符不
会被移送到 UCAxRXBUFUCRXIFG 也不会置位。
如果接收到一个地址,用户软件可以验证此地址且必须复位 UCDORM 才可以继续接收数。 如果 UCDORM
保持置位,将只能接收地址位=1 的地址字符。 UCDORM 位不会被 USCI 硬件自动修改。
UCDORM=0 时所有已接收的字符将置位中断标志 UCAxRXIFG。 在接收一个字符期间若 UCDORM
清零,则在接收完成后接收中断标志将被置位。
对于在地址位多处理器模式下的地址传输,字符的地址位是由 UCTXADDR 位控制。 UCTXADDR 位的值被
载进被从 UCAxTXBUF 传送到发送移位寄存器中的字符的地址位。 当开始位发生时 UCTXADDR 将被自动
清零。
15-4. 地址址位位多多处处理理器器格格式
15.3.3.4 中断断接接收收和和生生成
UCMODEX=0001 10 时,且不考虑奇偶位,地址模式,或其它字符值,当所有数据,奇偶校验,停
止位都为低电平时,接收器在监测到一次中断。 当监测到一次中断时,UCBRK 位置位。 如果中断的中断使
能位,UCBRKIE,被置位,接收中断标志 UCAxRXIFG 也将被置位。 在这种情况下,因为所有数据位是 0
所以 UCAxRXBUF 中的值也是 0
为了发送一个中断,置位 UCTXBRK 位,然后把 0h 写到 UCAxTXBUF 中。 UCAxTXBUF 必须为新数据做
好准备 (UCAxTXIFG=1)。 在所有位为低电平时会产生一个中断。 当开始位发生时 UCTXBRK 将被自动清
零。
413
ZHCU032IDecember 2004Revised January 2012
通用串行通信接口,
UART
模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Synch
Start
Bit
Stop
Bit
01234567
8Bit Times
Break Delimiter Synch
USCI
操作:
UART
模式
www.ti.com.cn
15.3.4
自动动波波特特率率检检测
UCMODEx=11 时,选择了带自动波特率检测的 UART 模式。 对于自动波特率检测,数据帧在一个包含
一个中断和一个同步域的同步序列的前面。 当 11 个或更多的 0(空格)被接收到时监测到一个中断。 如果
中断长度超过 22 位的时间,暂停超时错误标志 UCBTOE 将被置位。 暂停的异步域如15-5所示。
15-5. 自动动波波特特率率监监测-暂停/同步步序序列
为了 LIN 一致字符格式应该设置为 8数据位,LSB 优先,无奇偶校验位和停止位。 没有可用的地址位。
在一个字节域内同步域所包含的数据 055H 15-6所示。 同步的是基于该模式的第一个下降沿和最后一
个下降沿之间的时间测量。 如果自动波特率监测通过置位 UCABDEN 使能,发送波特率发生器就可以用于
测量。 否则,这个模式只被接收但不被测量。 测量的结果被传送到波特率控制寄存器
UCAxBR0UCAxBR1,和 UCAxMCTL 中。 如果同步域的长度超过了测量时间,同步超时错误标志
UCSTOE 将被置位。
15-6. 自动动波波特特率率监监测-同步步域
在这种模式中 UCDORM 位被用来控制数据接收。 当 UCDORM 被置位时,所有字符被接收但不会被传输
UCAxRXBUF 中,而且不会发生中断。 当一个中断/同步域被监测到时,UCBRK 标志被置位。 随后的中
/同步域的字符被传送到 UCAxRXBUF 中且 UCAxRXIFG 中断标志被置位。 任何可用的错误标志也会置
位。 如果 UCBRKIE 位被置位,中断/同步的接收会置位 UCAXRXIFG。 通过读取接收缓存 UCAxRXBUF
或通过用户软件来置位 UCBRK 位。
当一个中断/同步域被接收时,为继续接收数据用户必须用软件置位 UCDORM。如UCDORM 保持置位
状态,只有在接受下一个中断/同步域后字符才能被接收。 UCDORM 位不会被 USCI 硬件自动修改。
UCDORM=0 时所有已接收的字符将置位中断标志 UCAxRXIFG。 在接收一个字符期间若 UCDORM
清零,则在接收完成后接收中断标志将被置位。
可以在一个带有一些限制的全双工通信系统中使用自动波特率检测模式。 USCI 可以在接收中断/同步域期间
不发送数据,并且如果一个帧错误字节 0h 被接收,那么在这段时间内任何传输的数据都会被损坏。 可以通
过检查所接收的数据和 UCFE 位来发现后一种情况。
414
通用串行通信接口,
UART
模式
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
UART
Start
Bit Data Bits
Stop
Bit
IrDA
www.ti.com.cn
USCI
操作:
UART
模式
15.3.4.1 发送送一一个个中中断/同步步域
以下为发送一个中断/同步域的程序流程:
UMODEX=11 时,置位 UCTXBRK
055h 写入 UCAxTXBUFUCAxTXBUF 必须为新数据做好准备 (UCAxTXIFG=1)
伴随着中断分割符和同步字符将会产生一个 13 位的中断域。 中断定界符的长度由 UCDELIMX 位控制。
当同步字符从 UCAxTXBUF 传输到移位寄存器中时 UCTXBRK 将自动复位。
UCAxTXBUF 中写入所需的数据。 UCAxTXBUF 必须为新数据做好准备 (UCAxTXIFG=1)
写入 UCAxTXBUF 中的数据被传输到移位寄存器中并且一旦移位寄存器为新数据做好准备就开始发送。
15.3.5 IrDA
编码码和和解解码
UCIREN 被置位时,IrDA 解码器和译码器被使能并提供修整 IrDA 通信的硬件位。
15.3.5.1 IrDA 编码
15-7所示,在来自 UART 的发送位流中译码器为每个 0位发送一个脉冲。 脉冲持续时间由
UCIRTXPLx 位决定,来指定被 UCIRTXCLK 选中的半个时钟周期的数目。
15-7. UART IrDA 数据据格格式式的的关关系
要求根据 IrDA 标准去设置 3/16 位的周期脉冲,通过置 UCIRTXCLK=1 来选中 BITCLK16 时钟,且脉冲长
度由 UCIRTXPLx=6-1=5 来设置为 6个半时钟循环。
UCIRTXCLK=0 时,基于 BRCLK 的脉冲长度 t脉冲由以下公式计算:
UCIRTXPLx= tPULSE× 2 × fBRCLK1
当脉冲长度是基于 BRCLK 的时,计数器 UCBRx 必须被设置成一个大于或等于 5的值.
15.3.5.2 IrDA 解码
UCIRRXPL=0 时解码器监测到高脉冲.否则就监测到低脉冲。 除模拟抗尖峰脉冲滤波器外,额外的可编程
数字滤波器阶段也能通过设置 UCIRRXFE 来是使能。 当 UCIRRXFE 被置位时,只有比可编程滤波器长的
脉冲才能通过。 较短脉冲被丢弃。 编程滤波器长度 UCIRRXFLx 的方程式如下:
UCIRRXFLx= (tPULSEtWAKE) × 2 × fBRCLK4
其中,
t脉冲=接受脉冲的最小宽度
t唤醒=从任何低功耗模式中唤醒。 当 MSP430 处于活动模式时为 0
415
ZHCU032IDecember 2004Revised January 2012
通用串行通信接口,
UART
模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
USCI
操作:
UART
模式
www.ti.com.cn
15.3.6
自动动错错误误检检测
毛刺抑制会阻止 USCI 的突然启动。 在 UCAxRXD 上的任何小于抗尖峰脉冲时间 tτ(大约 150NS)的脉冲
都被忽略.有关参数请参阅《器件专用数据表》。
当在 UCAxRXD 上的一个低电平周期超过 tτ时,多数票决都会被当作开始位。 如果多数票决没有监测到一
个有效的开始位,USCI 将暂停字符接收同时等待 UCAxRXD 上的下一个低电平周期。 多数票决也用于一个
字符的每个位来防止位错误。
当接收字符时,USCI 模块自动监测帧错误,奇偶校验错误,溢出错误,以及中断条件。 在各自的情况被监
测到时,UCFEUCPEUCOE,以及 UCBRK 位被置位。 当 UCFEUCPE UCOE 错误标志被置位
时,UCRXERR 也被置位。 在15-1中描述了错误条件。
15-1. 接收收错错误误条条件
错误误条件 错错误误标 说明
当一个低电平停止位被监测到时发生一个组帧错误。 当使用两个停止位时,这两个位都会被检
组帧错误 UCFE 查是否有组帧错误。 当检测到一个组帧错误时,UCFE 位被置位。
一个奇偶校验错误是一个字符中 1的个数和奇偶校验位的值之间的一个不匹配。 当地址位被包
奇偶校验错误 UCPE 含在字符中时,它被包含在奇偶校验计算中。 当监测到一个奇偶错误时,UCPE 位被置位。
当在读出前一个字符之前一个字符被载入 UCAxRXBUF 中时,会引发一个溢出错误。 当溢出
接收溢出 UCOE 错误发生时,UCOE 位被置位。
当不使用自动波特率监测时,在所有数据,奇偶校验,和停止位为低电平时,监测到一个中
中断条件 UCBRK 断。 当监测到一次中断条件时,UCBRK 位置位。 如果暂停中断使能 UCBRKIE 位被置位,一
个中断条件也可以置位其中断标志 UCAXRXIFG
UCRXEIE=0 时且监测到一个帧错误,或奇偶校验错误时,不会有字符被接收到 UCAxRXBUF 中。 当U
CRXEIE=1 时,字符被接收到 UCAxRXBUF 中且任何适用的错误位被置位。
UCFEUCPEUCOEUCBRK,或 UCRXEER 被置位时,该位一直保持到用户用软件复位或
UCAxRXBUF 被读出。 UCOE 必须通过读取 UCAxRXBUF 复位。 否则,它将不能正常工作。 为了可靠地
检测溢出,建议使用以下流程。 在一个字符被接收且 UCAxRXIFG 被置位后,首先读取 UCAxSTAT 来检查
包括溢出标志 UCOE 在内的错误标志。 接下来读取 UCAxRXBUF。如UCAxRXBUF UCAxSTAT
UCAxRXBUF 的读取访问之间被覆写,则除了 UCOE 以外的所有错误标志都会被清零。 为了检测这个条
件,在读完 UCAxRXBUF 后应该检查 UCOE 标志。 注意,在这种情况下,UCRXERR 标志不会被置位。
15.3.7 USCI
接收收使使能
通过清零 UCSWRST 位可以使能 USCI 模块,接收端准备就绪且处于一个空闲状态。 接收波特率发生器处
于准备状态但是不计时也不产生任何时钟。
开始位的下降沿使能波特率发生器同时 UART 状态机检查一个有效的开始位。 如果没有监测到有效的开始
位,UART 状态机返回到其空闲状态且波特率发生器再次被关掉。 如果一个有效的开始位被监测到,一个字
符就能被接收。
UCMODEX=01,当空闲线多处理器模式被选中时,UART 状态机在接收一个字符后检查空闲线。 如果监测
到一个开始位,则另一个字符会被接收。 否则在接收 10 个字符后 UCIDLE 标志会被置位,同时 UART
态机返回到空闲态且波特率发生器被关掉。
416
通用串行通信接口,
UART
模式
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
URXDx
URXS
tτ
Majority Vote Taken
URXDx
URXS
tτ
www.ti.com.cn
USCI
操作:
UART
模式
15.3.7.1 接收收数数据据毛毛刺刺脉脉冲冲抑抑制
毛刺脉冲抑制会阻止 USCI 的突然启动。 在 UCAxRXD 上的任何小于去毛刺脉冲时间 tτ(大约 150NS)的
脉冲都被 USCI 忽略,同时进一步的行为会发生,如图15-8所示。 有关参数请参阅《器件专用数据
表》。
15-8. 去毛毛刺刺脉脉冲冲抑抑制制,USCI 接收收未未开开始
当一个毛刺脉冲时间大于 tτ或一个有效的开始位发生在 UCAxRXD 上时,USCI 接收操作开始,在15-9
给出了多数票决。 如果绝大多数表决没有监测到一个开始位,USCI 将停止字符的接收。
15-9. 毛刺刺脉脉冲冲抑抑制制,USCI 启动
15.3.8 USCI
发送送使使能
通过清零 UCSWRST 位可以使能 USCI 模块,发送端准备就绪且处于一个空闲状态。 接收波特率发生器处
于准备状态但是不被计时也不产生任何时钟。
通过把数据写入 UCAxTXBUF 中来初始化一次传输。 当这发生后,波特率发生器被使能,在发送移位寄存
器为空后,在下一个BITCLK 周期 UCAxTXBUF 中的数据就被移到发送移位寄存器。 当新数据被写入
UCAxTXBUF UCAxTXIFG 被置位。
在前一个字节发送结束时,只要在 UCAxTXBUF 中的新数据有用,发送就会持续进行。 在前一个字节已发
送时,如果在 UCAxTXBUF 中没有新数据,发送器就返回到空闲态并且波特率发生器被关掉。
15.3.9 UART
波特特率率生生成
USCI 波特率发生器能从非标准源频率中产生一个标准的波特率。 它通过 UCOS16 位提供了两种操作模
式。
15.3.9.1 低频频率率波波特特率率生生成
UCOS16=0 时,低频模式被选中。这种模式允许波特率从低频时钟源中产生(比如,一个 32768HZ
振产生一个 9600 波特率) 通过使用一个较低的输入频率,能减少模块的能量消耗。 通过使用这种模式,
更高频率和更高预分频器的设置将导致在一个不断增加的小窗口中绝大多数表决采用,这样就降低了绝大多
数表决的优势。
在低频模式中波特率发生器使用一个预分频器和一个调节器产生位时钟时序。 这种组合支持波特率生成的分
数除数。 在这种模式下,最大的 USCI 波特率是时钟源频率的 1/3
417
ZHCU032IDecember 2004Revised January 2012
通用串行通信接口,
UART
模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
N/2
Bit Start
BRCLK
Counter
BITCLK
N/2−1 N/2−2 1 N/2 N/2−1 1 N/2 N/2−1
N/2−2
0 N/2 N/2−11
INT(N/2) + m(= 0)
INT(N/2) + m(= 1)
1 0 N/2
Bit Period
NEVEN: INT(N/2)
NODD : INT(N/2) + R(= 1)
m: corresponding modulation bit
R: Remainder from N/2 division
Majority Vote: (m= 0)
(m= 1)
USCI
操作:
UART
模式
www.ti.com.cn
15-10中给出了每一位的时序。 对于接收到的每一位,采用了一个绝大多数表决来决定位值。 这些采
样发生在 N/2-1/2N/2,和 N/2+1/2 BRCLK 周期,其中 N是每个 BITCLK 周期中 BRCLK 的数目。
15-10. BITCLK 波特特率率用UCOS16=0 定时
基于 UCBRSX 设置的调制如15-2所示。 表中 A1 表示 m=1 且相应的 BITCLK 周期是一个比 m=0 时的
一个 BITCLK 周期长的周期。在 8位后,调制互相环绕但是随着每一个新的开始位会重新启动。
15-2. BITCLK 的调调制制模模式
0
UCBRSx 1234567
(开开始位)
000000000
101000000
201000100
301010100
401010101
501110101
601110111
701111111
15.3.9.2 过采采样样波波特特率率生生成
UCOS16=1 时选择过采样模式。该模式支持采样一个输入时钟频率较高的 UART 位流。 这就导致大数票
决总是一个位时钟周期的 1/16 的结果。 当 IrDA 编码器和解码器被使能时,这种模式也很容易支持 3/16
时间的 IrDA 脉冲。
该模式使用一个预分频器和调制器来产生比 BITCLK 16 倍的 BITCLK16。 一个额外的分频器和调制器级
BITCLK16 中产生 BITCLK。 波特率产生该组合支持 BITCLK16 BITCLK。 在这种模式下,最大 USCI
波特率是 UART 源时钟频率 BRCLK 1/16。当UCBRx 被设置为 01时,预分频器和调制器第一个阶
段被旁路且 BRCLK 等于 BITCLK16
15-3中给出了基于 UCBRFx 设置的 BITCLK16 的调制。 表中 A 1 表示相应的 BITCLK16 是一个比
m=0 的周期长的 BRCLK 周期。 用每一个新的位定时重新启动调制。
15-2中给出了如先前所述的基于 UCBRSx 设置的 BITCLK 调制。
418
通用串行通信接口,
UART
模式
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
N N
UCBRFx = round ( ( INT( ) ) × 16 )
16 16
N
UCBRx = INT( )
16
BRCLK
f
N =
Baud rate
www.ti.com.cn
USCI
操作:
UART
模式
15-3. BITCLK 的调调制制模模式
最后后一个下下降BITCLK 沿沿后后的BITCLK16 钟的的数
UCBRFx 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
00h 0000000000000000
01h 0100000000000000
02h 0100000000000001
03h 0110000000000001
04h 0110000000000011
05h 0111000000000011
06h 0111000000000111
07h 0111100000000111
08h 0111100000001111
09h 0111110000001111
0Ah 0111110000011111
0Bh 0111111000011111
0Ch 0111111000111111
0Dh 0111111100111111
0Eh 0111111101111111
0Fh 0111111111111111
15.3.10
设置置一一个个波波特特率
对于一个给定的 BRCLK 时钟源,使用的波特率决定了所需的除法因子 N
除发因子 N通常不是一个整数值,因此至少需要一个除法器和一个调制器阶段尽可能的接近该因子。
如果 N等于或大于 16,可以通过设置 UCOS16 来选择过采样波特率产生模式。
15.3.10.1 低频频波波特特率率模模式式的的设设置
在低频模式下,除数的整数部分是由预分频器实现的:
UCBRx=INT(N)
同时小数部分由调制器通过下面的公式实现:
UCBRSx=round((N-INT(N))×8)
对于任何给定的位,通过计算增加或减少 UCBRSX 设定可能会降低最大位误差。 为了决定是否是这种情
况,在每一次 UCBRSx 的设定中必须对误差进行一个详细的计算。
15.3.10.2 过采采样样波波特特率率模模式式的的设设置
在过采样模式中,计数器被设置为:
且第一阶段的调制器被设置为:
419
ZHCU032IDecember 2004Revised January 2012
通用串行通信接口,
UART
模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
bit,ideal,TX
1
t [i] = (i + 1)
Baud rate
i
bit,TX bit,TX
j=0
t [i] = T [j]
å
15
UCBRFx
j=0
m [j]
å
( ) 15
bit,TX UCBRSx UCBRFx
BRCLK j=0
1
T [i] = 16 + m [i] × UCBRx + m [j]
f
æ ö
ç ÷
ç ÷
ç ÷
è ø
å
bit,TX UCBRSx
BRCLK
1
T [i] = (UCBRx + m [i])
f
USCI
操作:
UART
模式
www.ti.com.cn
当要求更高的精度时,UCBRSx 调节器也可以通过从 07调节实现。为了对任何给定位的在最坏情况下
的最大误差进行查明,须通过初始化 UCBRFx 设置和 UCBRFx 的设置递增和递减一,对 USCBSX 所有设
置的 07位的误差进行一个详细的计算。
15.3.11
发送送位位的的时时序
每个字符的时序是单个位时序的总和。 使用波特率发生器的调节特性可以减少累计的位误差。 可以通过以
下的步骤计算出单个位误差。
15.3.11.1 低频频波波特特率率模模式式位位时时序
在低频率模式中,计算位 i T位的长度,TX[i]是基于 UCBRx UCBRSx 的设置的。
其中,
mUCBRSx[i]=15-2中位 i的调制
15.3.11.2 过采采样样波波特特率率模模式式位位时时序
在过采样波特率模式中,计算位 i T位的长度,TX[i] 是基于 波特率发生器 UCBRxUCBRFx UCBRSx 的设置
的。
其中,
=15-3中相应行的总和
mUCBRSx[i]=15-2中位 i的调制
这导致了一个结束位时间 t位,TX[i]等于所有以前的和当前位的时间:
为了计算位误差,时间和理想位时间 t位,理想,TX[i]
这就导致了一个误差被标准化成一个理想的位时间(1/波特率):
误差TX[i]= (tbit,TX[i]–t位,理想,TX[i])× 波特率 × 100%
15.3.12
接收收位位时时序
接收时序误差包括两个误差源。 第一个是位到位的时序误差,与发送位时序误差相似。 第二个是介于一个
正出现的上升沿和被 UCSI 模块接受了的上升沿之间的误差15-11中所示的是介于 UCAxRXD 脚上的数据
和内部波特率时钟之间的异步时钟误差。 这导致一个另外的异步误差。 异步误差 t异步介于 -0.5BRCLKS
+0.5BRCLKS 之间。该误差取决于所选择的波特率发生模式。
420
通用串行通信接口,
UART
模式
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
UCBRSx
7+m [i]
UCBRFx
j=0
m [j]
å
( ) 15
bit,RX UCBRSx UCBRFx
BRCLK j=0
1
T [i] = 16 + m [i] × UCBRx + m [j]
f
æ ö
ç ÷
ç ÷
ç ÷
è ø
å
( ) UCBRSx
7+m [i]
i-1
bit,RX SYNC bit,RX UCBRSx UCBRFx
BRCLK
j=0 j=0
1
t [i] = t + T [j] + 8 + m [i] × UCBRx + m [j]
f
æ ö
ç ÷
ç ÷
ç ÷
è ø
å å
( )
bit,RX UCBRSx
BRCLK
1
T [i] = UCBRx + m [i]
f
i-1
bit,RX SYNC bit,RX UCBRSx
BRCLK
j=0
1 1
t [i] = t + T [j] + INT UCBRx + m [i]
f 2
æ ö
æ ö
ç ÷
ç ÷
ç ÷
è ø
è ø
å
bit,ideal,RX
1
t [i] = (i + 0.5)
Baud rate
1 2 3 4 5 6
0
i
t0
tideal
7 8
1
t1
2
9 10 11 12 13 14 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 2 3 4 5 6 7
t0t1t2
ST D0 D1
D0 D1
ST
Synchronization Error ± 0.5x BRCLK
Majority Vote Taken Majority Vote Taken Majority Vote Taken
BRCLK
UCAxRXD
RXD synch.
tactual
Sample
RXD synch.
www.ti.com.cn
USCI
操作:
UART
模式
15-11. 接收收错错误
理想的采样时间是在一个位周期的中间:
真实采样时间等于先前所有位的总和,根据在发送时序部分给出的公式,加上当前位 i1/2 BITCLK
加上异步误差 t异步
对于低频波特率模式结果如下:
其中,
mUCBRSx[i]=15-2中位 i的调制
对于过采样波特率模式,位 i采样时间由以下公式计算:
其中,
=0的总和 -15-3中的相应行的总和
mUCBRSx[i]=15-2中位 i的调制
根据以下公式,这导致了一个误差被标准化为一个理想位时间(1/波特率):
误差RX[i]= (tbit,RX[i]t位,理想,RX[i]) × 波特率 × 100%
421
ZHCU032IDecember 2004Revised January 2012
通用串行通信接口,
UART
模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
USCI
操作:
UART
模式
www.ti.com.cn
15.3.13
典型型的的波波特特率率和错误
对于一个使用 32768HZ 的晶振源 ACLK 和典型的 SMCLK 频率,在15-415-5中列出了 UCBRSx
UCBRFx 的标准波特率数据。 要确保所选 BRCLK 频率不超过特定器件的最大 USCI 输入频率(请参阅《
特定器件的数据手册》)。
相对于在每位中间的理想扫描时间,接收错误是累积时间错误。 为一个带奇偶校验的 8位字符的接收和一
个包括同步误差的停止位给出定了最糟糕的错误。
相对于理想位周期时间,发送错误是时间累积错误 为一个带奇偶校验的 8位字符的发送和一个停止位给出
定了最严重的错误。
15-4. 常用用波波特特率率,,设设置置,,和和错错误误,UCOS16= 0
BRCLK 波特特率[波特] UCBRx UCBRSx UCBRFx 最大TX []最大RX 错误[]
[Hz]
32,768 1200 27 2 0 -2.8 1.4 -5.9 2.0
32,768 2400 13 6 0 -4.8 6.0 -9.7 8.3
32,768 4800 6 7 0 -12.1 5.7 -13.4 19.0
32,768 9600 3 3 0 -21.1 15.2 -44.3 21.3
1,048,576 9600 109 2 0 -0.2 0.7 -1.0 0.8
1,048,576 19200 54 5 0 -1.1 1.0 -1.5 2.5
1,048,576 38400 27 2 0 -2.8 1.4 -5.9 2.0
1,048,576 56000 18 6 0 -3.9 1.1 -4.6 5.7
1,048,576 115200 9 1 0 -1.1 10.7 -11.5 11.3
1,048,576 128000 8 1 0 -8.9 7.5 -13.8 14.8
1,048,576 256000 4 1 0 -2.3 25.4 -13.4 38.8
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 56000 17 7 0 -4.8 0.8 -8.0 3.2
1,000,000 115200 8 6 0 -7.8 6.4 -9.7 16.1
1,000,000 128000 7 7 0 -10.4 6.4 -18.0 11.6
1,000,000 256000 3 7 0 -29.6 0 -43.6 5.2
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 56000 71 4 0 -0.6 1.0 -1.7 1.3
4,000,000 115200 34 6 0 -2.1 0.6 -2.5 3.1
4,000,000 128000 31 2 0 -0.8 1.6 -3.6 2.0
4,000,000 256000 15 5 0 -4.0 3.2 -8.4 5.2
8,000,000 9600 833 2 0 -0.1 0 -0.2 0.1
8,000,000 19200 416 6 0 -0.2 0.2 -0.2 0.4
8,000,000 38400 208 3 0 -0.2 0.5 -0.3 0.8
8,000,000 56000 142 7 0 -0.6 0.1 -0.7 0.8
8,000,000 115200 69 4 0 -0.6 0.8 -1.8 1.1
8,000,000 128000 62 4 0 -0.8 0 -1.2 1.2
8,000,000 256000 31 2 0 -0.8 1.6 -3.6 2.0
12,000,000 9600 1250 0 0 0 0 -0.05 0.05
12,000,000 19200 625 0 0 0 0 -0.2 0
12,000,000 38400 312 4 0 -0.2 0 -0.2 0.2
12,000,000 56000 214 2 0 -0.3 0.2 -0.4 0.5
12,000,000 115200 104 1 0 -0.5 0.6 -0.9 1.2
422
通用串行通信接口,
UART
模式
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
USCI
操作:
UART
模式
15-4. 常用用波波特特率率,,设设置置,,和和错错误误,UCOS16= 0 (continued)
BRCLK 波特特率[波特] UCBRx UCBRSx UCBRFx 最大TX []最大RX 错误[]
[Hz]
12,000,000 128000 93 6 0 -0.8 0 -1.5 0.4
12,000,000 256000 46 7 0 -1.9 0 -2.0 2.0
16,000,000 9600 1666 6 0 -0.05 0.05 -0.05 0.1
16,000,000 19200 833 2 0 -0.1 0.05 -0.2 0.1
16,000,000 38400 416 6 0 -0.2 0.2 -0.2 0.4
16,000,000 56000 285 6 0 -0.3 0.1 -0.5 0.2
16,000,000 115200 138 7 0 -0.7 0 -0.8 0.6
16,000,000 128000 125 0 0 0 0 -0.8 0
16,000,000 256000 62 4 0 -0.8 0 -1.2 1.2
15-5. 常用用波波特特率率,,设设置置,,和和错错误误,UCOS16=1
BRCLK 波特特率[波特] UCBRx UCBRSx UCBRFx 最大TX []最大RX 错误[]
[Hz]
1,048,576 9600 6 0 13 -2.3 0 -2.2 0.8
1,048,576 19200 3 1 6 -4.6 3.2 -5.0 4.7
1,000,000 9600 6 0 8 -1.8 0 -2.2 0.4
1,000,000 19200 3 0 4 -1.8 0 -2.6 0.9
1,000,000 57600 1 7 0 -34.4 0 -33.4 0
4,000,000 9600 26 0 1 0 0.9 0 1.1
4,000,000 19200 13 0 0 -1.8 0 -1.9 0.2
4,000,000 38400 6 0 8 -1.8 0 -2.2 0.4
4,000,000 57600 4 5 3 -3.5 3.2 -1.8 6.4
4,000,000 115200 2 3 2 -2.1 4.8 -2.5 7.3
4,000,000 230400 1 7 0 -34.4 0 -33.4 0
8,000,000 9600 52 0 1 -0.4 0 -0.4 0.1
8,000,000 19200 26 0 1 0 0.9 0 1.1
8,000,000 38400 13 0 0 -1.8 0 -1.9 0.2
8,000,000 57600 8 0 11 0 0.88 0 1.6
8,000,000 115200 4 5 3 -3.5 3.2 -1.8 6.4
8,000,000 230400 2 3 2 -2.1 4.8 -2.5 7.3
8,000,000 460800 1 7 0 -34.4 0 -33.4 0
12,000,000 9600 78 0 2 0 0 -0.05 0.05
12,000,000 19200 39 0 1 0 0 0 0.2
12,000,000 38400 19 0 8 -1.8 0 -1.8 0.1
12,000,000 57600 13 0 0 -1.8 0 -1.9 0.2
12,000,000 115200 6 0 8 -1.8 0 -2.2 0.4
12,000,000 230400 3 0 4 -1.8 0 -2.6 0.9
16,000,000 9600 104 0 3 0 0.2 0 0.3
16,000,000 19200 52 0 1 -0.4 0 -0.4 0.1
16,000,000 38400 26 0 1 0 0.9 0 1.1
16,000,000 57600 17 0 6 0 0.9 -0.1 1.0
16,000,000 115200 8 0 11 0 0.9 0 1.6
16,000,000 230400 4 5 3 -3.5 3.2 -1.8 6.4
16,000,000 460800 2 3 2 -2.1 4.8 -2.5 7.3
423
ZHCU032IDecember 2004Revised January 2012
通用串行通信接口,
UART
模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
USCI
操作:
UART
模式
www.ti.com.cn
15.3.14
在低低功功耗耗模模式式下
UART
模式式中中使使用
USCI
模块
低功耗模式下,USCI 模块为 SMCLK 提供时钟自动激活。 因为器件处于一个低功耗模式,当 SMCLK
USCI 模块的时钟源,所以是无效的,必要时 USCI 模块将自动激活,而不管时钟源的控制位的设置如何。
直到 USCI 模块返回到它的空闲状态时时钟才会停止保持活动。 在 USCI 模块返回到空闲状态后,时钟源的
控制又会依赖于它的控制位的设置。 自动激活模式不适用于 ACLK
USCI 模块激活一个激活的时钟源时,整个器件的时钟源变得活跃且和任何被配置为使用此时钟源的外围
可能会受到影响。 例如,在 USCI 模块强制激活 SMCLK 时,使用 SMCLK 的定时器将递增。
15.3.15 USCI
中断
USCI 有一个发送中断向量和接收中断向量。
15.3.15.1 USCI 发送送中中断断操操作
UCAxTXIFG 中断标志被发送器置位以便表示 UCAxTXBUF 已准备好接收另一个字符。 如果 UCAxTXIE
GIE 也被置位,则将产生一个中断请求。 如果一个字符被写入 UCAxTXBUF,那么 UCAxTXIFG 将自动复
位。
在一个 PUC 后或当 UCSWRST=1 时,UCAxTXIFG 被置位。在一个 PUC 后或当 UCSWRST=1
时,UCAxTXIE 被置位。
15.3.15.2 USCI 接收收中中断断操操作
每当一个字符被接收并被被载进 UCAxRXBUF 中,UCAxRXIFG 中断标志都会置位。 如果 UCAxRXIE
GIE 也被置位,就会产生一个中断请求。 UCAxRXIFG UCAxRXIE 由一个系统复位信号 PUC 复位或当
UCSWRST=1 复位。当 UCAxRXBUF 被读取时 UCAxRXIFG 自动复位。
其它中断控制特征包括:
UCAxRXEIE=0 时,错误字符将不会置位 UCAxRXIFG
UCDORM=1 时,在多处理器模式下非地址字符不会置位 UCAxRXIFG。 在普通 UART 模式,没有字
符置UCAxRXIFG
UCBRKIE=1 时,一个中断条件将置位 UCBRK 位和 UCAxRXIFG 标志。
15.3.15.3 USCI 的中中断断使使用
USCI_Ax USCI_Bx 共享同一个中断向量。 接收中断标志 UCAxRXIFG UCBxRXIFG 被路由到一个中
断向量,发送中断标志 UCAxTXIFG UCBxTXIFG 共享另一个中断向量。
Example 15-1展示了处理数据接收中断的一个中断服务子程序的摘录,这些数据接收中断来自处于 UART
SPI 模式的 USCI_A0 和来自 SPI 模式的 USCI_B0
Example 15-1.
共享享中中断断向向量量的的软软件件示示例例,,数数据据接接收
USCIA0_RX_USCIB0_RX_ISRBIT.B #UCA0RXIFG, &IFG2 ; USCI_A0 Receive Interrupt?JNZ
USCIA0_RX_ISRUSCIB0_RX_ISR?; Read UCB0RXBUF (clears UCB0RXIFG)...RETIUSCIA0_RX_ISR; Read UCA0RXBUF
(clears UCA0RXIFG)...RETI
Example 15-2展示了处理数据发送中断的一个中断服务子程序的摘录,这些数据接收中断来自处于 UART
SPI 模式的 USCI_A0 和来自 SPI 模式的 USCI_B0
424
通用串行通信接口,
UART
模式
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
USCI
操作:
UART
模式
Example 15-2.
共享享中中断断向向量量的的软软件件示示例例,,数数据据发发送
USCIA0_TX_USCIB0_TX_ISRBIT.B #UCA0TXIFG, &IFG2 ; USCI_A0 Transmit Interrupt?JNZ
USCIA0_TX_ISRUSCIB0_TX_ISR; Write UCB0TXBUF (clears UCB0TXIFG)...RETIUSCIA0_TX_ISR; Write UCA0TXBUF
(clears UCA0TXIFG)...RETI
425
ZHCU032IDecember 2004Revised January 2012
通用串行通信接口,
UART
模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
USCI
寄存器:
UART
模式
www.ti.com.cn
15.4 USCI 寄存存器器:UART 模式
15-615-7中列出了 UART 模式下的可用的 USCI 寄存器。
15-6. USCI_A0 控制制和和状状态态寄寄存存器
寄存存器 简式式 寄寄存存器器类型 地地址址 初初始化状状态
USCI_A0 控制寄存器 0 UCA0CTL0 读取/写入 060h PUC 复位
USCI_A0 控制寄存器 1 UCA0CTL1 读取/写入 061h 001h PUC
USCI_A0 波特率控制寄存器 0 UCA0BR0 读取/写入 062h PUC 复位
USCI_A0 波特率控制寄存器 1 UCA0BR1 读取/写入 063h PUC 复位
USCI_A0 调制控制寄存器 UCA0MCTL 读取/写入 064h PUC 复位
USCI_A0 状态寄存器 UCA0STAT 读取/写入 065h PUC 复位
USCI_A0 接收缓冲寄存器 UCA0RXBUF 读取 066h PUC 复位
USCI_A0 发送缓冲寄存器 UCA0TXBUF 读取/写入 067h PUC 复位
USCI_A0 自动波特率控制寄存器 UCA0ABCTL 读取/写入 05Dh PUC 复位
USCI_A0 IrDA 发送控制寄存器 UCA0IRTCTL 读取/写入 05Eh PUC 复位
USCI_A0 IrDA 接收控制寄存器 UCA0IRRCTL 读取/写入 05Fh PUC 复位
SFR 中断使能寄存器 2 IE2 读取/写入 001h PUC 复位
SFR 中断标志寄存器 2 IFG2 读取/写入 003h 00Ah PUC
:修改SF R
为了避免修改其他模块的控制位,建议使用 BIS.B BIC.B指令,而非 MOV.B CLR.B 指令
来置位或清除 IEx IFGx 位。
15-7. USCI_A1 控制制和和状状态态寄寄存存器
寄存存器 简式式 寄寄存存器器类型 地地址址 初初始化状状态
USCI_A1 控制寄存器 0 UCA1CTL0 读取/写入 0D0h PUC 复位
USCI_A1 控制寄存器 1 UCA1CTL1 读取/写入 0D1h 001h PUC
USCI_A1 波特率控制寄存器 0 UCA1BR0 读取/写入 0D2h PUC 复位
USCI_A1 波特率控制寄存器 1 UCA1BR1 读取/写入 0D3h PUC 复位
USCI_A1 调制控制寄存器 UCA1MCTL 读取/写入 0D4h PUC 复位
USCI_A1 状态寄存器 UCA1STAT 读取/写入 0D5h PUC 复位
USCI_A1 接收缓冲寄存器 UCA1RXBUF 读取 0D6h PUC 复位
USCI_A1 发送缓冲寄存器 UCA1TXBUF 读取/写入 0D7h PUC 复位
USCI_A1 自动波特率控制寄存器 UCA1ABCTL 读取/写入 0CDh PUC 复位
USCI_A1 IrDA 发送控制寄存器 UCA1IRTCTL 读取/写入 0CEh PUC 复位
USCI_A1 IrDA 接收控制寄存器 UCA1IRRCTL 读取/写入 0CFh PUC 复位
USCI_A1/B1 中断使能寄存器 UC1IE 读取/写入 006h PUC 复位
USCI_A1/B1 中断标志寄存器 UC1IFG 读取/写入 007h 00Ah PUC
426
通用串行通信接口,
UART
模式
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
USCI
寄存器:
UART
模式
15.4.1 UCAxCTL0
USCI_Ax
控制制寄寄存存器
0
76543210
UCPEN UCPAR UCMSB UC7BIT UCSPB UCMODEx UCSYNC
rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0
UCPEN 7奇偶校验使能
0奇偶校验被禁止。
1奇偶校验被启用。 产生的 (UCAxTXD) 和预期 (UCAxRXD) 的奇偶校验位。 在地址位多处理器模式
中,地址位被包括在奇偶校验计算中。
UCPAR 6奇偶校验选择。 奇偶校验被禁用时,UCPAR 不能使用。
0奇数校验
1偶数校验
UCMSB 5 MSB 首先选择。 控制移位寄存器接收和发送的方向。
0 LSB 首先
1 MSB 首先
UC7BIT 4字符长度。 选择 7位或 8位长度字符。
0 8 位数据
1 7 位数据
UCSPB 3停止位选择。 停止位的个数。
0 1 个停止位
1 2 个停止位
UCMODEx 2-1 USCI 模式。 当 UCSYNC=0 时,UCMODEx 位选择异步模式。
00 UART 模式
01 空闲线多处理器模式
10 地址位多处理器模式
11 带有自动波特率检测的 UART 模式
UCSYNC 0同步模式使能
0异步模式
1同步模式
427
ZHCU032IDecember 2004Revised January 2012
通用串行通信接口,
UART
模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
USCI
寄存器:
UART
模式
www.ti.com.cn
15.4.2 UCAxCTL1
USCI_Ax
控制制寄寄存存器
1
76543210
UCSSELx UCRXEIE UCBRKIE UCDORM UCTXADDR UCTXBRK UCSWRST
rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-1
UCSSELx 7-6 USCI 时钟源选择。 这些位选择 BRCLK 时钟源。
00 UCLK
01 ACLK
10 SMCLK
11 SMCLK
UCRXEIE 5接收错误的字符中断使能
0拒绝的错误字符和 UCAxRXIFG 没有置位
1接收到的错误字符将置位 UCAxRXIFG
UCBRKIE 4接收中断字符中断使能
0接收的中断字符不会置位 UCAxRXIFG
1接收的中断字符置位 UCAxRXIFG
UCDORM 3休眠。 使 USCI 进入休眠模式
0没有处于休眠状态。 所有接收的字符都将置位 UCAxRXIFG
1休眠。 只有被空闲线或地址位设置在前面的字符才会置位 UCAxRXIFG。 在带有自动波特率检测的
UART 模式中,只有一个中断和同步字段的组合才会置位 UCAxRXIFG
UCTXADDR 2发送地址 发送的下一帧将会被被标记为取决于选择的多处理器模式的地址。
0发送的下一帧是数据
1发送的下一帧是地址
UCTXBRK 1发送中断。 通过下一次写入发送缓冲器发送一个中断。 在带有自动波特率检测的 UART 模式中,必须将
055h 写入 UCAxTXBUF 以此来产生所需的中断/同步字段。 否则,必须将 0h 写入发送缓冲器。
0发送的下一帧不是一个中断
1发送的下一帧是一个中断或一个中断/同步
UCSWRST 0软件复位使能
0被禁用。 USCI 复位被释放用于运行。
1被启用。 USCI 逻辑保持在复位状态。
15.4.3 UCAxBR0
USCI_Ax
波特特率率控控制制寄寄存
0
76543210
UCBRx
rw rw rw rw rw rw rw rw
15.4.4 UCAxBR1
USCI_Ax
波特特率率控控制制寄寄存
1
76543210
UCBRx
rw rw rw rw rw rw rw rw
UCBRx 7-0 波特率发生器的时钟预分频器设置。 (UCAxBR0 + UCAxBR1 × 256) 16 位值组成了分频值。
428
通用串行通信接口,
UART
模式
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
USCI
寄存器:
UART
模式
15.4.5 UCAxMCTL
USCI_Ax
调制制控控制制寄寄存存器
76543210
UCBRFx UCBRSx UCOS16
rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0
UCBRFx 7-4 第一调制阶段选择。 当 UCOS16=1 时,这些位决定了 BITCLK16 的调制模式。在 UCOS16=0 时忽略。
15-3显示了调制模式
UCBRSx 3-1 第二调制阶段选择。 这些位决定了 BITCLK 的调制模式。15-2显示了调制模式。
UCOS16 0过采样模式被启用
0被禁用
1被启用
15.4.6 UCAxSTAT
USCI_Ax
状态态寄寄存存器
76543210
UCLISTEN UCFE UCOE UCPE UCBRK UCRXERR UCADDR UCBUSY
UCIDLE
rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 r-0
UCLISTEN 7监听使能。 UCLISTEN 位选择回路模式。
0被禁用
1被启用。 UCAxTXD 被内部反馈到接收器。
UCFE 6组帧错误标志
0无错误
1接收到的具有低停止位的字符
UCOE 5溢出错误标志。 当在之前的一个字符被读取前随后一个字符被传输到 UCAxRXBUF 时,该位被置位。 当
UCxRXBUF 被读取时,UCOE 被自动清除,而且 UCOE 绝不能用软件清除。 否则,它将无法正常工作。
0无错误
1发生溢出错误
UCPE 4奇偶校验错误标志。 当 UCPEN=0 , UCPE 被读取为 0
0无错误
1接收到的具有奇偶校验错误的字符
UCBRK 3中断检测标志
0无中断条件
1中断条件发生
UCRXERR 2接收错误标志。 该位表示收到一个错误字符。 当 UCRXERR=1 ,一个或多个错误标志位 (UCFE, UCPE,
UCOE) 也被置位。 当 UCAxRXBUF 被读取时,UCRXERR 被清除。
0没有检测到接收错误
1检测到接收错误
UCADDR 1在地址位多处理器模式中接收到的地址
0接收到的字符为数据
1接收到的字符是一个地址
UCIDLE 在空闲线多处理器模式中检测到的空闲线路。
0没有检测到空闲线路
1检测到空闲线路
UCBUSY 0 USCI 忙。 该位表示是否有一个发送或接收操作正在进行。
0 USCI 未激活
1 USCI 发送或接收
429
ZHCU032IDecember 2004Revised January 2012
通用串行通信接口,
UART
模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
USCI
寄存器:
UART
模式
www.ti.com.cn
15.4.7 UCAxRXBUF
USCI_Ax
接收收缓缓冲冲寄寄存存器
76543210
UCRXBUFx
rw rw rw rw rw rw rw rw
UCRXBUFx 7-0 接收数据缓冲区是用户可以访问的并且包含最后从接收移位寄存器中接收到的字符。 读取 UCAxRXBUF 复位
接收错误位,UCADDR UCIDLE 位,和 UCAxRXIFG。在7位数据模式下,UCAxRXBUF LSB 对齐的
并且 MSB 总是复位。
15.4.8 UCAxTXBUF
USCI_Ax
发送送缓缓冲冲寄寄存存器
76543210
UCTXBUFx
rw rw rw rw rw rw rw rw
UCTXBUFx 7-0 发送数据缓冲区是用户可以访问的并且保存有等待被转移到发送移位寄存器和 UCAxTXD 上传输的数据。 写
入到发送数据缓冲器清除 UCAxTXIFGUCAxTXBUF MSB 不用于 7位数据且被复位。
15.4.9 UCAxIRTCTL
USCI_Ax IrDA
发送送缓缓冲冲寄寄存存器
76543210
UCIRTXPLx UCIRTXCLK UCIREN
rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0
UCIRTXPLx 7-2 发送脉冲长度。 脉冲长度 t脉冲=(UCIRTXPLx + 1)/ (2 × fIRTXCLK)
UCIRTXCLK 1 IrDA 的发送脉冲时钟选择
0 BRCLK
1UCOS16=1 时,为 BITCLK16。否则为 BRCLK
UCIREN 0 IrDA 编码器/解码器使能。
0 IrDA 编码器/解码器被禁用
1 IrDA 编码器/解码器被启用
15.4.10 UCAxIRRCTL
USCI_Ax IrDA
接收收控控制制寄寄存存器
76543210
UCIRRXFLx UCIRRXPL UCIRRXFE
rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0
UCIRRXFLx 7-2 接收过滤器长度。 对于接收的最短脉冲长度由:tMIN= (UCIRRXFLx + 4) / (2 × fIRTXCLK)给出
UCIRRXPL 1 IrDA 接收输入 UCAxRXD 极性
0当一个轻脉冲出现时,IrDA 收发器传递了一个高脉冲
1当一个轻脉冲出现时,IrDA 收发器传递了一个低脉冲
UCIRRXFE 0 IrDA 接收滤波器被启用
0接收滤波器被禁用
1接收滤波器被启用
430
通用串行通信接口,
UART
模式
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
USCI
寄存器:
UART
模式
15.4.11 UCAxABCTL
USCI_Ax
自动动波波特特率率控控制寄存存器
76543210
被保保留UCDELIMx UCSTOE UCBTOE 被保保留UCABDEN
r-0 r-0 rw-0 rw-0 rw-0 rw-0 r-0 rw-0
被保保留 7-6 被保留
UCDELIMx 5-4 中断/同步定界符长度
00 1 位时间
01 2 位时间
10 3 位时间
11 4 位时间
UCSTOE 3同步字段超时错误
0无错误
1超出可测量时间的同步字段长度。
UCBTOE 2中断超时错误
0无错误
1超过 22 位时间的中断字段长度。
被保保留 1被保留
UCABDEN 0自动波特率检测使能
0波特率检测被禁用。 中断和同步字段长度没有被测量。
1波特率检测被禁用。 中断和同步字段的长度被测量并且波特率设置也相应的改变。
15.4.12 IE2
,中中断断使使能能寄寄存
2
76543210
UCA0TXIE UCA0RXIE
rw-0 rw-0
7-2 这些位可用于其他模块(请参阅《器件专用数据表》)
UCA0TXIE 1 USCI_A0 发送中断启用
0中断被禁用
1中断被启用
UCA0RXIE 0 USCI_A0 接收中断启用
0中断被禁用
1中断被启用
15.4.13 IFG2
,中中断断标标志志寄寄存
2
76543210
UCA0TXIFG UCA0RXIFG
rw-1 rw-0
7-2 这些位可用于其他模块(请参阅《器件专用数据表》)
UCA0TXIFG 1 USCI_A0 发送中断标志。 UCA0TXBUF 为空时,UCA0TXIFG 被置位。
0无中断等待
1中断等待
UCA0RXIFG 0 USCI_A0 接收中断标志。 当 UCA0RXBUF 已经接收一个完整字符时,UCA0RXIFG 被置位。
0无中断等待
1中断等待
431
ZHCU032IDecember 2004Revised January 2012
通用串行通信接口,
UART
模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
USCI
寄存器:
UART
模式
www.ti.com.cn
15.4.14 UC1IE
USCI_A1
中断断使使能能寄寄存存器
76543210
未被被使使UCA1TXIE UCA1RXIE
rw-0 rw-0 rw-0 rw-0 rw-0 rw-0
未被被使使 7-4 未使用
3-2 这些位可用于其他 USCI 模块(请参阅《器件专用数据表》)
UCA1TXIE 1 USCI_A1 发送中断启用
0中断被禁用
1中断被启用
UCA1RXIE 0 USCI_A1 接收中断启用
0中断被禁用
1中断被启用
15.4.15 UC1IFG
USCI_A1
中断断标标志志寄寄存存器
76543210
未被被使使UCA1TXIFG UCA1RXIFG
rw-0 rw-0 rw-0 rw-0 rw-1 rw-0
未被被使使 7-4 未使用
3-2 这些位可用于其他 USCI 模块(请参阅《器件专用数据表》)
UCA1TXIFG 1 USCI_A1 发送中断标志。 UCA1TXBUF 为空时,UCA1TXIFG 被置位。
0无中断等待
1中断等待
UCA1RXIFG 0 USCI_A1 接收中断标志。 当 UCA1RXBUF 已经接收一个完整字符时,UCA1RXIFG 被置位。
0无中断等待
1中断等待
432
通用串行通信接口,
UART
模式
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Chapter 16
ZHCU032IDecember 2004Revised January 2012
通用用串行通通信接口口,
SPI
模式式。
通用串行通信接口 (USCI) 采用一个硬件模块支持多路串行通信模式。 本章讨论了同步外设接口或 SPI 模式
的操作。
Topic ........................................................................................................................... Page
16.1 USCI 概述........................................................................................................ 434
16.2 USCI 介绍绍:SPI 模式......................................................................................... 434
16.3 USCI 操作: SPI 模式.......................................................................................... 436
16.4 USCI 寄存存器器:SPI 模式...................................................................................... 442
433
ZHCU032IDecember 2004Revised January 2012
通用串行通信接口,
SPI
模式。
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
USCI
概述
www.ti.com.cn
16.1 USCI 概述
通用串行通信接口 (USCI) 支持多种串行通信模式。 不同的串行通信接口模块支持不同的模式。 每个不同的
串行通信接口模块用不同的字母命名。(例如,USCI_A USCI_B 是不同的)。 如果在一个器件里有多
于一个的相同的 USCI 模块,这些模块以递增的数字命名。 例如,如果一个器件有两个 USCI_A 模块,它
们被命名为 USCI_A0 USCI_A1。 请参阅《器件专用数据表》以确定在哪个器件里面应用了什么 USCI
模块。
USCI_Ax 模块支持:
UART 模式
用于 IrDA 通信的整形脉冲
用于 LIN 通信的自动波特率检测
SPI 模式
USCI_Bx 模块支持:
• I2C模式
SPI 模式
16.2 USCI 介绍绍:SPI 模式
在同步模式中,通用串行通信接口通过三格或四个引脚把 MSP430 连接到一个外部系
统:UCxSIMOUCxSOMIUCxCLK,和 UCxSTE。当UCSYNC 位被置位时,选用 SPI 模式并且用
UCMODEx 位选择 SPI 模式(3 引脚或 4引脚)
SPI 模式的特性包括:
数据长度为 78
最低有效位或最高有效位数据最先传送和接收
3 引脚和 4引脚 SPI 操作
主控模式或受控模式
独立的发送和接收移位寄存器
独立的发送和接收缓存寄存器
连续发送和接收操作
可选的时钟极性和相位控制
主控模式下的可编程时钟频率
独立的接收中断和发送中断功能
LPM4 模式下的从器件操作
16-1显示了 SPI 模式下的 USCI 的配置。
434
通用串行通信接口,
SPI
模式。
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
ACLK
SMCLK
SMCLK
00
01
10
11
UCSSELx
N/A
Prescaler/Divider
Bit Clock Generator
UCxBRx
16
Receive Shift Register
Receive Buffer UC xRXBUF
Receive State Machine
UCMSB UC7BIT
1
0
UCMST
UCxSOMI
Transmit Buffer UC xTXBUF
Transmit State Machine
Transmit Shift Register
UCMSB UC7BIT
BRCLK
Set UCxRXIFG
Set UCxTXIFG
0
1
UCLISTEN
Clock Direction,
Phase and Polarity
UCCKPH UCCKPL
UCxSIMO
UCxCLK
Set UCOE
Transmit Enable
Control
2
UCMODEx
UCxSTE
Set UCFE
www.ti.com.cn
USCI
介绍:
SPI
模式
16-1. USCI 方框框图: SPI 模式
435
ZHCU032IDecember 2004Revised January 2012
通用串行通信接口,
SPI
模式。
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
USCI
操作
: SPI
模式
www.ti.com.cn
16.3 USCI 操作: SPI 模式
SPI 模式中,串行数据可在多路个器件之间进行发送和接收,这些器件使用由主机提供的共用时钟。 一
个额外引脚,UCxSTE,用于使能器件接收和发送数据并且由主器件控制。
三或四引脚信号被用于 SPI 数据交换:
• UCxSIMO:从器件输入,主器件输出
主控模式:UCxSIMO 为数据的输出线。
受控模式:UCxSIMO 为数据的输入线。
• UCxSIM1:从器件输出,主器件输入
主控模式:UCxSOMI 为数据的输入线。
受控模式:UCxSOMI 为数据的输出线。
UCxCLK: USCI SPI 时钟
主控模式:UCxCLK 是一个输出。
受控模式:UCxCLK 是一个输入。
• UCxSTE:从器件发送使能
被用于 4引脚模式中以此来允许一个单总线上的多个主器件。 不用于 3引脚模式。16-1描述了
UCxSTE 的操作。
16-1. UCxSTE 的操操作
UCMODEx UCxSTE 激活活状状态UCxSTE 器件件 主主器
0未激活的 激活的
01 1激活的 未激活的
0激活 未激活的
10 1未激活的 激活
16.3.1 USCI
的初初始始化化和和复复位
通用串行通信接口通过一个 PUC UCSWRST 位来复位。 一个 PUC 后,UCSWRST 位会自动置位,以
此来保持 USCI 在复位状态。 当置位时,UCSWRST 位复位 UCxRXIEUCxTXIEUCxRXIFGUCOE
UCFE 位并置位 UCxTXIFG 标志。 清零 UCSWRST 会释放 USCI 从而使其运行。
:初始始化化或或重重新新配配置USCI 模块
建议的 USCI 初始化/重新配置的过程为:
1. 置位 UCSWRST (BIS.B #UCSWRST&UCxCTL1)
2. 使用 UCSWRST=1,初始化所有的通用串行通信接口寄存器(包括 UCxCTL1
3. 配置端口
4. 通过软件清零 UCSWRST (BIC.B #UCSWRST&UCxCTL1)
5. 通过 UCxRXIE /UCxTXIE 使能中断(可选)
436
通用串行通信接口,
SPI
模式。
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Receive Buffer
UCxRXBUF
Receive Shift Register
Transmit Buffer
UCxTXBUF
Transmit Shift Register
SPI Receive Buffer
Data Shift Register (DSR)
UCx
SOMI SOMI
UCxSIMO SIMO
MASTER SLAVE
Px.x STE
UCxSTE SS
Port.x
UCxCLK SCLK
MSP430 USCI COMMON SPI
www.ti.com.cn
USCI
操作
: SPI
模式
16.3.2
字符符格格式
SPI 模式下的 USCI 模块支持通过 UC7BIT 位选择的 78位字符长度。 在 7位数据模式下,UCxRXBUF
是对齐的 LSB 并且 MSB 总是复位。 UCMSB 位控制传输方向并选定最低有效位或最高有效位先发送或接
收。
:缺省省字字符符格格式
缺省 SPI 字符传输是从 LSB 开始。 对于带有其他 SPI 接口的通信,它有可能需要 MSB 优先
模式。
:字符符格格式式图图表
本章的所有图表均使用 MSB 优先的格式。
16.3.3
主控控模模式
16-2说明了 USCI 3引脚和 4引脚模式下作为主器件时的配置。 当数据被送到传输数据缓冲器
UCxTXBUF 时,USCI 开始数据传送。 当 TX 移位寄存器空了后,UCxTXBUF 缓冲区的数据被传送到其
中,在 UCxSIMO 上传送初始化数据,起始位是最高位还是最低位,决定于 UCMSB 标志位的设置。
UCxSOMI 上的数据在反向时钟沿上被移入接收移位寄存器。 当接收到字符之后,接收数据从 RX 移位寄存
器送入接收数据缓冲器 UCxRXBUF,并且置位接收中断标志 UCxRXIFG,表示接收/发送操作完成。
16-2. USCI 主控控模模式式和和外外部部受受控控模模式
一个传输中断标志 UCxTXIFG 被置位,表示数据已经从 UCxTXBUF 移动到 TX 移位寄存器中并且
UCxTXBUF 准备传输新数据。 它并不代表 RX/TX 的完成。
为了在主控模式下接收 USCI 数据,数据必须事先写入 UCxTXBUF,因为接收和发送操作不是马上进行
的。
437
ZHCU032IDecember 2004Revised January 2012
通用串行通信接口,
SPI
模式。
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Receive Buffer
UCxRXBUF
Receive Shift Register
Transmit Buffer
UCxTXBUF
Transmit Shift Register
SPI Receive Buffer
Data Shift Register DSR
UCx
SOMI
SOMI
UCxSIMOSIMO
MASTER SLAVE
Px.x UCxSTE
STE SS
Port.x
UCxCLK
SCLK
MSP430 USCICOMMON SPI
USCI
操作
: SPI
模式
www.ti.com.cn
16.3.3.1 4 引脚SPI 主控控模模式
如在16-1中描述,在 4引脚主控模式中,UCxSTE 被用来防止与其它主器件相冲突和控制主器件。 当
UCxSTE 处于主器件不活动状态时:
UCxSIMO UCxCLK 被设置为输入并且不再驱动总线。
出错位 UCFE 置位表明一个要由客户处理的通讯完整性操作的违规。
内部状态被复位并且移位操作取消。
如果数据写入 UCxTXBUF 而主器件通过 UCxSTE 位保持非激活状态,它将在 UCxSTE 转换为主器件激活
状态时被立即发送。 如果一个激活的发送被正在转换为主器件未激活状态的 UCxSTE 中断,那么当
UCxSTE 转换为主器件激活状态时数据需要将数据重新写入 UCxTXBUFUCxSTE 输入信号不会在 3引脚
主空模式中使用。
16.3.4
受控控模模式
16-3显示了在 3引脚和 4引脚配置下的作为从器件的 USCI UCxCLK 被用作 SPI 时钟输入而且它必须
由外部主器件提供。 数据传送率取决于这个时钟而不是内部位时钟发生器。 在 UCxSOM1 上,UCxCLK
始传输之前,数据被写入 UCxTXBUF 并被移动到 TX 移位寄存器。 当设定编号位数被接收到
后,UCxSIMO 上的数据被移入 UCxCLK 反向沿上的移位寄存器并被移动到 UCxRXBUF。 当数据由 RX
位寄存器转被送到 UCxRXBUF 时,UCxRXIFG 中断标志被置位,表明数据已被接收。 在新数据写入
UCxRXBUF 时,如果前一个接收的数据还未从 UCxRXBUF 中被读取,则溢出错误位,UCOE 被置位。
16-3. USCI 从器器件件和和外外部部主主器器件
16.3.4.1 4 引脚SPI 受控控模模式
4引脚受控模式中,UCxSTE 被从器件用于使能发送和接收操作并由 SPI 主器件提供。 当 UCxSTE 处于
从器件未激活状态时,从器件正常运行。 当 UCxSTE 处于从器件未激活状态时:
UCxSIMO 上的所有进行中的操作都被暂停。
UCxSIMO 被设置为输入方向
切换操作被暂停直到 UCxSIMO 线传输进入从器件传输状态。
UCxSTE 输入信号的不会在 3引脚受控模式中使用。
438
通用串行通信接口,
SPI
模式。
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
BRCLK
BitClock
f
f =
UCBRx
www.ti.com.cn
USCI
操作
: SPI
模式
16.3.5 SPI
使使能
通过清零 UCxSIMO 位使能 USCI 模块时,该模块准备接收和发送数据。 在主控模式中,位时钟发生器准
备,但既不计时也不产生任何时钟。 在受控模式中,位时钟发生器被禁用并且由主器件提供。
UCBUSY=1 标志着一个发送或接收操作。
一个 PUC 或置位 UCSWRST 位立即禁用 USCI 并且所有激活的传输都被终止。
16.3.5.1 发送送使使能
在主控模式中,写入 UCxTXBUF 将激活位时钟发生器并且数据开始发送。
在受控模式中,当一个主器件提供一个时钟时且,在 4引脚模式中,UCxSTE 处于从器件激活状态中时,数
据开始传输。
16.3.5.2 接收收使使能
当一个传输激活时,SPI 接收数据。 接收和发送操作不同时运行。
16.3.6
穿穿行行时时钟钟控控制
SPI 总线上,主器件提供 UCxCLK。当UCMST=1 时,USCI 位时钟发生器通过 UCxCLK 引脚提供位时
钟。 被用于产生位时钟的时钟由 UCSSELx 位进行选择。 当 UCMST=0 时,USCI 时钟由主器件通过
UCxCLK 引脚提供,不使用位时钟发生器,并且 UCSSELx 位无影响。 SPI 接收器和发生器并行操作并且
在数据传输时使用同一时钟源。
在比特率控制寄存器 UCxxBR1 UCxxBR0 UCBRx 16 位值就是 USCI 时钟源,BRCLK 的分频系
数。 在主控模式中能产生的最大位时钟是 BRCLK。在SPI 模式中不用调制并且当 USCI_A 应用在 SPI
式时,UCAxMCTL 应该被清零。 UCAxCLK/UCBxCLK 频率由下列给出:
439
ZHCU032IDecember 2004Revised January 2012
通用串行通信接口,
SPI
模式。
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
CKPH CKPL Cycle#
UCxCLK
UCxCLK
UCxCLK
UCxCLK
UCxSIMO
UCxSOMI
UCxSIMO
UCxSOMI
Move to UCxTXBUF
RX Sample Points
0
1
0
0
01
1 1
0 X
1 X
MSB
MSB
1 2 3 4 5 6 7 8
LSB
LSB
TX Data Shifted Out
UCxSTE
UC UC
USCI
操作
: SPI
模式
www.ti.com.cn
16.3.6.1 串行行时时钟钟的的极极性性和和相相位
UCxCLK 的相位和极性通过 USCI UCCKPL UCCKPH 控制位独立配置。 16-4给吃了每种情况的时
序。
16-4. UCMSB=1 时的USCI SPI 时序
16.3.7
使使用
SPI
低功功耗耗模模式
对于应用在低功耗模式中的 SMCLKUSCI 模块提供时钟自动激活功能。 当 SMCLK USCI 的时钟源
时,它是未激活的,因为器件处于一个低功耗模式,当需要时,USCI 模块可以自动激活,而不用管时钟源
的控制位状态。 时钟保持激活直到 USCI 模块返回到空闲状态。 USCI 模块返回到空闲状态后,时钟源的控
制恢复到它控制位的设置。 不为 ACLK 提供自动时钟唤醒功能。
USCI 模块激活一个未激活时钟源时,时钟源激活,则应用该时钟源的整个器件和所有外设配置都会受到
影响。 例如,在 USCI 模块强制 SMCLK 激活期间,将会增加一个使用 SMCLK 的定时器。
SPI 受控模式中,无需内部时钟源,因为所需时钟都是由外部主器件提供。 当器件是在 LPM4 中且所有
时钟源都被禁用期间,有可能在 SPI 受控模式中运行 USCI。 接收或发送中断可以将 CPU 从任何低功耗模
式中唤醒。
16.3.8 SPI
中断
USCI 有一个发送中断向量和接收中断向量。
16.3.8.1 SPI 发送送中中断断操操作
UCxTXIFG 中断标志被发送器置位来表示 UCxTXBUF 准备接收另一个字符。 如果 UCxTXIE GIE 也被
置位,将产生一个中断请求。 如果一个字符被写入 UCxTXBUF,则 UCxTXIFG 会自动复位。 一个 PUC
UCSWRST=1 后,UCxTXIFG 将置位。一个 PUC UCSWRST= 1 后,UCxTXIE 将复位。
:SPI 模式式中中写写入UCxTXBUF
UCxTXIFG =0 时,数据被写入 UCxTXBUF 可能导致错误的数据传输。
440
通用串行通信接口,
SPI
模式。
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
USCI
操作
: SPI
模式
16.3.8.2 SPI 接收收中中断断操操作
每当一个字符被接收并装载到 UCxRXBUF 中时 UCxRXIFG 中断标志就会被置位一次。 如果 UCxRXIE
GIE 也置位,将产生一个中断请求。 复位 PUC 信号或者 UCSWRST=1 时,UCxRXIFG UCxRXIE 将被
系统复位。当 UCxRXBUF 被读取时,UCxRXIFG 会自动复位。
16.3.8.3 USCI 中断断用用法
USCI_Ax USCI_Bx 共用一个相同的中断向量。 接收中断的标志 UCAxRXIFG UCBxRXIFG 被路由到
一个中断向量,发送中断标志 UCAxTXIFG UCBxTXIFG 共享另一个中断向量。
Example 16-1说明一个中断服务子程序处理来自 UART SPI 模式下的 USCI_A0 和在 SPI 模式下
USCI_B0 的数据接收中断的一段摘录。
Example 16-1.
共用用接接受受中中断断向向量量软软件件举举例
USCIA0_RX_USCIB0_RX_ISRBIT.B #UCA0RXIFG, &IFG2 ; USCI_A0 Receive Interrupt?JNZ
USCIA0_RX_ISRUSCIB0_RX_ISR?; Read UCB0RXBUF (clears UCB0RXIFG)...RETIUSCIA0_RX_ISR; Read UCA0RXBUF
(clears UCA0RXIFG)...RETI
Example 16-2说明一个中断服务子程序处理来自 UART SPI 模式下的 USCI_A0 和在 SPI 模式下
USCI_B0 的数据发送中断的一段摘录。
Example 16-2.
共用用发发送送中中断断向向量量软软件件举举例
USCIA0_TX_USCIB0_TX_ISRBIT.B #UCA0TXIFG, &IFG2 ; USCI_A0 Transmit Interrupt?JNZ
USCIA0_TX_ISRUSCIB0_TX_ISR; Write UCB0TXBUF (clears UCB0TXIFG)...RETIUSCIA0_TX_ISR; Write UCA0TXBUF
(clears UCA0TXIFG)...RETI
441
ZHCU032IDecember 2004Revised January 2012
通用串行通信接口,
SPI
模式。
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
USCI
寄存器:
SPI
模式
www.ti.com.cn
16.4 USCI 寄存存器器:SPI 模式
16-2列出了 SPI 模式下应用 USCI_A0 USCI_B0 USCI 寄存器。 16-3列出了 SPI 模式下应用
USCI_A1 USCI_B1 USCI 寄存器。
16-2. USCI_A0 USCI_B0 控制制状状态态寄寄存存器
寄存存器 简氏氏 寄寄存存器器类型 地地址 初始始状状态
USCI_A0 控制寄存器 0 UCA0CTL0 读取/写入 060h PUC 复位
USCI_A0 控制寄存器 1 UCA0CTL1 读取/写入 061h 001h PUC
USCI_A0 波特率控制寄存器 0 UCA0BR0 读取/写入 062h PUC 复位
USCI_A0 波特率控制寄存器 1 UCA0BR1 读取/写入 063h PUC 复位
USCI_A0 调制控制寄存器 UCA0MCTL 读取/写入 064h PUC 复位
USCI_A0 状态寄存器 UCA0STAT 读取/写入 065h PUC 复位
USCI_A0 接收缓冲器寄存器 UCA0RXBUF 阅读 066h PUC 复位
USCI_A0 发送缓冲寄存器 UCA0TXBUF 读取/写入 067h PUC 复位
USCI_B0 控制寄存器 0 UCB0CTL0 读取/写入 068h 001h PUC
USCI_B0 控制寄存器 1 UCB0CTL1 读取/写入 069h 001h PUC
USCI_B0 位速率控制寄存器 0 UCB0BR0 读取/写入 06Ah PUC 复位
USCI_B0 比特率控制寄存器 1 UCB0BR1 读取/写入 06Bh PUC 复位
USCI_B0 状态寄存器 UCB0STAT 读取/写入 06Dh PUC 复位
USCI_B0 接收缓冲寄存器 UCB0RXBUF 读取 06Eh PUC 复位
USCI_B0 发送缓冲寄存器 UCB0TXBUF 读取/写入 06Fh PUC 复位
SFR 中断使能寄存器 2 IE2 读取/写入 001h PUC 复位
SFR 中断标志寄存器 2 IFG2 读取/写入 003h 00Ah PUC
:修改SFR
为了避免修改其他模块的控制位,建议使用 BIS.B BIC.B 指令置位或清除 IEX IFGx 位,
而非 MOV.B CLR.B 指令。
16-3. USCI_A1 USCI_B1 控制制状状态态寄寄存存器
寄存存器 简式式 寄寄存存器器类型 地地址 初态
USCI_A1 控制寄存器 0 UCA1CTL0 读取/写入 0D0h PUC 复位
USCI_A1 控制寄存器 1 UCA1CTL1 读取/写入 0D1h 001h PUC
USCI_A1 波特率控制寄存器 0 UCA1BR0 读取/写入 0D2h PUC 复位
USCI_A1 波特率控制寄存器 1 UCA1BR1 读取/写入 0D3h PUC 复位
USCI_A1 调制控制寄存器 UCA10MCTL 读取/写入 0D4h PUC 复位
USCI_A1 状态寄存器 UCA1STAT 读取/写入 0D5h PUC 复位
USCI_A1 接收缓冲寄存器 UCA1RXBUF 读取 0D6h PUC 复位
USCI_A1 发送缓冲寄存器 UCA1TXBUF 读取/写入 0D7h PUC 复位
USCI_B1 控制寄存器 0 UCB1CTL0 读取/写入 0D8h 001h PUC
USCI_B1 控制寄存器 1 UCB1CTL1 读取/写入 0D9h 001h PUC
USCI_B1 比特率控制寄存器 0 UCB1BR0 读取/写入 0DAh PUC 复位
USCI_B1 比特率控制寄存器 1 UCB1BR1 读取/写入 0DBh PUC 复位
USCI_B1 状态寄存器 UCB1STAT 读取/写入 0DDh PUC 复位
USCI_B1 接收缓冲寄存器 UCB1RXBUF 读取 0DEh PUC 复位
USCI_B1 发送缓冲寄存器 UCB1TXBUF 读取/写入 0DFh PUC 复位
USCI_A1/B1 中断使能寄存器 UC1IE 读取/写入 006h PUC 复位
USCI_A1/B1 中断标志寄存器 UC1IFG 读取/写入 007h 00Ah PUC
442
通用串行通信接口,
SPI
模式。
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
USCI
寄存器:
SPI
模式
16.4.1 UCAxCTL0
USCI_Ax
控制制寄寄存存器
0
UCBxCTL0
USCI_Bx
控制制寄寄存存器
0
76543210
UCCKPH UCCKPL UCMSB UC7BIT UCMST UCMODEx UCSYNC=1
rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0
UCCKPH 7时钟相位选择
0在第一个 UCLK 边沿上变化的数据和在下列边沿上捕获的数据。
1在第一个 UCLK 边沿上捕获的数据和在下列边沿上改变的数据。
UCCKPL 6时钟极性选择。
0未激活的状态是低电平。
1未激活的状态是高电平。
UCMSB 5 MSB 优先选择。 控制移位寄存器接收和发送的方向。
0 LSB 优先
1 MSB 优先
UC7BIT 4字符长度。 选择 7位或 8位字符长度。
0 8 位数据。
1 7 位数据。
UCMST 3主控模式选择
0受控模式
1主控模式
UCMODEx 2-1 USCI 模式。 当 UCSYNC=1 时,UCMODEx 位选择同步模式。
00 3 引脚 SPI
01 UCxSTE 高电平有效时的 4引脚 SPI:当 UCxSTE=1 时,从器件模式被启用
10 UCxSTE 低电平有效时的 4引脚 SPI:当 UCxSTE=0 时,从器件模式被启用
11 I2C模式
UCSYNC 0同步模式使能
0异步模式
1同步模式
16.4.2 UCAxCTL1
USCI_Ax
控制制寄寄存存器
1
UCBxCTL1
USCI_Bx
控制制寄寄存存器
1
76543210
UCSSELx 未被被使使UCSWRST
rw-0 rw-0 rw-0(1) rw-0 rw-0 rw-0 rw-0 rw-1
r0(2)
UCSSELx 7-6 USCI 时钟源选择。 这些位选择在主器件模式下的 BRCLK 时钟源。 UCxCLK 总是在从器件模式下使用。
00 不可用
01 ACLK
10 SMCLK
11 SMCLK
未被被使使 5-1 未被使用
UCSWRST 0软件复位使能
0被禁用。 USCI 复位操作释放
1被启用. USCI 逻辑保持在复位状态。
(1) UCAxCTL1(USCI_Ax)
(2) UCBxCTL1(USCI_Bx)
443
ZHCU032IDecember 2004Revised January 2012
通用串行通信接口,
SPI
模式。
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
USCI
寄存器:
SPI
模式
www.ti.com.cn
16.4.3 UCAxBR0
USCI_Ax
比特特率率控控制制寄寄存
0
UCBxBR0
USCI_Bx
比特特率率控控制制寄寄存
0
76543210
UCBRx-低字节
rw rw rw rw rw rw rw rw
16.4.4 UCAxBR1
USCI_Ax
比特特率率控控制制寄寄存
1
UCBxBR1
USCI_Bx
比特特率率控控制制寄寄存
1
76543210
UCBRx-高字节
rw rw rw rw rw rw rw rw
UCBRx 位时钟预分频器设置。 (UCxxBR0 + UCxxBR1 × 256) 16 值组成了预分频器值。
16.4.5 UCAxSTAT
USCI_Ax
状态态寄寄存存器器,
UCBxSTAT
USCI_Bx
状态态寄寄存存器
76543210
UCLISTEN UCFE UCOE 被使使用UCBUSY
rw-0 rw-0 rw-0 rw-0(1) rw-0 rw-0 rw-0 r-0
r0(2)
UCLISTEN 7监听使能。 UCLISTEN 位选择回路模式。
0被禁用
1被启用.发送器输出从内部反馈到接收器。
UCFE 6组帧错误标志。 该位表示了一个 4线制主控模式中的总线冲突。 UCFE 不能用于 3线制主控模式或任何受控
模式。
0无错误
1发生总线冲突
UCOE 5溢出错误标志。 当在之前的一个字符被读取前随后一个字符被传输到 UCxRXBUF 时,该位被置位。 当
UCxRXBUF 被读取时,UCOE 被自动清除,而且 UCOE 绝不能用软件清除。 否则,它将无法正常工作。
0无错误
1发生溢出错误
未被被使使 4-1 未被使用
UCBUSY 0 USCI 忙。 该位表示一个发送或接收操作正在进行。
0 USCI 未激活
1 USCI 发送或接收
(1) UCAxSTAT (USCI_Ax)
(2) UCBxSTAT (USCI_Bx)
16.4.6 UCAxRXBUF
USCI_Ax
接收收缓缓冲冲寄寄存存器
UCBxRXBUF
USCI_Bx
接收收缓缓冲冲寄寄存存器
76543210
UCRXBUFx
rrrrrrrr
UCRXBUFx 7-0 接收数据缓冲区是用户可以访问的并且包含最后从接收移位寄存器中接收到的字符。 读取 UCxRXBUF 复位接
收错误位,和 UCxRXIFG。在7位数据模式下,UCxRXBUF 是对齐的 LSB 并且 MSB 总是复位。
444
通用串行通信接口,
SPI
模式。
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
USCI
寄存器:
SPI
模式
16.4.7 UCAxTXBUF
USCI_Ax
发送送缓缓冲冲寄寄存存器
UCBxTXBUF
USCI_Bx
发送送缓缓冲冲寄寄存存器
76543210
UCTXBUFx
rw rw rw rw rw rw rw rw
UCTXBUFx 7-0 发送数据缓冲区是用户可以访问的并且保存有等待被转移到发送移位寄存器和传输的数据。 写入到发送数据缓
冲器清除 UCxTXIFGUCxTXBUF MSB 没有在 7位数据模式下使用且被复位了。
16.4.8 IE2
,中中断断使使能能寄寄存
2
76543210
UCB0TXIE UCB0RXIE UCA0TXIE UCA0RXIE
rw-0 rw-0 rw-0 rw-0
7-4 这些位可能用于其他模块(请参阅《器件专用数据表》)。
UCB0TXIE 3 USCI_B0 发送中断启用
0中断被禁用
1中断被启用
UCB0RXIE 2 USCI_B0 接收中断启用
0中断被禁用
1中断被启用
UCA0TXIE 1 USCI_A0 发送中断启用
0中断被禁用
1中断被启用
UCA0RXIE 0 USCI_A0 接收中断启用
0中断被禁用
1中断被启用
16.4.9 IFG2
,中中断断标标志志寄寄存
2
76543210
UCB0TXIFG UCB0RXIFG UCA0TXIFG UCA0RXIFG
rw-1 rw-0 rw-1 rw-0
7-4 这些位可能用于其他模块(参阅《器件专用数据表》)。
UCB0TXIFG 3 USCI_B0 发送中断标志。 UCB0TXBUF 为空时,UCB0TXIFG 被置位。
0无中断等待
1中断等待
UCB0RXIFG 2 USCI_B0 接收中断标志.UCB0RXBUF 已经接收一个完整字符时,UCB0RXIFG 被置位。
0无中断等待
1中断等待
UCA0TXIFG 1 USCI_A0 发送中断标志. UCA0TXBUF 为空时,UCA0TXIFG 被置位。
0无中断等待
1中断等待
UCA0RXIFG 0 USCI_A0 接收中断标志.UCA0RXBUF 已经接收一个完整字符时,UCA0RXIFG 被置位。
0无中断等待
1中断等待
445
ZHCU032IDecember 2004Revised January 2012
通用串行通信接口,
SPI
模式。
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
USCI
寄存器:
SPI
模式
www.ti.com.cn
16.4.10 UC1IE
USCI_A1/USCI_B1
中断断使使能能寄寄存存器
76543210
未被被使使UCB1TXIE UCB1RXIE UCA1TXIE UCA1RXIE
rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0
未被被使使 7-4 未被使用
UCB1TXIE 3 USCI_B1 发送中断使能
0中断被禁用
1中断被启用
UCB1RXIE 2 USCI_B1 接收中断使能
0中断被禁用
1中断被启用
UCA1TXIE 1 USCI_A1 发送中断使能
0中断被禁用
1中断被启用
UCA1RXIE 0 USCI_A1 接收中断使能
0中断被禁用
1中断被启用
16.4.11 UC1IFG
USCI_A1/USCI_B1
中断断标标志志寄寄存存器
76543210
未被被使使UCB1TXIFG UCB1RXIFG UCA1TXIFG UCA1RXIFG
rw-0 rw-0 rw-0 rw-0 rw-1 rw-0 rw-1 rw-0
未被被使使 7-4 未被使用
UCB1TXIFG 3 USCI_B1 发送中断标志。 UCB1TXBUF 为空时,UCB1TXIFG 被置位。
0无中断等待
1中断等待
UCB1RXIFG 2 USCI_B1 接收中断标志。 当 UCB1RXBUF 已经接收一个完整字符时,UCB1RXIFG 被置位。
0无中断等待
1中断等待
UCA1TXIFG 1 USCI_A1 发送中断标志。 UCA1TXBUF 为空时,UCA1TXIFG 被置位。
0无中断等待
1中断等待
UCA1RXIFG 0 USCI_A1 接收中断标志。 当 UCA1RXBUF 已经接收一个完整字符时,UCA1RXIFG 被置位。
0无中断等待
1中断等待
446
通用串行通信接口,
SPI
模式。
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Chapter 17
ZHCU032IDecember 2004Revised January 2012
通用用串行通通信接口口,
I2C
模式
通用串行通信接口 (USCI) 支持一个硬件模块下的多通道串行通信模式。 本章讨论了 I2C模式的运行。
Topic ........................................................................................................................... Page
17.1 USCI 概述........................................................................................................ 448
17.2 USCI 介绍绍:I2C模式.......................................................................................... 448
17.3 USCI 运行行:I2C模式.......................................................................................... 449
17.4 USCI 寄存存器器:I2C模式....................................................................................... 465
447
ZHCU032IDecember 2004Revised January 2012
通用串行通信接口,
I2C
模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
USCI
概述
www.ti.com.cn
17.1 USCI 概述
通用串行通信接口 (USCI) 模块支持多种串行通信模式。 不同的 USCI 模块支持不同的模式。 每种不同的
USCI 模块用不同的字母命名。 例如,USCI_A USCI_B 是不同的,等等。 如果在一台器件上执行多个
相同的 USCI 模块,那么这些模块用递增的数字命名。 例如,如果一个设备有两个 USCI_A 模块,它们被
命名为 USCI_A0 USCI_A1。 请参阅器件专用数据表来决定在哪种器件执行哪一个 USCI 模块。
USCI_Ax 模块支持:
UART 模式
用于 IrDA 通信的脉冲整形
用于 LIN 通信的波特率自动检测
SPI 模式
USCI-Bx 模块支持:
• I2C模式
SPI 模式
17.2 USCI 介绍绍:I2C模式
I2C模式中,USCI 模块在 MSP430 和用两线式 I2C串行总线方式连接的 I2C兼容器件之间提供了一个接
口。 串连至 I2C总线的外部组件通过双线 I2C接口与 USCI 模块相互传输串行数据。
I2C模式的特点包括:
符合 2.1 版本飞利浦半导体 I2C技术规格
7 位和 10 位器件寻址模式
常规调用
起始/重新起始/停止
多主控发送器/接收器模式
受控接收器/发送器模式
标准模式下可达 100kbps,支持快速模式下高达 400kbps
主控模式下可编程的 UCxCLK 频率
低功耗设计
受控接收器起始从 LPMx 模式中自动唤醒的检测
LPM4 下的受控模式运行
当在 I2C模式中配置后,17-1就会给出USCI
448 ZHCU032IDecember 2004Revised January 2012
通用串行通信接口,
I2C
模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
ACLK
SMCLK
SMCLK
00
01
10
11
UCSSELx
UC1CLK
Prescaler/Divider
Bit Clock Generator
UCxBRx
16
BRCLK
Slave Address UC 1SA
Transmit Shift Register
UCMST
Transmit Buffer UC 1TXBUF
I2C State Machine
Own Address UC1OA
Receive Shift Register
UCA10
Receive Buffer UC1RXBUF
UCGCEN
UCxSDA
UCxSCL
UCSLA10
www.ti.com.cn
USCI
运行:
I2C
模式
17-1. USCI 方框框图图:I2C模式
17.3 USCI 运行行:I2C模式
I2C模式支持任何从器件或主器件 I2C相兼容器件。17-2给出了一个 I2C总线的一个例子。 每一个 I2C
件被一个唯一的地址识别,并可以作为发送器或接收器。 当进行数据传输时,一个连接到 I2C总线的器件可
被看作主器件或从器件。 一个主器件发起数据传输,并生成时钟信号 SCL。 任何由主器件寻址的器件被看
作是一个从器件。
I2C数据是用串行数据引脚 (SDA) 和串行时钟引 (SCL) 进行通信的。 SDA SCL 是双向的,并且必须被连
接到使用一个上拉电阻的正电源电压。
: SDA SCL 电平
MSP430 SDA SCL 引脚不能被拉高至超过 MSP430 VCC电平。
449
ZHCU032IDecember 2004Revised January 2012
通用串行通信接口,
I2C
模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
MSP430
VCC
Serial Data (SDA)
Serial Clock (SCL)
Device A
Device B Device C
USCI
运行:
I2C
模式
www.ti.com.cn
17-2. I2C总线线连连接接框框图
17.3.1 USCI
初始始化化和和复复位
USCI由一个 PUC 进行复位或由 UCSWRST 位设置。 在一个 PUC 之后,UCSWRST 位被自动设置,从而
保持了 USCI 处于复位状态。 为了选择 I2C运行,UCMODEx 位必须设置为 11。 模块被初始化后,已准备
好发送或接收操作。 清除 UCSWRST 位会使 USCI 处于运行状态。
UCSWRST 被设定以便避免不可预知的运行状态时,应完成 USCI 模块的配置和重新配置。 在 I2C模式
下设置 UCSWRST 具有以下作用:
• I2C通信停止
SDA SCL 为高阻抗
• UCBxI2CSTAT6-0 位被清零
UCBxTXIE UCBxRXIE 被清零
UCBxTXIFG UCBxRXIFG 被清零
所有其他位和寄存器保持不变。
:初始始化化或或重重新新配配置USCI 模块
建议的 USCI 初始化或重新配置过程是:
1. 置位 UCSWRST (BIS.BUCSWRSTUCxCTL1)
2. UCSWRST= 1,初始化所有 USCI 寄存器(包括 UCxCTL1
3. 配置端口。
4. 通过软件清零 UCSWRST (BIC.BUCSWRSTUCxCTL1)
5. 通过 UCxRXIE /UCxTXIE 使能中断(可选)
17.3.2 I2C
串行行数数据
由主器件为每个已传送的数据位产生一个时钟脉冲。 I2C模式用字节数据运行。 传输的数据是最高有效位,
如在17-3中所示。
在一个起始条件后的第一个字节包含一个 7位从器件地址和 R/W 。当R/W = 0 时,主器件向从器件发送
数据。 当 R/W = 1 时,主器件从从器件处接收数据。 ACK 位由在第 9SCL 时钟上的每个字节后的接收
器发送。
450 ZHCU032IDecember 2004Revised January 2012
通用串行通信接口,
I2C
模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
S
1
Slave Address 1st byte
7
Slave Address 2nd byteACKR/W
11 8
ACK
1
Data
8
ACK
1
P
1
1 1 1 1 0 X X
S Slave Address R/W ACK Data ACK Data ACK P
7 8 8
1 1 1 1 1 1
Data Line
Stable Data
Change of Data Allowed
SDA
SCL
SDA
SCL
MSB Acknowledgement
Signal From Receiver
Acknowledgement
Signal From Receiver
1 2 7 8 9 1 2 8 9
ACK ACK
START
Condition (S)
STOP
Condition (P)
R/W
www.ti.com.cn
USCI
运行:
I2C
模式
17-3. I2C模块块数数据据传传输
起始和停止条件是由主器件生成,并显示在17-3中。 一个起始条件是,在 SCL 为高电平时,SDA 线上
的由高电平至低电平的过渡。 一个停止条件是,在 SCL 为高电平时,SDA 线上的由低电平至高电平的过
渡。 总线忙位,UCBBUSY,在起始后置位,在停止后清零。
SCL 为高电平期间,SDA 上的数据必须保持稳定,如17-4中所示。 只能在 SCL 为低时才可以改变 SDA
的高低电平状态,否则将会产生起始和停止条件。
17-4. I2C总线线上上的的位位传传输
17.3.3 I2C
寻址址模模式
I2C模式支持 7位和 10 位的寻址模式。
17.3.3.1 7 位寻寻址
7位寻址的格式如在17-5中所示M第一个字节是 7位从器件地址和 R/w 位。 应答位 ACK 是在每个字节
后由接收器发出的。
17-5. I2C模块7位寻寻址址格格式
17.3.3.2 10 位寻寻址
10 位寻址的格式如在17-6中所示,第一个字节由 11110b 加上 10 位从器件地址的两个最高位 (MSB)
R/W 位构成。 应答位 ACK 是在每个字节后由接收器发出的。 下一个字节是 10 位从地址中剩下的低 8位,
而后是 ACK 应答位和 8位数据。
17-6. I2C模块10 位寻寻址址格格式
451
ZHCU032IDecember 2004Revised January 2012
通用串行通信接口,
I2C
模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
...
USCI Master
USCI Slave
Other Master
Other Slave
... Bits set or reset by software
Bits set or reset by hardware
17 8 7 8
1 1 1 1 1 1 1 1
S Slave Address R/W ACK Data ACK S Slave Address R/W ACK Data ACK P
1 Any
Number
1 Any Number
USCI
运行:
I2C
模式
www.ti.com.cn
17.3.3.3 重复复起起始始条条件
主器件可以在不先停止一个传输的情况下,通过一个重复起始条件来改变 SDA 上数据流的方向。 这称为重
新起始。 重新起始生成后,从器件地址被 R/W 位指定的新数据方向再次发送。 在17-7中给出了重新起
始的条件。
17-7. I2C模块块重重复复起起始始条条件件的的寻寻址址格格式
17.3.4 I2C
模块块的的运运行行模模式
I2C模式下,USCI 模块可以在主器件发送模式,主器件接收模式,从器件发送模式或受控接收器模式下
工作。 下面的章节对这些模式进行了讨论。 用时序线路来对这些模式进行阐明。
17-8给出了如何解释这些时序线路图表。 主器件发送的数据用灰色的矩形块表示,从器件发送的数据用
白色的矩形块表示。 不管作为主器件还是从器件,稍高的矩形块表示的是由 USCI 模块发送的数据。
USCI 模块的行为用一个带箭头的灰色矩形块表示,其箭头所指的数据流位置就是动作发生的地方。 那些必
须用软件处理的动作由带箭头的白色矩形方块表示,箭头指向的是数据流中动作必须发生的位置。
17-8. I2C时序序线线路路图图例
17.3.4.1 受控控模模式
通过把 I2C模式设置为 UCMODEx=11 USCYNC=1,并清除 UCMST 位,USCI 模块被配置为一个 I2C
从器件。
首先,USCI 模块必须在接收模式下通过清除 UCTR 位进行配制,以便接收 I2C从器件地址。 之后,发送和
接收操作是由与从器件一起接收到的 R/W 位自动决定。
USCI 从器件地址是由 UCBxI2COA 寄存器编程的。 当 UCA10=0 时,选用 7位寻址方式。 当 UCA10=1
时,选用 10 位寻址方式。 如果从器件响应一个常规调用,则可以选择 UCGCEN 位。
452 ZHCU032IDecember 2004Revised January 2012
通用串行通信接口,
I2C
模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
S SLA/R A DATA A P
UCTR=1 (Transmitter)
UCSTTIFG=1
UCBxTXIFG=1
UCSTPIFG=?0
UCBxTXBUF discarded
Reception of own
address and
transmission of data
bytes
Bus stalled (SCL held low)
until data available
DATADATA A
UCSTPIFG=1
UCSTTIFG=0
A
A
DATA A S SLA/R
UCTR=1 (Transmitter)
UCSTTIFG=1
UCBxTXIFG=1
UCBxTXBUF discarded
DATA A S SLA/W
UCTR=0 (Receiver)
UCSTTIFG=1
Arbitration lost as
master and
addressed as slave
UCALIFG=1
UCMST=0
UCTR=1 (Transmitter)
UCSTTIFG=1
UCBxTXIFG=1
UCSTPIFG=0
UCBxTXIFG=0
Repeated start
continue as
slave transmitter
Repeated start
continue as
slave receiver
Write data to UCBxTXBUF
UCBxTXIFG=1
UCBxTXIFG=0
UCBxTXIFG=0
Write data to UCBxTXBUF
www.ti.com.cn
USCI
运行:
I2C
模式
当在总线上检测到起始条件时,USCI 模块将接收传送过来的地址,并将之与存储在 UCBxI2C0A 中的本器
件地址相比较。 若接收地址与 USCI 从器件地址一致,则置位 UCSTTIFG 标志。
17.3.4.1.1 I2C
受控控发发送送器器模模式
当主器件发送的从器件地址和带有一个设置 R/W 位的其自身地址相匹配时,从器件进入发送模式。 受控传
输器依靠主器件产生的时钟脉冲信号在 SDA 上移位传输串行数据。 从器件不能产生时钟时钟M但是当发送
完一个字节后需要 CPU 的干预时,从器件能够保持 SCL 为低电平。
如果主器件向从器件器件请求数据,USCI 模块会自动配置为发送模式,并置位 UCTR UCBxTXIFG。 在
数据未写入发送缓存 UCBxTXBUF之前,SCL 时钟线一直保持低电平。 当地址被响应后,清除 UCSTTIFG
标志,然后开始传输数据。 一旦数据被转移到移位寄存器,UCTXIFG 将再次被置位。 被主器件确认之后,
下一个被写入 UCBxTXBUF 中的字节数据开始传输,或发送缓冲区为空,通过一直保持 SCL 为低电平直到
新的数据被写到 UCBxTXBUF 内,在应答周期内总线被挂起。 假如主器件通过一个停止条件成功发送了一
NACK 信号,则 UCSTPIFG 被置位。 如若 NACK 被一个重复起始条件成功发送,则USCI I2C状态机返
回至其地址接收状态。
17-9给出了受控发送器运行。
17-9. I2C受控控发发送送器器模模式
453
ZHCU032IDecember 2004Revised January 2012
通用串行通信接口,
I2C
模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
USCI
运行:
I2C
模式
www.ti.com.cn
17.3.4.1.2 I2C
受控控接接收收器器模模式
当主器件发送的从器件地址和其本地地址相匹配,且接收到被清零的 R/W 时,从器件进入接收模式。 在从
器件接收模式中,从器件根据主器件产生的时钟脉冲信号在 SDA 上接收串行数据。 从设备不能产生时钟,
但是当一个字节接收完毕需要 CPU 的干预时,从器件可保持 SCL 为低电平。
如果从器件需要接收主器件发送过来的数据,则 USCI 模块将自动配置为接收,并将 UCTR 清零。 在接收
完第一个数据字节后,接收中断标志 UCBxRXIFG 被置位。 USCI 模块会自动应答接收到的数据并可接收下
一个数据字节。
如果在一个接收完成之后没能从接收缓存 UCBxRXBUF 内读出前一个数据,则通过保持 SCL 为低电平,总
线被停止。 一旦 UCBxRXBUF 被读取,新数据就会被传输到 UCBxRXBUF,就会把一个应答信号给主器
件,然后开始下个数据的接收。
置位 UCTXNACK 会导致在下一个应答周期内发送一个 NACK 信号给主器件。 即使 UCBxRXBUF 没有准备
好接收最新数据,也将会立即发送一个 NACK。 如果在 SCL 为低电平时置位 UCTXNACK 将会释放总线,
并马上会发送一个NACK 信号,同时 UCBxRXBUF 将装载最后一次接收到的数据。 由于先前的数据还没有
被读出,这将造成数据丢失。 为避免数据的丢失,应在 UCTXNACK 置位之前读出 UCBxRXBUF 中的数
据。
当主设备产生一个停止停止条件时,UCSTPIFG 标志被置位。
如果主器件产生一个重复起始条件时,则 USCI I2C将返回到地址接收状态。
17-10给出了 I2C受控接收器操作。
454 ZHCU032IDecember 2004Revised January 2012
通用串行通信接口,
I2C
模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
S SLA/W ADATA AP or S
Reception of own
address and data
bytes. All are
acknowledged.
UCBxRXIFG=1
DATADATA A A
UCTXNACK=1
Refer to:
”Slave Transmitter
Timing Diagram
Bus not stalled even if
UCBxRXBUF not read
P or SDATA A
A
Arbitration lost as
master and
addressed as slave
UCALIFG=1
UCMST=0
UCTR=0 (Receiver)
UCSTTIFG=1
(UCGC=1 if general call)
UCBxTXIFG=0
UCSTPIFG=0
Last byte is not
acknowledged.
UCTR=0 (Receiver)
UCSTTIFG=1
UCSTPIFG=0
Gen Call A
UCTR=0 (Receiver)
UCSTTIFG=1
UCGC=1
Reception of the
general call
address.
UCTXNACK=0
Bus stalled
(SCL held low)
if UCBxRXBUF not read
Read data from UCBxRXBUF
www.ti.com.cn
USCI
运行:
I2C
模式
17-10. I2C受控控接接收收器器模模式
455
ZHCU032IDecember 2004Revised January 2012
通用串行通信接口,
I2C
模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
S
S 11110 xx/W ASLA (2.) AP or S
Reception of own
address and data
bytes. All are
acknowledged.
UCBxRXIFG=1
DATA DATA
A A
UCTR=0 (Receiver)
UCSTTIFG=1
UCSTPIFG=0
Gen Call A
UCTR=0 (Receiver)
UCSTTIFG=1
UCGC=1
Reception of the
general call
address.
P or S
UCBxRXIFG=1
DATA DATA
A A
S 11110 xx/W ASLA (2.) A
UCTR=0 (Receiver)
UCSTTIFG=1
UCSTPIFG=0
11110 xx/R A
UCTR=1 (Transmitter)
UCSTTIFG=1
UCBxTXIFG=1
UCSTPIFG=0
UCSTTIFG=0
DATA A P or S
Reception of own
address and
transmission of data
bytes
Slave Transmitter
Slave Receiver
USCI
运行:
I2C
模式
www.ti.com.cn
17.3.4.1.3 I2C
从器器件
10
位寻寻址址模模式
如在17-11中所示,当 UCA 10=1 时选用 10 位寻址模式。 在 10 位寻址模式下,整个地址接收完毕后从
器件处于接收模式。 USCI 模块会通过在清零 UCTR 位的同时置位 UCSTTIFG 来指明上述操作。 若需要将
从器件切换到发送模式,则需要主器件在发送一个重复起始条件后紧跟着发送最开始的地址字节,同时发送
R/W 位置位。 若标志 UCSTTIFG 之前被软件清除,同时 USCI 模块转变为发送模式,且 UCTR =1,那么
此时将被置位。
17-11. I2C从器器件10 位寻寻址址模模式
456 ZHCU032IDecember 2004Revised January 2012
通用串行通信接口,
I2C
模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
USCI
运行:
I2C
模式
17.3.4.2 主控控模模式
通过把 I2C模式设置为 UCMODEx= 11 USCYNC=1,并置位 UCMST 位,USCI 模块被配置为一个 I}2C
主器件。 当主器件是多主器件系统的一部分时,必须置位 UCMM,并且其自身地址必须被编入
UCBxI2COA 寄存器。 当 UCA10=0 时,选用 7位寻址方式。 当 UCA10=1 时,选用 10 位寻址方式。 如
USCI 模块响应常规调用,则可以选择 UCGCEN 位。
17.3.4.2.1 I2C
主控控发发送送器器模模式
初始化之后,通过把目标从器件地址写入寄存器 UCBxI2CSA、用 UCSLA 10 位来选择从器件地址的位数、
置位 UCTR 来选择发送模式、置位 UCTXSTT 来产生一个起始条件,主控发送器模式才被初始化。
USCI 模块先检测总线是否空闲,之后产生一个起始条件,并传送从器件地址。 当起始条件产
生,CBxTXIFG 将被置位,并将要发送的第一个数据写入 UCBxTXBUF 中。 一旦从器件对地址作出应
答,UCTXSTT 位会被清零。
在从器件地址的发送过程中,如果仲裁没有失效,那么会已发送写入到 UCBxTXBUF 中的数据。 一旦数据
由缓冲区转移到移位寄存器,UCBxTXIFG 将再次置位。 如果在应答周期到来之前 UCBxTXBUF 中没有装
载新数据,那么在应答周期过程中总线将被挂起,SCL 将保持拉低电平状态,直到数据写入缓存器
UCBxTXBUF 中。 只要 UCTXSTP 位或 UCTXSTT 位没被置位,数据就就会被传输或总线被保持。
在从器件下一个应答信号到来之后,置位 UCTXSTP 将会产生一个停止条件。 如果在从器件的地址传送过
程或者是 USCI 模块等待把数据写入 UCBxTXBUF 的过程中置位 UCTXSTP,则即使没有数据被发送到从
器件依旧会产生一个停止条件。 如果传送的是单字节数据,在字节传送过程中或者在数据传输开始后必须置
UCTXSTP,不要将任何新的数据写入 UCBxTXBUF。 否则,会造成只传送地址。 当数据由缓冲器转移
到发送移位寄存器时,UCBxTXIFG 将被置位,这表示着数据传输已经开始,可以置位 UCTXSTP 了。
置位 UCTXSTT 将会产生一个重复起始条件。 在这种情况下,可以通过置位或清零 UCTR,以便配置为发
送器或接收器。
如果从器件没有响应发送的数据,则未响应中断标志 UCNACKIFG 会被置位。 主器件必须发送一个停止条
件或者重复起始条件的方式来响应。 如果已经把数据写入 UCBxTXBUF,那么当前数据将被丢弃。 如果在
一个重复起始条件后,这个数据还要发送出去,则必须重新将其写入 UCBxTXBUF。 任何置位 UCTXSTT
也会被丢弃。 若要触发一个重复起始条件,UCTXSTT 需要重新被置位。
17-12给出了 I2C主器件发送操作。
457
ZHCU032IDecember 2004Revised January 2012
通用串行通信接口,
I2C
模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Other master continues
S SLA/W ADATA AP
Successful
transmission to a
slave receiver
UCBxTXIFG=1
DATADATA A A
UCTXSTP=1
UCBxTXIFG=0
Next transfer started
with a repeated start
condition
DATA AS SLA/W
1) UCTR=1 (Transmitter)
2) UCTXSTT=1
DATA AS SLA/R
1) UCTR=0 (Receiver)
2) UCTXSTT=1
3) UCBxTXIFG=0
Not acknowledge
received after slave
address
P
S SLA/W
S SLA/R
UCTXSTP=1
1) UCTR=1 (Transmitter)
2) UCTXSTT=1
1) UCTR=0 (Receiver)
2) UCTXSTT=1
Arbitration lost in
slave address or
data byte
A
A
Other master continues
Arbitration lost and
addressed as slave Other master continues
A
UCALIFG=1
UCMST=0
UCTR=0 (Receiver)
UCSTTIFG=1
(UCGC=1 if general call)
UCBxTXIFG=0
UCSTPIFG=0
USCI continues as Slave Receiver
Not acknowledge
received after a data
byte
UCTXSTT=0 UCTXSTP=0
UCTXSTP=0
UCALIFG=1
UCMST=0
(UCSTTIFG=0)
Bus stalled (SCL held low)
until data available
Write data to UCBxTXBUF
1) UCTR=1 (Transmitter)
2) UCTXSTT=1
UCBxTXIFG=1
UCBxTXBUF discarded
UCTXSTT=0
UCNACKIFG=1
UCBxTXIFG=0
UCBxTXBUF discarded
UCBxTXIFG=1
UCBxTXBUF discarded
UCNACKIFG=1
UCBxTXIFG=0
UCBxTXBUF discarded
UCALIFG=1
UCMST=0
(UCSTTIFG=0)
USCI
运行:
I2C
模式
www.ti.com.cn
17-12. I2C主控控发发送送器器模模式
458 ZHCU032IDecember 2004Revised January 2012
通用串行通信接口,
I2C
模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
USCI
运行:
I2C
模式
17.3.4.2.2 I2C
主控控接接收收器器模模式
初始化之后,通过把目标从器件地址写入寄存器 UCBxI2CSA、用 UCSLA 10 位来选择从器件地址的位数、
置位 UCTR 来选择发送模式、置位 UCTXSTT 来产生一个起始条件,主器件接收模式才被初始化。
USCI 模块先检测总线是否空闲,之后产生一个起始条件,并传送从器件地址。 一旦从器件对地址作出应
答,UCTXSTT 位会被清零。
在从器件对地址应答后,将接收到从器件发送的第一个数据字节并发送应答信号,同时置位 UCBxRXIFG
志。 只要 UCTXSTP UCTXSTT 不被置位,就能接收到从器件发来的数据。 若没有读取 UCBxRXBUF
那么主器件将在接收最后到一个数据位后挂起总线直到 UCBxRXBUF 被读取。
如果从器件没有响应发送的地址,则未响应中断标志 UCNACKIFG 会被置位。 主器件必须发送一个停止条
件或者重复起始条件的方式来响应。
置位 UCTXSTP 将会产生一个停止条件。 置位 UCTXSTP 后,主器件将在接收完从设备传送的数据后发出
一个NACK,并紧接着发送一个停止,或者如果在 USCI 模块正在等待读取 UCBxRXBUF时,将立即产生停
止。
如果主及想接收一个单字节数据,那么在接收字节的过程中必须将 UCTXSPT 位置位。 在这种情况下,可
以通过查询 UCTXSTT 来确定何时将被清除:
BIS.B #UCTXSTT,&UCBOCTL1 ;Transmit START cond.POLL_STT BIT.B #UCTXSTT,&UCBOCTL1 ;Poll UCTXSTT
bitJC POLL_STT ;When cleared,BIS.B #UCTXSTP,&UCB0CTL1 ;transmit STOP cond.
置位 UCTXSTT 将会产生一个重复起始条件。 在这种情况下,可以通过置位或清零 UCTR,以便配置为发
送器或接收器,如果需要的话,还可以把不同的地址写入 UCBxI2CSA
17-13给出了 I2C主控接收器操作。
:在不不使使用用重重复复起起始始的的情情况况下下的的连连续续主主器器件件传传输
在不使用重复起始功能的情况下,当进行多个连续 I2C主器件传输时,当前传输必须在下一个
传输初始化完成之前结束。 这可以通过确保在下一个 I2C传输初始化完成之前发送停止条件标
UCTXSTP 被清零,并设置 UCTXSTT= 1来完成。否则,将会影响当前的传输。
459
ZHCU032IDecember 2004Revised January 2012
通用串行通信接口,
I2C
模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Other master continues
S SLA/R A DATA AP
1) UCTR=0 (Receiver)
2) UCTXSTT=1
Successful
reception from a
slave transmitter
UCBxRXIFG=1
DATADATA A
UCTXSTP=1
Next transfer started
with a repeated start
condition
DATA S SLA/W
1) UCTR=1 (Transmitter)
2) UCTXSTT=1
DATA S SLA/R
1) UCTR=0 (Receiver)
2) UCTXSTT=1
Not acknowledge
received after slave
address
UCTXSTT=0
UCNACKIFG=1
P
S SLA/W
S SLA/R
1) UCTR=1 (Transmitter)
2) UCTXSTT=1
1) UCTR=0 (Receiver)
2) UCTXSTT=1
Arbitration lost in
slave address or
data byte
A
Other master continues
UCALIFG=1
UCMST=0
(UCSTTIFG=0)
Arbitration lost and
addressed as slave Other master continues
A
UCALIFG=1
UCMST=0
UCTR=1 (Transmitter)
UCSTTIFG=1
UCBxTXIFG=1
UCSTPIFG=0
USCI continues as Slave Transmitter
A
A
A
UCTXSTT=0 UCTXSTP=0
UCBxTXIFG=1
UCALIFG=1
UCMST=0
(UCSTTIFG=0)
UCTXSTP=1
UCTXSTP=0
USCI
运行:
I2C
模式
www.ti.com.cn
17-13. I2C主控控接接收收器器模模式
460 ZHCU032IDecember 2004Revised January 2012
通用串行通信接口,
I2C
模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
1
0 0 0
1
0 0 0
1 1
111
n
Device 1 Lost Arbitration
and Switches Off
Bus Line
SCL
Data From
Device 1
Data From
Device 2
Bus Line
SDA
Master Transmitter
SA A P
1) UCTR=1 (Transmitter)
2) UCTXSTT=1
Successful
transmission to a
slave receiver
UCBxTXIFG=1
UCBxTXIFG=1
DATADATA A A
UCTXSTP=1
UCTXSTT=0 UCTXSTP=0
11110 xx/W SLA (2.)
SAP
1) UCTR=0 (Receiver)
2) UCTXSTT=1
Successful
reception from a
slave transmitter
DATADATA A
UCTXSTP=1
A
UCTXSTT=0 UCTXSTP=0
A A
11110 xx/W SLA (2.) 11110 xx/R
Master Receiver
S
UCBxRXIFG=1
www.ti.com.cn
USCI
运行:
I2C
模式
17.3.4.2.3 I2C
主器器件
10
位寻寻址址模模式
如在17-14中所示,当 USCLA 10=1 时选用 10 位寻址模式。
17-14. I2C主器器件10 位寻寻址址模模式
17.3.4.2.4
仲裁
当两个或两个以上的主器件发送在总线上同时传输时,就会起始一个仲裁程序。17-15描述了对两个器件
间的仲裁程序。 仲裁程序使用由相互竞争的发送器发送到 SDA 上的数据。 生成一个逻辑高电平的第一个主
控发送器将被逻辑低电平的和其竞争的主器件发送其覆盖。 仲裁进程将优先权授予用最低二进制值传送串行
数据流的器件。 失去仲裁的主控发送器将转换成受控接收器模式,并置位仲裁失去标志 UCALIFG。 如果两
个或两个以上的器件发送相同的第一个字节,则仲裁会在后续字节中继续发生作用。
17-15. 在两两个个主主控控发发送送器器之之间间的的仲仲裁
如果在仲裁正在进行中,在 SDA 上一个有重复起始条件或者停止条件在传送时,那么在仲裁进程中的所有
主控发送器都必须在帧格式中的同一个位置发送重复起始或者停止条件。 仲裁不会在下列几组间发生:
一个重复起始条件和数据位之间
一个停止条件和数据位之间
一个重复起始条件和一个停止条件之间
461
ZHCU032IDecember 2004Revised January 2012
通用串行通信接口,
I2C
模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Wait
State Start HIGH
Period
SCL From
Device 1
SCL From
Device 2
Bus Line
SCL
LOW,MIN HIGH,MIN BRCLK
(UCBRx – 1) / 2
t = t = f
LOW,MIN HIGH,MIN
BRCLK
UCBRx / 2
t = t = f
BRCLK
BitClock
f
f =
UCBRx
USCI
运行:
I2C
模式
www.ti.com.cn
17.3.5 I2C
时钟钟的的发发生生与与同
I2C时钟 SCL 是由在 I2C总线上的主器件提供。 当 USCI 处于主器件发送模式下时,BITCLK USCI位时
钟发生器提供,同时通过 UCSSELx 位选择时钟源。 在受控模式下,位时钟发生器不工作,且 UCSSELx
无效。
寄存器 UCBxBR1 UCBxBR0 UCBRx 16 位值是 USCI 时钟源 BRCLK 的分频因子。 在单主控模式
下,可用的最大位时钟为 fBRCLK/4。在多主控模式下,最大位时钟为 fBRCLK/8BITCLK 的频率可由以下得
到:M
生成的 SCL 的最小高电平和低电平周期是
UCBRx 为偶数时且
UCBRx 为奇数时。
为了满足 I2C总线协议规定的最小高低电平周期,必须选择 USCI 时钟源的频率和 UCBRx 的分频因子设
置。
在仲裁进程中,来自不同主器件的时钟必须进行同步处理。 在 SCL 上第一个产生低电平周期的器件会驳回
其他器件,以便迫使其他器件也起始其本地低电平周期。 之后 SCL 被低电平周期最长的器件保持为低电
平。 在其他器件的高电平周期开始之前,其他器件必须等待释放 SCL17-16显示了时钟的同步。 这允
许低速器件把高速器件拉低。
17-16. 在仲仲裁裁期期间间两两个I2C时钟钟发发生生器器的的同同步
17.3.5.1 时钟钟扩扩展
USCI 模块支持时钟扩展并可以和上述操作模式中讲述的一样进行使用。
在下列几种情况下,如果 USCI 模块已经释放了SCL,可以用 UCSCLLOW 位来检查是否其他的器件把
SCL 拉低。M
USCI 作为主器件,且一个连接的从器件将 SCL 拉低。
USCI 作为主器件,在仲裁进程中其他主器件把 SCL 拉低。
如果 USCI 模块由于作为发送器等待数据写入UCBxTXBUF 或者是作为接收器等待从 UCBxRXBUF 中读取
数据而把 SCL 拉低时,UCSCLLOW 位同样可用。
由于逻辑检查外部 SCL,并把它与内部生成的 SCL 相比较之后才产生 SCL,所以在每一个 SCL 产生上升
沿的瞬间 UCSCLLOW 位就有可能被置位。
462 ZHCU032IDecember 2004Revised January 2012
通用串行通信接口,
I2C
模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
USCI
运行:
I2C
模式
17.3.6
在处处于于低低功功耗耗模式中中的
I2C
模式式中中使使用
USCI
模块
为了在低功耗模式下使用,USCI 模块为 SMCLK 提供了自动时钟激活。 当 SMCLK USCI 的时钟源并无
效时,由于器件处于一个低功耗模式,如果需要,USCI 模块都可忽略时钟源控制位设置而自动激活。 直到
USCI 模块回到其空闲状态,时钟都会保持激活条件。 USCI 模块恢复空闲条件后,时钟源的控制权会恢复
到其控制位的设置。 不为时钟信号 (ACLK) 提供自动时钟激活。
USCI 模块激活一个无效的时钟源时,该时钟源将为整个设备变得活跃,并且这可能会影响到任何为了使
用而被配置的外围设备时钟源。 例如,当 USCI 模块迫使 SMCLK 激活时,一个使用 SMCLK 的定时器将递
增。
I2C模式下,由于时钟是由外部主器件提供,所以就不需要内部时钟源。 在器件处于 LPM4 状态下并且
所有内部时钟源被禁止时,就可以实现在 I2C受控模式中操作 USCI。 接收或者发送中断可以将 CPU 从任
何一种低功耗模式中唤醒。
17.3.7 I2C
模式式下下的
USCI
中断
I2C模式中 USCI 模块有两个中断矢量。 一个中断矢量与发送和接收中断标志相关联。 另一个中断矢量
的与状态变化中断标志相关联。 每个中断标志都有其本地中断使能位。 当一个中断被使能,且 GIE 位被置
位时,该中断标志将会生成一个中断请求。 在有 DMA 控制器的器件上 DMA 传输将由 UCBxTXIFG
UCBxRXIFG 标志控制。
17.3.7.1 I2C发送送中中断断操操作
为了说明 UCBxTXBUF 已经为接收下一个字符做好了准备,UCTXIFG 中断标志会被发送器置位。 如果此
UCBxTXIE GIE 也被置位,就会产生一个中断请求信号。 如果一个字符被写入 UCBxTXBUF 或者接
收到 NACK UCBxTXIFG 会自动复位。 当选择 I2C模式并且 UCSWRST=1 时,UCTXIFG 会被置位。 在
一个 PUC 后或者当 UCSWRST=1 时,UCBxTXIE 被复位。
17.3.7.2 I2C接收收中中断断操操作
当接收到一个字节并被装载到 UCBxRXBUF 中时,UCBxRXIFG 中断标志被置位。 如果此时 UCBxRXIE
GIE 也被置位,就会产生一个中断请求信号。 在一个 PUC 信号后或当 UCSWRST=1 时,UCBxRXIFG
UCBxRXIE 会被复位。在读取 UCxRXBUF 时,UCxRXIF 会自动复位。
17.3.7.3 I2C状态态更更改改中中断断操操作
17-1描述了 I2C状态更改中断标志。
17-1. 状态态更更改改中中断断标标志
中断断标志 中中断断条
仲裁丢失。 在两个或两个以上的发送器同时开始发送数据时,或者是当 USCI 作为主器件工作,但被系统中其
UCALIFG 他主器件作为从器件来寻址时,可能会发生仲裁丢失。 当仲裁丢失时,UCALIFG 标志被置位。 当 UCALIFG
被置位时,UCMST 位被清零,同时 I2C模块变成一个从器件。
无应答中断。 当接收不到预期的应答时此标志被置位。 当接收到一个起始条件时,UCNACKIFG 被自动清
UCNACKIFG 零。
起始条件检测到的中断。 在受控模式下,当 I2C模块检测到一个带有其本地地址的起始条件时,该标志会被置
UCSTTIFG 位。 UCSTPIFG 只能在受控模式下使用,并且在接收到一个停止条件时被自动清零。
停止条件检测到的中断。 在受控模式下,当 I2C模块检测到一个停止条件时,该标志会被置位。 UCSTPIFG
UCSTPIFG 只能在受控模式下使用,并且在接收到一个起始条件时被自动清零。
463
ZHCU032IDecember 2004Revised January 2012
通用串行通信接口,
I2C
模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
USCI
运行:
I2C
模式
www.ti.com.cn
17.3.7.4 中断断失失量量的的分分配
USCI_Ax USCI_Bx 共享同一个中断矢量。 在 I2C模式下,状态更改中断标
UCSTTIFGUCSTPIFGUCIFG,来自 USCI_Bx UCALIFG 和来自 USCI_Ax UCAxRXIFG 被路
由到一个中断矢量中。 I2C发射和接收中断标志 UCBxTXIFG 和来自 USCI_Bx UCBxRXIFG 以及来自
USCI_Ax UCAxTXIFG 共享另一个中断矢量。
Example 17-1展示了一个中断处理例程的提取,该提取被用来处理处于 UART SPI 模式下的 USCI_A0
的数据接收中断,并且用于处理处于 I2C模式下的来自 USCI_B0 的更改中断。
Example 17-1.
共享享的的接接收收中中断断矢矢量量软软件件示示例
USCIA0_RX_USCIB0_I2C_STATE_ISRBIT.B #UCA0RXIFG, &IFG2 ; USCI_A0 Receive Interrupt?JNZ
USCIA0_RX_ISRUSCIB0_I2C_STATE_ISR; Decode I2C state changes ...; Decode I2C state changes
......RETIUSCIA0_RX_ISR; Read UCA0RXBUF ... - clears UCA0RXIFG...RETI
Example 17-2展示了一个中断处理例程的提取,该提取被用来处理处于 UART SPI 模式下的 USCI_A0
的数据发送中断,并且用于处理处于 I}2C模式下的来自 USCI_B0 的传输中断。
Example 17-2.
共享享的的发发送送中中断断矢矢量量软软件件示示例
USCIA0_TX_USCIB0_I2C_DATA_ISRBIT.B #UCA0TXIFG, &IFG2 ; USCI_A0 Transmit Interrupt?JNZ
USCIA0_TX_ISRUSCIB0_I2C_DATA_ISRBIT.B #UCB0RXIFG, &IFG2JNZ USCIB0_I2C_RXUSCIB0_I2C_TX; Write
UCB0TXBUF... - clears UCB0TXIFG...RETIUSCIB0_I2C_RX; Read UCB0RXBUF... -
clears UCB0RXIFG...RETIUSCIA0_TX_ISR; Write UCA0TXBUF ... - clears UCA0TXIFG...RETI
464 ZHCU032IDecember 2004Revised January 2012
通用串行通信接口,
I2C
模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
USCI
寄存器:
I2C
模式
17.4 USCI 寄存存器器:I2C模式
I2C模式下可用于 USCI_B0 USCI 寄存器被列在17-2中,以及可用于 USCI_B1 的被列在17-3
中。
17-2. USCI_B0 控制制和和状状态态寄寄存存器
寄存存器 简式式 寄寄存存器器类型 地地址 初始始状状态
USCI_BO 控制寄存器 0 UCB0CTL0 读取/写入 068h 001h PUC
USCI_BO 控制寄存器 1 UCB0CTL1 读取/写入 069h 001h PUC
USCI_B0 位率控制寄存器 0 UCB0BR0 读取/写入 06Ah PUC 复位
USCI_B0 位率控制寄存器 1 UCB0BR1 读取/写入 06Bh PUC 复位
USCI_B0 I2C中断使能寄存器 UCB0I2CIE 读取/写入 06Ch PUC 复位
USCI_B0 状态寄存器 UCB0STAT 读取/写入 06Dh PUC 复位
USCI_B0 接收缓冲寄存器 UCB0RXBUF 读取 06Eh PUC 复位
USCI_B0 发送缓冲寄存器 UCB0TXBUF 读取/写入 06Fh PUC 复位
USCI_B0 I2C本地址寄存器 UCB0I2COA 读取/写入 0118h PUC 复位
USCI_B0 I2C从器件地址寄存器 UCB0I2CSA 读取/写入 011Ah PUC 复位
SFR 中断使能寄存器 2 IE2 读取/写入 001h PUC 复位
SFR 中断标志寄存器 2 IFG2 读取/写入 003h 00Ah PUC
:修改SFR
为了避免修改其他模块的控制位,建议使用 BIS.B BIC.B 指示,而非 MOV.B CLR.B
示来置位或清零 IEX IFGx 位。
17-3. USCI_B1 控制制和和状状态态寄寄存存器
寄存存器 简式式 寄寄存存器器类型 地地址 初始始状状态
USCI_B1 控制寄存器 0 UCB1CTL0 读取/写入 0D8h PUC 复位
USCI_B1 控制寄存器 1 UCB1CTL1 读取/写入 0D9h 001h PUC
USCI_B1 波特率控制寄存器 0 UCB1BR0 读取/写入 0DAh PUC 复位
USCI_B1 波特率控制寄存器 1 UCB1BR1 读取/写入 0DBh PUC 复位
USCI_B1 I2C中断使能寄存器 UCB1I2CIE 读取/写入 0DCh PUC 复位
USCI_B1 状态寄存器 UCB1STAT 读取/写入 0DDh PUC 复位
USCI_B1 接收缓冲寄存器 UCB1RXBUF 读取 0DEh PUC 复位
USCI_B1 发送缓冲寄存器 UCB1TXBUF 读取/写入 0DFh PUC 复位
USCI_B1 I2C本地址寄存器 UCB1I2COA 读取/写入 017Ch PUC 复位
USCI_B1 I2C从器件地址寄存器 UCB1I2CSA 读取/写入 017Eh PUC 复位
USCI_A1/B1 中断使能寄存器 UC1IE 读取/写入 006h PUC 复位
USCI_A1/B1 中断标志寄存器 UC1IFG 读取/写入 007h 00Ah PUC
465
ZHCU032IDecember 2004Revised January 2012
通用串行通信接口,
I2C
模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
USCI
寄存器:
I2C
模式
www.ti.com.cn
17.4.1 UCBxCTL0
USCI_Bx
控制制寄寄存存器
0
76543210
UCA10 UCSLA10 UCMM 未使使用UCMST UCMODEx=11 UCSYNC=1
rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 r-1
UCA10 7自身寻址模式选择
0自身地址是一个 7位地址
1自身地址是一个 10 位地址
UCSLA10 6从器件寻址模式选择
0寻址具有 7位地址的从器件
1寻址具有 10 位地址的从器件
UCMM 5多主器件环境选择
0单主器件环境。 该系统内没有别的主器件。 地址比较单元被禁用。
1多主器件环境
未被被使使 4未被使用
UCMST 3主控模式选择。 当一个主器件在一个多主器件环境下 (UCMM = 1) 丢失仲裁时,UCMST 位就会自动清零,且
该模块被视作从器件。
0受控模式
1主控模式
UCMODEx 2-1 USCI 模式。 当 UCSYNC=1 时,UCMODEx 位选择同步模式。
00 3 引脚 SPI
01 4 引脚 SPI(如果 STE=1,主器件/从器件被启用)
10 4 引脚 SPI(如果 STE= 0,主器件/从器件被启用)
11 I2C模式
UCSYNC 0同步模式使能
0异步模式
1同步模式
466 ZHCU032IDecember 2004Revised January 2012
通用串行通信接口,
I2C
模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
USCI
寄存器:
I2C
模式
17.4.2 UCBxCTL1
USCI_Bx
控制制寄寄存存器
1
76543210
UCSSELx 未被被使使UCTR UCTXNACK UCTXSTP UCTXSTT UCSWRST
rw-0 rw-0 r0 rw-0 rw-0 rw-0 rw-0 rw-1
UCSSELx 7-6 USCI 时钟源选择。 这些位选择 BRCLK 时钟源。
00 UCLKI
01 ACLK
10 SMCLK
11 SMCLK
未被被使使 5未被使用
UCTR 4发送器/接收器
0接收器
1发送器
UCTXNACK 3发送一个 NACK。 在一个 NACK 发送完毕后,UCTXNACK 自动复位。
0正常确认
1生成 NACK
UCTXSTP 2在主控模式下发送停止条件。 在受控模式下忽略。 在主控接收器模式下,一个 NACK 位于重复停止条件之
前。 在停止生成后,UCTXSTP 自动清零。
0无停止条件被生成
1产生停止条件
UCTXSTT 1在主控模式下发送起始条件。 在受控模式下忽略。 在主控接收器模式下,一个 NACK 位于一个重复起始条件
之前。 在起始条件和地址信息被发送后,UCTXSTT 自动清零。 在受控模式下忽略。
0不生成起始条件
1生成起始条件
UCSWRST 0软件复位使能
0被禁用。 释放 USCI 复位以便进行操作。
1被启用。 在复位状态中 USCI 逻辑状态被保持。
17.4.3 UCBxBR0, USCI_Bx
波特特率率控控制制寄寄存
0
76543210
UCBRx-低字节
rw rw rw rw rw rw rw rw
17.4.4 UCBxBR1, USCI_Bx
波特特率率控控制制寄寄存
1
76543210
UCBRx-高字节
rw rw rw rw rw rw rw rw
UCBRx 位时钟预分频器设置。 (UCBxBR0+ UCBxBR1×256) 16 位值构成预分频值。
467
ZHCU032IDecember 2004Revised January 2012
通用串行通信接口,
I2C
模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
USCI
寄存器:
I2C
模式
www.ti.com.cn
17.4.5 UCBxSTAT
USCI_Bx
状态态寄寄存存器
76543210
未备备使使UCSCLLOW UCGC UCBBUSY UCNACKIFG UCSTPIFG UCSTTIFG UCALIFG
rw-0 r-0 rw-0 r-0 rw-0 rw-0 rw-0 rw-0
未被被使使 7未被使用。
UCSCLLOW 6 SCL 低电平
0 SCL 没被保持在低电平
1 SCL 被保持在低电平
UCGC 5接收到常规调用地址。 当接收到一个起始条件时,UCGC 被自动清零。
0没有接收到常规调用地址
1接收到常规调用地址
UCBBUSY 4总线忙
0总线未激活
1总线忙
UCNACKIFG 3不应答接收到的中断标志。 当接收到一个起始条件时,UCNACKIFG 被自动清零。
0无中断等待
1中断等待
UCSTPIFG 2停止条件中断标志。 当接收到一个起始条件时,UCSTPIFG 被自动清零。
0无中断等待
1中断等待
UCSTTIFG 1起始条件中断标志。 当接收到一个停止条件时,UCSTTIFG 被自动清零。
0无中断等待
1中断等待
UCALIFG 0仲裁失效中断标志
0无中断等待
1中断等待
17.4.6 UCBxRXBUF
USCI_Bx
接收收缓缓冲冲寄寄存存器
76543210
UCRXBUFx
rrrrrrrr
UCRXBUFx 7-0 接收数据缓冲是用户可以访问的,并包含从接收移位寄存器那里最后接收到的字符。 读取 UCBxRXBUF 将复
UCBxRXIFG
17.4.7 UCBxTXBUF
USCI_Bx
发送送缓缓冲冲寄寄存存器
76543210
UCTXBUFx
rw rw rw rw rw rw rw rw
UCTXBUFx 7-0 发送数据缓冲是用户可以访问的,并包含等待被移入发送移位寄存器的数据,并在移入之后将被发送。 写入发
送数据缓冲将会清除 UCBxTXIFG
468 ZHCU032IDecember 2004Revised January 2012
通用串行通信接口,
I2C
模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
USCI
寄存器:
I2C
模式
17.4.8 UCBxI2COA
USCIBx I2C
本地地地地址址寄寄存存器
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
76543210
I2COAx
rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0
UCGCEN 15 通用常规地址使能
0不响应一个常规调用
1响应一个常规调用
I2COAx 9-0 I2C自身地址。 I2COAx 位包含 USCI_Bx I2C控制器的本地地址。 该地址是右对齐的。 在 7位寻址模式中,
6MSB,位 9-7 被忽略。 在 10 位寻址模式中,位 9MSB
17.4.9 UCBxI2CSA
USCI_Bx I2C
从器器件件地地址址寄寄存
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
76543210
I2CSAx
rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0
I2CSAx 9-0 I2C从器件地址。 I2CSAx 位包含了由 USCI_Bx 模块寻址的外部器件的从器件地址。 它仅用于主控模式。 该
地址是右对齐的。 在 7位从器件寻址模式中,位 6MSB,位 9-7 被忽略。 在 10 位从器件寻址模式中,位
9MSB
17.4.10 UCBxI2CIE
USCI_Bx I2C
中断断使使能能寄寄存存器
76543210
被保保留UCNACKIE UCSTPIE UCSTTIE UCALIE
rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0
被保保留 7-4 被保留
UCNACKIE 3不应答中断使能
0中断被禁用
1中断被启用
UCSTPIE 2停止条件中断使能
0中断被禁用
1中断被启用
UCSTTIE 1起始条件中断使能
0中断被禁用
1中断被启用
UCALIE 0仲裁丢失中断使能
0中断被禁用
1中断被启用
469
ZHCU032IDecember 2004Revised January 2012
通用串行通信接口,
I2C
模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
USCI
寄存器:
I2C
模式
www.ti.com.cn
17.4.11 IE2
,中中断断使使能能寄寄存
2
76543210
UCB0TXIE UCB0RXIE
rw-0 rw-0
7-4 这些位可以用于其他模块(请参阅器件专用数据表)。
UCB0TXIE 3 USCI_B0 发送中断使能
0中断被禁用
1中断被启用
UCB0RXIE 2 USCI_B0 接收中断使能
0中断被禁用
1中断被启用
1-0 这些位可以用于其他模块(请参阅器件专用数据表)。
17.4.12 IFG2
,中中断断标标志志寄寄存
2
76543210
UCB0TXIFG UCB0RXIFG
rw-1 rw-0
7-4 这些位可以被用于其他模块(请参阅特定器件专用数据表)。
UCB0TXIFG 3 USCI_B0 发送中断标志。 当 UCB0TXBUF 为空时,UCB0TXIFG 被置位。
0无中断等待
1中断等待
UCB0RXIFG 2 USCI_B0 接收中断标志。 当 UCB0RXBUF 收到一个完整字符时,UCB0RXIFG 被置位。
0无中断等待
1中断等待
1-0 这些位可以被用于其他模块(请参阅特定器件专用数据表)。
17.4.13 UC1IE
USCI_B1
中断断使使能能寄寄存存器
76543210
未被被使使UCB1TXIE UCB1RXIE
rw-0 rw-0 rw-0 rw-0 rw-0 rw-0
未被被使使 7-4 未被使用
UCB1TXIE 3 USCI_B1 发送中断启用
0中断被禁用
1中断被启用
UCB1RXIE 2 USCI_B1 接收中断使能
0中断被禁用
1中断被启用
1-0 这些位可以被其他的 USCI 模块使用(请参阅器件专用数据表)。
470 ZHCU032IDecember 2004Revised January 2012
通用串行通信接口,
I2C
模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
USCI
寄存器:
I2C
模式
17.4.14 UC1IFG
USCI_B1
中断断标标志志寄寄存存器
76543210
未被被使使UCB1TXIFG UCB1RXIFG
rw-0 rw-0 rw-0 rw-0 rw-1 rw-0
未被被使使 7-4 未被使用。
UCB1TXIFG 3 USCI_B1 发送中断标志.UCB1TXBUF 为空时,UCB1TXIFG 被置位。
0无中断等待
1中断等待
UCB1RXIFG 2 USCI_B1 接收中断标志。 当 UCB1RXBUF 收到一个完整字符时,UCB1RXIFG 被置位。
0无中断等待
1中断等待
1-0 这些位可被用于其它模块(请参阅器件专用数据表)。
471
ZHCU032IDecember 2004Revised January 2012
通用串行通信接口,
I2C
模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Chapter 18
ZHCU032IDecember 2004Revised January 2012
USART
外设设接口,
USART
模式
通用同步/异步接收/发送器 (USART) 外设接口支持在同一硬件模块中的两个串行模式。 本章讨论异步
UART 模式的运行。 MSP430AFE2xx 器件上应用了 USART0
Topic ........................................................................................................................... Page
18.1 USART 介绍绍:USART 模式................................................................................ 473
18.2 USART 运行行:UART 模式.................................................................................. 474
18.3 USART 寄存存器器:UART 模式............................................................................... 488
472 USART
外设接口,
USART
模式
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
USART
介绍:
USART
模式
18.1 USART 介绍绍:USART 模式
在异步模式中,USART 通过两个外部引脚,URXD UTXD,把 MSP430 连接到外部系统。 当 SYNC
被清零时 UART 模式被选用。
UART 模式的特性包括:
7 8位的奇,偶,或无校验数据
独立的发送和接收转换寄存器
单独的发送和接收缓存寄存器
LSB 第一数据发送或接收
多处理器系统中内置空闲线和地址位通信
接收器开始边沿检测以从 LMPx 模式中自动唤醒
通过调制可编程波特率来支持分数位的波特率
错误检测和抑制及地址检测的状态标志
独立的接收中断和发送中断功能
18-1显示配置 UART 模式时的 USART
473
ZHCU032IDecember 2004Revised January 2012 USART
外设接口,
USART
模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Receiver Shift Register
Transmit Shift Register
Receiver Buffer UxRXBUF
Transmit Buffer UxTXBUF
LISTEN MM
UCLK
Clock Phase and Polarity
Receive Status
SYNC CKPH CKPL
SSEL1 SSEL0
UCLKI
ACLK
SMCLK
SMCLK
00
01
10
11
OEPE BRK
TXWAKE
UCLKS
UCLKI
Receive Control
RXERR
FE
SWRST URXEx* URXEIE URXWIE
Transmit Control
SWRST UTXEx* TXEPT
RXWAKE
SPB CHAR PENAPEV
SPB CHAR PENAPEV
WUT
UTXD
URXD
SOMI
STE
Prescaler/Divider UxBRx
Modulator UxMCTL
Baud−Rate Generator
UTXIFGx*
* See the device-specific data sheet for SFR locations.
SYNC
URXIFGx*
01
0
0
0
0
1
1
1
1
SIMO
1
0
STC
SYNC= 0
USART
运行:
UART
模式
www.ti.com.cn
18-1. USART 方框框图图:UART 模式
18.2 USART 运行行:UART 模式
UART 模式下,USART 的发送和接收字符以一个比特率异步传输到另一个设备。 每个字符的时序都是根
据选定的 USART 的波特率来定的。 发送和接收功能使用相同的波特率频率。
18.2.1 USART
初始始化化和和复复位
USART PUC 或通过置位 SWRST 位进行复位。 一个 PUC 后,SWRST 位会自动置位,以此来保持
USART 在复位状态。 当置位时,SWRST 位复位
URXIExUTXIExURXIFGxRXWAKETXWAKERXERRBRKPEO,和 FE 位并且置位
UTXIFGx TXEPT 位。 接收和发送使能标志,URXEx UTXEx,不会被 SWRST 改变。 为了运行,清
SWRST 位释放 USART。对USART0,当I2C模式到 UART 模式重新配置时,也可参阅章
USART
模块,
I2C
模式
474 USART
外设接口,
USART
模式
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
[Parity Bit, PENA = 1]
[Address Bit, MM = 1]
Mark
Space
D0 D6 D7 AD PA SP SP
[Optional Bit, Condition]
[2nd Stop Bit, SPB = 1]
[8th Data Bit, CHAR = 1]
ST
www.ti.com.cn
USART
运行:
UART
模式
:初始始化化或或重重新新配配置USART 模块
初始化/重新配置 USART 需要的过程如下:
1. 置位 SWRST (BIS.B #SWRST&UxCTL)
2. UCSWRST=1 时初始化所有的 USART 寄存器(包括UCAXCTL
3. 通过 MExSFRs (URXEx /UTXEx)使能 USART 模块
4. 通过软件(BIC.B #SWRST&UxCTL)清除 SWRST
5. 通过 IExSFRURXIEx /UTXIEx)启用中断(可选)
如果不按照这个过程,可能会导致不可预知的 USART 行为。
18.2.2
字符符格格式
UART 的字符格式展示在18-2中,包括一个开始位,78个数据位,一个奇//无校验位,一个地址
位(地址位模式),和一个或两个停止位。 由选定的时钟源和波特率寄存器的设置来定义位周期。
18-2. 字符符格格式
18.2.3
异步步通通信信格格式
当两个器件异步通信时,协议中需要用到空闲线格式。 当三个或更多的器件通信时,USART 支持空闲线和
地址位多处理器通信格式。
18.2.3.1 空闲闲线线多多处处理理器器格格式
MM=0 时,空闲线多处理器格式将会被选用。 数据块在发送和接收线上被一段空闲时间隔开,如18-3
所示。 当 10 个或多个持续标志在第一个字符的停止位之后被接收到时,一条空闲接收线被监测。 当两个停
止位被用于空闲线时,第二个停止位被记为空闲时段的第一个标记位。
一段空闲时段后接收到的第一个字符为一个地址字符。 RXWAKE 位被用来作为针对每个字符块的地址标
志。 在空闲线多处理器格式中,当接收到的字符是一个地址并被传输到 UxRXBUF 时,该位被置位。
475
ZHCU032IDecember 2004Revised January 2012 USART
外设接口,
USART
模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
ST Address SP ST Data SP ST Data SP
Blocks of
Characters
Idle Periods of 10 Bits or More
UTXDx/URXDx Expanded
UTXDx/URXDx
First Character Within Block
Is Address. It Follows Idle
Period of 10 Bits or More
Character Within Block
Idle Period Less Than 10 Bits
Character Within Block
UTXDx/URXDx
USART
运行:
UART
模式
www.ti.com.cn
18-3. 空闲闲线线路路格格式
在空闲线路多处理器格式中 URXWIE 位被用来控制数据接收。 当 URXWIE=1 时,所有的非地址字符被组
装但不会传输到 UxRXBUF 中并且不会产生中断。 当一个地址字符被接收时,接收器被暂时激活并将这个
字符传输到 UxRXBUF 中,同时 URXIFGx 中断标志被置位。 任何适用的错误标志也被置位。 然后,用户
可以验证所接收到的地址。
如果接收到一个地址,用户软件可以验证该地址,并且必须复位 URXWIE 以继续接收数据。 如果 URXWIE
仍然置位,那么只有地址字符才能被接收。 URXWIE 位不会被 USART 硬件自动修改。
在空闲线多处理器格式中进行地址传输时,为了在 UTXDx 上产生地址字符标识符,可以由 USART 产生一
个精确的空闲周期。 唤醒暂时 (WUT) 标志是一个带有用户可访问 TXWAKE 位的双缓冲内部标志。 当发送
器从 UxTXBUF 中装载时,WUT 还从 TXWAKE 复位 TXWAKE 位中装载。
下列程序发送一个空闲帧以标明一个地址字符:
1. 置位 TXWAKE,然后向 UxTXBUF 中写入任何字符。 UxTXBUF 必须准备发送新数据 (UxTXIFG=1)
当移位寄存器准备发送新数据时,TXWAKE 的值被转移到 WUT 并且 UxTXBUF 的内容被转移到发送移
位寄存器中。 它置位 WUT,抑制正常传输的起始位,数据位和奇偶校验位,然后发送正好为 11 位的空
闲周期。 当空闲线中用有两个停止位时,第二个停止位作为空闲时段的第一个标记位计数。 TXWAKE
自动复位。
2. UxTXBUF 写入所需的地址字符。 UxTXBUF 必须准备发送新数据 (UxTXIFG= 1)
UTXDx 上随着地址识别空闲时段后,新字符所代表的特定地址被移出。 向 UxTXBUF 写入的第一
无影响字符对于移出 TXWAKE 位到 WUT 和产生一个空闲线状态是必要的。 该数据将被丢弃,并不
会出现在 UTXDx 上。
18.2.3.2 地址址位位多多处处理理器器格格式
MM=1 时,地址位多处理器格式将会被选用。 如18-4所示,每个处理过的字符都包含一个用作地址指
示的额外位。 字符块的第一个字符带有一个设置指示字符地址的地址位。 当接收到的字符是一个有效的地
址字符并被传输到 UxRXBUF 时,USART RXWAKE 位被置位。
476 USART
外设接口,
USART
模式
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
ST Address SP ST Data SP ST Data SP
Blocks of
Characters
Idle Periods of No Significance
UTXDx/URXDx
Expanded
UTXDx/URXDx
First Character Within Block
Is an Address. AD Bit Is 1
AD Bit Is 0 for
Data Within Block.
Idle Time Is of No Significance
UTXDx/URXDx
1 0 0
www.ti.com.cn
USART
运行:
UART
模式
在地址位多处理器格式中 URXWIE 位被用来控制数据接收。 如果 URXWIE 被置位,数据字符(地址
=0)将由接收器组装,但不会传输到 UxRXBUF 而且不会产生中断。 当包含一组地址位的一个字符被接
收时,接收器被暂时激活,并将字符传输至 UxRXBUF 而且将 URXIFGx 置位。 所有的适用错误标志也被置
位。
如果接收到一个地址,用户软件必须复位 URXWIE 以继续接收数据。 如果 URXWIE 仍然置位,那么只有
地址字符(地址位=1)才能被接收。 URXWIE 位不会被 USART 硬件自动修改。
18-4. 地址址位位多多处处理理器器格格式
对于在地址位多处理器模式中的地址传输,一个字符的地址位可以通过写入 TXWAKE 位来控制。 TXWAKE
位的值被装入字符的地址位从 UxTXBUF 转移到发送移位寄存器中,自动清除 TXWAKE 位。 TXWAKE
定不能由软件清除。 在它被传输到 WUT 后由 USART 硬件或通过置位 SWRST 被清除。
18.2.3.3 自动动错错误误检检测
干扰抑制防止 USART 被意外启动。 URXDx 上任何低于抗尖峰脉冲的时间 tτ(约 300ns)的低电平都将被
忽略。 对于参数请参阅《器件专用数据表》。
URXDx 上,当一个低电平周期超过 tτ时,对开始位将采取多数表决的方法检测。 如果多数表决未能检测
到一个有效的起始位,则 USART 暂停字符接收并等待下一个 URXDx 上的低电平周期。 多数表决也可用于
字符中的每个位,以防止位错误。
接收字符时,USART 模块将自动检测帧错误,奇偶校验错误,溢出错误,和中断条件。 当他们相应的条件
被检测到时,FEPEOE,和 BRK 都将被置位。 当这些错误标志置位时,RXERR 也将置位。 错误条件
18-1中做出描述。
477
ZHCU032IDecember 2004Revised January 2012 USART
外设接口,
USART
模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Idle State
(Receiver
Enabled)
Receive
Disable
Receiver
Collects
Character
URXEx = 0
No Valid Start Bit
Not Completed
URXEx = 1
URXEx = 0
URXEx = 1
Valid Start Bit Handle Interrupt
Conditions
Character
Received
URXEx = 1
URXEx = 0
USART
运行:
UART
模式
www.ti.com.cn
18-1. 接收收错错误误条条件
错误误条件 说说明
当一个组帧错误发生时,一个低低电平停止位被检测到。 当使用两个停止位时,只有第一个停止位
组帧错误 被进行组帧错误检查。 当检测一个组帧错误时,FE 位被置位。
奇偶校验错误也就是字符中 1s 的数量和奇偶校验位的值不匹配。 当一个地址位包含于字符时,它
奇偶校验错误 同时也被包含进奇偶校验计算中。 当一次奇偶校验错误被监测到时,PE 位置位。
在读取前一个字符之前另一个字符被装载到 UxRXBUF 中会引发一次溢出错误。 当溢出错误发生
接收溢出错误 时,OE 位置位
中断状态是 URXDx 10 个或更多的低位在丢失的停止位后收到的周期。 当检测到一个中断条件
中断状态 时,BRK 位被置位。 当 URXEIE=0 时,一个中断状态也可以置位中断标志 URXIFGx
URXEIE=0 并且检测到一个帧错误,奇偶校验错误,或中断状态时,UxRXBUF 将不再接收字符。 当
URXEIE=1 时,UxRXBUF 开始接收字符并且所有的合适错误位都将被置位。
FEPEOEBRK RXEER 置位时,其状态保持到用户软件复位它或 UxRXBUF 中的数据被读出。
18.2.4 USART
接收收使使能
接收使能位,URXEx,使能或禁用 URXDx 上的数据接收如18-5中所示。 在当前任何字符接受完成后或
在无接收操作是有效的后,立即禁用 USART 接收来停止接收运行。 接收数据缓冲器,UxRXBUF,包括在
字符被接收后从 RX 移送寄存器中的移动。
18-5. 接收收器器使使能能状状态态图
:重新新使使能能接接收收器器((置置位URXEx):UART 模式
当接收器被禁用 (URXEx=0)时,重新使能接收器 (URXEx=1) 使其与当时出现在 URXDx 上的
任何数据流异步。 接收到一个有效字符(请见 URXWIE)之前,可以进行同步测试空闲状
态。
18.2.5 USART
发送送使使能
UTXEx 被置位时,UART 发送器被使能。 通过将数据写入到 UxTXBUF 启动传输。 然后,TX 移位寄存
器空后,这些数据被转移到下一个 BITCLK 上的发送移位寄存器中,并开始传输。 18-6显示了这一过
程。
UTXEx 位被复位时,发送器被停止。 在清除 UTXEx 前,目前在发送移位寄存器中的任何数据被移动到
UxTXBUF 且任何活跃的的数据传输都将继续,直到完成所有的数据传输。
478 USART
外设接口,
USART
模式
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Bit Start
mX
BRCLK
88
UCLKI
ACLK
SMCLK
SMCLK 11
BITCLK
10
01
00
20
27
28
215
Compare (0 or 1)
Modulation Data Shift Register
(LSB first)
16−Bit Counter
Q0
............
Q15
m0m7
...
...
8
UxBR1 UxBR0
Toggle
FF
N =
R
R
R
UxMCTL
+0 or 1
SSEL1 SSEL0
Idle State
(Transmitter
Enabled)
Transmit
Disable
Transmission
Active
UTXEx = 0 No Data Written
to Transmit Buffer Not Completed
UTXEx = 1
UTXEx = 0
UTXEx = 1
Data Written to
Transmit Buffer Handle Interrupt
Conditions
Character
Transmitted
UTXEx = 1
UTXEx = 0 And Last Buffer Entry Is Transmitted
www.ti.com.cn
USART
运行:
UART
模式
18-6. 发送送器器使使能能状状态态图
当发送器被使能 (UTXEx=1),除非它已经准备好由 UTXIFGx=1 指明发送新数据,否则数据一定不要写入
UxTXBUF。 如果在 UxTXBUF 中数据被被移动到 TX 移位寄存器时被修改,那么冲突可能会导致一个错误
的传输。
建议在完成所有已激活的传输后,再禁用 (UTXEx=0) 该发送器。 这是由一组发送器空位 (TXEPT=1)表示
的。 在发送器被禁用期间写入 UxTXBUF 的任何数据都被保留在缓冲区中,但不会被移动到发送移位寄存器
或被发送。 一旦 UTXEx 置位,则在发送缓冲区中的数据将被立即装载到发送移位寄存器中并且字符发送重
新开始。
18.2.6 USART
波特特率率生生成
USART 波特率发生器,能够从非标准源频率中产生标准的波特率。 波特率发生器使用一个预分频器/除法器
和一个调制器,如18-7所示。 这样的组合支持了波特率产生小数约数。 最大 USART 的波特率是 UART
源时钟频率 BRCLK 的三分之一。
18-7. MSP430 波特特率率发发生生器
每个位的时序如18-8所示。 对于每一接收的位,采取多数表决的方法来确定该位的值。 在 N/2-1N/2
N/2+1 BRCLK 周期中采样,其中 N是每个 BITCLK BRCLKs 的数量。
479
ZHCU032IDecember 2004Revised January 2012 USART
外设接口,
USART
模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
n–1
i
i=0
BRCLK BRCLK
Baud rate = +
N1
UxBR + m
nå
n–1
i
i=0
1
N = UxBR + m
nå
BRCLK
N =
Baud Rate
N/2
Bit Start
BRCLK
Counter
BITCLK
N/2−1 N/2−2 1 N/2 N/2−1 1 N/2 N/2−1
N/2−2
0 N/2 N/2−11
INT(N/2) + m(= 0)
INT(N/2) + m(= 1)
1 0 N/2
Bit Period
NEVEN: INT(N/2)
NODD : INT(N/2) + R(= 1)
m: corresponding modulation bit
R: Remainder from N/2 division
Majority Vote: (m= 0)
(m= 1)
USART
运行:
UART
模式
www.ti.com.cn
18-8. BITCLK 波特特率率时时序
18.2.6.1 波特特率率位位时时序
波特率发生器的第一阶段是 16 位的计数器和比较器。 在发送或接收的每一位的开始,计数器都用 INT
(N/2) 装载,其中 N是存储的在 UxBR0 UxBR1 中的结合值。 为每个位周期的半周期计数器重新加载
INT (N/2),给出 N BRCLKs 的一个总位周期。 对于一个给定的 BRCLK 时钟源,使用的波特率决定了需要
的分频系数 N
分频系数 N通常是一个非整数的值,它的整数部分可以由预分频器/除法器实现。 波特率发生器的第二阶
段,调制器,被用于尽可能地满足小数部分。 然后系数N被定义为:
其中,
N = 目标分频系数
UxBR = 寄存器 UxBR0 UxBR1 16 位表示
i = 字符中的比特位置
n = 字符中的总位数
mi=每个对应的调制位的数据(10
当需要一个非整数分频时,BITCLK 可以通过调制器进行位到位的调整,以此来满足时序要求。 如果调制器
mi被置位,那么每个位的时序都将由一个 BRCLK 时钟周期进行扩展。 每当一个位被接收或发送时,在
调制控制寄存器中的下一个位将决定该位的时序。 一个置位的调制位通过 1来增加分频系数,而一个清除
的调制位通过给定的 UxBR 来保持分频系数。
起始位的时序由 UxBR 加上 m0 来确定,下一位由UxBR 加上 m1 来确定,等等。 调制序列开始于最低有效
(LSB)。 当字符大于 8位时,调制序列用 m0 重新开始并继续进行直到所有的位都被处理。
480 USART
外设接口,
USART
模式
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
j
i
i=0
baud rate
Error [%] = × (j + 1) × UxBR + m – (j + 1) × 100%
BRCLK
ì ü
é ù
ï ï
ê ú
í ý
ê ú
ï ï
ê ú
ë û
î þ
å
www.ti.com.cn
USART
运行:
UART
模式
18.2.6.2 决定定调调制制值
决定调制值是一个互动的过程。 使用提供的时序误差公式,在起始位开始,单独的比特误差通过对应的调制
位的设置和清除来计算。 使用较低误差置位的调制位被选用并且下一个比特错误被计算。。 持续这个过
程,直到所有的位误差被最小化。 当一个字符包含多于 8位时,调制比特重复进行。 例如,字符的第九位
使用调制比特 0
18.2.6.3 发送送位位时时序
每个字符的时序是单独的位时序的总和。 通过调制每个位来减少累积的位误差。 单个位误差可以通过以下
来计算:
其中,
波特率=期望的波特率
BRCLK=输入频率 - UCLKIACLK,或 SMCLK
j = 比特位置 - 0(起始位时),-1(数据位 D0 时),等等
UxBR = 寄存器 UxBR1 UxBR0 中的分频系数
例如,满足下列条件的发送误差的计算方法:
波特率 = 2400
BRCLK=32768Hz (ACLK)
UxBR=13,因为理想的分频系数是 13.65
UxMCTL=6Bhm7=0m6=1m5=1m4=0m3=1m2=0m1=1,和 m0=1UxMCTL LSB
首先使用。
481
ZHCU032IDecember 2004Revised January 2012 USART
外设接口,
USART
模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Start bit Error [%]=( )
baud rate
BRCLK
×
( )
( )
0+1 ×UxBR+1 –1 ×100%=2.54%
Data bit D0 Error [%]=( )
baud rate
BRCLK
×
( )
( )
1+1 ×UxBR+2 –2 ×100%=5.08%
Data bit D1 Error [%]=( )
baud rate
BRCLK
×
( )
( )2+1 ×UxBR+2 –3 ×100%=0.29%
Data bit D2 Error [%]=( )
baud rate
BRCLK
×
( )
( )3+1 ×UxBR+3 –4 ×100%=2.83%
Data bit D3 Error [%]=( )
baud rate
BRCLK
×
( )
( )4+1 ×UxBR+3 –5 ×100%=-1.95%
Data bit D4 Error [%]=( )
baud rate
BRCLK
×
( )
( )
5+1 ×UxBR+4 –6 ×100%=0.59%
Data bit D5 Error [%]=( )
baud rate
BRCLK
×
( )
( )6+1 ×UxBR+5 –7 ×100%=3.13%
Data bit D6 Error [%]=( )
baud rate
BRCLK
×
( )
( )7+1 ×UxBR+5 –8 ×100%=-1.66%
Data bit D7 Error [%]=( )
baud rate
BRCLK
×
( )
( )
8+1 ×UxBR+6 –9 ×100%=0.88%
Parity bit Error [%]=( )
baud rate
BRCLK
×
( )
( )
9+1 ×UxBR+7 –10 ×100%=3.42%
Stop bit 1 Error [%]=( )
baud rate
BRCLK
×
( )
( )10+1 ×UxBR+7 –11 ×100%=-1.37%
USART
运行:
UART
模式
www.ti.com.cn
结果显示每比特的误差最大为 BITCLK 周期的 5.08%。
482 USART
外设接口,
USART
模式
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
j
i
i=1
baud rate UxBR
Error [%] = × 2 × m0 + int + i × UxBR + m – 1 – j × 100%
BRCLK 2
ì ü
æ ö
é ù
é ù
ï ï
æ ö
ç ÷
ê ú
í ý
ê ú
ç ÷
ç ÷
ê ú
è ø
ë û
ï ï
ç ÷
ê ú
ë û
è ø
î þ
å
1 2 3 4 5 6
0
i
t0
tideal
7 8
1
t1
2
9 10 11 12 13 14 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 2 3 4 5 6 7
t0t1t2
ST D0 D1
D0 D1
ST
Synchronization Error ± 0.5x BRCLK
Int(UxBR/2)+m0 =
Int (13/2)+1 = 6+1 = 7
Majority Vote Taken Majority Vote Taken
UxBR +m1 = 13+1 = 14 UxBR +m2 = 13+0 = 13
Majority Vote Taken
BRCLK
URXDx
URXDS
tactual
Sample
URXDS
www.ti.com.cn
USART
运行:
UART
模式
18.2.6.4 接收收位位时时序
接收时序有两个错误来源。 第一个是比特到比特的时序误差。 第二个是发生的起始沿和被 USART 接受的
起始沿之间的误差。18-9显示了 URXDx 引脚上数据和内部波特率时钟之间的异步时序误差。
18-9. 接收收错错误
理想的起始位时序 t理想 (0)是波特率时序 t波特率的一半,因为该位是在它周期的中间开始被检测的。 对于剩余的
字符位,理想的波特率时序 t理想(i)等于波特率时序 t波特率 单个位误差可以通过以下来计算:
其中,
波特率=所需的波特率
BRCLK = 输入频率;UCLKACLK,或 SMCLK 的选择
j=0(起始位时),1(数据位 D0 时),等
UxBR=寄存器 UxBR1 UxBR0 中的分频系数
例如,满足下列条件的接收误差的计算方法:
波特率 = 2400
BRCLK=32768Hz (ACLK)
UxBR=13,因为理想的分频系数是 13.65
UxMCTL=6Bm7 = 0m6=1m5=1m4=0m3=1m2=0m1=1 m0=1UxMCTL LSB
首先使用。
483
ZHCU032IDecember 2004Revised January 2012 USART
外设接口,
USART
模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Data bit D1 Error [%]=( )
baud rate
BRCLK
×
[ ]
2x( )
1+6 +2×UxBR+1 -1-2 ×100%=0.29%
Data bit D2 Error [%]=( )
baud rate
BRCLK
×
[ ]
2x( )
1+6 +3×UxBR+2 -1-3 ×100%=2.83%
Data bit D3 Error [%]=( )
baud rate
BRCLK
×
[ ]
2x( )1+6 +4×UxBR+2 -1-4 ×100%=-1.95%
Data bit D4 Error [%]=( )
baud rate
BRCLK
×
[ ]
2x( )1+6 +5×UxBR+3 -1-5 ×100%=0.59%
Data bit D5 Error [%]=( )
baud rate
BRCLK
×
[ ]
2x( )1+6 +6×UxBR+4 -1-6 ×100%=3.13%
Data bit D6 Error [%]=( )
baud rate
BRCLK
×
[ ]
2x( )
1+6 +7×UxBR+4 -1-7 ×100%=-1.66%
Data bit D7 Error [%]=( )
baud rate
BRCLK
×
[ ]
2x( )1+6 +8×UxBR+5 -1-8 ×100%=0.88%
Parity bit Error [%]=( )
baud rate
BRCLK
×
[ ]
2x( )1+6 +9×UxBR+6 -1-9 ×100%=3.42%
Stop bit 1 Error [%]=( )
baud rate
BRCLK
×
[ ]
2x( )
1+6 +10×UxBR+6 -1-10 ×100%=-1.37%
Start bit Error [%]=( )
baud rate
BRCLK
×
[ ]
2x( )
1+6 +0×UxBR+0 -1-0 ×100%=2.54%
Data bit D0 Error [%]=( )
baud rate
BRCLK
×
[ ]
2x( )1+6 +1×UxBR+1 -1-1 ×100%=5.08%
USART
运行:
UART
模式
www.ti.com.cn
结果显示每比特的误差最大为 BITCLK 周期的 5.08%。
18.2.6.5 典型型的的波波特特率率和和误误差
对于一个 32 768-Hz 晶振 (ACLK) 和一个典型的 1 048 576-Hz SMCLKUxBRx UxMCTL 的标准波特率
频率在18-2中列出。
接收误差是在每一个比特中间相对于理想扫描时间的累积时间。 发送误差是相对于位周期理想时间的累积时
序误差。
18-2. 常用用的的波波特特率率,,波波特特率率数数据据和和误误差
除以ABRCLK=32 768Hz BBRCLK=1 048 576Hz
波特特率TX 最大RX 同步RX TX 最大RX
A: B: UxBR1 UxBR0 UxMCTL UxBR1 UxBR0 UxMCTL
误差%误差%%误差%误差%
1200 27.31 873.81 0 1B 03 -4/3 -4/3 ±2 03 69 FF 0/0.3 ±2
2400 13.65 436.91 0 0D 6B -6/3 -6/3 ±4 01 B4 FF 0/0.3 ±2
4800 6.83 218.45 0 06 6F -9/11 -9/11 ±7 0 DA 55 0/0.4 ±2
9600 3.41 109.23 0 03 4A -21/12 -21/12 ±15 0 6D 03 -0.4/1 ±2
19 200 54.61 0 36 6B -0.2/2 ±2
38 400 27.31 0 1B 03 -4/3 ±2
76 800 13.65 0 0D 6B -6/3 ±4
115 200 9.1 0 09 08 -5/7 ±7
484 USART
外设接口,
USART
模式
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Clear
URXS
Clear
τ
S
SYNC
Valid Start Bit
Receiver Collects Character
URXSE
From URXD
PE
FE
BRK URXEIE
URXWIE
RXWAKE
Erroneous Character Rejection
Non-Address Character Rejection Character Received
or
Break Detected
URXIFGx
URXIEx Interrupt Service
Requested
SWRST
PUC
UxRXBUF Read
URXSE
IRQA
S
Clear
UTXIEx
Clear
D
Character Moved From
Buffer to Shift Register
Interrupt Service Requested
SWRST
Data written to UxTXBUF
Q
UTXIFGx
IRQA
VCC
PUC or SWRST
Q
Set
www.ti.com.cn
USART
运行:
UART
模式
18.2.7 USART
中断
USART 有一个发送中断向量和接收中断向量。
18.2.7.1 USART 发送送中中断断操操作
UTXIFGx 中断标志被发送器置位表示 UxTXBUF 准备接收另一个字符。 如果 UTXIE GIE 也置位,将产
生一个中断请求。 如果一个中断请求被服务或一个字符被写到 UxTXBUF UTXIFG 将自动复位。
一个 PUC SWRST=1 后,UTXIFGx 将置位。一个 PUC SWRST=1 后,UTXIEx 将复位。运行如
18-10所示。
18-10. 发送送中中断断操操作
18.2.7.2 USART 接收收中中断断操操作
每次一个字符被接收并装载到 UxRXBUF 中去时 URXIFG 中断标志置位一次。 如果 URXIE GIE 置位,
将产生一个中断请求。 复位 PUC 信号或者 SWRST=1 时,URXIFG URXIE 将被系统复位。如果挂起中
断被服务时(当 URXSE=0 时)或 当 UxRXBUF 被读取时 URXIFGx 将自动复位。 运行如18-11所示。
18-11. 接收收中中断断操操作
485
ZHCU032IDecember 2004Revised January 2012 USART
外设接口,
USART
模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
USART
运行:
UART
模式
www.ti.com.cn
URXEIE 被用来使能或禁止错误字符置位 URXIFGx。 当使用多处理器寻址模式时,URXWIE 被用于自动检
测有效的地址字符和拒绝不需要的数据字符。
有两种类型的字符不能置位 URXIFGx
URXEIE=0 时,错误的字符
URXWIE=1 时,非地址字符
URXEIE=1 时,一个中断条件置位 BRK 位和URXIFGx 标志。
18.2.7.3 接收收开开始始边边沿沿检检测测操操作
URXSE 位使能接收开始边缘检测功能。 推荐的接收开始边沿功能的用法是,BRCLK DCO 做源并且关
DCO,因为这是低功耗模式操作。 DCO 的超高速打开使字符能在开始边沿检测后被接受。
URXSEURXIEx GIE 置位并且在 URXDx 上出现开始沿时,内部信号 URXS 被置位。 当 URXS
位时,产生接收中断请求但 URXIFGx 没有置位。 在接收中断服务程序中的用户软件可以测试 URXIFGx
确定中断源。 当 URXIFGx=0 时,检测到起始沿,当 URXIFGx=1 时,收到一个有效的字符(或中断)。
ISR 确定中断请求是从一个起始边缘发出时,用户软件切换 URXSE ISR 返回到主动模式或者一个源
是活动的低功率模式,并且必须使能 BRCLK 源。 如果 ISR 返回到 BRCLK 源无效的低功耗模式,将无法
接收字符。 切换 URXSE 清除 URXS 信号,并为以后的字符重新使能开始边缘检测功能。 更多关于进入和
退出低功耗模式的信息请参阅
《系统复位,中断和操作模式》
章节。
现在活跃的的 BRCLK 允许 USART 接收平衡的字符。 完整的字符被接收并移动到 UxRXBUF
后,URXIFGx 置位并再次发出中断服务请求。 ISR 进入后,URXIFGx=1 表示一个字符被接收。 U当用户
软件读取 UxRXBUF 时,RXIFGx 标志被清除。
; Interrupt handler for start condition and ; Character receive. BRCLK = DCO.U0RX_Int BIT.B
#URXIFG0,&IFG1 ; Test URXIFGx to determineJZ ST_COND ; If start or characterMOV.B &UxRXBUF,dst ;
Read buffer... ;RETI ;ST_COND BIC.B #URXSE,&U0TCTL ; Clear URXS signalBIS.B #URXSE,&U0TCTL ; Re-
enable edge detectBIC #SCG0+SCG1,0(SP) ; Enable BRCLK = DCORETI ;
:带有有暂暂停停的UART 时钟钟中中断断检检测
使用接收开始边缘检测功能时,如果 BRCLK 源是关闭的,则不能检测到中断状态。
486 USART
外设接口,
USART
模式
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
URXDx
URXS
tτ
Majority Vote Taken
URXDx
URXS
tτ
www.ti.com.cn
USART
运行:
UART
模式
18.2.7.4 接收收开开始始边边沿沿检检测测条条件
URXSE =1 时,干扰抑制防止 USART 被意外启动。 URXDx 上任何低电平小于抗尖峰脉冲时间 tτ(约
300ns)都将被 USART 忽略并且不会产生中断请求(请见18-12)。 对于参数请参阅《器件专用数据表》
18-12. 干扰扰抑抑制制,USART 接收收未未开开始
当一个干扰大于 tτ或在 URXDx 上出现一个有效开始位时,USART 接收操作被启动并且采取一次多数表
决,如18-13所示。 如果多数表决未能检测到一个起始位,USART 暂停字符接收。
如果字符接收停止,则 BRCLK 无需处于激活状态。 一个超时周期大于字符的接收持续时间时,可以由软件
使用它来表示在预期的时间内没有收到字符,并且该软件可以禁用 BRCLK
18-13. 干扰扰抑抑制制,USART 激活
487
ZHCU032IDecember 2004Revised January 2012 USART
外设接口,
USART
模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
USART
寄存器:
UART
模式
www.ti.com.cn
18.3 USART 寄存存器器:UART 模式
18-3列出了所有器件中,应用一个 USART 模块的寄存器。18-4只适用于带有一个第二 USART 模块
的器件,USART1
18-3. USART0 控制制和和状状态态寄寄存存器
寄存存器 简表表 寄寄存存器器类型 地地址 初态
USART 控制寄存器 U0CTL 读取/写入 070h 001h PUC
发送控制寄存器 U0TCTL 读取/写入 071h 001h PUC
接收控制寄存器 U0RCTL 读取/写入 072h 000h PUC
调制控制寄存器 U0MCTL 读取/写入 073h 未改变
波特率控制寄存器 0 U0BR0 读取/写入 074h 未改变
波特率控制寄存器 1 U0BR1 读取/写入 075h 未改变
接收缓冲寄存器 U0RXBUF 读取 076h 未改变
发送缓冲寄存器 U0TXBUF 读取/写入 077h 未改变
SFR 模块使能寄存器 1 ME1 读取/写入 004h 000h PUC
SFR 中断使能寄存器 1 IE1 读取/写入 000h 000h PUC
SFR 中断标志寄存器 1 IFG1 读取/写入 002h 082h PUC
18-4. USART1 控制制和和状状态态寄寄存存器
寄存存器 简式式 寄寄存存器器类型 地地址 初态
USART 控制寄存器 U1CTL 读取/写入 078h 001h PUC
发送控制寄存器 U1TCTL 读取/写入 079h 001h PUC
接收控制寄存器 U1RCTL 读取/写入 07Ah 000h PUC
调制控制寄存器 U1MCTL 读取/写入 07Bh 未改变
波特率控制寄存器 0 U1BR0 读取/写入 07Ch 未改变
波特率控制寄存器 1 U1BR1 读取/写入 07Dh 未改变
接收缓冲寄存器 U1RXBUF 阅读 07Eh 未改变
发送缓冲寄存器 U1TXBUF 读取/写入 07Fh 未改变
SFR 模块使能寄存器 2 ME2 读取/写入 005h 000h PUC
SFR 中断使能寄存器 2 IE2 读取/写入 001h 000h PUC
SFR 中断标志寄存器 2 IFG2 读取/写入 003h 020h PUC
:修改SFR
为了避免修改其他模块的控制位,建议使用 BIS.B BIC.B 指令置位或清除 IEX IFGx 位,
而非 MOV.B CLR.B 指令。
488 USART
外设接口,
USART
模式
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
USART
寄存器:
UART
模式
18.3.1 UxCTL
USART
控制制寄寄存存器
76543210
PENA PEV SPB CHAR LISTEN SYNC MM SWRST
rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-1
PENA 7奇偶校验使能
0奇偶校验被禁用
1奇偶校验被启用。 生成 (UTXDx) 和预期 (URXDx) 的奇偶校验位。 在地址位多处理器模式中,地址
位被包括在奇偶校验计算中。
PEV 6奇偶校验选择。 奇偶校验被禁用时,PEV 不能使用。
0奇数校验
1偶数校验
SPB 5停止位选择 发送的停止位个数。 接收器总是会检查一个停止位。
0 1 个停止位
1 2 个停止位
CHAR 4字符长度。 选择 7位或 8位字符长度。
0 7 位数据
1 8 位数据
LISTEN 3监听使能。 监听位选择回路模式。
0被禁用
1被启用。 UTXDx 被内部反馈到接收器。
SYNC 2同步模式使能
0 UART 模式
1 SPI 模式
MM 1多处理器模式选择
0空闲线多处理器协议
1地址位多处理器协议
SWRST 0软件复位使能
0被禁用。 USART 复位操作释放
1被启用。 USART 逻辑保持在复位状态
489
ZHCU032IDecember 2004Revised January 2012 USART
外设接口,
USART
模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
USART
寄存器:
UART
模式
www.ti.com.cn
18.3.2 UxTCTL
USART
发送送控控制制寄寄存存器
76543210
未使使用CKPL SSELx URXSE TXWAKE 未使使用TXEPT
rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-1
未使使用 7未使用
CKPL 6时钟极性选择
0 UCLKI=UCLK
1 UCLKI = 反相的 UCLK
SSELx 5-4 源选择。 这些位选择 BRCLK 时钟源。
00 UCLKI
01 ACLK
10 SMCLK
11 SMCLK
URXSE 3 UART接收开始边沿。 该位使能 UART 接收开始边沿的功能。
0被禁用
1被启用
TXWAKE 2发送器唤醒
0发送下一帧数据
1发送下一帧地址
未使使用 1未使用
TXEPT 0发送器空标志
0 UART 发送数据和/或数据在 UxTXBUF 中等待发送
1发送移位寄存器和 UxTXBUF 为空或 SWRST=1
490 USART
外设接口,
USART
模式
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
USART
寄存器:
UART
模式
18.3.3 UxRCTL
USART
接收收控控制制寄寄存存器
76543210
FE PE OE BRK URXEIE URXWIE RXWAKE RXERR
rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0
FE 7帧错误标志
0无错误
1接收到的低停止位字符
PE 6奇偶校验错误标志。 当 PENA=0PE 被读取为 0
0无错误
1接收到带有奇偶校验错误的字符
OE 5溢出错误标志。 当在之前的一个字符被读取前随后一个字符被传输到 UxRXBUF 时,该位被置位。
0无错误
1发生溢出错误
BRK 4中断检测标志
0无中断条件
1发生的中断条件
URXEIE 3接收错误的字符中断使能
0错误字符被拒绝且 URXIFGx 没有被置位
1接收到的错误字符置位 URXIFGx
URXWIE 2接收唤醒中断使能。 当接收到一个地址字符时,此位启用 URXIFGx 进而置位。 当 URXEIE=0 时,如果接收
有错误,则地址字符不再置位 URXIFGx
0所有接收到的字符置位 URXIFGx
1只有接收到的地址字符置位 URXIFGx
RXWAKE 1接收唤醒标志
0接收到的字符为数据
1接收到的字符是一个地址
RXERR 0接收错误标志。 该位表示错误的收到一个字符。 当 RXERR=1 时,一个或更多的错误标志
(FEPEOEBRK) 也被置位。 当 UxRXBUF 被读取时,RXERR 被清除。
0没有检测到接收错误
1检测到接收错误
18.3.4 UxBR0
USART
波特特率率控控制制寄寄存
0
76543210
2726252423222120
rw rw rw rw rw rw rw rw
18.3.5 UxBR1
USART
波特特率率控控制制寄寄存
1
76543210
215 214 213 212 211 210 2928
rw rw rw rw rw rw rw rw
UxBRx 有效的波特率控制范围为 3UxBR0FFFFh 之间,其中 UxBR=(UxBR1+ UxBR0)。如UxBR<3,将会发生
不可预知的接收和发送时序。
491
ZHCU032IDecember 2004Revised January 2012 USART
外设接口,
USART
模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
USART
寄存器:
UART
模式
www.ti.com.cn
18.3.6 UxMCTL
USART
调制制控控制制寄寄存存器
76543210
m7 m6 m5 m4 m3 m2 m1 m0
rw rw rw rw rw rw rw rw
UxMCTLx 调制比特。 这些位为 BRCLK 选择调制。
18.3.7 UxRXBUF
USART
接收收缓缓冲冲寄寄存存器
76543210
2726252423222120
rrrrrrrr
UxRXBUFx 7-0 接收数据缓冲区是用户可以访问的并且包含最后从接收移位寄存器中接收到的字符。 读取 UxRXBUF 复位接
收错误位,RXWAKE 位,和 URXIFGx。在7位数据模式下,UxRXBUF 是对齐的 LSB 并且 MSB 总是复
位。
18.3.8 UxTXBUF
USART
发送送缓缓冲冲寄寄存存器
76543210
2726252423222120
rw rw rw rw rw rw rw rw
UxTXBUFx 7-0 发送数据缓冲区是用户可以访问的并且保存有等待被转移到发送移位寄存器和 UTXDx 上传输的数据。 写入到
发送数据缓冲器清除 UTXIFGxUxTXBUF MSB 没有在 7位数据模式下使用且被复位了。
18.3.9 ME1
,模模块块使使能能寄寄存
1
76543210
UTXE0 URXE0
rw-0 rw-0
UTXE0 7 USART0 发送使能。 该位启用针对 USART0 的发送器。
0未启用模块
1启用模块
URXE0 6 USART0 接收使能。 该位启用针对 USART0 的接收器。
0未启用模块
1启用模块
5-0 这些位也可以被其他模块使用。 请参阅《器件专用数据表》。
18.3.10 ME2
,模模块块使使能能寄寄存
2
76543210
UTXE1 URXE1
rw-0 rw-0
7-6 这些位也可以被其他模块使用。 请参阅《器件专用数据表》。
UTXE1 5 USART1 发送使能。 该位启用针对 USART1 的发送器。
0未启用模块
1启用的模块
URXE1 4 USART1 接收使能。 该位启用针对 USART1 的接收器。
0未启用模块
1启用模块
3-0 这些位也可以被其他模块使用。 请参阅《器件专用数据表》。
492 USART
外设接口,
USART
模式
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
USART
寄存器:
UART
模式
18.3.11 IE1
,中中断断使使能能寄寄存
1
76543210
UTXIE0 URXIE0
rw-0 rw-0
UTXIE0 7 USART0 发送中断使能。 该位启用 UTXIFG0 中断。
0中断未启用
1中断启用
URXIE0 6 USART0 接收中断使能。 该位启用 URXIFG0 中断。
0中断未启用
1中断被启用
5-0 这些位也可以被其他模块使用。 请参阅《器件专用数据表》。
18.3.12 IE2
,中中断断使使能能寄寄存
2
76543210
UTXIE1 URXIE1
rw-0 rw-0
7-6 这些位也可以被其他模块使用。 请参阅《器件专用数据表》。
UTXIE1 5 USART1 发送中断使能。 该位启用 UTXIFG1 中断。
0中断未启用
1中断被启用
URXIE1 4 USART1 接收中断使能。 该位启用 URXIFG1 中断。
0中断未启用
1中断被启用
3-0 这些位也可以被其他模块使用。 请参阅《器件专用数据表》。
18.3.13 IFG1
,中中断断标标志志寄寄存
1
76543210
UTXIFG0 URXIFG0
rw-1 rw-0
UTXIFG0 7 USART0 发送中断标志。 当 U0TXBUF 为空时,UTXIFG0 被置位。
0无中断等待
1中断等待
URXIFG0 6 USART0 接收中断标志。 当 U0RXBUF 收到一个完整的字符时,URXIFG0 被置位。
0无中断挂起
1中断挂起
5-0 这些位也可以被其他模块使用。 请参阅《器件专用数据表》。
493
ZHCU032IDecember 2004Revised January 2012 USART
外设接口,
USART
模式
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
USART
寄存器:
UART
模式
www.ti.com.cn
18.3.14 IFG2
,中中断断标标志志寄寄存
2
76543210
UTXIFG1 URXIFG1
rw-1 rw-0
7-6 这些位也可以被其他模块使用。 请参阅《器件专用数据表》。
UTXIFG1 5 USART1 发送中断标志。 当 U1TXBUF 为空时,UTXIFG1 被置位。
0无中断等待
1中断等待
URXIFG1 4 USART1 接收中断标志。 当 U1RXBUF 收到一个完整的字符时,URXIFG1 被置位。
0无中断等待
1中断等待
3-0 这些位也可以被其他模块使用。 请参阅《器件专用数据表》。
494 USART
外设接口,
USART
模式
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Chapter 19
ZHCU032IDecember 2004Revised January 2012
USART
外设设接口,
SPI
模式式。
通用同步/异步接收/发送器 (USART) 外设接口采用一个硬件模块支持两个串行模式。 本章介绍了同步外设
接口或 SPI 模式的操作。 在 MSP430AFE2xx 器件上执行了 USART0
Topic ........................................................................................................................... Page
19.1 USART 介绍绍:SPI 模式...................................................................................... 496
19.2 USART 操作作:SPI 模式...................................................................................... 498
19.3 USART 寄存存器器:SPI 模式................................................................................... 505
495
ZHCU032IDecember 2004Revised January 2012 USART
外设接口,
SPI
模式。
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
USART
介绍:
SPI
模式
www.ti.com.cn
19.1 USART 介绍绍:SPI 模式
在同步模式中,USART 通过三个或四个脚把 MSP430 与一个外部系统连接起来,这几个引脚
是:SIMOOMIUCLK,和 STE。当SYNC 被置位且 I2C 被清零时,选择 SPI 模式。
SPI 模式的特点包括:
7 位或 8位的数据长度
3 引脚或 4引脚 SPI 操作
主控或受控模式
独立的发送和接收移位寄存器
分开的发送和接收缓冲寄存器
可选择的 UCLK 极性和相位控制
在主模式下可编程的 UCLK 频率
独立的接收和发送中断功能
19-1给出了配置为 SPI 模式时的 USART
496 USART
外设接口,
SPI
模式。
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Receiver Shift Register
Transmit Shift Register
Receiver Buffer UxRXBUF
Transmit Buffer UxTXBUF
LISTEN MM
UCLK
Clock Phase and Polarity
Receive Status
SYNC CKPH CKPL
SSEL1 SSEL0
UCLKI
ACLK
SMCLK
SMCLK
00
01
10
11
OEPE BRK
TXWAKE
UCLKS
UCLKI
Receive Control
RXERR
FE
SWRST USPIEx* URXEIE URXWIE
Transmit Control
SWRST USPIEx* TXEPT
RXWAKE
SPB CHAR PENAPEV
SPB CHAR PENAPEV
WUT SIMO
UTXD
URXD
SOMI
STE
Prescaler/Divider UxBRx
Modulator UxMCTL
Baud−Rate Generator
UTXIFGx*
* See the device-specific data sheet for SFR locations.
SYNC
URXIFGx*
01
0
0
0
1
0
1
1
1
0
1
STC
SYNC= 1
www.ti.com.cn
USART
介绍:
SPI
模式
19-1. USART 方框框图图:SPI 模式
497
ZHCU032IDecember 2004Revised January 2012 USART
外设接口,
SPI
模式。
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
USART
操作:
SPI
模式
www.ti.com.cn
19.2 USART 操作作:SPI 模式
SPI 模式下,串行数据可通过多路个器件进行发送和接收,这些器件使用一个由主机提供的共用时钟。
一个附加的引脚,STE,用于使能器件接收和发送数据,并由主机控制。
三个或四个信号被用于 SPI 数据交换:
• SIMO:从器件输入,主器件输出
主控模式:SIMO 为数据输出线。
受控模式:SIMO 为数据输入线。
• SOMI:从器件输出,主器件输入
主控模式:SOMI 为数据输入线。
受控模式:SOMI 为数据输出线。
• UCLKUSART SPI 时钟
主控模式:UCLK 是一个输出端。
受控模式:UCLK 是一个输入端。
• STE:从机发送使能。 用于 4引脚模式以便允许在一条单总线上的多个主器件。 不用于 3引脚模式。
4 引脚主控模式:
STE 为高电平时,SIMO UCLK 正常运行。
STE 为低电平时,SIMO UCLK 被设置到输入方向。
4 引脚受控模式:
STE 为高电平时,从器件的 RX/TX 被禁用且 SOMI 被强制为输入方向。
STE 为低电平时,从器件的 RX/TX 被启用和且 SOMI 正常工作。
19.2.1 USART
的初初始始化化和和复复位
通过一个 PUC SWRST 位复位 USART。一PUC 后,SWRST 位自动置位,保持 USART 处于一个
复位条件下。 当置位时,SWRST 位复位 URXIExUTXIExURXIFGxOE,和 FE 位并并置位
UTXIFGx 标志。 USPIEx 位没被 SWRST 改变。 清零 SWRST 会释放 USART 进行操作。
:初始始化化或或重重新新配配置USART 模块
所需的 USART 初始化/重新配置过程是:
1. 置位 SWRST (BIS.B #SWRST&UxCTL)
2. UCSWRST=1,初始化所有 USART 寄存器(包括 UxCTL
3. 通过 MEx SFRs (USPIEx) 启用 USART 模块
4. 通过软件清零 SWRST (BIC.B #SWRST&UxCTL)
5. 通过 IExSFRURXIEx /UTXIEx)启用中断(可选)
未能按照这个过程中可能会导致不可预知的 USART 运行方式。
498 USART
外设接口,
SPI
模式。
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Receive Buffer UxRXBUF
Receive Shift Register
MSB LSB
Transmit Buffer UxTXBUF
Transmit Shift Register
MSB LSB
SPI Receive Buffer
Data Shift Register (DSR)
MSB LSB
SOMI SOMI
SIMO SIMO
MASTER SLAVE
Px.x STE
STE SS
Port.x
UCLK SCLK
MSP430 USART COMMON SPI
www.ti.com.cn
USART
操作:
SPI
模式
19.2.2
主控控模模式
19-2给出了在 3引脚和 4引脚配置下的作为一个主器件的 USART。 当数据被移动到发送数据缓冲时
UxTXBUF 时,USART 初始化数据传输。 当 TX 移位寄存器为空时,UxTXBUF 数据被移动到 TX 移位寄存
器,SIMO 上的初始化数据传输从最高有效位开始。 SOMI 上的数据被移入在反相的时钟沿上的接收移位寄
存器,从最高有效位开始。 当字符接收到之后,接收数据被从 RX 移位寄存器送入接收到的数据缓冲器
UxRXBUF,并且接收中断标志,URXIFGx,被置位,完成初始化 RX/TX (接收/发送)操作。
19-2. USART 主器器件件和和外外部部从从器器件
一组传输中断标志,UTXIFGx,表明数据已经从 UxTXBUF 转移到 TX 移位寄存器且 UxTXBUF 已为新的数
据准备就绪。 它并不表示 RX/TX 完成。 在主控模式下,一个有效传输的完成是用一组发送器的空位
TXEPT=1 表示的。
要在主控模式下把数据接收到 USART 中,鉴于接收和发送操作同时运行的,必须把数据写入 UxTXBUF
19.2.2.1 4 引脚SPI 主控控模模式
4引脚主控模式下,STE 用于防止与另一个主器件发生冲突。 当 STE 为高电平时主器件正常操作。 当
STE 为低电平时:
SIMO UCLK 被设为输入,并不再驱动总线
错误位 FE 被置位表示了一个通信完整性违规将被用户处理。
一个低 STE 信号不会复位 USART 模块。 STE 输入信号不使用在 3引脚主控模式中。
19.2.3
受控控模模式
19-3给出了在 3引脚和 4引脚配置下的作为一个从器件的 USARTUCLK 被使作 SPI 时钟的输入且必
须由外部主器件提供。 数据传输速率是由这个时钟确定而不是由内部波特率发生器确定。 在一个 UCLK
始前,会在 SOMI 上发送写入 UxTXBUF 和被移到 TX 移位寄存器的数据。 SIMO 上的数据被移进在 UCLK
反相边沿上的接收移位寄存器,且当设定位数被接收时数据被移到 UxRXBUF。 当数据被从 RX 移位寄存器
移动到 UxRXBUF 时,URXIFGx 中断标志被置位,表明数据已被接收。 溢出错误位,OE,当在新数据没
被移到 UxRXBUF 前,接收到的数据无法从 UxRXBUF 中读取时,该位被置位。
499
ZHCU032IDecember 2004Revised January 2012 USART
外设接口,
SPI
模式。
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Idle State
(Transmitter
Enabled)
Transmit
Disable
Transmission
Active
USPIEx = 0 No Data Written
to Transfer Buffer Not Completed
USPIEx = 1
USPIEx = 0
USPIEx = 1,
Data Written to
Transmit Buffer Handle Interrupt
Conditions
Character
Transmitted
USPIEx = 1
USPIEx = 0 And Last Buffer
Entry Is Transmitted
SWRST
PUC
USPIEx = 0
Receive Buffer UxRXBUF
Receive Shift Register
LSB
MSB
Transmit Buffer UxTXBUF
Transmit Shift Register
LSB
MSB
SPI Receive Buffer
Data Shift Register DSR
LSB
MSB
SOMISOMI
SIMOSIMO
MASTER SLAVE
Px.x STE
STE SS
Port.x
UCLK
SCLK
MSP430 USARTCOMMON SPI
USART
操作:
SPI
模式
www.ti.com.cn
19-3. USART 从器器件件和和外外部部主主器器件
19.2.3.1 4 引脚SPI 受控控模模式
4引脚受控模式中,STE 被从器件用于启用发送和接收操作,并由 SPI 主器件提供。 当 STE 为低电平
时,从器件正常操作。 当 STE 为高电平时:
SIMO 上的任何进行中的接收操作都被暂停
SOMI 被设置为输入方向
一个高 STE 信号不会复位 USART 模块。 STE 输入信号不使用在 3引脚受控模式中。
19.2.4 SPI
使使能
SPI 模式下,SPI 发送/接收使能位 USPIEx 使能或禁用 USART。当USPIEx=0 时,在当前数据传输完
成后 USART 会停止操作,或如果没有操作处于活动状态的话会立即停止操作。 一个 PUC 或一组 SWRST
位立即禁止了 USART 且任何活动传输被终止。
19.2.4.1 发送送使使能
USPIEx=0 时,不发送任何更多写入 UxTXBUF 。当USPIEx=1 BRCLK 源处于活动状态时,开始发
送写入 UxTXBUF 的数据。19-419-5给出了发送使能状态结构图。
19-4. 主器器件件发发送送使使能能状状态态结结构构图
500 USART
外设接口,
SPI
模式。
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Idle State
(Receive
Enabled)
Receive
Disable
Receiver
Collects
Character
USPIEx = 0 No Clock at UCLK Not Completed
USPIEx = 1
USPIEx = 0
USPIEx = 1 Handle Interrupt
Conditions
Character
Received
USPIEx = 1
USPIEx = 0
SWRST
PUC
External Clock
Present
Idle State
(Receiver
Enabled)
Receive
Disable
Receiver
Collects
Character
USPIEx = 0 No Data Written
to UxTXBUF Not Completed
USPIEx = 1
USPIEx = 0
USPIEx = 1 Handle Interrupt
Conditions
Character
Received
USPIEx = 1
USPIEx = 0
SWRST
PUC
Data Written
to UxTXBUF
Idle State
(Transmitter
Enabled)
Transmit
Disable
Transmission
Active
USPIEx = 0 No Clock at UCLK Not Completed
USPIEx = 1
USPIEx = 0
USPIEx = 1 Handle Interrupt
Conditions
Character
Transmitted
USPIEx = 1
USPIEx = 0
SWRST
PUC
External Clock
Present
www.ti.com.cn
USART
操作:
SPI
模式
19-5. 从器器件件发发送送使使能能状状态态结结构构图
19.2.4.2 接收收使使能
19-619-7中给出了 SPI 接收使能状态结构图。 当 USPIEx=0 时,UCLK 被禁止转移数据到 RX
位寄存器。
19-6. SPI 主器器件件接接收收使使能能状状态态结结构构图
19-7. SPI 从器器件件接接收收使使能能状状态态结结构构图
19.2.5
串行行时时钟钟控控制
UCLK SPI 总线上的主器件提供。 当 MM=1 时,BITCLK 由在 UCLK 引脚上的 USART 波特率发生器提
供,如在19-8中所示。 当 MM=0 时,USART 时钟由 UCLK 引脚上的主机提供,不使用波特率发生器,
SSELx 位是无关SPI 接收器和传送器并行操作且并数据传输使用相同的时钟源。
501
ZHCU032IDecember 2004Revised January 2012 USART
外设接口,
SPI
模式。
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
CKPH CKPL Cycle#
UCLK
UCLK
UCLK
UCLK
SIMO/
SOMI
SIMO/
SOMI
Move to UxTXBUF
RX Sample Points
0
1
0
0
01
1 1
0 X
1 X
MSB
MSB
1 2 3 4 5 6 7 8
LSB
LSB
TX Data Shifted Out
STE
BRCLK
Baud rate = with UxBR= [UxBR1, UxBR0]
UxBR
Bit Start
mX
BRCLK
88
UCLKI
ACLK
SMCLK
SMCLK 11
BITCLK
10
01
00
20
27
28
215
Compare (0 or 1)
Modulation Data Shift Register
(LSB first)
16−Bit Counter
Q0
............
Q15
m0m7
...
...
8
UxBR1 UxBR0
Toggle
FF
N =
R
R
R
UxMCTL
SSEL1 SSEL0
USART
操作:
SPI
模式
www.ti.com.cn
19-8. SPI 波特特率率发发生生器
UxBR0+ UxBR1 16 位值是 USART 时钟源的分频因子,BRCLK。 在主控模式下是可以产生的最大波特
率是 BRCLK/2。在受控模式下可以产生的最大波特率是 BRCLK。在 USART 波特率发生器中的调制器不用
SPI模式,并建议设置到 000hUCLK 频率由下式给出:
19.2.5.1 串行行时时钟钟的的极极性性和和相相位
可通过 USART CKPL CKPH 控制位独立配置 UCLK 的极性和相位。 在19-9中给出了每种情况下
的时序。
19-9. USART SPI 时序
502 USART
外设接口,
SPI
模式。
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Clear
UTXIEx
Clear
D
Character Moved From
Buffer to Shift Register
Interrupt Service Requested
SWRST
Data moved to UxTXBUF
Q
UTXIFGx
IRQA
VCC
PUC or SWRST
Q
Set
SYNC = 1
www.ti.com.cn
USART
操作:
SPI
模式
19.2.6 SPI
中断
USART 有一个传输中断矢量的和一个接收中断矢量。
19.2.6.1 SPI 的发发送送中中断断操操作
发射器置位 UTXIFGx 中断标志表示 UxTXBUF 已准备好接受另一个字符。 如果 UTXIEx GIE 也被置
位,会产生一个中断请求。 如果中断请求被服务或如果一个字符被写入 UxTXBUFUTXIFGx 会自动复
位。
在一个 PUC 后或当 SWRST=1 时,UTXIFGx 被置位。在一个 PUC 后或当 SWRST=1 时,UTXIFGx 被复
位。在19-10中展示了该操作。
19-10. 发送送中中断断操操作
:SPI 模式式下下写写入UxTXBUF
UTXIFGx=0 USPIEx=1 时,写入 UxTXBUF 的数据可能会导致错误的数据传输。
503
ZHCU032IDecember 2004Revised January 2012 USART
外设接口,
SPI
模式。
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Receive
Character
Completed
Interrupt
Service Started,
GIE = 0
URXIFGx = 0
USPIEx = 0
URXIFGx = 1 USPIEx = 1 and
URXIEx = 1 and
GIE = 1 and
Priority Valid
GIE = 0
Priority
Too
Low
URXIFGx = 0
Wait For Next
Start
USPIEx = 0
SWRST = 1
PUC
USPIEx = 1
URXIEx = 0
SWRST = 1
Receive
Character
URXS
Clear
τ
(S)
SYNC
Valid Start Bit
Receiver Collects Character
URXSE
From URXD
PE
FE
BRK
URXEIE
URXWIE
RXWAKE
Character Received
URXIFGx
URXIEx Interrupt Service
Requested
SWRST
PUC
UxRXBUF Read
URXSE
IRQA
SYNC = 1
Clear
USART
操作:
SPI
模式
www.ti.com.cn
19.2.6.2 SPI 接收收中中断断操操作
在每次接收到一个字符并加载到 UxRXBUF 中时,URXIFGx 中断标志被置为,如在19-1119-12
所示。 如果 URXIEx GIE 也被置位,会产生一个中断请求。 URXIFGx URXIEx 被一次系统复位 PUC
信号复位或当 SWRST=1 时被复位。如果挂起的中断被送达或当 UxRXBUF 被读取时,URXIFGx 会自动置
位。
19-11. 接收收中中断断操操作
19-12. 接收收中中断断状状态态图
504 USART
外设接口,
SPI
模式。
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
USART
寄存器:
SPI
模式
19.3 USART 寄存存器器:SPI 模式
19-1列出了执行一个 USART 模块的所有器件的寄存器。19-2只适用于有第二 USART
块,USART1 的器件。
19-1. USART0 控制制和和状状态态寄寄存存器
寄存存器 简式式 寄寄存存器器类型 地地址址 初初始化状状态
USART 控制寄存器 U0CTL 读取/写入 070h 001H PUC
发送控制寄存器 U0TCTL 读取/写入 071h 001h PUC
接收控制寄存器 U0RCTL 读取/写入 072h 000h PUC
调制控制寄存器 U0MCTL 读取/写入 073h 未改变
波特率控制寄存器 0 U0BR0 读取/写入 074h 未改变
波特率控制寄存器 1 U0BR1 读取/写入 075h 未改变
接收缓冲寄存器 U0RXBUF 读取 076h 未改变
发送缓冲寄存器 U0TXBUF 读取/写入 077h 未改变
SFR 模块使能寄存器 1 ME1 读取/写入 004h 000h PUC
SFR 中断使能寄存器 1 IE1 读取/写入 000h 000h PUC
SFR 中断标志寄存器 1 IFG1 读取/写入 002h 082h PUC
19-2. USART1 控制制和和状状态态寄寄存存器
寄存存器 简式式 寄寄存存器器类型 地地址址 初初始化状状态
USART 控制寄存器 U1CTL 读取/写入 078h 001h PUC
发送控制寄存器 U1TCTL 读取/写入 079h 001h PUC
接收控制寄存器 U1RCTL 读取/写入 07Ah 000h PUC
调制控制寄存器 U1MCTL 读取/写入 07Bh 未改变
波特率控制寄存器 0 U1BR0 读取/写入 07Ch 未改变
波特率控制寄存器 1 U1BR1 读取/写入 07Dh 未改变
接收缓冲寄存器 U1RXBUF 读取 07Eh 未改变
发送缓冲寄存器 U1TXBUF 读取/写入 07Fh 未改变
SFR 模块使能寄存器 2 ME2 读取/写入 005h 000h PUC
SFR 中断使能寄存器 2 IE2 读取/写入 001h 000h PUC
SFR 中断标志寄存器 2 IFG2 读取/写入 003h 020h PUC
:修改SFR
为了避免修改其他模块的控制位,建议使用 BIS.B BIC.B 指示,而非 MOV.B CLR.B
令置位或清除 IEX IFGx 位。
505
ZHCU032IDecember 2004Revised January 2012 USART
外设接口,
SPI
模式。
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
USART
寄存器:
SPI
模式
www.ti.com.cn
19.3.1 UxCTL
USART
控制制寄寄存存器
76543210
未被被使使I2C CHAR LISTEN SYNC MM SWRST
rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-1
未被被使使 7-6 未被使用
I2C 5 I2C模式使能。 当 SYNC=1 时,该位选择 I2CSPI 操作。
0 SPI 模式
1 I2C模式
CHAR 4字符长度
0传输的每个数据单元为 7位。
1传输的每个数据单元为 8位。
监听 3监听使能。 监听位选择回路模式
0被禁用
1被启用。 发送信号被内部反馈到接收器。
SYNC 2同步模式使能
0 UART 模式
1 SPI 模式
MM 1主器件模式
0 USART 是从器件
1 USART 是主器件
SWRST 0软件复位使能
0被禁用。 USART复位释放操作。
1被启用. USART 逻辑保持在复位状态。
19.3.2 UxTCTL
USART
发送送控控制制寄寄存存器
76543210
CKPH CKPL SSELx 使使用STC TXEPT
rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-1
CKPH 7时钟相位选择。
0数据第一个 UCLK 边缘被改变且在下一个边沿被捕获。
1数据第一个 UCLK 边缘被捕获且在下一个边沿被改变。
CKPL 6时钟极性选择
0不活动状态是低电平。
1不活动状态是高电平。
SSELx 5-4 源选择。 这些位选择 BRCLK 时钟源。
00 外部 UCLK(仅在受控模式下有效)
01 ACLK(仅在主控模式下有效)
10 SMCLK(仅在主机控模式下有效)
11 SMCLK(仅在主控模式下有效)
未被被使使 3-2 未被使用
STC 1从器件发送控制。
0 4 引脚 SPI 模式:STE 被启用。
1 3 引脚 SPI 模式:STE 被禁用。
TXEPT 0发送器空标志。 TXEPT 标志不在受控模式中使用。
0UxTXBUF 中传输有效和/或数据等待
1 UxTXBUF TX 移位寄存器是空的
506 USART
外设接口,
SPI
模式。
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
USART
寄存器:
SPI
模式
19.3.3 UxRCTL
USART
接收收控控制制寄寄存存器
76543210
FE 未被被使使OE 未被被使使
rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0
FE 7帧出错标志。 当 MM=1 STC=0 时该位表示一个总线冲突。FE 在受控模式下未使用。
0没有检测到冲突
1STE 上发生一个负边缘,表示总线冲突
未被被使使 6未使用
OE 5溢出错误标志。 在前一个字符被读取前,一个字符被传输进 UxRXBUF 时,该位被置位。 当 UxRXBUF 被读
取时,OE 自动复位,当 SWRST=1 时,也可以由软件复位。
0无错误
1发生溢出错误
未使使用 4-0 未被使用
19.3.4 UxBR0
USART
波特特率率控控制制寄寄存
0
76543210
2726252423222120
rw rw rw rw rw rw rw rw
19.3.5 UxBR1
USART
波特特率率控控制制寄寄存
1
76543210
215 214 213 212 211 210 2928
rw rw rw rw rw rw rw rw
UxBRx 波特率发生器使用 {UxBR1+ UxBR0} 的内容来设置波特率。 如果 UxBR<2,会发生不可预知的 SPI 操作。
19.3.6 UxMCTL
USART
调制制控控制制寄寄存存器
76543210
m7 m6 m5 m4 m3 m2 m1 m0
rw rw rw rw rw rw rw rw
UxMCTLx 7-0 调制控制寄存器不用于 SPI 模式且应被设置到 000h
19.3.7 UxRXBUF
USART
接收收缓缓冲冲寄寄存存器
76543210
2726252423222120
rrrrrrrr
UxRXBUFx 7-0 接收数据缓冲是用户可以访问并包含从接收移位寄存器处最后接收到的字符。 读取 UxRXBUF 将复位 OE
URXIFGx 标志。 在 7位数据模式下,UxRXBUF 是已对齐的 LSB MSB 总是复位。
507
ZHCU032IDecember 2004Revised January 2012 USART
外设接口,
SPI
模式。
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
USART
寄存器:
SPI
模式
www.ti.com.cn
19.3.8 UxTXBUF
USART
发送送缓缓冲冲寄寄存存器
76543210
2726252423222120
rw rw rw rw rw rw rw rw
UxTXBUFx 7-0 发送数据缓冲是用户可访问的并且包含要被发送的当前数据。 当使用 7位字符长度时,在被转移到 UxTXBUF
前数据应该是已对齐的 MSB。 数据被传输,MSB 首先被传输。 写入 UxTXBUF 将清零 UTXIFGx
19.3.9 ME1
,模模块块使使能能寄寄存
1
76543210
USPIE0
rw-0
7该位也可以被其他模块使用。 请参阅《器件专用数据表》。
USPIE0 6 USART0 SPI 使能。 该位启用针对 USART0 SPI 模式。
0模块未被启用
1模块被启用
5-0 这些位也可以被其他模块使用。 请参阅《器件专用数据表》。
19.3.10 ME2
,模模块块使使能能寄寄存
2
76543210
USPIE1
rw-0
7-5 这些位也可以被其他模块使用。 请参阅《器件专用数据表》。
USPIE1 4 USART1 SPI 使能。 该位启用 USART1 SPI 模式。
0模块未被启用
1模块 被启用
3-0 这些位也可以被其他模块使用。 请参阅《器件专用数据表》。
19.3.11 IE1
,中中断断使使能能寄寄存
1
76543210
UTXIE0 URXIE0
rw-0 rw-0
UTXIE0 7 USART0 发送中断使能。 该位使能 UTXIFG0 中断。
0中断未被启用
1中断被启用
URXIE0 6 USART0 接收中断使能。 该位启用 URXIFG0 中断。
0中断未被启用
1中断被启用
5-0 这些位也可以被其他模块使用。 请参阅《器件专用数据表》。
508 USART
外设接口,
SPI
模式。
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
USART
寄存器:
SPI
模式
19.3.12 IE2
,中中断断使使能能寄寄存
2
76543210
UTXIE1 URXIE1
rw-0 rw-0
7-6 这些位也可以被其他模块使用。 请参阅《器件专用数据表》。
UTXIE1 5 USART1 发送中断使能。 该位启用 UTXIFG1 中断。
0中断未被启用
1中断被启用
URXIE1 4 USART1 接收中断使能。 该位启用 URXIFG1 中断。
0中断未被启用
1中断被启用
3-0 这些位也可以被其他模块使用。 请参阅《器件专用数据表》。
19.3.13 IFG1
,中中断断标标志志寄寄存
1
76543210
UTXIFG0 URXIFG0
rw-1 rw-0
UTXIFG0 7 USART0 发送中断标志。 U0TXBUF 为空时置位 UTXIFG0
0无中断等待
1中断等待
URXIFG0 6 USART0 接收中断标志。 当 U0RXBUF 已收到一个完整的字符时置位 URXIFG0
0无中断等待
1中断等待
5-0 这些位也可以被其他模块使用。 请参阅《器件专用数据表》。
19.3.14 IFG2
,中中断断标标志志寄寄存
2
76543210
UTXIFG1 URXIFG1
rw-1 rw-0
7-6 这些位也可以被其他模块使用。 请参阅《器件专用数据表》。
UTXIFG1 5 USART1 发送中断标志。 当 U1TXBUF 为空时置位 UTXIFG1
0无中断挂起
1中断挂起
URXIFG1 4 USART1 接收中断标志。 当 U1RXBUF 已收到一个完整的字符时置位 URXIFG1
0无中断挂起
1中断挂起
3-0 这些位也可以被其他模块使用。 请参阅《器件专用数据表》。
509
ZHCU032IDecember 2004Revised January 2012 USART
外设接口,
SPI
模式。
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Chapter 20
ZHCU032IDecember 2004Revised January 2012
OA
OA 是一个通用的运算放大器。 本章介绍了 OAMSP430x22x4 器件中应用了两个 OA 模块。
Topic ........................................................................................................................... Page
20.1 OA 介绍.......................................................................................................... 511
20.2 OA 操作.......................................................................................................... 512
20.3 OA 寄存存器....................................................................................................... 519
510 OA ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
OA
介绍
20.1 OA 介绍
OA 运算放大器支持模数转换前的前端模拟信号调理。
OA 的特性包括:
单电源,低电流运行
轨至轨输出
可编程建立时间与功耗的关系
可选择的软件配置
用于 PGA(可编程增益放大器)应用的可选择的软件反馈电阻。
:OA 模块
有些器件可以内置一个以上的 OA 模块。 如果在一个器件上出现一个以上的 OA 模块,则多
OA 模块在操作上完全相同。
本章中,将会命名 OAxCTL0 这样的术语来描述寄存器的名字。 这种情况下,x被用于指代正
在被讨论的 OA 模块。 在操作完全相同的情况下,寄存器被简写为 OAxCTL0
OA 模块框图如20-1所示。
511
ZHCU032IDecember 2004Revised January 2012 OA
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
000
001
100
011
010
111
110
101
3
3
000
001
100
011
010
111
110
101
3
4R
4R
2R
2R
R
R
R
R
OAFBRx
OAxTAP
OAFCx
OAxRBOTTOM
OA1RBOTTOM(OA0)
OA2RBOTTOM (OA1)
OA0RBOTTOM (OA2)
000
001
100
011
010
111
110
101
OAPMx
OAxOUT
OAx
+
A1 (OA0)
A3 (OA1)
A5 (OA2)
A12 (OA0)
A13 (OA1)
A14 (OA2)
001
else
OAFCx = 6
0
1
OANx = 3
OAPx = 3
OA1TAP (OA0)
OA2TAP (OA1)
OA0TAP (OA2)
OAxR
TOP
000
1
OAPx
OAxI0
OA0I1
00
01
10
11
OAxIA
OAxIB
OA2OUT (OA0)
OA0OUT (OA1)
OA1OUT (OA2)
0
1
OAFCx = 5 OANx
OAxI0
OAxI1
00
01
10
11
OAxIA
OAxIB
OANEXT
OAFCx = 6
OAxR
BOTTOM
A12/OA0O
A13/OA1O
A14/OA2O
A1/OA0O
A3/OA1O
A5/OA2O
OANx
OAxI0
OAxI1
00
01
10
11
OAxIA
AVCC
1
0
OARRIP
0
1
OAFBRx > 0
1
OAFCx = 0
OAADCx
OAxFB
OA2OUT (OA0)
OA0OUT (OA1)
OA1OUT (OA2)
2
Feeback Switch Matrix
OA
操作
www.ti.com.cn
20-1. OA 方框框图
20.2 OA 操作
OA 模块由用户软件配置。 下面部分将讨论 OA 的设置和操作。
512 OA ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
OA
操作
20.2.1 OA
放大大器
OA 是一个可配置、低电流、轨对轨输出的运算放大器。 它可以被配置成反相放大器,或同相放大器,或与
其它 OA 模块组合形成差分放大器。 OA 的输出回转速率可以用 OAPMx 位来配置最佳的稳定时间与功耗。
OAPMx = 00 时,OA 关闭,输出为高阻态。 当 OAPMx > 0 ,OA打开。 参数请参阅《特定器件的数
据手册》。
20.2.2 OA
输入
OA 具有可配置的输入选择。 +-端的信号输入可以通过 OANx OAPx 位进行独立选择并且可以被选择
为外部信号或内部信号。 OAxI0 OAxI1 是为每一个 OA 模块提供的外部信号。 OA0I1 为所有 OA 模块都
提供一个内部相连的同相输入。 OAxIA OAxIB 提供相关器件输入。 信号连接请参阅《器件数据表》。
当一种模式不需要外部反相输入时,设置 OANEXT 位可使内部反相输入对外可用。
20.2.3 OA
输出出和和反反馈馈路路线线
OA 具有可配置的输出选择,由 OAADCx 位和 OAFCx 位控制。 OA 输出信号可以内部传送到 ADC 输入
A12 (OA0), A13 (OA1) A14 (OA2),或者连接到这些 ADC 的输入和其外部引脚。 OA 输出信号也可以传
送到 ADC 输入 A1 (OA0), A3 (OA1) A5 (OA2),和相应的外部引脚。 OA 输出也可以通过设置 OAFCx
位连接到一个内部梯形电阻网络。 梯形电阻网络抽头可由 OAFBRx 位选择以提供可编程的增益放大功能。
20-1显示了 OA 输出和回馈线路配置。 当 OAFCx = 0 时,OA 为通用模式,器件的反馈在外部完成。 当
OAFCx > 0 OAADCx = 00 11 ,OA 的输出被保持在内部连接到器件。 当 OAFCx > 0 OAADCx=
01 10 ,OA输出由内部和外部两种路径连接到器件。
20-1. OA 输出出配配置
OAFCx OAADCx OA 输出出和反馈馈路线线
= 0 x0 OAxOUT 连接到外部引脚和 ADC 输入 A1, A3 A5
= 0 x1 OAxOUT 连接到外部引脚和 ADC 输入 A12, A13 A14
> 0 00 OAxOUT 只用作内部线路。
> 0 01 OAxOUT 连接到外部引脚和 ADC 输入 A12, A13 A14
> 0 10 OAxOUT 连接到外部引脚和 ADC 输入 A1, A3 A5
OAxOUT 内部连接到 ADC 输入 A12A13A14。外A12A13A14 引脚连接与 ADC
> 0 11 开。
20.2.4 OA
配置
OA 可以通过 OAFCx 位配置来拥有不同的放大功能,如20-2所列。
20-2. OA 模式式选选择
OAFCx OA 模式
000 通用运算放大器
001 用于三运放差分放大器的单位增益缓冲器
010 单位增益缓冲器
011 比较器
100 同相 PGA(比例放大)放大器
101 级连同相 PGA 放大器
110 反相 PGA 放大器
111 差分放大器
513
ZHCU032IDecember 2004Revised January 2012 OA
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
OA
操作
www.ti.com.cn
20.2.4.1 通用用运运算算放放大大器器模模式
在该模式下,反馈梯形电阻与 OAx 是分离的,并且由 OAxCTL0 位定义信号路径。 OAx 输入由 OAPx
OANx 位选择。 OAx 输出可以通过 OAxCTL0 位来选择连接到 ADC 输入通道。
20.2.4.2 用于于差差分分放放大大器器的的单单位位增增益益缓缓冲冲器
该模式下,OAx 的输出被连接到 OAx 的反相输入端,以此来提供一个单位增益缓冲器。 同相输入由 OAPx
位选择。 反相输入端的外部连接被禁用并且 OANx 位可随意设置。 通过梯形电阻,OAx 的输出也被路由来
作为三运放差分放大器的一部分。 该模式只用于三运放差分放大器结构。
20.2.4.3 单位位增增益益模模式
该模式下,OAx 的输出被连接到 OAx 的反相输入端以此来提供一个单位增益缓冲器。 同相输入由 OAPx
选择。 反相输入端的外部连接被禁用并且 OANx 位随意设置。 OAx 输出可以通过 OAxCTL0 位来选择连接
ADC 输入通道。
20.2.4.4 比较较器器模模式
该模式下,反馈梯形电阻与 OAx 的输出是独立的。 当 OARRIP = 0 时,RTOP被连接到 AVSSR底部被连接
AVCC。当 OARRIP = 1 时,梯形电阻的连接是相反的。 R顶部被连接到 AVCCR底部被连接到
AVSSOAxTAP 信号被连接到 OAx 的反相输入端以此来提供一个具有可编程门限电压的比较器,该电压由
OAFBRx 位确定。 同相输入由 OAPx 位选择。 通过一个外部正反馈电阻来增加迟滞。 反相输入端的外部连
接被禁用并且 OANx 位随意设置。 OAx 输出可以通过 OAxCTL0 位来选择连接到 ADC 输入通道。
20.2.4.5 同相PGA 模式
该模式下,OAx 的输出端被连接到 R顶部并且 R底部被连接到 AVSSOAxTAP 信号端被连接到 OAx 的反相输
入端以此来提供一个具有[1+OAxTAP 比值]增益的可编程同相放大器。 OAxTAP 比率由 OAFBRx 选择。 如
OAFBRx 位=0,增益为单位增益。 同相输入由 OAPx 位选择。 反相输入端的外部连接被禁用并且
OANx 位随意设置。 OAx 输出可以通过 OAxCTL0 位来选择连接到 ADC 输入通道。
20.2.4.6 级联联同同相PGA 模式
该模式允许 OA 信号在内部按照反相模式级联 2个或 3OA。 该模式下,当 OAPx = 11 时,OAx 的同相
输入端被连接到 OA2OUT (OA0)OA0OUT (OA1) OA1OUT (OA2)OAx 输出端可以通过 OAxCTL0
位来选择连接到 ADC 输入通道。
20.2.4.7 反相PGA 模式
该模式下,OAx 的输出端被连接到 R顶部R底部被连接到一个模拟多路复用器,它可以复用 OAxI0, OAxI1,
OAxIA或由 OANx 位选择的剩余 OAs 的一个输出端。 OAxTAP 信号端被连接到 OAx 的反相输入端以此来
提供一个具有 -OAxTAP 比率增益的反相放大器。 OAxTAP 比值由 OAFBRx 位选择。 同相输入由 OAPx
选择。 OAx 输出可以通过 OAxCTL0 位来选择连接到 ADC 输入通道。
:同时时使使用OAx 负输输入入作作为ADC 输入
当引脚连接到反相输入多路复用器时,也被用作了 ADC 的输入,由于内部线路上的压降,转
换误差可能上升到 5mV
514 OA ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
OA0
+
OA1
+
(V2 − V1) × R2
R1
Vdiff =
R2R1
V2
V1
www.ti.com.cn
OA
操作
20.2.4.8 差分分放放大大器器模模式
该模式允许 OA 信号在内部连接形成一个两运放或三运放的仪表放大器。20-2显示了一个具有 OA0
OA1 配置的双运放配置。 该模式下,通过经由反相 PGA 模式下的另一 OAxOAx 的输出端被连接到 R
R底部被断开来提供一个单位增益缓冲器。 该缓冲器与剩下的 12OAx 组合形成差分放大器。 OAx
输出可以通过 OAxCTL0 位来选择连接到 ADC 输入通道。
20-2显示了一个由 OA0 OA1 构成的两运放差分放大器。 控制寄存器的设置如20-3所示。 放大器
的增益由 OA1 OAFBRx 位决定,如20-4所示。 OAx 的相互连接如20-3所示。
20-3. 两运运放放差差分分放放大大器器控控制制寄寄存存器器设设置
设置
寄存存器二进进制
OA0CTL0 xx xx xx 00
OA0CTL1 000 111 0 x
OA1CTL0 11 xx xx x x
OA1CTL1 xxx 110 0 x
20-4. 两运运放放差差分分放放大大器器增增益益设设置
OA1 OAFBRx 增益
000 0
001 1/3
010 1
011 1 2/3
100 3
101 4 1/3
110 7
111 15
20-2. 两运运放放差差分分放放大大器
515
ZHCU032IDecember 2004Revised January 2012 OA
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
000
001
100
011
010
111
110
101
000
001
100
011
010
111
110
101
OAPMx
+
001
else
0
1
OAxR
TOP
000
OAPx
OAxI0
OA0I1
00
01
10
11
OAxIA
OAxIB
0
1OA0
000
001
100
011
010
111
110
101
3
000
001
100
011
010
111
110
101
3
4R
4R
2R
2R
R
R
R
R
OAFBRx
000
001
100
011
010
111
110
101
OAPMx
OA1
+
001
else
0
1
OAxR
TOP
000
OAPx
OAxI0
OA0I1
00
01
10
11
OAxIA
OAxIB
0
1
00
01
10
11
OAxFB
OAADCx
2
OA
操作
www.ti.com.cn
20-3. 两运运放放差差分分放放大大器OAx 的相相互互连连接
516 OA ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
OA1
+
OA2
+
R2R1
V2
V1
OA0
+
R2R1
(V2 − V1) × R2
R1
Vdiff =
www.ti.com.cn
OA
操作
20-4显示了使用 OA0OA1 OA2 构成的三运放差分放大器(三运放不是在所有的器件中都具有。 请
参阅《特定器件数据手册》。)。 控制寄存器的设置如20-5所示。 放大器的增益由 OA0 OA2
OAFBRx 位决定。 OA0 OA2 OAFBRx 位设定必须相同。 增益设置如20-6所示。 OAx 的相互连接
20-5所示
20-5. 三运运放放差差分分放放大大器器控控制制寄寄存存器器设设置
设置
寄存存器二进进制
OA0CTL0 xx xx xx 00
OA0CTL1 xxx 001 0 x
OA1CTL0 xx xx xx 0 0
OA1CTL1 000 111 0 x
OA2CTL0 11 11 xx x x
OA2CTL1 xxx 110 0 x
20-6. 三运运放放差差分分放放大大器器增增益益设设置
OA0/OA2 OAFBRx 增益
000 0
001 1/3
010 1
011 1 2/3
100 3
101 4 1/3
110 7
111 15
20-4. 三运运放放差差分分放放大大器
517
ZHCU032IDecember 2004Revised January 2012 OA
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
000
001
100
011
010
111
110
101
OAPMx
OA0
+
001
else
0
1
000
OAPx
OAxI0
OA0I1
00
01
10
11
OAxIA
OAxIB 0
1
000
001
100
011
010
111
110
101
000
001
100
011
010
111
110
101
OAPMx
OA1
+
001
else
0
1
OAxR
TOP
000
OAPx
OAxI0
OA0I1
00
01
10
11
OAxIA
OAxIB
0
1
000
001
100
011
010
111
110
101
000
001
100
011
010
111
110
101
3
4R
4R
2R
2R
R
R
R
R
OAFBRx
000
001
100
011
010
111
110
101
001
else
0
1
OA0TAP (OA2)
OAxRTOP
000
00
01
10
11
000
001
100
011
010
111
110
101
000
001
100
011
010
111
110
101
4R
4R
2R
2R
R
R
R
R
OAPMx
OA2
+
OAxFB
OAADCx
2
3
OAFBRx
OA
操作
www.ti.com.cn
20-5. 三运运放放差差分分放放大大器OAx 的相相互互连连接
518 OA ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
OA
寄存器
20.3 OA 寄存存器
20-7中列出了 OA 寄存器。
20-7. OA 寄存存器
寄存存器 简表表 寄寄存存器器类型 地地址 初态
OA0 控制寄存器 0 OA0CTL0 读取/写入 0C0h POR 复位
OA0 控制寄存器 1 OA0CTL1 读取/写入 0C1h POR 复位
OA1 控制寄存器 0 OA1CTL0 读取/写入 0C2h POR 复位
OA1 控制寄存器 1 OA1CTL1 读取/写入 0C3h POR 复位
OA2 控制寄存器 0 OA2CTL0 读取/写入 0C4h POR 复位
OA2 控制寄存器 1 OA2CTL1 读取/写入 0C5h POR 复位
519
ZHCU032IDecember 2004Revised January 2012 OA
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
OA
寄存器
www.ti.com.cn
20.3.1 OAxCTL0
,运运算算放放大大器器控制寄寄存存器
0
76543210
OANx OAPx OAPMx OAADCx
rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0
OANx 7-6 反向输入选择 这些位为 OA 反相输入选择输入信号。
00 OAxI0
01 OAxI1
10 OAxIA(请参阅《连接信号的器件专用数据手册》)。
11 OAxIB(请参阅《连接信号的器件专用数据手册》)。
OAPx 5-4 同相输入选择 这些位为 OA 同相输入选择输入信号。
00 OAxI0
01 OA0I1
10 OAxIA(请参阅《连接信号的器件专用数据手册》)。
11 OAxIB(请参阅《连接信号的器件专用数据手册》)。
OAPMx 3-2 转换率选择。 这些位为 OA 选择回转率与电流消耗。
00 关闭,输出高阻态 Z
01
10
11
OAADCx 1-0 OA 输出选择。 当 OAPMx > 0 时,这些位,和 OAFCx 位一起,控制 OAx 的输出路径。
OAFCx = 0 时:
00 OAxOUT 连接到外部引脚和 ADC 输入 A1, A3 A5
01 OAxOUT 连接到外部引脚和 ADC 输入 A12, A13 A14
10 OAxOUT 连接到外部引脚和 ADC 输入 A1, A3 A5
11 OAxOUT 连接到外部引脚和 ADC 输入 A12, A13 A14
OAFCx 0时:
00 OAxOUT 只用作内部线路。
01 OAxOUT 连接到外部引脚和 ADC 输入 A12, A13 A14
10 OAxOUT 连接到外部引脚和 ADC 输入 A1, A3 A5
11 OAxOUT 内部连接到 ADC 输入 A12A13A14。外A12A13A14 引脚连接与 ADC 断开。
520 OA ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
OA
寄存器
20.3.2 OAxCTL1
,运运算算放放大大器器控制寄寄存存器
1
76543210
OAFBRx OAFCx OANEXT OARRIP
rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0
OAFBRx 7-5 OAx 反馈电阻选择
000 抽头 0 - 0R/16R
001 抽头 1 - 4R/12R
010 抽头 2 - 8R/8R
011 抽头 3 - 10R/6R
100 抽头 4 - 12R/4R
101 抽头 5 - 13R/3R
110 抽头 6 - 14R/2R
111 抽头 7 - 15R/1R
OAFCx 4-2 OAx 功能控制。 该位选择 OAx 的功能
000 通用运算放大器
001 用于三运放差分放大器的单位增益缓冲器
010 单位增益缓冲器
011 比较器
100 同相 PGA(比例放大)放大器
101 级连同相 PGA 放大器
110 反相 PGA 放大器
111 差分放大器
OANEXT 1 OAx 反相输入外部可用。 当集成的电阻网络被使用时,该位,当被置位时,把反相 OAX 输入连接到外部引
脚。
0 OAx 反相输入在外部不可用。
1 OAx 反相输入在外部可用。
OARRIP 0在比较器模式中 OAX 的反向电阻器连接
0OAFCx = 3 时,R顶部被连接到 AVSSR底部被连接到 AVCC
1OAFCx = 3 时,R顶部被连接到 AVCCR底部被连接到 AVSS
521
ZHCU032IDecember 2004Revised January 2012 OA
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Chapter 21
ZHCU032IDecember 2004Revised January 2012
比较较器
_A+ (Comparator_A+)
比较器_A+ 是一个模拟电压比较器。 这一章阐述了 2xx 系列中比较器_A+ 的操作。
Topic ........................................................................................................................... Page
21.1 比较较器_A+ 介绍................................................................................................ 523
21.2 比较较器_A+ 的操操作............................................................................................. 524
21.3 比较较器_A+ 寄存存器............................................................................................. 529
522
比较器
_A+ (Comparator_A+) ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
CA1
CA2
CA3
CA4
CA5
CA6
CA7
CAOUT
+
CAEX
0.5xVCC
0.25xVCC
Set_CAIFG
CCI1B
+
0V
G
D
S
P2CA0
CAF
CARSEL
CAON
CAREFx
1 0
00
01
10
11
00
01
10
11
1
0
1
0
1
0
1
0
1
0
0V
1 0
Tau ~ 2.0ns
VCAREF
VCC
P2CA4
P2CA1
000
001
010
011
100
101
110
111
CASHORT
P2CA2
P2CA3
CA0
CA1
CA2
00
01
10
11
www.ti.com.cn
比较器
_A+
介绍
21.1 比较较器_A+ 介绍
比较器_A+ 模块支持精确的斜率模数转换,电源电压监控,和外部模拟信号的监控。
比较器_A+ 的特性包括:
反向和非反向的端子输入复用器
比较器输出的软件可选的 RC 滤波器
为定时器_A 的捕获输入提供的输出端
端口输入缓冲的软件控制。
中断功能
可选择的基准电压发生器
比较器和基准电压发生器可关闭
输入多路复用器
比较器_A+ 的结构框图如21-1所示。
21-1. 比较较器_A+ 方框框图
: MSP430G2210:通道 256,和 7是可用的。其他通道不应该被启用。
523
ZHCU032IDecember 2004Revised January 2012
比较器
_A+ (Comparator_A+)
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
比较器
_A+
的操作
www.ti.com.cn
21.2 比较较器_A+ 的操操作
可以通过用户软件对比较器_A+ 模块进行配置。 下面几个章节对比较器_A+的设置和操作进行了讨论。
21.2.1
比较较器
比较器在 +-端子比较模拟电压。 如若 +端子的电压比 -端子的高,则比较器输出 CAOUT 为高。 可以
通过使用控制位 CAON 来打开或者关闭该比较器。 在不使用该比较器时,应该将其关闭以减小电流消耗。
当比较器关闭时,CAOUT 总是低电平。
21.2.2
输入入模模拟拟开开关
通过使用 P2CAx 位,模拟输入开关可以把两个比较器的输入端连接到或者不连接相关的端口引脚。 可以单
独控制比较器的两个输入端子。 P2CAx 位允许:
将一个外部信号应用到比较器的+-两端子。
将一个内部基准电压路由到一个相应的输出端口引脚
在内部,为了抑制信号路径上的失真,输入开关被构造成一个 T型开关。
:比较较器器输输入入连连接
当比较器打开时,其输入端子应该连接到一个信号、电源或者接地。 否则,悬空水平会产生意
想不到的中断和增加电流消耗。
: MSP430G2210:比较器通道 0134被执行,但在器件引脚上不可用。 为了避免悬空输
入,不应该使能这些比较器的输入端。
CAEX 位控制输入多路复用器,交换连接到比较器 +-端子的输入信号。 另外,当比较器两端的信号被
交换时,比较器的输出信号会被反转。 这就使得用户可以测定或者补偿比较器输入的偏移电压。
524
比较器
_A+ (Comparator_A+) ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Sampling Capacitor, Cs
CASHORT
Analog Inputs
www.ti.com.cn
比较器
_A+
的操作
21.2.3
输入入短短路路开开关
CASHORT 位短路比较器_A+ 的输入。 它可以用来为比较器建立一个简单的采样保持器,如21-2中所
示。
21-2. 比较较器_A+ 的采采样样和和保保持
所需的采样时间与采样电容尺寸(CS),与短路开关(Ri)串联的输入开关电阻,以及外部信号源 (RS)的电阻的
大小成比例。总内部阻抗 (RI)处于典型值范围为 210kΩ。采样电容 CS应该大于 100pF。 该时间常
量,Tau,要改变采样电容 CS,可以用以下公式计算:
Tau = (RI+ RS) xCS
根据需要的精度,应该用 35倍的 Tau 作为采样时间。 用3倍的 Tau 采样电容大约可以对输入信号电压
电平进行 95% 的充电,用5倍的 Tau 可进行大于 99% 的充电,而用 10 倍的 Tau 采样的电压可以充分满
12 位的精度要求。
21.2.4
输出出滤滤波波器
比较器的输出可以使用内部的滤波器,也可以不使用。 当控制位 CAF 位被置位时,通过用一个片上电阻电
(RC) 滤波器来对输出进行滤波。
如果输入端子间的电压差比较小,任何比较器的输出都会振荡。 内部和外部的寄生作用以及信号线、电源
线,和系统的其他部分产生的耦合都会导致21-3中的行为。 比较器输出的振荡会降低比较结果的精度和
分辨率。 选择输出滤波器可以减少与比较器振荡相关的错误。
525
ZHCU032IDecember 2004Revised January 2012
比较器
_A+ (Comparator_A+)
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
VCC
VSS
ICCVO
VI
0 VCC
VI
VCC
ICC
CAPD.x = 1
+ Terminal
− Terminal Comparator Inputs
Comparator Output
Unfiltered at CAOUT
Comparator Output
Filtered at CAOUT
比较器
_A+
的操作
www.ti.com.cn
21-3. 在比比较较器器输输出出端端的RC 滤波波器器响响应
21.2.5
基准准电电压压发发生生器
基准电压发生器用来产生电压VCAREF,该电压被提供给比较器的输入端。CAREFx 位控制电压发生器的输
出。 CARSEL 位选择比较器端子使用哪个 VCAREF。 如果比较器的两个输入端都使用外部输入信号,那么为
了降低电流的消耗,应该关闭内部基准电压。 该基准电压发生器能够产生器件的VCC的一小部分或一个固定
的 ~0.55V 的晶体管的阈值电压。
21.2.6
比较较器
A+
,端端口口禁禁用用寄寄存
CAPD
比较器的输入和输出功能和相关的 I/O 端口引脚复合使用,这些引脚都是数字 CMOS 门。 当模拟信号被加
载到数字 CMOS 门时,会产生从 VCC 流向 GND 的寄生电流 如果输入电压接近门的转换电压,就会出现
寄生电流。 禁止端口引脚缓冲能够消除寄生电流的流动,从而可以减少整个电流的消耗。
CAPDx 位,当被置位时,会禁用相应的引脚端口输入和输出缓冲,如21-4所示。 当电流消耗非常重要
时,任何连接到模拟信号的端口引脚都应该通过其 CAPDx 位禁止。
通过 P2CAx 位为比较器复用器选择输入引脚时,不管其对应的 CAPDx 位状态如何,该引脚的输入和输出
缓冲都会自动禁止。
21-4. 一个CMOS 反相相器/缓冲冲器器中中的的传传输输特特性性和和功功耗
: MSP430G2210:通道 0134由引脚上不可用来执行。 为了避免输入悬空,不应该使用
这些输入。
526
比较器
_A+ (Comparator_A+) ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
+
CA0 CCI1B
Capture
Input
Of Timer_A
+
Rmeas
Rref
Px.x
Px.y
0.25xVCC
D Q IRQ, Interrupt Service Requested
Reset
VCC
POR
SET_CAIFG
IRACC, Interrupt RequestAccepted
CAIE
CAIES
0
1
www.ti.com.cn
比较器
_A+
的操作
21.2.7
比较较器
_A+
的中中断
如在21-5中所示,一个中断标志一个中断向量都与比较器_A+ 相关。 比较器输出端的上升沿或下降沿都
会使中断标志 CAIFG 置位,该中断可以由 CAIES 位选择。 如果 CAIE GIE 同时被置位,那么CAIFG
产生一个中断请求。 当中断请求被响应时,CAIFG 位会自动复位,也可以通过软件复位。
21-5. 比较较器_A+ 的中中断断系系统
21.2.8
比较较器
_A+
用于于测测量量电电阻阻元
为了精确地测量电阻元件,可以通过使用单一的斜率模数转换对比较器_A+ 进行优化。 例如,通过比较热
敏电阻电容和一个基准电阻电容的放电时间,该基准电阻如在21-6中所示,可利用热敏电阻把温度转换成
数字信号。把一个基准电阻 Rref Rmeas 进行比较。
21-6. 温度度测测量量系系统
下面是通过 Rmeas 计算温度传感所使用的 MSP430 的资源:
用来对电容进行充电和放电的两个数字 I/O 端口。
置位 I/O 输出高电平 (VCC)对电容进行充电,复位则对其放电。
当不使用 I/O 时,通过置位 CAPDx 位使其切换到高阻态输出。
一个输出通过 Rref 对电容进行充放电。
一个端口通过 Rmeas 对电容进行充放电。
+ 端子被连接到比较器的正端。
- 端子被连接到一个基准电平,例如 0.25 xVCC
使用输出滤波器最小化开关噪声。
CAOUT 使用门控制定时器_A CCI1B,捕获电容放电时间。
可以测量一个以上的电阻元件。 通过可用的 I/O 引脚,把额外的元件连接到CA0,且当不进行测量时,可把
其切换到高阻抗。
527
ZHCU032IDecember 2004Revised January 2012
比较器
_A+ (Comparator_A+)
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
ref
CC
ref
CC
V
meas V
meas
V
ref ref V
–R × C × ln
N=
N–R × C × ln
meas meas
ref ref
N R
=
N R
meas
meas ref
ref
N
R = R ×
N
VC
VCC
0.25 × VCC
Phase I:
Charge
Phase II:
Discharge
Phase III:
Charge
tref
Phase IV:
Discharge
tmeas
t
Rmeas
Rref
比较器
_A+
的操作
www.ti.com.cn
热敏电阻的测量是基于一个比例转换原理的。 两个电容放电时间的比率的计算显示在21-7中。
21-7. 温度度测测量量系系统统的的时时序
在转换期间,VCC电压和电容值应当保持恒定,但这不是很关键,因为在比率中它们可以抵消:
528
比较器
_A+ (Comparator_A+) ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
比较器
_A+
寄存器
21.3 比较较器_A+ 寄存存器
21-1中列出了比较器_A+ 寄存器。
21-1. 比较较器_A+ 寄存存器
寄存存器 简表表 寄寄存存器器类型 地地址址 初初始化状状态
比较器_A+ 控制寄存器 1 CACTL1 读取/写入 059h POR 复位
比较器_A+ 控制寄存器 2 CACTL2 读取/写入 05Ah POR 复位
比较器_A+ 端口禁用 CAPD 读取/写入 05Bh POR 复位
529
ZHCU032IDecember 2004Revised January 2012
比较器
_A+ (Comparator_A+)
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
比较器
_A+
寄存器
www.ti.com.cn
21.3.1 CACTL1
,比比较较器
_A+
控制制寄寄存存器
1
76543210
CAEX CARSEL CAREFx CAON CAIES CAIE CAIFG
rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0)
CAEX 7比较器_A+ 的交换。 该位交换比较器的输入和反转比较器的输出。
CARSEL 6比较器_A+ 的基准电压选择。 该位选择VCAREF被用于哪一端。
CAEX= 0 时:
0 VCAREF被应用于 +端子。
1 VCAREF被应用于 -端子。
CAEX= 1 时:
0 VCAREF被应用于 -端子。
1 VCAREF被应用于 +端子。
CAREF 5-4 比较器_A+ 的基准电压 这些位选择基准电压VCAREF
00 内部基准电压关闭 使用一个外部基准电源。
01 0.25 ×VCC
10 0.50 ×VCC
11 二极管基准电压被选择
CAON 3比较器_A+ 开启。 该位可以打开比较器。 当比较器关闭的时,它不消耗电流。 其参考电路可以被独立使能或
禁止。
0关闭
1打开
CAIES 2比较器_A+ 的中断沿选择
0上升沿
1下降沿
CAIE 1比较器_A+ 的中断使能
0被禁用
1被启用
CAIFG 0比较器_A+ 的中断标志
0无中断等待
1中断等待
530
比较器
_A+ (Comparator_A+) ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
比较器
_A+
寄存器
21.3.2 CACTL2
,比比较较器
_A+
,控控制制寄寄存存器
76543210
CASHORT P2CA4 P2CA3 P2CA2 P2CA1 P2CA0 CAF CAOUT
rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) r-(0)
CASHORT 7输入短路。 该位将输入的 +-端短路。
0输入没被短路
1输入被短路
P2CA4 6输入选择。 该位结合 P2CA0,在 CAEX=0时选择 +端输入,在 CAEX=1 时选择 -端输入。
P2CA3(1) 5-3 输入选择。 这些位在 CAEX=0时选择 -端输入,在 CAEX=1 时选择 +端输入。
P2CA2 000 无连接
P2CA1 001 CA1
010 CA2
011 CA3
100 CA4
101 CA5
110 CA6
111 CA7
P2CA0 2输入选择。 该位结合 P2CA4,在 CAEX=0 时选择 +端输入,在 CAEX= 1 时选择 -端输入。
00 无连接
01 CA0
10 CA1
11 CA2
CAF 1比较器_A+ 的输出滤波器
0比较器_A+ 的输出没被滤波
1比较器_A+ 的输出被滤波
CAOUT 0比较器_A+ 的输出 该位反映比较器输出的值。 对该位进行写入操作无效。
(1) MSP430G2210:只有通道256,和 7是可用的。 其他通道不应该被选择。
21.3.3 CAPD
,比比较较器
_A+
,端端口口禁禁用用寄寄存
76543210
CAPD7 CAPD6 CAPD5 CAPD4 CAPD3 CAPD2 CAPD1 CAPD0
rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0)
CAPDx(1) 7-0 比较器_A+ 端口禁用。 这些位可以独立地禁用与比较器_A+ 相关的针对端口引脚的输入缓冲区。 例如,如果
CA0 是连在引脚 P2.3 上的,可以用 CAPDx 位独立地启用或禁用每个 P2.x 的引脚缓冲器。 CAPD0 禁用
P2.0CAPD1禁用 P2.1,等等。
0该输入缓冲器被启用。
1该输入缓冲器被禁用。
(1) MSP430G2210:通道 256,和 7是可用的。 其他通道不应该被禁用。
531
ZHCU032IDecember 2004Revised January 2012
比较器
_A+ (Comparator_A+)
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Chapter 22
ZHCU032IDecember 2004Revised January 2012
ADC10
ADC10 模块是一个高性能的 10 位模数转换器。 本章概括的描述了 2xx 系列中 ADC10 模块的运行。 器件
中有不到 8个外部输入通道。
Topic ........................................................................................................................... Page
22.1 ADC10 介绍..................................................................................................... 533
22.2 ADC10 的运运行.................................................................................................. 535
22.3 ADC10 寄存存器.................................................................................................. 551
532 ADC10 ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
ADC10
介绍
22.1 ADC10 介绍
ADC10 模块支持快速,10 位模数转换。 该模块应用了一个 10 位逐次逼近 (SAR) 内核,采样选择控制,基
准电压产生器和数据传递控制器 (DTC)
DTC 允许 ADC10 样本被转换和存储在任何其它寄存器单元而无需 CPU的干预。 模块可以经过用户软件配
置后支持不同的应用。
ADC10 模块特征如下:
大于 200ksps 的最大转换速率
无失码的单片 10 位转换器
带有可编程采样周期的采样保持功能
通过软件或 定时器_A 初始化转换
软件可选片上基准电压(1.5V 2.5V
软件可选内部或外部基准电压
高达 8个外部输入通道(MSP430F22xx 器件上 12 个)
内部温度传感器的转换通道,VCC,和外部基准电压
可选的转换时钟源
单通道单次,单通道多次,序列通道单次和序列通道多次转换模式
ADC 内核和基准电压都可以独立关闭
自动存储转换结果的数据转换控制器
ADC10 模块的芳框图如22-1所示。
533
ZHCU032IDecember 2004Revised January 2012 ADC10
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Sample
and
Hold 10−bitSAR Divider
/1 ../8
AVCC
ACLK
MCLK
SMCLK
ADC10SC
TA1
TA0
Data Transfer
Controller RAM, Flash, Peripherials
VRVR+
VeREF+
VREF+
ADC10ON
INCHx
REFBURST
ADC10SSELx
ADC10DIVx
SHSx
ADC10SHTx MSC
ENC
BUSY
ADC10DF
ADC10CLK
SREF2
ADC10TB ADC10B1ADC10CT
ISSH
ADC10SR
ADC10OSC
Ref_x
S/H Convert
SAMPCON
1
0
Sync
Sample Timer
/4/8/16/64
SHI
ADC10SA
n
4
A0
A1
A2
A3
A4
A5
A6
A7
REFON
INCHx=0Ah
2_5V
1.5Vor 2.5V
Reference
on
Ref_x
SREF1
00
01
10
11
00
01
10
11
00
01
10
11
00
01
10
11
000111
01
SREF0
10
CONSEQx
AV
SS
1
0
INCHx=0Bh
Auto
ADC10MEM
R
R
0
1
REFOUT
SREF1
1001
1000
0010
0001
0011
0100
0101
0110
0111
0000
1011
1010
0001
1111
1110
1101
1100
A12
A13
A14
A15
MSP430F22xxdevicesonly.Channels A12-A15areavailablein Channels A12-A15tiedtochannel A11inotherdevices.Not
allchannelsareavailableinalldevices.
‡TA1onMSP430F20x2,MSP430G2x31,andMSP430G2x30devices
VREF/VeREF−
AVCC
AV
SS
AVCC
TA2
ADC10
介绍
www.ti.com.cn
22-1. ADC10 方框框图
534 ADC10 ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
R ~ 100Ohm
ESD Protection
INCHx
Input
Ax
IN R–
ADC
R+ R–
V – V
N = 1023 ×
V – V
www.ti.com.cn
ADC10
的运行
22.2 ADC10 的运运行
ADC10 模块可由用户软件配置。 ADC10 的运行和建立在下列章节中进行讨论。
22.2.1 10
ADC
内核
ADC 内核将一个模拟量的输入转化成 10 位数字形式,结果保存在 ADC10MEM 寄存器中。 内核利用两个
可编程/可选择的基准电平(VR+VR-)来定义转换范围的最大值和最小值。 当输入信号等于或高于 VR+ 时,数
字输出 (NADC)为满量程(03FF,当输入信号等于或低于 VR-时,输出为零。 输入通道和基准电平(VR+VR-在转换控
制寄存器中进行了定义。 转换的结果为直接的二进制形式或二的补码形式。 在使用直接二进制形式
时,ADC 结果的转换公式为:
ADC10 内核由 ADC10CTL0 ADC10CTL1 两个控制寄存器完成配置。 内核使能由 ADC10ON 位控制。
大多数情况下,只有在 ENC=0 时,ADC10 的控制位才可以被修改。在进行任何转换前 ENC 位必须设为
1
22.2.1.1 转换换时时钟钟选选择
ADC10CLK 既可以作为转换时钟也可用于产生采样周期。 ADC10 源时钟可以用 ADC10SSELX 位来选择,
也可以由 ADC10DIVx 位进行 18分频。 可选的 ADC10CLK 源有 SMCLKMCLKACLK 和内部的振
荡器ADC10OSC
ADC10OSC 由内部产生,在 5MHz 范围内,但会随着器件本身,供电电压,和温度而改变。 对于
ADC10OSC说明,请参阅《器件专用数据表》。
用户必须保证在转换结束前所选择的 ADC10CLK 都保持在活动状态。 如果在转换期间时钟被去除,转换将
无法完成,并且结果无效。
22.2.2 ADC10
输入入和和多多路路器
模拟输入多路器可以选择 8个外部和 4个内部模拟信号接口作为转换通道。 输入模拟多路器是先关后开型
开关以此来减少因通道切换而引入的噪声(请见22-2)。 输入模拟多路器也是一个 T型开关,可以减少
通道间的耦合。 未选择的通道与 A/D 分开,并且中间接点被连接到模拟接地 (VSS)端以便于寄生电容接地从
而减少噪声。
ADC10 利用电荷再分配原理。 当输入在内部切换时,切换动作可能在输入信号上引起瞬变。 这些瞬变衰减
和解决之前会导致错误的转换。
22-2. 模拟拟多多路路复复用用器
535
ZHCU032IDecember 2004Revised January 2012 ADC10
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
ADC10
的运行
www.ti.com.cn
22.2.2.1 模拟拟端端口口选选择
ADC10 外部输入 AxVeREF+,和VREF-和通用 I/O 端口共享端子,通用端口是数字 CMOS栅极(请参阅《器
件专用数据表》)。 当模拟信号被应用到数字 CMOS 栅极时,寄生电流可以从 VCC 流向 GND。 如果输
入电压接近该门的转换电平时,就会产生寄生电流。 禁用端口引脚缓冲器防止了寄生电流流过,因此可降低
总电流消耗。 ADC10AEx 位提供了禁用端口引脚的输入和输出缓冲器的功能。
; P2.3 on MSP430F22xx device configured for analog inputBIS.B #08h,&ADC10AE0 ; P2.3 ADC10
function and enable
没有全部 ADC10 外部输入通道 Ax 或没有在器件引脚可用的VeREF+/VREF+VeREF-/VREF-的器件不得更改不可用
引脚的默认寄存器位的配置。 请参阅《器件专用数据表》。
22.2.3
基准准电电压压产产生生器
ADC10 模块包含一个内置的电压基准带有两个可选的电压电平。 设置 REFON=1 使能内部基准。 当
REF2_5V=1 时,内部基准是 2.5V。当 REF2_5V=0 时,基准是 1.5V。内部基准电压可用于内部
(REFOUT=0) 并且,当REFOUT=1 时,引脚上外部地 VREF+。如果引脚 VREF+VREF-可用,REFOUT=1
仅用于器件引脚。
外部基准电压可以分别通过引脚 A4 A3 应用于 VR+VR-。 当外部基准电压被使用时,或当VCC被用作基
准电压时,可以关闭内部基准电压以减少功耗。
一个外部正基准电压 VeREF+可以通过设置SREF0=1 SREF1=1(仅适于带有 VREF+引脚的器件)被缓冲。
这就在缓冲电流的成本上允许了使用一个带有大的内部电阻的外部基准电压。 当REFBURST=1 时,增加的
电流消耗受采样和转换周期的限制。
正如在ADC12 上一样,ADC10 基准源同样不需要外部存储电容。
22.2.3.1 内部部参参考考电电压压低低功功耗耗特特性
ADC10 的内部基准电压产生器是为低功耗应用而设计的。 该基准电压产生器包括一个帯隙电源和一个独立
的缓冲器。 每个器件的电流消耗在《特定的器件数据手册》中分别有详细说明。 当 REFON=1 时,两者都
被启用并且当 REFON=0 时,二者都被禁用。 当 REFON 变为 1时 的总设定时间约为 30μs
REFON=1,所有转换都被禁用,缓冲器自动禁用并且在需要进行转换时自动重新使能。 当缓冲器被禁用
时,无电流消耗。 这种情况下,带隙电源保持使能。
REFOUT=1 时,REFBURST 位控制内部基准缓冲器的运行。 当 REFBURST=0 时,缓冲器持续打开,
允许基准电压持续存在于器件外部。 当 REFBURST=1 时,缓冲器自动被禁用ADC10 模块不进行活动转换
并且需要时,自动重新打开。
内部基准缓冲器也可以对转换速度和功耗设置进行选择。 当最大转换率低于 500ksps 时,设置
ADC10SR=1 可以减少约 50% 的缓冲器的电流消耗。
22.2.4
自动动关关断
ADC10 是为低功耗应用而设计的。 当 ADC10 没有活动转换时,内核自动被禁用并且在需要时会自动重新
使能。 该ADC10OSC 同样也是在需要时,自动使能而在不需要时,自动禁用。 当内核或振荡器被禁用时,
无电流消耗。
22.2.5
采样样和和转转换换时时序
一个数模转换由一个采样输入信号SHI 的上升沿启动。 SHI 信号源可以通过 SHSx 位来选择,包括如下:
ADC10SC
定时器_A 输出单元 1
536 ADC10 ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
RSRI
VSVC
MSP430
CI
VI
VI= Input voltage at pin Ax
VS= External source voltage
RS= External source resistance
RI= Internal MUX-on input resistance
CI= Input capacitance
VC= Capacitance-charging voltage
Start
Sampling
Stop
Sampling
Conversion
Complete
SAMPCON
SHI
tsample tconvert
tsync
13 x ADC10CLKs
Start
Conversion
ADC10CLK
www.ti.com.cn
ADC10
的运行
定时器_A 输出单元 0
定时器_A 输出单元 2
SHI 信号源的极性可以通过 ISSH 位来反转。 SHTx 位可以选择采样周期 t采样4816 64
ADC10CLK 周期。 在与ADC10CLK 同步后,采样定时器为选择的采样周期设置 SAMPCON 为高。总采样
时间是 t采样加上t同步SAMPCON 由高到低变化时开始模数转换,该转换需要 13 ADC10CLK 周期,如
22-3所示。
22-3. 采样样时时序
22.2.5.1 采样样时时序序注注意意事事项
SAMPCON=0 时,所有的 Ax 输入均为高阻态 当 SAMPCON=1 时,在采样时间t采样期间,被选择的 Ax
输入相当于一个 RC 低通滤波器,如22-4所示。 一个内部 MUX 上输入电阻 RI(最大2kΩ)被认为是由
源极和电容器 CI(最大 27pF)串连在一起。电容器 CI电压 VC必须被充电至电源电压 VS½ LSB 范围内,
以此来进行精度为 10 位的转换。
22-4. 模拟拟输输入入等等效效电电路
RSRI的电阻影响 t采样。下列公式可被用于计算一个 10 位转换的最小采样时间。
t采样> (RS+RI) ×ln (211) ×CI
RICI的代入值在上面已经给出,公式变为:
t采样> (RS+2kΩ) × 7.625 × 27pF
例如,如果 RS10kΩ,那么 t采样必须大于 2.47µs
当基准缓冲器被用于突发模式时,采样时间必须大于计算出的采样时间和缓冲器的稳定时间tREFBURST
537
ZHCU032IDecember 2004Revised January 2012 ADC10
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
t >
sample
(R + R ) × ln(2 ) × C
S I I
11
tREFBURST
{
ADC10
的运行
www.ti.com.cn
例如,当 ADC10SR=0 ,如果 VRef1.5V RS10kΩ, t采样必须大于 2.47µs,或当ADC10SR=1 时,采
样时间必须大于2.5µs 参数请参阅《器件专用数据表》。
当使用一个外部基准电压时,为了计算缓冲器的稳定时间,使用的公式是:
tREFBURST= SR×VRef0.5 µs
其中:
SR = 缓冲器转换率(当 ADC10SR=0 时,为 ~1 µs/V 和当 ADC10SR=1 时,为 ~2 µs/V
VRef=外部基准电压
22.2.6
转换换时时间
ADC10 有四个可由 CONSEQx 位选择的运行模式,在22-1中进行讨论。
22-1. 转换换模模式式概概述
CONSEQx 模式式 运运行
00 单通道单次转换 一个单通道被转换一次
01 通道序列 一个通道序列被转换一次
10 单通道重复转换 一个单通道被重复转换
11 通道序列重复转换 一个通道序列被重复转换
538 ADC10 ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
ADC10
Off
x = INCHx
Wait for Enable
ENC =
Wait for Trigger
Sample, Input
Channel
ENC =
ENC =
SHS = 0
and
ENC = 1 or
and
ADC10SC =
SAMPCON =
Convert
ENC = 0
ENC = 0
12 x ADC10CLK
Conversion
Completed,
Result to
ADC10MEM,
ADC10IFG is Set
1 x ADC10CLK
Conversion result is unpredictable
ENC = 0
ADC10ON = 1
CONSEQx = 00
(4/8/16/64) x ADC10CLK
x = input channel Ax
www.ti.com.cn
ADC10
的运行
22.2.6.1 单通通道道单单次次转转换换模模式
一个 INCHx 选择的单通道被采样和转换一次。 ADC 结果被写入 ADC10MEM22-5显示了单通道单次
转换模式的流程。 当ADC10SC 触发一次转换时,连续的转换可有 ADC10SC 位来触发。 当使用任何其它
触发源时,必须在每次转换间切换 ENC
22-5. 单通通道道单单次次转转换换模模式
539
ZHCU032IDecember 2004Revised January 2012 ADC10
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
ADC10
Off
x = INCHx
Wait for Enable
ENC =
Wait for Trigger
Sample,
Input Channel Ax
ENC =
ENC =
SHS = 0
and
ENC = 1 or
and
ADC10SC =
SAMPCON =
Convert
12 x ADC10CLK
Conversion
Completed,
Result to ADC10MEM,
ADC10IFG is Set
1 x ADC10CLK
ADC10ON = 1
CONSEQx = 01
MSC = 1
and
x0
x = 0
If x > 0 then x = x −1
MSC = 0
and
x0
(4/8/16/64) x ADC10CLK
If x > 0 then x = x −1
x = input channel Ax
ADC10
的运行
www.ti.com.cn
22.2.6.2 通道道序序列列模模式
一个通道序列被采样和转换一次 序列从 INCHx 选择的通道开始并且递减到通道 A0。 每一个 ADC 结果都被
写入 ADC10MEM。 该序列在通道 A0 转换后停止。22-6显示了通道序列模式。 当 ADC10SC 触发一个
序列时,连续的序列可有 ADC10SC 位来触发。 当使用任何其它触发源时,必须在每个序列间切换 ENC
22-6. 通道道序序列列模模式
540 ADC10 ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
ADC10
Off
x = INCHx
Wait for Enable
ENC =
Wait for Trigger
ENC =
ENC =
SHS = 0
and
ENC = 1 or
and
ADC10SC =
SAMPCON =
(4/8/16/64) × ADC10CLK
Convert
12 x ADC10CLK
Conversion
Completed,
Result to ADC10MEM,
ADC10IFG is Set
1 x ADC10CLK
ADC10ON = 1
CONSEQx = 10
MSC = 1
and
ENC = 1
ENC = 0
MSC = 0
and
ENC = 1
Sample,
Input Channel Ax
x = input channel Ax
www.ti.com.cn
ADC10
的运行
22.2.6.3 单通通道道重重复复模模式
一个 INCHx 选择的单通道被连续采样和转换。 每个 ADC结果都被写入 ADC10MEM22-7显示了单通
道重复模式。
22-7. 单通通道道重重复复模模式
541
ZHCU032IDecember 2004Revised January 2012 ADC10
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
ADC10
Off
x = INCHx
Wait for Enable
ENC =
Wait for Trigger
Sample
Input Channel Ax
ENC =
ENC =
SHS = 0
and
ENC = 1 or
and
ADC10SC =
Convert
12 x ADC10CLK
Conversion
Completed,
Result to ADC10MEM,
ADC10IFG is Set
1 x ADC10CLK
ADC10ON = 1
CONSEQx = 11
MSC = 1
and
(ENC = 1
or
x0)
ENC = 0
and
x = 0
MSC = 0
and
(ENC = 1
or
x0)
If x = 0 then x = INCH
else x = x −1
(4/8/16/64) x ADC10CLK
If x = 0 then x = INCH
else x = x −1
x = input channel Ax
SAMPCON =
ADC10
的运行
www.ti.com.cn
22.2.6.4 通道道的的重重复复序序列列模模式
一个通道序列被重复采样和转换。 序列从 INCHx 选择的通道开始并且递减到通道 A0。 每一个 ADC 结果都
被写入 ADC10MEM。序列在通道 A0 转换后结束,并且下一个触发信号重启序列。22-8显示了通道的重
复序列模式。
22-8. 通道道的的重重复复序序列列模模式
542 ADC10 ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
ADC10
的运行
22.2.6.5 使使用MSC
为了配置转换器以使其能自动的执行连续转换并且尽可能的快速,可以使用一个多路采样和转换功能。 当
MSC=1 CONSEQx>0 时,SHI 信号源的第一上升沿首先转换。 转换完成前,连续转换被快速并自动的
触发。 在单序列模式中,序列完成前或在单通道重复模式或重复序列中,ENC 位被切换前,SHI 上的其他
上升沿都被忽略。 当使用 MSC 位时,ENC 位的功能不能更改。
22.2.6.6 停止止转转换
停止 ADC10 活动取决于运行模式。 建议的停止一个活动转换或转换序列的方法是:
在单次转换模式中复位 ENC 可以立即停止一个转换并且结果是不可预知的。 想要获得正确的结果,在
清除 ENC 前应轮询 ADC10BUSY 位直到复位开始。
在单通道重复运行器件复位 ENC 可以在当前转换结束时停止转换。
在一个序列或重复序列中复位 ENC 可以在序列结束时停止转换。
通过设置 CONSEQx=0 和复位 ENC 位可以立即停止任何转换模式。 转换数据不可信。
22.2.7 ADC10
数据据传传输输控控制制器
ADC10 包括一个数据传输控制器 (DTC) 来自动传输从 ADC10MEM 到其他片上存储器位置的转换结果。 通
过把ADC10DTC1 寄存器设置为一个非零值来使能 DTC
DTC 被启用时,每次 ADC10 完成一个转换和下载结果到 ADC10MEM 时,一个数据传输都会被触发。
预订量的转换数据被传输前,无需软件干预来管理ADC10。每DTC 传输需要一个 CPU MCLK。在DTC
传输期间,为了避免总线内容,CPU 应该被暂停,如果没被暂停,传输器需要一个 MCLK
ADC10 占用期间,不应启动一个 DTC 传输器。 当 DTC 被配置时,软件必须保证没有活动的转换或序
列正在进行。
; ADC10 activity testBIC.W #ENC,&ADC10CTL0 ;busy_test BIT.W #BUSY,&ADC10CTL1 ;JNZ busy_test
;MOV.W #xxx,&ADC10SA ; SafeMOV.B #xx,&ADC10DTC1 ;; continue setup
543
ZHCU032IDecember 2004Revised January 2012 ADC10
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
ADC10SA
ADC10SA+2
ADC10SA+2n−2
ADC10SA+2n−4
1st transfer
’n’th transfer
2nd transfer
TB=0
DTC
ADC10
的运行
www.ti.com.cn
22.2.7.1 一个个数数据据块块传传输输模模式
如果 ADC10TB 被复位,那么一个块传输模式将会被选用。 对于一个数据块,ADC10DTC1 中的 n值定义
了传输的总数量。 可以利用 16 位寄存器 ADC10SA MSP430 任何地址范围内定义块的起始地址。 块结
束地址为 ADC10SA+2n-2。该一个块传输模式如22-9所示。
22-9. 一个个块块传传输
内部地址指针最初为 ADC10SA,内部传输计数器等于 ‘n’。 内部指针和计数器对软件是不可见的。DTC
ADC10MEM 的字值到地址指针 ADC10SA。每DTC传输后,内部地址指针增加 2同时内部传递计数
器减 1
DTC 随着 ADC10MEM 的每次装载连续传递,直到内部传递计数器变为 0。 直到一个值被写入
ADC10SADTC 才会停止其他的数据传递。 当在一个数据块模式中使用DTC 时,ADC10IFG 标志仅会在
一个完整的块被传输后才会被设置。22-10显示了一个块模式的状态图表。
544 ADC10 ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
DTC idle
DTC reset
n=0 (ADC10DTC1)
Initialize
Start Address in ADC10SA
Wait untilADC10MEM
is written
Wait
for
CPU ready
Write to ADC10MEM
completed
Transfer data to
Address AD
AD = AD + 2
x = x − 1
Synchronize
with MCLK
1 x MCLK cycle
n is latched
in counter ’x’
x > 0
DTC init
Wait for write to
ADC10SA
Write to
ADC10SA
Write to ADC10SA
x = 0
Prepare
DTC
DTC
operation
Write to ADC10SA
or
n = 0
Write to ADC10SA
x = n
AD = SA
n = 0
ADC10IFG=1
ADC10TB = 0
and
ADC10CT = 0
ADC10TB = 0
and
ADC10CT = 1
n0
www.ti.com.cn
ADC10
的运行
22-10. 在一一个个块块传传输输模模式式中中的的数数据据传传输输控控制制状状态态图图表
545
ZHCU032IDecember 2004Revised January 2012 ADC10
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
ADC10
的运行
www.ti.com.cn
22.2.7.2 两个个块块传传输输模模式
如果 ADC10TB 被设置,那么两个块传输模式将会被选用。 对于一个块,ADC10DTC1 中的 n值定义了传
输的数量。 可以利用 16 位寄存器 ADC10SA MSP430 任何地址范围内定义第一个块的地址范围。 第一
个块结束地址为ADC10SA+2n-2。 第二个块的地址范围被定义为 SA+2n SA+4n-2。 两个块传输模式如
22-11所示。
22-11. 两个个块块传传输
内部地址指针最初为 ADC10SA,内部传递计数器等于 ‘n’。 内部指针和计数器对软件是不可见的。DTC
ADC10MEM 的字值到地址指针 ADC10SA。每DTC传递后,内部地址指针增加 2同时内部传递计数
器减 1
DTC 随着 ADC10MEM 的每次装载连续传递,直到内部传递计数器变为 0。 在这时,块一已装
满,ADC10IFG 标志ADC10B1 位都被设置 用户可以通过测试 ADC10B1 位来判断块一是否已装满。
DTC 继续传递块 2。 内部传递计数器自动重装‘n’ 在下次装载 ADC10MEM 时,DTC 开始传递转换结果到块
2。完n次传递后,块 2被装满。 ADC10IFG 标志被设置和ADC10B1 位被清除。 用户软件可以通过测
ADC10B1 位是否清除来判断块 2是否装满。22-12显示了两个块模式的状态图表。
546 ADC10 ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
DTC idle
DTC reset
ADC10B1 = 0
ADC10TB = 1
n=0 (ADC10DTC1)
Initialize
Start Address in ADC10SA
Wait untilADC10MEM
is written
Wait
for
CPU ready
Write to ADC10MEM
completed
Transfer data to
Address AD
AD = AD + 2
x = x − 1
Synchronize
with MCLK
1 x MCLK cycle
n is latched
in counter ’x’
x > 0
DTC init
Wait for write to
ADC10SA
Write to
ADC10SA
Write to ADC10SA
x = 0
Prepare
DTC
DTC
operation
Write to ADC10SA
or
n = 0
ADC10IFG=1
Toggle
ADC10B1
Write to ADC10SA
x = n
If ADC10B1 = 0
then AD = SA
ADC10B1 = 1
or
ADC10CT=1
ADC10CT = 0
and
ADC10B1 = 0
n = 0
n0
www.ti.com.cn
ADC10
的运行
22-12. 在两两个个块块传传输输模模式式中中的的数数据据传传输输控控制制状状态态图图表
547
ZHCU032IDecember 2004Revised January 2012 ADC10
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
ADC10
的运行
www.ti.com.cn
22.2.7.3 连续续传传输
如果 ADC10CT 被设置,那么连续传输模式将会被选用。 当块一(一个块传输模式)或块二(两个块模
式)完成传递后,DTC 不停止。 内部地址指针和数据传递计数器分别被设置等于 ADC10SA n时。 块一
开始后,进行连续传递。 如果 ADC10CT 位被复位,在当前的数据完整的传输进块一(一个块模式)或块
二(两个块模式)后,DTC 传递停止。
22.2.7.4 DTC 传输输周周期期时时间
对于每个 ADC10MEM 传递,DTC 需要一或二个 MCLK 周期来实现同步,一个周期 用于实际的传递(CPU
暂停时)和一个周期的等待时间。因为 DTC 使用 MCLKDTC 的周期时间取决于 MSP430 的工作模式和
时钟系统设置。
如果 MCLK 处在活动状态,但 CPU 停止时,DTC 使用 MCLK 时钟源进行每次的传递,无需重新使能
CPU 。如MCLK 时钟源关闭,只有在一次传递过程中,DTC 才暂时重新起始来自 DCOCLK MCLK
CPU 仍然关闭,在 DTC 传递后,MCLK 又重新关闭。 在所有工作模式下的最大 DTC 周期时间如22-2
示。
22-2. 最大DTC 周期期时时间
CPU 运行行模 时钟钟源 最大DTC 期时时间
激活模式 MCLK=DCOCLK 3 MCLK 周期
激活模式 MCLK=LFXT1CLK 3 MCLK 周期
低功耗模式 LPM0/1 MCLK=DCOCLK 4 MCLK 周期
低功耗模式 LPM3/4 MCLK=DCOCLK 4 MCLK 周期 + 2µs(1)
低功耗模式 LPM0/1 MCLK=LFXT1CLK 4 MCLK 周期
低功耗模式 LPM3 MCLK=LFXT1CLK 4 MCLK 周期
低功耗模式 LPM4 MCLK=LFXT1CLK 4 MCLK 周期 + 2µs(1)
(1) 额外的 2µs 被用于启动 DCOCLK。参数请参阅《器件专用数据表》。
22.2.8
使使用用集集成成温温度度传感器
想要使用片上温度传感器,应选择模拟输入通道 INCHx=1010。就象选择一个外部通道一样完成了任何其它
配置,包括基准电压选择,转换寄存器选择等等。
典型的温度传感器传递功能22-13所示。 使用温度传感器时,采样周期必须大于 30μs。 温度传感器偏置
误差比较大。 在应用中所产生的绝对温度值需要进行校准。 参数请参阅《器件专用数据表》。
选择温度传感器后,将自动打开片上基准电平发生器作为温度传感器的电压源。 然而,对于转换,它却不会
使能VREF+输出或影响基准电平的选择。 用于温度传感器的基准电平的选择与其它通道一样。
548 ADC10 ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Digital
Power Supply
Decoupling
100nF10uF
Analog
Power Supply
Decoupling
(if available)
100nF10uF
DV
CC
DV
SS
AVCC
AVSS
Celsius
Volts
0 50 100
1.000
0.800
0.900
1.100
1.200
1.300
−50
0.700
VTEMP=0.00355(TEMP
C)+0.986
www.ti.com.cn
ADC10
的运行
22-13. 典型型的的温温度度传传感感器器传传输输功功能
22.2.9 ADC10
接地地和和噪噪声声考考虑
就如高分辨率的 ADC,消除接地环路,有害的寄生效应,和噪音,需遵循印刷电路板布局和接地技术。
当回路电流从 A/D 流经其他的模拟或数字电路的公共回路时,会形成地接地环路。 如果不小心,这个电流
会产生小的不必要的偏移电压,该电压可以增加或减少 A/D 转换器的基准电压或输入电压。 22-14
22-15所示的连接方法可以避免这些。
除了接地,由于切换数字或切换电源在电源线路上产生的纹波和噪声脉冲会影响转换的结果。 一个无噪声的
设计对达到高精度的转换是非常重要的。
22-14. ADC10 接地地和和噪噪声声考考虑虑((内内部VREF
549
ZHCU032IDecember 2004Revised January 2012 ADC10
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
D Q IRQ, Interrupt Service Requested
Reset
ADC10CLK
POR
’n’ = 0
Set ADC10IFG
IRACC, Interrupt RequestAccepted
ADC10IE
Digital
Power Supply
Decoupling
100nF10uF
100nF10uF
Using an External
Positive Reference
Using an External
Negative Reference
DV
CC
DV
SS
AVCC
AVSS
V
REF- /V
eREF-
V
REF+/V
eREF+
Analog
Power Supply
Decoupling
(if available)
ADC10
的运行
www.ti.com.cn
22-15. ADC10 接地地和和噪噪声声考考虑虑((外外部VREF
22.2.10 ADC10
中断
ADC10 相关的一个中断和一个中断向量如22-16所示。 当不使用 DTC (ADC10DTC1=0),转换结果装
载到 ADC1OMEM 时,ADC10IFG 被设置。 当使用 DTC (ADC10DTC1 > 0),一个数据块传递完成和内
部传递计数器‘n’ = 0 时,ADC10IFG 被设置。如果 ADC10IE GIE 位都被设置,然后ADC10IFG 标志产生
一个中断请求。 当中断请求被响应后,ADC10IFG 标志自动复位,或者也可以通过软件复位。
22-16. ADC10 中断断系系统
550 ADC10 ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
ADC10
寄存器
22.3 ADC10 寄存存器
ADC10 寄存器在22-3中列出。
22-3. ADC10 寄存存器
寄存存器 简表表 寄寄存存器器类型 地地址 初态
ADC10 输入使能寄存器 0 ADC10AE0 读取/写入 04Ah POR 复位
ADC10 输入使能寄存器 1 ADC10AE1 读取/写入 04Bh POR 复位
ADC10 控制寄存器 0 ADC10CTL0 读取/写入 01B0h POR 复位
ADC10 控制寄存器 1 ADC10CTL1 读取/写入 01B2h POR 复位
ADC10 存储器 ADC10MEM 读取 01B4h 未改变
ADC10 数据传输控制寄存器 0 ADC10DTC0 读取/写入 048h POR 复位
ADC10 数据传输控制寄存器 1 ADC10DTC1 读取/写入 049h POR 复位
ADC10 数据传输起始地址 ADC10SA 读取/写入 01BCh 0200h POR
551
ZHCU032IDecember 2004Revised January 2012 ADC10
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
ADC10
寄存器
www.ti.com.cn
22.3.1 ADC10CTL0
ADC10
控制制寄寄存存器
0
15 14 13 12 11 10 9 8
SREFx ADC10SHTx ADC10SR REFOUT REFBURST
rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0)
76543210
MSC REF2_5V REFON ADC10ON ADC10IE ADC10IFG ENC ADC10SC
rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0)
只有当ENC=0 时可以被修改
SREFx 15-13 选择基准
000 VR+= VCCVR-= VSS
001 VR+= VREF+VR-= VSS
010 VR+= VeREF+VR-= VSS。 只由 VeREF+的器件。
011 VR+=缓冲的 VeREF+VR-= VSS。 只有 VeREF+引脚的器件。
100 VR+= VCCVR-= VREF-/ VeREF-。 只有 VeREF-引脚的器件。
101 VR+= VREF+VR-= VREF-/ VeREF-。 只有 VeREF+/- 引脚的器件。
110 VR+= VeREF+ VR-= VREF-/ VeREF-。 只有 VeREF+/- 脚的器件。
111 VR+=缓冲的 VeREF+ VR-= VREF-/ VeREF-。 只有 VeREF+/- 引脚的器件。
ADC10SHTx 12-11 ADC10 采样保持时间
00 4 ×ADC10CLK
01 8 ×ADC10CLK
10 16 ×ADC10CLK
11 64 ×ADC10CLK
ADC10SR 10 ADC10 采样率。 该位为最大采样率选择基准缓冲器驱动性能。 设定 ADC10SR 来减少基准缓冲器的电流消
耗。
0基准缓冲器支持高达 ~200 ksps
1基准缓冲器支持高达 ~50 ksps
REFOUT 9基准输出
0基准输出关闭
1基准输出打开。 器件只有 VeREF+/ VREF+ 引脚。
REFBURST 8基准冲突。
0连续的基准缓冲器
1只用在采样和转换期间的基准缓冲器
MSC 7多重采样和转换。 只在序列或重复模式中有效。
0采样请求由 SHI信号的上升沿触发每次采样与转换。
1第一个SHI 信号上升沿信号触发采样定时器,后面的采样与转换由前一次转换完成后立即被自动执
行。
REF2_5V 6基准电压产生器 REFON 也必须被置位。
0 1.5V
1 2.5V
REFON 5基准电压生成器打开
0基准电压生成器关闭
1基准电压生成器打开
ADC10ON 4 ADC10 打开
0 ADC10关闭
1 ADC10打开
ADC10IE 3 ADC10 中断使能
0中断禁用
1中断使能
552 ADC10 ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
ADC10
寄存器
ADC10IFG 2 ADC10 中断标志。 如果 ADC10MEM 已经装满转换结果,该位被设置。当中断请求被接受时,它将自动复
位,或者通过软件复位。当使用 DTC,一个数据块传输完成时,该标志被置位。
0无中断等待
1中断等待
ENC 1使能转换
0 ADC10被禁用
1 ADC10被启用
ADC10SC 0开始转换 软件控制的采样和转换启动。 ADC10SC ENC用同一个指令一起被置位。 ADC10SC 被自动复
位。
0无采样转换启动
1启动采样和转换
553
ZHCU032IDecember 2004Revised January 2012 ADC10
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
ADC10
寄存器
www.ti.com.cn
22.3.2 ADC10CTL1
ADC10
控制制寄寄存存器
1
15 14 13 12 11 10 9 8
INCHx SHSx ADC10DF ISSH
rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0)
76543210
ADC10DIVx ADC10SSELx CONSEQx ADC10BUSY
rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) r-0
只有当ENC=0 时,才能被修改。
INCHx 15-12 输入通道选择。 这些位用来选择进行单次转换的通道或进行序列转换的最高通道。 只有可用的 ADC 通道才会
被选择。 请参阅《器件专用数据表》。
0000 A0
0001 A1
0010 A2
0011 A3
0100 A4
0101 A5
0110 A6
0111 A7
1000 VeREF+
1001 VREF-/VeREF-
1010 温度传感器
1011 (VCC- VSS)/ 2
1100 (VCC- VSS)/ 2, A12 MSP430F22xx器件上
1101 (VCC- VSS)/ 2, A13 MSP430F22xx器件上
1110 (VCC- VSS)/ 2, A14 MSP430F22xx器件上
1111 (VCC- VSS)/ 2, A15 MSP430F22xx器件上
SHSx 11-10 采样和保持源选择。
00 ADC10SC
01 定时器_AOUT1(1)
10 定时器_AOUT0(1)
11 定时器_A.OUT2(在 MSP430F20x0MSP430G2x31,和 MSP430G2x30 器件上的定时
_A.OUT1(1)
ADC10DF 9 ADC10 数据格式
0直接二进制
1 2补码
ISSH 8反相信号采样保持
0采样输入信号未被反相。
1采样输入信号被反相。
ADC10DIVx 7-5 ADC10 时钟分频器
000 /1
001 /2
010 /3
011 /4
100 /5
101 /6
110 /7
111 /8
ADC10SSELx 4-3 ADC10 时钟源选择
00 ADC10OSC
01 ACLK
10 MCLK
11 SMCLK
(1) 如果器件上存在一个以上的定时器模块,那么就由定时器 0_Ax 触发定时器。
554 ADC10 ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
ADC10
寄存器
CONSEQx 2-1 转换序列模式选择
00 单通道单次转换
01 通道序列
10 重复单通道
11 重复通道序列
ADC10BUSY 0 ADC10 忙。 该位标志着一个有效的采样和转换操作
0无操作活动。
1一个序列,采样,或转换活动。
22.3.3 ADC10AE0
,模模拟拟((输输入入)使使能能控控制制寄寄存存器
0
76543210
ADC10AE0x
rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0)
ADC10AE0x 7-0 ADC10 模拟使能。 该位为模拟输入使能相应的引脚。 BIT0对应于 A0BIT1 对应于 A1,等等。 未执行通道
的模拟使能位不应该被编程为 1
0模拟输入被禁用
1模拟输入被启用
22.3.4 ADC10AE1
,模模拟拟((输输入入)使使能能控控制制寄寄存存器
1
(仅仅适适用用于
MSP430F22xx
76543210
ADC10AE1x 被保保留
rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0)
ADC10AE1x 7-4 ADC10 模拟使能。 该位为模拟输入使能相应的引脚。 BIT4对应于 A12BIT5 对应于 A13BIT6 对应于
A14,和 BIT7 对应于 A15。未使用通道的模拟使能位不应该被编程为 1
0模拟输入禁用
1模拟输入使能
被保保留留 位3-0 被保留
22.3.5 ADC10MEM
,转转换换存存储储寄寄存器,,二二进进制制格格式
15 14 13 12 11 10 9 8
000000 转换换结
r0 r0 r0 r0 r0 r0 r r
76543210
转换换结
rrrrrrrr
转换换结 15-0 10 位转换结果是右对齐,直接二进制格式。 位 9MSB。位15-10 总是0
555
ZHCU032IDecember 2004Revised January 2012 ADC10
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
ADC10
寄存器
www.ti.com.cn
22.3.6 ADC10MEM
,转转换换存存储储寄寄存器,
2
补码码格格式
15 14 13 12 11 10 9 8
转换换结
rrrrrrrr
76543210
转换换结000000
r r r0 r0 r0 r0 r0 r0
转换换结 15-0 10 位转换结果是左对齐,2补码格式。 位 15 MSB。位5-0 总是 0
22.3.7 ADC10DTC0
,数数据据传传输输控控制寄存存器
0
76543210
被保保留ADC10TB ADC10CT ADC10B1 ADC10FETCH
r0 r0 r0 r0 rw-(0) rw-(0) r-(0) rw-(0)
被保保留 7-4 被保留。 总是读取为 0
ADC10TB 3 ADC10 两个数据块模式
0一个数据块传输模式
1两个数据块传输模式
ADC10CT 2 ADC10 连续传输
0当一个块(一块模式)或两个块(两块模式)传输完成时,数据传输停止。
1数据是连续传输的。 DTC 的运行只在 ADC10CT 被清零,或 ADC10SA 被写入时才会停止。
ADC10B1 1 ADC 块一。 该位表明两个块模式下哪个块被ADC10 转换结果装入。 ADC10B1 只有当 ADC10IFG 位在DTC
工作期间第一次被置位后才有效。 ADC10TB 也必须被置位。
02被填满
11被填满
ADC10FETCH 0该位应该被正常的复位。
22.3.8 ADC10DTC1
,数数据据传传输输控控制寄存存器
1
76543210
DTC传输
rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0)
DTC 传输 7-0 DTC传输 该位定义了每个块中的传输量。
0 DTC 被禁用
01h-0FFh 每个块中的传输量
556 ADC10 ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
ADC10
寄存器
22.3.9 ADC10SA
,数数据据传传输输的的开始地地址址寄寄存存器
15 14 13 12 11 10 9 8
ADC10SAx
rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0)
76543210
ADC10SAx 0
rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) r0
ADC10SAx 15-1 ADC10 开始地址。 这些位是 DTC 的开始地址。 要启动 DTC传输就需要一个对寄存器 ADC10SA 的写入。
未使使用 0未使用,只读。 总是读取为 0
557
ZHCU032IDecember 2004Revised January 2012 ADC10
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Chapter 23
ZHCU032IDecember 2004Revised January 2012
ADC12
ADC12 模块是一个高性能的 12 位模数转换器。 本章介绍了 MSP430x2xx 器件系列中的 ADC12
Topic ........................................................................................................................... Page
23.1 ADC12 介绍..................................................................................................... 559
23.2 ADC12 的操操作.................................................................................................. 561
23.3 ADC12 寄存存器.................................................................................................. 573
558 ADC12 ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
ADC12
介绍
23.1 ADC12 介绍
ADC12 模块支持快速 12 位模数转换。 此模块运行一个 12 位逐次逼近 (SAR) 内核、样本选择控制、基准
生成器、和一个 16 字转换和控制缓冲器。 在无需 CPU 干预的情况下,转换和控制缓冲器可转换并存储多
16 个独立的 ADC 样本。
ADC12 模块特征如下:
大于 200ksps 的最大转换速率
单片的 12 位转换器无失码
由软件或定时器控制的可编程采样周期的采样保持
由软件,定时器_A,或定时器_B 启动的转换
软件可选片上基准电压生成(1.5V 2.5 V
软件可选内部或外部基准
8 个可单独配置的外部输入通道
内部温度传感器的转换通道,AVCC,和外部基准电压
独立的通道可选基准位自正和负基准供源
可选的转换时钟源
单信道、重复单信道、序列、和重复序列的转换模式
ADC 内核和基准电压都可以独立断电
ADC 中断的快速解码的 18 位中断矢量寄存器
16 转换结果存储寄存器
ADC12 模块的方框图如23-1所示。
559
ZHCU032IDecember 2004Revised January 2012 ADC12
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Sample
and
Hold
VeREF+
12-bit SAR
VR−
16 x 12
Memory
Buffer
VR+
VREF+
V /Ve
REF− REF−
ADC12SC
TA1
TB1
TB0
Divider
/1 ... /8
ADC12DIVx
ADC12CLK
ENC
MSC
SHP SHT0x
SAMPCON
SHI
S/H Convert
Sync
Sample Timer
/4 ... /1024
INCHx
4
A0
A1
A2
A3
A4
A5
A6
A7
ADC12MEM0
ADC12MEM15
ADC12MCTL0
ADC12MCTL15
CSTARTADDx
4
4
SHT1x
CONSEQx
ACLK
MCLK
SMCLK
ADC12SSELx
ADC12OSC
00
01
10
11
00
01
10
11
SHSx
00
01
10
11
00
01
10
11
ISSH
1
0
0
1
SREF2 01
SREF1
0001 SREF0
10
ADC12ON
BUSY
REFON
INCHx=0Ah
1.5 V or 2.5 V
Reference
on
Ref_x
Ref_x
INCHx=0Bh
11
R
R
0000
1001
1000
0010
0001
0011
0100
0101
0110
0111
1011
1010
1111
1110
1101
1100
REF2_5V
AVCC
AVSS
Floating
Floating
Floating
Floating
AVCC
16 x 8
Memory
Control
AVCC
AVSS
ADC12
介绍
www.ti.com.cn
23-1. ADC12 方框框图
560 ADC12 ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
R ~ 100 Ohm
ESD Protection
ADC12MCTLx.0−3
Input
Ax
IN R-
ADC
R+ R-
V - V
N = 4095 ×
V - V
www.ti.com.cn
ADC12
的操作
23.2 ADC12 的操操作
ADC12 模块可由用户软件配置。 ADC12 的运行和建立在下列章节中进行讨论。
23.2.1 12
ADC
内核
ADC 内核将一个模拟量的输入转化成 12 位数字形式,结果保存在转换存储器中。 内核利用两个可编程/
选的基准电压(VR+VR-)来定义转换范围的最大值和最小值。 当输入信号等于或高于 VR+ 时,数字输出
(NADC)为满量程 (0FFFh),当输入信号等于或低于 VR-时,输出为零。 输入通道和基准电平(VR+VR-
转换控制寄存器中进行了定义。 ADC 结果的换算公式 NADC是:
ADC12 内核由 ADC12CTL0 ADC12CTL1 两个控制寄存器完成配置。 内核使能由 ADC12ON 位控制。
为了节省电力,可以在不使用时关闭 ADC12。 大多数情况下,只有在 ENC=0 ADC12 的控制位才可以
被修改。在进行任何转换前 ENC 位必须设为 1
23.2.1.1 转换换时时钟钟选选择
ADC12CLK 被用作转换时钟并在采样模式被选择时产生脉冲采样周期。 ADC12 源时钟可以用
ADC12SSELX 位来选择,且可以用 ADC12DIVx 位进行 18分频。 可选的 ADC12CLK 源有
SMCLKMCLKACLK 和一个内的振荡器 ADC12OSC
ADC12OSC 由内部产生,且位于 5MHz 范围内,但频率会随个别器件,电源电压,和温度而不同。 有关
ADC12OSC 的规格请参阅《器件专用数据表》。
应用程序必须保证在一个转换结束前为 ADC12CLK 所选的时钟都保持在活动状态。 如果在一个转换期间时
钟被移除,那么转换将无法完成且结果无效。
23.2.2 ADC12
输入入和和多多路路复复用
模拟输入多路复用器可以选择 8个外部和 4个内部模拟信号接口作为转换通道。 输入模拟多路复用器是先
关后开型开关以此来减少因通道切换而引入的噪声(见23-2)。 输入模拟多路复用器也是一个 T型开
关,可以减少通道间的耦合。 未选择的通道与 A/D 分开,并且中间接点被连接到模拟接地 (AVSS)端以便于
寄生电容接地从而减少噪声。
ADC12 利用电荷再分配原理。 当输入在内部切换时,切换动作可能在输入信号上引起瞬变。 这些瞬变衰减
和解决之前会导致错误的转换。
23-2. 模拟拟多多路路复复用用器
561
ZHCU032IDecember 2004Revised January 2012 ADC12
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
ADC12
的操作
www.ti.com.cn
23.2.2.1 模拟拟端端口口选选择
ADC12 输入是与端口 P6 引脚复用的,其中该引脚是数字 CMOS 门。 当模拟信号被应用到数字 CMOS
时,寄生电流可以从 VCC 流向 GND。 如果输入电压接近该门的转换电平时,就会产生寄生电流。 禁用端
口引脚缓冲器防止了寄生电流流过,因此,可降低总电流消耗。 P6SELx 位提供了禁用端口引脚的输入和输
出缓冲器的功能。
; P6.0 and P6.1 configured for analog inputBIS.B #3h,&P6SEL ; P6.1 and P6.0 ADC12 function
23.2.3
基准准电电压压产产生生器
ADC2.5 模块包含一个内置的电压基准带有两个可选的电压电平,1.5V 2.5V。 这些基准电压的任一个都
可用于在引脚 VREF+的内部和外部。
设置 REFON=1 使能内部基准。 当 REF2_5V=1 时,内部基准电压为 2.5V。当 REF2_5V=0 时,基准电压
1.5V。为了节省电能,可在不使用时关闭基准电压。
为了正确操作,必须给内部参考电压发生器提供整个 VREF+AVSS中的存储容量。 建议的存储电容是 10μF
0.1μF电容的一个并联组合。 从开启开始上,必须允许一个最大为 17ms 的参考电压发生器来偏置建议的贮藏电
容。 如果内部基准发生器还没有用于该转换,则不需要存储电容器。
:基准准电电压压解解耦
在一个转换期间,当正在解决两个 LSB ADC12
使用的任何
基准电压中都需要大约 200μA
建议为
任何
基准电压连接一个 10μF0.1μF电容的并联组合,如在23-11中所示。
可分别把外部参考应用于 VR+VR-至引脚 VEREF+VREF-/ VEREF-
23.2.4
采样样和和转转换换时时序
一个数模转换是由一个采样输入信号 SHI 的上升沿启动。 SHI 信号源可以通过 SHSx 位来选择, 包括如
下:
ADC12SC
定时器_A 输出单元 1
定时器_B 输出单元 0
定时器_B 输出单元 1
SHI 信号源的极性可以通过 ISSH 位来反转。 SAMPCON 信号控制转换的采样周期的开始。 当 SAMPCON
为高电平时,采样是有效的。 高至低 SAMPCON 过渡起始了模数转换,这需要 13 ADC12CLK 周期。
两种不同的采样定时方法是控制位 SHP,扩展的采样模式和脉冲模式定义。
562 ADC12 ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Start
Sampling
Stop
Sampling
Conversion
Complete
SAMPCON
SHI
tsample tconvert
tsync
13 x ADC12CLK
Start
Conversion
ADC12CLK
Start
Sampling
Stop
Sampling
Conversion
Complete
SAMPCON
SHI
tsample tconvert
tsync
13 x ADC12CLK
Start
Conversion
ADC12CLK
www.ti.com.cn
ADC12
的操作
23.2.4.1 扩展展的的采采样样模模式
SHP=0 时选择扩展的采样模式。SHI 信号直接控制 SAMPCON 并定义采样周期 t采样的长度。 当
SAMPCON 为高电平时,采样是有效的。 在与 ADC12CLK 同步后,高至低 SAMPCON 过渡起始了该转
换(请参见23-3)。
23-3. 扩展展的的采采样样模模式
23.2.4.2 脉冲冲采采样样模模式
SHP =1 时选择脉冲采样模式。SHI 信号用于触发采样定时器。 ADC12CTL0 中的 SHT0x SHT1x
控制采样定时器的时间间隔的,该定时器定义 SAMPCON 的采样周期t采样。 在一个可编程时间间隔 T采样
AD12CLK 同步后,采样定时器保持 SAMPCON 为高电平。 总的采样时间为 t采样加上 t同步(请见23-4)。
SHTx 位选择 ADC12CLK 4倍采样时间。 SHT0x ADC12MCTL0 7选择采样时间且 SHT1X
ADC12MCTL8 15 选择采样时间。
23-4. 脉冲冲采采样样模模式
563
ZHCU032IDecember 2004Revised January 2012 ADC12
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
RSRI
VSVC
MSP430
CI
VI
VI= Input voltage at pin Ax
VS= External source voltage
RS= External source resistance
RI= Internal MUX-on input resistance
CI= Input capacitance
VC= Capacitance-charging voltage
ADC12
的操作
www.ti.com.cn
23.2.4.3 采样样时时序序转转换
SAMPCON =0 时,所有的 Ax 输入均为高阻态 。 当 SAMPCON =1 时,在采样时间t采样23-5期间,
已选的 Ax 输入相当于一个 RC 低通滤波器,如所示。 一个内部 MUX 上输入电阻 RI(最大 2kΩ)被认为是
由源极和电容器 CI(最大 40pF)串连在一起。 电容器 CI电压 (VC须被充电至电源电压 (VS)½ LSB
围内,以此来进行精度为 12 位的转换。
23-5. 模拟拟输输入入等等效效电电路
RSRI电阻影响采样。 可以用下面的公式来计算 12 位转换的最小采样时间 t采样
t采样> (RS+ RI) × ln(213) × CI+ 800 ns
RICI的代入值在上面已经给出,公式变为:
t采样> (RS+2kΩ) × 9.011 × 40 pF + 800 ns
例如,如果 RS10kΩ,那么 t采样必须大于 5.13µs
23.2.5
转换换存存储储器
16 ADC12MEMx 转换内存寄存器用于存储转换结果。 每个 ADC12MEMx 都用一个相关的
ADC12MCTLx 控制寄存器配置。 SREFx 位定义电压基准,INCHx 位选择输入通道。 当使用顺序转换模式
时,EOS 位定义序列末端。 当 ADC12MCTL15 中的 EOS 没被置位时,一个序列从 ADC12MEM15 翻转到
ADC12MEM0
CSTARTADDx 位定义用于任何转换的第一个 ADC12MCTLx。 如果转换模式是单通道或重复单通道,那么
CSTARTADDx 会指向要使用的单 ADC12MCTLx
如果所选择的转换模式是序列通道或重复序列通道中一个,CSTARTADDx 会指向在一个序列中第一个被使
用到的 ADC12MCTLx 的位置。 一个指针,对软件不可见,当每次转换完成时,会自动递增至序列中的下一
ADC12MCTLx。 序列继续进行直到 ADC12MCTLx 中的 EOS 位被处理;这是最后一个被处理的控制字
节。
当转换结果被写入一个选定的 ADC12MEMx 中时,在 ADC12IFGx 寄存器中的相应标志被置位。
23.2.6 ADC12
转换换模模式
ADC12 有四个可由 CONSEQx 位选择的运行模式,在23-1中给出了这些模式。
23-1. 转换换模模式式概概述
CONSEQx 模式式 运运行
00 单通道单次转换 一个单通道被转换一次
01 通道序列 一个通道序列被转换一次
10 单通道重复 一个单通道被重复转换
11 序列通道重复 一个通道序列被重复转换
564 ADC12 ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
ADC12
off
x = CSTARTADDx
Wait for Enable
ENC =
Wait for Trigger
Sample, Input
Channel Defined in
ADC12MCTLx
ENC =
ENC =
SHSx = 0
and
ENC = 1 or
and
ADC12SC =
SAMPCON =
SAMPCON = 1
Convert
SAMPCON =
ENC = 0
ENC = 0
12 x ADC12CLK
Conversion
Completed,
Result Stored Into
ADC12MEMx,
ADC12IFG.x is Set
1 x ADC12CLK
ENC = 0
ADC12ON = 1
CONSEQx = 00
x = pointer to ADC12MCTLx
Conversion result is unpredictable
www.ti.com.cn
ADC12
的操作
23.2.6.1 单通通道道单单次次转转换换模模式
一个单通道被采样和转换一次 ADC 结果被写入由 CSTARTADDx 位定义的 ADC12MEMx 中。23-6显示
了单通道单次转换模式的流程。 当 ADC12SC 触发一次转换时,连续的转换可有 ADC12SC 位来触发。 当
使用任何其它触发源时,ENC 必须在每次转换间被切换。
23-6. 单通通道道,,单单次次转转换换模模式
565
ZHCU032IDecember 2004Revised January 2012 ADC12
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
ADC12
off
x = CSTARTADDx
Wait for Enable
ENC =
Wait for Trigger
Sample, Input
Channel Defined in
ADC12MCTLx
ENC =
ENC =
SHSx = 0
and
ENC = 1 or
and
ADC12SC =
SAMPCON =
SAMPCON = 1
Convert
SAMPCON =
12 x ADC12CLK
Conversion
Completed,
Result Stored Into
ADC12MEMx,
ADC12IFG.x is Set
1 x ADC12CLK
ADC12ON = 1
CONSEQx = 01
MSC = 1
and
SHP = 1
and
EOS.x = 0
EOS.x = 1
If x < 15 then x = x + 1
else x = 0
If x < 15 then x = x + 1
else x = 0
(MSC = 0
or
SHP = 0)
and
EOS.x = 0
x = pointer to ADC12MCTLx
ADC12
的操作
www.ti.com.cn
23.2.6.2 通道道序序列列模模式
一个通道序列被采样和转换一次 ADC 的结果被写入用 ADCMEMx 起始的转换存储器中,其中 ADCMEMx
CSTARTADDx 位定义。 在用一组 EOS 位测量完通道后,序列停止。23-7显示了通道序列模式。 当
ADC12SC 触发一个序列时,连续的序列可由 ADC12SC 位来触发。 当使用任何其它触发源时,ENC 必须
在每个序列间被切换。
23-7. 通道道序序列列模模式
566 ADC12 ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
ADC12
off
x = CSTARTADDx
Wait for Enable
ENC =
Wait for Trigger
Sample, Input
Channel Defined in
ADC12MCTLx
ENC =
ENC =
SHSx = 0
and
ENC = 1 or
and
ADC12SC =
SAMPCON =
SAMPCON = 1
Convert
SAMPCON =
12 x ADC12CLK
Conversion
Completed,
Result Stored Into
ADC12MEMx,
ADC12IFG.x is Set
1 x ADC12CLK
ADC12ON = 1
CONSEQx = 10
MSC = 1
and
SHP = 1
and
ENC = 1
ENC = 0
(MSC = 0
or
SHP = 0)
and
ENC = 1
x = pointer to ADC12MCTLx
www.ti.com.cn
ADC12
的操作
23.2.6.3 单通通道道重重复复模模式
一个单通道被连续采样和转换。 ADC 结果被写入由 CSTARTADDx 位定义的 ADC12MEMx 中。 由于只有
一个 ADC12MEMx 存储器被采用而且是被下一个转换覆写,有必要在完成一个转换后读取结果。23-8
示了单通道重复模式。
23-8. 单通通道道重重复复模模式
567
ZHCU032IDecember 2004Revised January 2012 ADC12
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
ADC12
off
x = CSTARTADDx
Wait for Enable
ENC =
Wait for Trigger
Sample, Input
Channel Defined in
ADC12MCTLx
ENC =
ENC =
SHSx = 0
and
ENC = 1 or
and
ADC12SC =
SAMPCON =
SAMPCON = 1
SAMPCON =
12 x ADC12CLK
Conversion
Completed,
Result Stored Into
ADC12MEMx,
ADC12IFG.x is Set
1 x ADC12CLK
ADC12ON = 1
CONSEQx = 11
MSC = 1
and
SHP = 1
and
(ENC = 1
or
EOS.x = 0)
ENC = 0
and
EOS.x = 1
(MSC = 0
or
SHP = 0)
and
(ENC = 1
or
EOS.x = 0)
If EOS.x = 1 then x =
CSTARTADDx
else {if x < 15 then x = x + 1 else
x = 0}
If EOS.x = 1 then x =
CSTARTADDx
else {if x < 15 then x = x + 1 else
x = 0}
x = pointer to ADC12MCTLx
Convert
ADC12
的操作
www.ti.com.cn
23.2.6.4 通道道的的重重复复序序列列模模式
一个通道序列被重复采样和转换。 ADC 的结果被写入用 ADCMEMx 起始的转换存储器中,其中
ADCMEMx CSTARTADDx 位定义。 在用一组 EOS 位测量完通道后该序列结束,下一个触发信号重新启
动序列。23-9显示了通道的重复序列模式。
23-9. 通道道的的重重复复序序列列模模式
568 ADC12 ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
ADC12
的操作
23.2.6.5 使使用用多多路路采采样样和和转转换(MSC)
为了配置转换器来使其能自动的执行连续转换并且尽可能的快速,可以使用一个多路采样和转换功能。 当
MSC=1CONSEQx>0,且使用采样定时器时,SHI 信号的第一个上升沿会触发第一个转换。 转换完成
前,连续转换被快速并自动的触发。 在单序列模式中,序列完成前或在单通道重复模式或重复序列模式
中,ENC 位被切换前,SHI 上的其他上升沿都被忽略。 当使用 MSC 位时,ENC 位的功能不能更改。
23.2.6.6 停止止转转换
停止 ADC12 活动取决于运行模式。 建议的停止一个活动转换或转换序列的方法是:
在单通道单转换模式中复位 ENC 可以立即停止一个转换并且结果是不可预知的。 想要获得正确的结
果,在清除 ENC 前应轮询忙位直到它被复位。
在单通道重复运行期间复位 ENC 可以在当前转换结束时停止转换。
在一个序列或重复序列模式器件复位 ENC 可以在序列结束时停止转换。
通过设置 CONSEQx=0 和复位 ENC 位可以立即停止任何转换模式。 在这种情况下,转换的数据是不可
信的。
:针对对序序列列的的无EOS 位位位置
如果没有 EOS 位被置位但已选序列模式,复位 ENC 位不会停止该序列。 要停止该序列,首
先要选择单通道模式并然后复位 ENC
23.2.7
使使用用集集成成温温度度传感器
想要使用片上温度传感器,应选择模拟输入通道 INCHx=1010。 设置其它寄存器就象选择一个外部通道一
样,包括基准电平选择,转换寄存器选择等等。
典型的温度传感器传递功能如23-10所示。 当使用温度传感器时,采样周期必须大于 30μs。 温度传感器
的偏移误差可能会比较大,对于大多数应用程序来说都需要对其进行校准。 有关参数请参阅《器件专用数据
表》。
选择温度传感器会自动打开片上作为温度传感器的一个电压源的基准电平发生器。 然而,对于转换,它不会
使能 VREF+输出或影响基准电平的选择。 用于转换温度传感器的基准电压的选择与其它通道一样。
569
ZHCU032IDecember 2004Revised January 2012 ADC12
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Celsius
Volts
0 50 100
1.000
0.800
0.900
1.100
1.200
1.300
−50
0.700
VTEMP=0.00355(TEMP
C)+0.986
ADC12
的操作
www.ti.com.cn
23-10. 典型型的的温温度度传传感感器器传传输输功功能
23.2.8 ADC12
接地地和和噪噪声声考考虑
就像高分辨率的 ADC,为了消除地电流环路,有害的寄生效应和噪声,应遵循合理的印刷电路板布局和接
地技术。
A/D 中的回路电流流经其他模拟或数字电路的公共回路时,就会形成地电流环路。 如果不当心,这个电
流会产生小的不必要的偏移电压,该电压可以增加或减少 A/D 转换器的基准电压或输入电压。 23-11
所示的连接方法可以避免这些。
除了接地,由于切换数字或切换电源会在电源线路上产生纹波和噪声脉冲,这也会影响转换的结果。 为了实
现高精确度,推荐一个使用独立的模拟和带有一个单点连接的数字地平面的无噪音设计。
570 ADC12 ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
DVCC
DVSS
AVCC
AVSS
VeREF+
Digital
Power Supply
Decoupling
10 uF 100 nF
+
Using an External
Positive
Reference
VREF+
VREF− / VeREF−
Using the Internal
Reference
Generator
10 uF 100 nF
100 nF
+
+
10 uF 100 nF
+
Using an External
Negative
Reference
10 uF
+
Analog
Power Supply
Decoupling
10 uF 100 nF
www.ti.com.cn
ADC12
的操作
23-11. ADC12 接地地和和噪噪声声考考虑
23.2.9 ADC12
中断
ADC12 18 个中断源:
ADC12IFG0 ADC12IFG15
• ADC12OVADC12MEMx 溢出
• ADC12TOVADC12 转换时间溢出
其相应的 ADC12MEMx 内存寄存器加载一个转换结果时 ADC12IFGx 位被置位。 如果相应的 ADC12IEx
GIE 位被置位,会产生一个中断请求。 当转换结果 ADC12MEMx 的先前转换结果被读取之前被写入任何
ADC12MEMx 中时,ADC12OV 条件发生。 在当前转换完成之前请求另一个采样转换时,会产生
ADC12TOV 条件。 在转换后,该 DMA 在单信道模式下或在一个序列通道模式完成之后被触发。
23.2.9.1 ADC12IV,中中断断向向量量发发生生器
所有 ADC12 中断源被优先化并被结合起来共同来自一个中断向量源。 中断向量寄存器 ADC12IV 用于确定
哪一个使能的 ADC12 中断源请求了一个中断。
最高优先级的使能的 ADC12 中断产生在 ADC12IV 寄存器中产生了一个数字(请见23.3.7 )。 为了能自
动进入相应的软件程序,可以对这个数字进行评估,或将其添加到程序计数器。 禁用的 ADC12 中断不影响
ADC12IV 的值。
如果是最高的正挂起的中断,对 ADC12IV 寄存器进行的任何访问(读取或写入)都会自动复位 ADC12OV
件或ADC12TOV 条件。 中断条件也没有一个可访问的中断标志。 该 ADC12IFGx 标志不会被一个
ADC12IV 的访问复位。 通过访问相关的 ADC12MEMx 寄存器 能使 ADC12IFGx 位自动复位或可能通过软
件复位。
571
ZHCU032IDecember 2004Revised January 2012 ADC12
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
ADC12
的操作
www.ti.com.cn
如果在服务一个中断后另一个中断挂起,就会产生另一个中断。 例如,如果 ADC12OV ADC12IFG3
断挂起时,当中断服务子程序访问 ADC12IV 寄存器时,ADC12OV 中断条件会自动复位。 在中断服务程序
RETI 指令被执行后,ADC12IFG3 会产生另一个中断。
23.2.9.2 ADC12 中断断处处理理软软件件示示例
Example 23-1给出了推荐的 ADC12IV 和处理开销的使用。 为了自动跳转到相应的子程序,ADC12IV 值将
被添加到 PC
在右边距的数字显示了每条指令所需的 CPU 周期。 不同中断源的软件开销包括中断延迟时间和从中断返回
周期,但不处理任务本身。 这些延迟是:
ADC12IFG0 ADC12IFG14ADC12TOV,和 ADC12OV16 个周期
• ADC12IFG1514 个周期
如果在 ADC12IFG15 的处理过程中发生了一个更高优先级的中断,ADC12IFG15 的中断处理程序会给出一
个立即检查的方法。 如果另一个 ADC12 中断挂起时,这样可以节省 9个时钟周期。
Example 23-1.
中断断处处理
; Interrupt handler for ADC12.INT_ADC12 ; Enter Interrupt Service Routine 6ADD &ADC12IV,PC ; Add
offset to PC 3RETI ; Vector 0: No interrupt 5JMP ADOV ; Vector 2: ADC overflow 2JMP ADTOV ; Vector 4:
ADC timing overflow 2JMP ADM0 ; Vector 6: ADC12IFG0 2... ; Vectors 8-
32 2JMP ADM14 ; Vector 34: ADC12IFG14 2;; Handler for ADC12IFG15 starts here. No JMP required.;ADM15
MOV &ADC12MEM15,xxx ; Move result, flag is reset... ; Other instruction needed?JMP INT_ADC12 ; Check
other int pending;; ADC12IFG14-
ADC12IFG1 handlers go here;ADM0 MOV &ADC12MEM0,xxx ; Move result, flag is reset... ; Other
instruction needed?RETI ; Return 5;ADTOV ... ; Handle Conv. time overflowRETI ; Return 5;ADOV ... ;
Handle ADCMEMx overflowRETI ; Return 5
572 ADC12 ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
ADC12
寄存器
23.3 ADC12 寄存存器
23-2中列出了 ADC12 寄存器。
23-2. ADC12 寄存存器
寄存存器 简式式 寄寄存存器器类型 地地址址 初初始化状状态
ADC12 控制寄存器 0 ADC12CTL0 读取/写入 01A0h POR 复位
ADC12 控制寄存器 1 ADC12CTL1 读取/写入 01A2h POR 复位
ADC12 中断标志寄存器 ADC12IFG 读取/写入 01A4h POR 复位
ADC12 中断使能寄存器 ADC12IE 读取/写入 01A6h POR 复位
ADC12 中断向量字 ADC12IV 读取 01A8h POR 复位
ADC0 存储器 0 ADC12MEM0 读取/写入 0140h 未改变
ADC1 存储器 1 ADC12MEM1 读取/写入 0142h 未改变
ADC2 存储器 2 ADC12MEM2 读取/写入 0144h 未改变
ADC3 存储器 3 ADC12MEM3 读取/写入 0146h 未改变
ADC4 存储器 4 ADC12MEM4 读取/写入 0148h 未改变
ADC5 存储器 5 ADC12MEM5 读取/写入 014Ah 未改变
ADC6 存储器 6 ADC12MEM6 读取/写入 014Ch 未改变
ADC7 存储器 7 ADC12MEM7 读取/写入 014Eh 未改变
ADC8 存储器 8 ADC12MEM8 读取/写入 0150h 未改变
ADC9 存储器 9 ADC12MEM9 读取/写入 0152h 未改变
ADC10 存储器 10 ADC12MEM10 读取/写入 0154h 未改变
ADC11 存储器 11 ADC12MEM11 读取/写入 0156h 未改变
ADC12 存储器 12 ADC12MEM12 读取/写入 0158h 未改变
ADC13 存储器 13 ADC12MEM13 读取/写入 015Ah 未改变
ADC14 存储器 14 ADC12MEM14 读取/写入 015Ch 未改变
ADC15 存储器 15 ADC12MEM15 读取/写入 015Eh 未改变
ADC12 存储器控制 0 ADC12MCTL0 读取/写入 080h POR 复位
ADC12 存储器控制 1 ADC12MCTL1 读取/写入 081h POR 复位
ADC12 存储器控制 2 ADC12MCTL2 读取/写入 082h POR 复位
ADC12 存储器控制 3 ADC12MCTL3 读取/写入 083h POR 复位
ADC12 存储器控制 4 ADC12MCTL4 读取/写入 084h POR 复位
ADC12 存储器控制 5 ADC12MCTL5 读取/写入 085h POR 复位
ADC12 存储器控制 6 ADC12MCTL6 读取/写入 086h POR 复位
ADC12 存储器控制 7 ADC12MCTL7 读取/写入 087h POR 复位
ADC12 存储器控制 8 ADC12MCTL8 读取/写入 088h POR 复位
ADC12 存储器控制 9 ADC12MCTL9 读取/写入 089h POR 复位
ADC12 存储器控制 10 ADC12MCTL10 读取/写入 08Ah POR 复位
ADC12 存储器控制 11 ADC12MCTL11 读取/写入 08Bh POR 复位
ADC12 存储器控制 12 ADC12MCTL12 读取/写入 08Ch POR 复位
ADC12 存储器控制 13 ADC12MCTL13 读取/写入 08Dh POR 复位
ADC12 存储器控制 14 ADC12MCTL14 读取/写入 08Eh POR 复位
ADC12 存储器控制 15 ADC12MCTL15 读取/写入 08Fh POR 复位
573
ZHCU032IDecember 2004Revised January 2012 ADC12
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
ADC12
寄存器
www.ti.com.cn
23.3.1 ADC12CTL0
ADC12
控制制寄寄存存器
0
15 14 13 12 11 10 9 8
SHT1x SHT0x
rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0)
76543210
MSC REF2_5V REFON ADC120N ADC12OVIE ADC12TOVIE ENC ADC12SC
rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0)
只有当 ENC=0 时可以被修改
SHT1x 15-12 采样保持时间。 这些位决定 ADC12MEM8 ADC12MEM15 寄存器在采样周期的 ADC12CLK 周期的数量。
0000 4 ADC12CLK 周期
0001 8 ADC12CLK 周期
0010 16 ADC12CLK 周期
0011 32 ADC12CLK 周期
0100 64 ADC12CLK 周期
0101 96 ADC12CLK 周期
0110 128 ADC12CLK 周期
0111 192 ADC12CLK 周期
1000 256 ADC12CLK 周期
1001 384 ADC12CLK 周期
1010 512 ADC12CLK 周期
1011 768 ADC12CLK 周期
1100 1024 ADC12CLK 周期
1101 1024 ADC12CLK 周期
1110 1024 ADC12CLK 周期
1111 1024 ADC12CLK 周期
SHT0x 11-8 采样保持时间。 这些位决定 ADC12MEM0 ADC12MEM7 寄存器在采样周期的 ADC12CLK 周期的数量。
0000 4 ADC12CLK 周期
0001 8 ADC12CLK 周期
0010 16 ADC12CLK 周期
0011 32 ADC12CLK 周期
0100 64 ADC12CLK 周期
0101 96 ADC12CLK 周期
0110 128 ADC12CLK 周期
0111 192 ADC12CLK 周期
1000 256 ADC12CLK 周期
1001 384 ADC12CLK 周期
1010 512 ADC12CLK 周期
1011 768 ADC12CLK 周期
1100 1024 ADC12CLK 周期
1101 1024 ADC12CLK 周期
1110 1024 ADC12CLK 周期
1111 1024 ADC12CLK 周期
MSC 7多路采样和转换。 只在序列或重复模式中有效。
0采样定时器需要 SHI 信号的一个上升沿来触发每个采样和转换。
1第一个 SHI 信号的上升沿触发采样定时器,但后面的采样与转换在前一次转换完成后立即被自动执
行。
REF2_5V 6基准发生器电压。 REFON 也必须被置位。
0 1.5V
1 2.5V
574 ADC12 ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
ADC12
寄存器
REFON 5基准电压发生器打开
0基准关闭
1基准打开
ADC12ON 4 ADC12 打开
0 ADC12 关闭
1 ADC12 打开
ADC12OVIE 3 ADC12MEMx 溢出中断使能。 也必须置位 GIE 位来启用该中断。
0溢出中断被禁用
1溢出中断被启用
ADC12TOVIE 2 ADC12 转换时间溢出中断使能。 也必须置位 GIE 位来启用该中断。
0转换时间溢出中断被禁用
1转换时间溢出中断被启用
ENC 1启用转换
0 ADC12 被禁用
1 ADC12 被启用
ADC12SC 0开始转换 软件控制的采样和转换启动。 ADC12SC ENC 可以用同一个指令一起被置位。 ADC12SC 自动
复位。
0无采样和转换开始
1启动采样和转换
575
ZHCU032IDecember 2004Revised January 2012 ADC12
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
ADC12
寄存器
www.ti.com.cn
23.3.2 ADC12CTL1
ADC12
控制制寄寄存存器
1
15 14 13 12 11 10 9 8
CSTARTADDx SHSx SHP ISSH
rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0)
76543210
ADC12DIVx ADC12SSELx CONSEQx ADC12BUSY
rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0)
只有当 ENC=0 时可以被修改
CSTARTADDx 15-12 转换的起始地址。 这些位用于选择哪一个 ADC12 转换存储器寄存器是用于一个单次转换的或在一个序列中的
第一个转换的。 CSTARTADDx 的值是 00Fh,与 ADC12MEM0 ADC12MEM15 相对应。
SHSx 11-10 采样保持源选择
00 ADC12SC
01 定时器_A.OUT1
10 定时器_B.OUT0
11 定时器_B.OUT1
SHP 9采样保持脉冲模式选择。 此位选择采样信号 (SAMPCON) 源是作为采样定时器的输出还是直接作为采样输入
信号输出。
0 SAMPCON 信号来源于采样输入信号。
1 SAMPCON 信号来源于采样定时器。
ISSH 8反相信号采样保持
0采样输入信号未反相。
1采样输入信号被反相。
ADC12DIVx 7-5 ADC12 时钟分频器
000 /1
001 /2
010 /3
011 /4
100 /5
101 /6
110 /7
111 /8
ADC12SSELx 4-3 ADC12 时钟源选择
00 ADC12OSC
01 ACLK
10 MCLK
11 SMCLK
CONSEQx 2-1 转换序列模式选择
00 单通道,单次转换
01 序列通道
10 重复单通道
11 重复通道序列
ADC12BUSY 0 ADC12 忙。 该位标志着一个有效的采样或转换操作。
0无操作被激活。
1一个序列、采样、或转换是有效的。
576 ADC12 ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
ADC12
寄存器
23.3.3 ADC12MEMx
ADC12
转换换存存储储器器寄寄存
15 14 13 12 11 10 9 8
0000 转换换结
r0 r0 r0 r0 rw rw rw rw
76543210
转换换结
rw rw rw rw rw rw rw rw
转换换结 15-0 12 位转换结果是右对齐的。 位 11 MSB。位15-12 总是 0。写入转换存储寄存器会破坏结果。
23.3.4 ADC12MCTLx
ADC12
转换换存存储储控控制制寄存器
76543210
EOS SREFx INCHx
rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0)
只有当 ENC=0 时可以被修改
EOS 7序列末尾。 表示在一个序列中的最后一个转换。
0非序列末尾
1序列结束。
SREFx 6-4 选择基准
000 VR+= AVCCVR-= AVSS
001 VR+= VREF+ VR-= AVSS
010 VR+= VeREF+ VR-= AVSS
011 VR+= VeREF+ VR-= AVSS
100 VR+= AVCCVR-= VREF-/ VeREF-
101 VR+= VREF+ VR-= VREF-/ VeREF-
110 VR+= VeREF+ VR-= VREF-/ VeREF-
111 VR+= VeREF+ VR-= VREF-/ VeREF-
INCHx 3-0 输入通道选择
0000 A0
0001 A1
0010 A2
0011 A3
0100 A4
0101 A5
0110 A6
0111 A7
1000 VeREF+
1001 VREF-/VeREF-
1010 温度二极管
1011 (AVCC- AVSS)/2
1100 GND
1101 GND
1110 GND
1111 GND
577
ZHCU032IDecember 2004Revised January 2012 ADC12
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
ADC12
寄存器
www.ti.com.cn
23.3.5 ADC12IE
ADC12
中断断使使能能寄寄存存器
15 14 13 12 11 10 9 8
ADC12IE15 ADC12IE14 ADC12IE13 ADC12IE12 ADC12IE11 ADC12IE10 ADC12IFG9 ADC12IE8
rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0)
76543210
ADC12IE7 ADC12IE6 ADC12IE5 ADC12IE4 ADC12IE3 ADC12IE2 ADC12IE1 ADC12IE0
rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0)
ADC12IEx 15-0 中断使能。 这些位启用或禁用 ADC12IFGx 位的中断请求。
0中断被禁用
1中断被启用
23.3.6 ADC12IFG
ADC12
中断断标标志志寄寄存存器
15 14 13 12 11 10 9 8
ADC12IFG15 ADC12IFG14 ADC12IFG13 ADC12IFG12 ADC12IFG11 ADC12IFG10 ADC12IFG9 ADC12IFG8
rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0)
76543210
ADC12IFG7 ADC12IFG6 ADC12IFG5 ADC12IFG4 ADC12IFG3 ADC12IFG2 ADC12IFG1 ADC12IFG0
rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0)
ADC12IFGx 15-0 ADC12MEMx 中断标志。 当用一个转换结果加载相应的 ADC12MEMx 时,这些位被置位。 如果相应的
ADC12MEMx 被访问,ADC12IFGx 位就被复位,或可以用软件复位。
0无中断等待
1中断等待
578 ADC12 ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
ADC12
寄存器
23.3.7 ADC12IV
ADC12
中断断向向量量寄寄存存器
15 14 13 12 11 10 9 8
00000000
r0 r0 r0 r0 r0 r0 r0 r0
76543210
0 0 ADC12IVx 0
r0 r0 r-(0) r-(0) r-(0) r-(0) r-(0) r0
ADC12IVx 15-0 ADC12 中断矢量值
ADC12IV 内容 中断断源 中断断标志 中中断断优先级
000h 无中断等待 -
002h ADC12MEMx 溢出 -最高
004h 转换时间溢出 -
006h ADC12MEM0 中断标志 ADC12IFG0
008h ADC12MEM1 中断标志 ADC12IFG1
00Ah ADC12MEM2 的中断标志 ADC12IFG2
00Ch ADC12MEM3 中断标志 ADC12IFG3
00Eh ADC12MEM4 中断标志 ADC12IFG4
010h ADC12MEM5 中断标志 ADC12IFG5
012h ADC12MEM6 中断标志 ADC12IFG6
014h ADC12MEM7 中断标志 ADC12IFG7
016h ADC12MEM8 中断标志 ADC12IFG8
018h ADC12MEM9 中断标志 ADC12IFG9
01Ah ADC12MEM10 中断标志 ADC12IFG10
01Ch ADC12MEM11 中断标志 ADC12IFG11
01Eh ADC12MEM12 中断标志 ADC12IFG12
020h ADC12MEM13 中断标志 ADC12IFG13
022h ADC12MEM14 中断标志 ADC12IFG14
024h ADC12MEM15 中断标志 ADC12IFG15 最低
579
ZHCU032IDecember 2004Revised January 2012 ADC12
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Chapter 24
ZHCU032IDecember 2004Revised January 2012
TLV
结构
标签长度值 (TLV) 结构用在选定的 MSP430x2xx 器件中来提供器件的闪存存储器段 A中的器件专用信息,
例如校准数据。 有关与器件相关的执行信息,请参阅《器件专用数据表》。
Topic ........................................................................................................................... Page
24.1 TLV 介绍......................................................................................................... 581
24.2 支持持的的标标签....................................................................................................... 581
24.3 检查查段A的完完整整性............................................................................................. 585
24.4 分解解段ATLV 结构........................................................................................ 585
580 TLV
结构
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
TLV
介绍
24.1 TLV 介绍
TLV 结构段 A中器件专用数据。 一个示例器件的段 A的内容如在24-1中所示。
24-1. 示例例区区段A结构
字地地址 高位位字字节 低位位字字节节 标标签地址址和偏移
0x10FE CALBC1_1MHZ CALDCO_1MHZ 0x10F6 + 0x0008
0x10FC CALBC1_8MHZ CALDCO_8MHZ 0x10F6 + 0x0006
0x10FA CALBC1_12MHZ CALDCO_12MHZ 0x10F6 + 0x0004
0x10F8 CALBC1_16MHZ CALDCO_16MHZ 0x10F6 + 0x0002
0x10F6 0x08 (LENGTH) TAG_DCO_30 0x10F6
0x10F4 0xFF 0xFF
0x10F2 0xFF 0xFF
0x10F0 0xFF 0xFF
0x10EE 0xFF 0xFF
0x10 EC 0x08 (LENGTH) TAG_EMPTY 0x10 EC
0x10EA CAL_ADC_25T85 0x10DA + 0x0010
8x10E0 CAL_ADC_25T30 0x10DA + 0x000E
6x10E0 CAL_ADC_25VREF_FACTOR 0x10DA + 0x000C
4x10E0 CAL_ADC_15T85 0x10DA + 0x000A
2x10E0 CAL_ADC_15T30 0x10DA + 0x0008
0x10E0 CAL_ADC_15VREF_FACTOR 0x10DA + 0x0006
0x10DE CAL_ADC_OFFSET 0x10DA + 0x0004
0x10DC CAL_ADC_GAIN_FACTOR 0x10DA + 0x0002
0x10DA 0x10 (LENGTH) TAG_ADC12_1 0x10DA
0x10D8 0xFF 0xFF
0x10D6 0xFF 0xFF
0x10D4 0xFF 0xFF
0x10D2 0xFF 0xFF
0x10D0 0xFF 0xFF
0x10CE 0xFF 0xFF
0x10CC 0xFF 0xFF
0x10CA 0xFF 0xFF
0x10C8 0xFF 0xFF
0x10C6 0xFF 0xFF
0x10C4 0xFF 0xFF
0x10C2 0x16 (LENGTH) TAG_EMPTY 0x10C2
0x10C0 逐位异或运算的 2的补码 0x10C0
A的前两个字节 (0x10C0 0x10C1) 保持了段(地址 0x10C20x10FF)的余数的校验和。
第一标签位于地址 0x10C2 中,在这个例子中,是 TAG_EMPTY 标签。下面的字节 (0x10C3) 保持了以下
结构的长度。 该TAG_EMPTY 结构的长度是 0x16 且,因此,下一个标签,TAG_ADC12_1,出现在
0x10DA 地址。同样,下面的字节保存了 TAG_ADC12_1 结构的长度。
TLV 结构将整个地址范围 0x10C2 映射到 段 A0x10FF。 一个寻找开始于段 A地址 0x10C2 的标签的程
序例程,即使它存储在一个不同的(器件专用)绝对地址中,也提取所有的信息。
24.2 支持持的的标标签
每个器件包含在24-2所示标签的一个子集。 有关详细信息请参阅《器件专用数据表》。
581
ZHCU032IDecember 2004Revised January 2012 TLV
结构
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
支持的标签
www.ti.com.cn
24-2. 支持持的的标标签签((器器件件专专用用)
标签签 说说明
TAG_EMPTY 识别一个未被使用的内存区域 0xFE
TAG_DCO_30 室温下 DCO 的校准值和DVCC=3V 0x01
TAG_ADC12_1 ADC12 模块的校准值 0x08
TAG_ADC10_1 ADC10 模块的校准值 0x08
24.2.1 DCO
校准
TLV
结构
在对于 DCO 校准,使用了 BCS+ 寄存器(BCSCTL1 DCOCTL)。 存储在闪存信息存储区段 A的值被
写入 BCS+ 寄存器(请见24-3)。
24-3. DCO 校准准数数据据((器器件件专专用用)
标签 说明明 偏偏移
CALBC1_1MHZ 1MHz BCSCTL1 寄存器的值,TA=250x07
CALDCO_1MHZ 1MHz DCOCTL 寄存器的值,TA=250x06
CALBC1_8MHZ 8MHz BCSCTL 寄存器的值,TA=250x05
CALDCO_8MHZ 8MHz DCOCTL 寄存器的值,TA=250x04
CALBC1_12MHZ 12MHz BCSCTL 寄存器的值,TA=250x03
CALDCO_12MHZ 12MHz DCOCTL 寄存器的值,TA=250x02
CALBC1_16MHZ 16MHz BCSCTL 寄存器的值,TA=250x01
CALDCO_16MHZ 16MHz DCOCTL 寄存器的值,TA=250x00
DCO 的校准数据适用于所有 2xx 器件中并存储在相同的绝对地址。 如果在Example 24-1中适用了采样编
码,通过使用绝对寻址模式,就可以使用器件专用段 A的内容。
Example 24-1.
使使用用绝绝对对寻寻址址模模式式的的代代码码示示例
; Calibrate the DCO to 1 MHzCLR.B &DCOCTL ; Select lowest DCOx; and MODx settingsMOV.B
&CALBC1_1MHZ,&BCSCTL1 ; Set RSELxMOV.B &CALDCO_1MHZ,&DCOCTL ; Set DCOx and MODx
TLV 结构允许使用 TAG_DCO_30 标签的地址来寻址 DCO寄存器。Example 24-2显示了如何通过使用
TAG_DCO_30标签来寻址 DCO 校准数据。
Example 24-2.
使使用
TLV
结构构的的代代码码示示例
; Calibrate the DCO to 8 MHz; It is assumed that R10 contains the address of the TAG_DCO_30 tagCLR.B
&DCOCTL ; Select lowest DCOx and; MODx settingsMOV.B 7(R10),&BCSCTL1 ; Set RSELMOV.B 6(R10),&DCOCTL ;
Set DCOx and MODx
582 TLV
结构
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
支持的标签
24.2.2 TAG_ADC12_1
校准
TLV
结构
ADC12 模块的校准数据由八个字组成(请见24-4)。
24-4. TAG_ADC12_1 的校校准准数数据据((器器件件专专用用)
标签 说明明 偏偏移
CAL_ADC_25T85 VREF2_5=1TA= 85±2K12 位转换结果 0x0E
CAL_ADC_25T30 VREF2_5=1TA=30± 2K12 位转换结果 0x0C
CAL_ADC_25VREF_因子 VREF2_5=1, TA=30±2K 0x0A
CAL_ADC_15T85 VREF2_5=0TA=85± 2K12 位转换结果 0x08
CAL_ADC_15T30 VREF2_5=0TA=30±2K12 位转换结果 0x06
CAL_ADC_15VREF_因子 VREF2_5=0TA=30±2K 0x04
CAL_ADC_偏移量 VeREF=2.5VTA=85±2KfADC12CLK=5MHz 0x02
CAL_ADC_GAIN_FACTOR VeREF=2.5VTA=85°C± 2KfADC12CLK=5MHz 0x00
24.2.2.1 温度度传传感感器器的的校校准准数数据
通过使用内部基准电压来校准该温度传感器。 在VREF2_5=0 1时,转换结果在 30°C 85°C 下被写在
各自的区段地点(请见24-4)。
24.2.2.2 集成成电电压压基基准准校校准准数数据
基准电压(VREF2_5=0 1)是在室温下测定的。 在把测量的值存储到闪存中信息存储器段 A中之前会将
它标准化为 1.5V 2.5V
CAL_ADC_15VREF_FACTOR= (VeREF/ 1.5 V) ×215
通过与 CAL_ADC_15VREF_FACTOR 相乘(或 CAL_ADC_25VREF_FACTOR)并把该结果除以 215来校
正转换结果。
ADC(已校正) = ADC(原始的)× CAL_ADC_15VREF_因子 × (1/215)
24.2.2.3 使使用用基基准准电电压压校校准准的的示示例
在下面的例子中,集成的 1.5V 基准电压用于转换过程。
转换结果:0X0100
基准电压校准因子 (CAL_ADC_15VREF_FACTOR)0x7BBB
以下步骤演示了是一个例子是如何通过使用硬件乘法器校正 ADC12 转换结果的:
把转换的结果乘以 2(这一步简化了最后的除法)。
把该结果乘以CAL_ADC_15VREF_FACTOR
把结果除以 216(使用32 位上部字的相乘结果 RESHI)。
在这个例子中:
0x0100 × 0x0002=0x0200
0x0200 × 0x7BBB=0x00F7_7600
0x00F7_7600 ÷ 0x0001_0000 = 0x0000_00F7 (=247)
以下是使用硬件乘法器的代码示例。
; The ADC conversion result is stored in ADC12MEM0; It is assumed that R9 contains the address of
the; TAG_ADC12_1.; The corrected value is available in ADC_CORMOV.W &ADC12MEM0,R10 ; move result
to R10RLA.W R10 ; R10 x 2MOV.W R10,&MPY ; unsigned multiply OP1MOV.W
CAL_ADC_15VREF_FACTOR(R9),&OP2; calibration value OP2MOV.W &RESHI,&ADC_COR ; result: upper 16-
583
ZHCU032IDecember 2004Revised January 2012 TLV
结构
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
支持的标签
www.ti.com.cn
bit MPY
24.2.2.4 偏移移和和增增益益校校准准数数据
在段 AADC12 的偏移量被确定并存储为二补码数。 通过把 CAL_ADC_OFFSET 添加到转换结果中来完
成偏移误差校正。
ADC(偏移量_已校正)= ADC(原始) + CAL_ADC_OFFSET
ADC12 的增益,存储在偏移量 0x00 中,用以下公式计算。
CAL_ADC_GAIN_FACTOR =1 / 增益)× 215
是通过将它乘以CAL_ADC_GAIN_FACTOR 并把该结果除以 215来增益纠正该转换结果。
ADC(增益_已校正)=ADC(原始)× CAL_ADC_GAIN_FACTOR × (1/215)
如果增益和偏移量这两个都要进行校正,那么首先进行增益校正。
ADC(增益_已校正)=ADC(原始)× CAL_ADC_GAIN_FACTOR × (1/215)
ADC(最终)=ADC(增益_已校正)+ CAL_ADC_OFFSET
24.2.2.5 使使用用增增益益和和偏偏移移量量校校准准的的例例子
在下面的例子中,在一个转换期间使用了一个外部集成的基准电压。
转换结果:0x0800 (=2048)
增益校准系数:0x7FE0(增益误差:+2 LSB
偏移校准:0xFFFE-2 2S补码)
以下步骤演示了一个例子是如何通过使用硬件乘法器校正 ADC12 转换结果的:
把转换的结果乘以 2(这一步简化了最后的除法)。
把该结果乘以CAL_ADC_GAIN_FACTOR
把结果除以 216(使用32 位乘法结果 RESHI 的上部字)。
CAL_ADC_OFFSET 添加到该结果中。
在这个例子中:
• 0x0800+(0x*0002)=0x1000
• 0x1000×0x8010=0x0801_0000
0x0801_0000÷0x0001_0000=0x0000_0801 (=2049)
0x801+0xFFFE=0x07FF (=2047)
以下是使用硬件乘法器的代码示例。
; The ADC conversion result is stored in ADC12MEM0; It is assumed that R9 contains the address of
the TAG_ADC12_1.; The corrected value is available in ADC_CORMOV.W &ADC12MEM0,R10 ; move result
to R10RLA.W R10 ; R10 * 2MOV.W R10,&MPY ; unsigned multiply OP1MOV.W
CAL_ADC_GAIN_FACTOR(R9),&OP2; calibration value OP2MOV.W &RESHI,&ADC_COR ; use upper 16-
bit MPYADD.W CAL_ADC_OFFSET(R9),&ADC_COR; add offset correction
584 TLV
结构
ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
检查段
A
的完整性
24.3 检查查段A的完完整整性
64 字节段 A包含一个 2字节的存储在地址为 0x10C0 0x10C1 0x10C2 0x10FF处的数据的校验
和。 校验和是一个存储在二补码数据格式中的 31 字的逐位异或运算。
一个计算以下校验和的代码示例。
; Checking the SegmentA integrity by calculating the 2's; complement of the 31 words at 0x10C2 -
0x10FE.; It is assumed that the SegmentA Start Address is stored; in R10. R11 is initialized to
0x00.; The label TLV_CHKSUM is set to 0x10C0.ADD.W #2,R10 ; Skip the checksumLP0 XOR.W @R10+,R11
; Add a word to checksum CMP.W #0x10FF,R10 ; Last word included?JN LP0 ; No, add more dataADD.W
&TLV_CHKSUM,R11 ; Add checksumJNZ CSNOK ; Checksum not ok... ; Use SegmentA dataCSNOK ... ; Do
not use SegmentA Data
24.4 分解解段ATLV 结构
分析以下区段 A的代码示例。
; It is assumed that the SegmentA start address; is stored in R10.LP1 ADD.W #2,R10 ; Skip two
bytesCMP.W #0x10FF,R10 ; SegmentA end reached?JGE DONE ; Yes, doneCMP.B #TAG_EMPTY,0(R10) ;
TAG_EMPTY?JNZ T1 ; No, continueJMP LP2 ; Yes, done with TAG_EMPTYT1 CMP.B #TAG_ADC12_1,0(R10) ;
TAG_ADC12_1?JNZ T2 ; No, continue... ; Yes, found TAG_ADC12_1JMP LP2 ; Done with TAG_ADC12_1T2
CMP.B #DCO_30,0(R10) ; TAG_DCO_30?JNZ T3 ; No, continueCLR.B &DCOCTL ; Select lowest DCOxMOV.B
7(R10),&BCSCTL1 ; Yes, use e.g. 8MHz data andMOV.B 6(R10),&DCOCTL ; set DCOx and MODxJMP LP2 ;
Done with TAG_DCO_30T3 ... ; Test for "next tag"... ; JMP LP2 ; Done with "next tag"LP2 MOV.B
1(R10),R11 ; Store LENGTH in R11ADD.W R11,R10 ; Add LENGTH to R10JMP LP1 ; Jump to continue
analysisDONE ;
585
ZHCU032IDecember 2004Revised January 2012 TLV
结构
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Chapter 25
ZHCU032IDecember 2004Revised January 2012
DAC12
DAC12 模块是一宽 12 位电压输出数模转换器 (DAC)。 本章描述了 MSP430x2xx 器件系列的 DAC12 模块
的运行。
Topic ........................................................................................................................... Page
25.1 DAC12 介绍..................................................................................................... 587
25.2 DAC12 运行..................................................................................................... 589
25.3 DAC12 寄存存器.................................................................................................. 593
586 DAC12 ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
DAC12
介绍
25.1 DAC12 介绍
DAC12 模块是一个 12 位电压输出数模转换器 (DAC)DAC12 可在 8位或者 12 位模式中被配置并可与
DMA 控制器协同使用。 当多个 DAC12 模块出现时,可将它们编成一组进行同步更新操作。
DAC12 的特性包括:
12 位单片输出
8 位或 12 位电压输出分辨率
可编程的稳定时间与功耗间的关系
内部或者外部基准电压选择
直接二进制或 2补码数据格式
针对偏移校正的自校准选项
多个 DAC12 模块的同步更新功能
:多个DAC12 模块
有些器件内置了一个以上的 DAC12 模块。 如果一个器件上出现一个以上的 DAC12 模块,则
DAC12 模块完全相同的运行。
在这一整章中,将会出现如 DAC12_xDAT DAC12_xCTL 的命名来描述寄存器名称。 这种
情况下,x被用于指代正在被讨论的 DAC12 模块。 在操作完全相同的情况下,寄存器被简写
DAC12_xCTL
DAC12 模块反馈图如25-1所示。
587
ZHCU032IDecember 2004Revised January 2012 DAC12
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
DAC12_0
DAC12_0OUT
2.5V or 1.5V reference fromADC12
DAC12SREFx
VR− VR+
DAC12_0DAT
DAC12_0Latch
DAC12_1
DAC12LSELx
VR− VR+
DAC12_1DAT
DAC12_1Latch
TB2
TA1
DAC12DF
DAC12RES
AVSS
00
01
10
11
00
01
10
11
00
01
10
11
Ve REF+
VREF+
DAC12DF
DAC12RES
Latch Bypass
DAC12LSELx
TB2
TA1
00
01
10
11
00
01
10
11
Latch Bypass
DAC12IR
To ADC12 module
DAC12_1DAT Updated
DAC12_0DAT Updated
1
0
0
1
DAC12ENC
0
1
DAC12ENC
DAC12GRP
1
0
DAC12GRP
DAC12SREFx
AVSS
00
01
10
11
x3
/3
DAC12_1OUT
DAC12AMPx
3
x3
DAC12IR
/3
Group
Load
Logic
DAC12AMPx
3
DAC12
介绍
www.ti.com.cn
25-1. DAC12 反馈馈图
588 DAC12 ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
OUT REF
DAC12_xDAT
V = V × 256
OUT REF
DAC12_xDAT
V = V × 3 × 256
OUT REF
DAC12_xDAT
V = V × 4096
OUT REF
DAC12_xDAT
V = V × 3 × 4096
www.ti.com.cn
DAC12
运行
25.2 DAC12 运行
DAC12 模块可由用户软件配置。 DAC12 的运行和建立在下列章节中进行讨论。
25.2.1 DAC12
内核
DAC12 可以在 8位或 12 位模式中使用 DAC12RES 位配置运作中。 满量程输出可以通过 DAC12IR 位被编
程为 1x 3x 选择的基准电压。 此功能允许了用户控制 DAC12 的动态范围。 DAC12DF 位允许用户为
DAC 在直节二进制和 2补码数据格式之间进行选择。 使用直节二进制数据格式时,输出电压公式在25-1
中给出。
25-1. DAC12 满量量程程范范围围(VREF=VeREF+VREF+
分辨辨率DAC12RES DAC12IR 输出出电电压公式
12 0 0
12 0 1
81 0
81 1
8位模式中,DAC12_xDAT 的最大可用值值为 0FFh。在12 位模式中,DAC12_xDAT 的最大可用值值
0FFFh。 大于这些的值可能会被写入寄存器,但前导位会被忽略。
25.2.1.1 DAC12 端口口选选择
DAC12 输出与端口 P6 引脚和 ADC12 模拟量输入,和 VEREF+引脚是复用的。 当 DAC12AMPx>0
时,DAC12 引脚将自动选择功能,而不管相关的 PxSELx PxDIRx 位状态。 DAC12OPS 位将在 P6
脚和 VEREF+引脚之间为 DAC 输出进行选择。 例如,当 DAC12OPS=0 时,DAC12_0 P6.6 上输出并且
DAC12_1 P6.7 上输出。当 DAC12OPS=1 时,DAC12_0 VeREF+上输出并且 DAC12_1 P6.5 上输
出。更多详细信息请参阅《器件专用数据表》中的端口引脚的原理图。
25.2.2 DAC12
基准
DAC12 的基准被配置为使用外部基准电压或使用来自于带有 DAC12SREFx 位的 ADC12 模块的内部 1.5-
V/2.5-V 基准电压。 当 DAC12SREFx={0,1}时,VREF+信号被用作基准电压并且当 DAC12SREFx={2,3}
时,VeREF+信号被用作基准电压。
想要使用 ADC12 内部基准电压,必须通过合适的 ADC12 控制位启用和配置它。
25.2.2.1 DAC12 基准准输输入入和和电电压压输输出出缓缓冲冲器
DAC12 的基准输入和电压输出缓冲器可以配置优化的建立时间与功耗。 使用 DAC12AMPx 位选择 8种组
合。 在低/低设置中,建立时间是最慢的,并且两个缓冲器的电流消耗也是最低的。 中高级设置中比较快的
建立时间,而且电流消耗也会增加。 有关参数请参阅《器件专用数据表》
25.2.3
更新
DAC12
电压压输输出
DAC12_xDAT 寄存器可直接连接到 DAC12 内核或被双缓冲。 最新的 DAC12 电压输出触发器由
DAC12LSELx 位选择。
589
ZHCU032IDecember 2004Revised January 2012 DAC12
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Full-Scale Output
0800h (−2048) 07FFh (+2047)0
0
Output Voltage
DAC Data
Mid-Scale Output
Full-Scale Output
0 0FFFh
0
Output Voltage
DAC Data
DAC12
运行
www.ti.com.cn
DAC12LSELx=0 时,数据锁存器是透明的并且 DAC12_xDAT 寄存器被直接应用于 DAC12 内核。当新
DAC12 数据被写入 DAC12_xDAT 寄存器时,不管 DAC12ENC 位的状态,DAC12 输出会立即更新。
DAC12LSELx=1 时,DAC12 的数据被锁存并且在新的数据被写入到 DAC12_xDAT 后该数据直接应用于
DAC12 内核。 当 DAC12LSELx=2 3时,数据分别被锁存在从定时器_A CCR1 输出的或定时器_B
CCR2 输出的上升沿上。 当 DAC12LSELx>0 时,DAC12ENC 必须被置位以锁存数据。
25.2.4 DAC12_xDAT
数据据格格式
DAC12 支持直接二进制和 2补码两种数据格式。 当使用直二进制数据格式时,在 12 位模式中满量程输出
值是 0FFFh(在 8位模式中是0FFh)如25-2所示。
25-2. 输出出电电压压与DAC12 数据据,12 位,,直直节节二二进进制制模模式式。
当使用 2补码数据格式时,使得一个 DAC12_xDAT 的值在 0800h 范围内转换(在 8位模式中是 0800h
导致了一个 0输出电压,0000h 是半量程输出电压,和 07FFh8位模式为 007Fh)是满量程输出电
压(见 25-3)。
25-3. 输出出电电压压与DAC12 数据据,12 位,2补码码模模式
25.2.5 DAC12
输出出放放大大器器的的失调校校准
DAC12 输出放大器的偏置电压可以是正的或负的。 当偏移量为负时,输出放大器试图驱动负电压,但不能
成功。 输出电压一直保持为 0直到 DAC12 数字输入产生一个足够的输出电压来克服负偏移电压,从而产生
25-4中所示的传递函数。
590 DAC12 ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Vcc
Output Voltage
0
DAC Data Full-Scale Code
Output Voltage
0
DAC Data
Negative Offset
www.ti.com.cn
DAC12
运行
25-4. 负偏偏移
当输出放大器有一个正偏移时,一个值为 0的数字输入不会导致输出电压为零。 DAC12 的输出电压会在
DAC12 数据达到最大代码前达到最大输出电平。 25-5显示了这一过程。
25-5. 正偏偏移
DAC12 具有校准输出放大器的偏移电压的功能。 设置 DAC12CALON 位来启动偏移校准。 使用 DAC12
前应完成校准。 校准完成后,DAC12CALON 位自动复位。 校准前应先配置 DAC12AMPx 位。 为获得最佳
校准结果,在校准过程中,应尽量减少端口和 CPU 的活动。
25.2.6
编组组多多个
DAC12
模块
多个 DAC12 可以被组合在一起使用 DAC12GRP 位同步更新每个 DAC12 输出。 硬件确保 DAC12 模块组
中的所有更新,同时也确保了任何中断或 NMI 事件的独立。
通过设置 DAC12_0 DAC12GRP 位编组 DAC12_0 DAC12_1DAC12_1 中的 DAC12GRP 位不影
。当DAC12_0 DAC12_1 被编组时:
DAC12_1 DAC12LSELx 位为两种 DAC 选择更新触发。
两种 DAC DAC12LSELx 位都必须> 0
两种 DAC DAC12ENC 位都必须被设置为 1
DAC12_0 DAC12_1 被编组时,即使一种或两种 DAC 数据没有发生改变,在数据更新前两种
DAC12_xDAT 寄存器也必须被写入。25-6显示了 DAC12_0 DAC12_1 编组的一个锁存更新时序例
子。
DAC12_0 DAC12GRP=1 和两种 DAC12_x DAC12LSELx>0 及任一 DAC12ENC=0 时,任一 DAC12
不更新。
591
ZHCU032IDecember 2004Revised January 2012 DAC12
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
DAC12_0
DAC12GRP
DAC12_0
DAC12ENC
TimerA_OUT1
DAC12_0
Latch Trigger
DAC12_0 Updated
DAC12_0 DAC12LSELx = 2 DAC12_0 DAC12LSELx > 0AND
DAC12_1 DAC12LSELx = 2
DAC12_0DAT
New Data
DAC12_1DAT
New Data
DAC12_0 and DAC12_1
Updated Simultaneously
DAC12
运行
www.ti.com.cn
25-6. DAC12 组更更新新举举例例,,定定时时器_A3 触发发器
: DAC12 稳定定时时间
DMA 控制器能够将 DAC12 输出可以解决数据更快的传输至 DAC12。 在使用 DMA 控制器
时,用户必须保证 DAC12 稳定时间没有被占用。 对于参数请参阅《器件专用数据表》
25.2.7 DAC12
中断
在 某些器件上 DAC12 中断向量与 DMA 控制器共享(参见《器件专用数据表》的中断分配)。 在这种情况
下,软件必须检查 DAC12IFG DMAIFG 标志位来判断中断源。
DAC12LSELx>0,从 DAC12_xDAT 寄存器到数据锁存器的数据被锁存时,DAC12IFG 被置位。 当
DAC12LSELx=0 时,DAC12IFG 的标志没有被置位。
一个置位 DAC12IFG 位表明了 DAC12 正准备传输新数据。 如果 DAC12IE GIE 都被置位,则
DAC12IFG 产生一个中断请求。 DAC12IFG 标志不会被自动复位。 它必须由软件复位。
592 DAC12 ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
DAC12
寄存器
25.3 DAC12 寄存存器
25-2中列出了 ADC12 寄存器。
25-2. DAC12 寄存存器
寄存存器 简式式 寄寄存存器器类型 地地址 初态
DAC12_0 控制 DAC12_0CTL 读取/写入 01C0h POR 复位
DAC12_0 数据 DAC12_0DAT 读取/写入 01C8h POR 复位
DAC12_1 控制 DAC12_1CTL 读取/写入 01C2h POR 复位
DAC12_1 数据 DAC12_1DAT 读取/写入 01CAh POR 复位
593
ZHCU032IDecember 2004Revised January 2012 DAC12
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
DAC12
寄存器
www.ti.com.cn
25.3.1 DAC12_xCTL
DAC12
控制制寄寄存存器
15 14 13 12 11 10 9 8
DAC12OPS DAC12SREFx DAC12RES DAC12LSELx DAC12CALON DAC12IR
rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0)
76543210
DAC12AMPx DAC12DF DAC12IE DAC12IFG DAC12ENC DAC12GRP
rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0)
只有当 DAC12ENC=0 时,才能被修改。
DAC12OPS 15 DAC12 输出选择
0 DAC12_0 P6.6 上输出,DAC12_1 P6.7 上输出
1 DAC12_0 VeREF+上输出,DAC12_1 P6.5 上输出。
DAC12SREFx 14-13 DAC12 选择基准电压
00 VREF+
01 VREF+
10 VeREF+
11 VeREF+
DAC12RES 12 DAC12 分辨率选择
0 12 位分辨率
1 8 位分辨率
DAC12LSELx 11-10 DAC12 负载选择。 为 DAC12 锁存器选择负载触发器。 为了 DAC 的更新,除了当 DAC12LSELx=0
时,DAC12ENC 必须被置位。
00 DAC12_xDAT 被写入时,DAC12 锁存负载(DAC12ENC 被忽略)
01 DAC12_xDAT 被写入时,DAC12 锁存负载,或者,当编组时,当组合内所有 DAC12_xDAT 寄存
器都已经被写入时,DAC12 锁存负载。
10 定时器_A.OUT1 (TA1) 的上升沿
11 定时器_B.OUT2 (TB2) 的上升沿
DAC12CALON 9 DAC12 校准打开。 该位启动 DAC12 偏移校准序列并且校准完成后,会自动复位。
0校准未激活
1启动校准/校准正在进行中
DAC12IR 8 DAC12 的输入范围。 该位设置基准输入和输出电压范围。
0 DAC12 满量程输出 = 3 倍基准电压
1 DAC12 满量程输出 = 1 倍基准电压
DAC12AMPx 7-5 DAC12 放大器设置。 这些位为 DAC12 输入和输出放大器选择稳定时间与电流消耗。
DAC12AMPx 输入入缓冲器器 输输出缓冲冲器
000 关闭 DAC12 关闭,输出高 Z
001 关闭 DAC12 关闭,输出 0V
010 低速/电流 低速/电流
011 低速/电流 中速/电流
100 低速/电流 高速/电流
101 中速/电流 中速/电流
110 中速/电流 高速/电流
111 高速/电流 高速/电流
DAC12DF 4 DAC12 数据格式
0直接二进制
1 2 补码
DAC12IE 3 DAC12 中断使能
0被禁用
1被启用
594 DAC12 ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
DAC12
寄存器
DAC12IFG 2 DAC12 中断标志
0无中断等待
1中断等待
DAC12ENC 1 DAC12 使能转换。 当 DAC12LSELx>0 时,该位启用 DAC12 模块。当 DAC12LSELx=0 时,DAC12ENC
忽略。
0 DAC12 被禁用
1 DAC12 被启用
DAC12GRP 0 DAC12 。将DAC12_x 与下一个更高的 DAC12_x 编组。 不用于 DAC12_1
0没被编组
1被编组
25.3.2 DAC12_xDAT
DAC12
数据据寄寄存存器
15 14 13 12 11 10 9 8
0000 DAC12 数据
r(0) r(0) r(0) r(0) rw-(0) rw-(0) rw-(0) rw-(0)
76543210
DAC12 数据
rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0) rw-(0)
未被被使使 15-12 未被使用。 这些位总是 0并且不影响 DAC12 内核。
DAC12 数据 11-0 DAC12 数据
DAC12 数据据格DAC12 数据
12 位的二进制 DAC12 数据是右对齐的。 位 11 MSB
12 2补码 DAC12 数据是右对齐的。 位 11 MSB(符号)。
8位的二进制 DAC12 数据是右对齐的。 位 7MSB。位11-8 无关并且不会影响 DAC12 内核。
82补码 DAC12 数据是右对齐的。 位 7MSB(符号)。 位 11-8 无关并且不会影响 DAC12 内核。
595
ZHCU032IDecember 2004Revised January 2012 DAC12
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Chapter 26
ZHCU032IDecember 2004Revised January 2012
SD16_A
SD16_A 是一个单转换 16 位三角积分模数转换模块,它具有高阻抗输入缓冲器。 本章介绍了 SD16_A
块。 SD16_A 模块在 MSP430x20x3 器件中执行。
Topic ........................................................................................................................... Page
26.1 SD16_A 介绍................................................................................................... 597
26.2 SD16_A 操作................................................................................................... 599
26.3 SD16_A 寄存存器................................................................................................ 609
596 SD16_A ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
SD16_A
介绍
26.1 SD16_A 介绍
SD16_A 模块由一个三角积分模数转换器组成,此转换器带有一个高阻抗输入缓冲器和内部参考基准。 它拥
有多达 8个的差分式复合输入对,并包含一个内置温度传感器和一个分电源电压。 该模数转换器是基于二
阶过采样的三角积分调节器和数字抽取滤波器。 该抽取滤波器是一种梳状滤波器,它的过采样率是可选择
的,最高可以达到 1024。 额外的滤波可以用软件实现。
MSP430x20x3 器件中没有执行高阻抗输入缓冲。
SD16_A 的特点包括:
16 位三角积分结构
每通道多达 8个多路复用差分模拟输入(输入端的数量取决于器件,请参阅《器件专用数据手册》。)
软件可选片上基准电压生成 (1.2V)
软件可选内部或外部基准电压
内置温度传感器
高达 1.1MHZ 的调节器输入频率
高阻抗输入缓(在所有器件上未执行,请参阅《器件专用数据表》)
可选低功耗转换模式
26-1中给出了 SD16_A 的模块方框图。
597
ZHCU032IDecember 2004Revised January 2012 SD16_A
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
15 0
SD16DIVx
ACLK
TACLK
SD16SSELx
00
01
10
11
00
01
10
11
MCLK
SMCLK
AVCC
VREF
Divider
1/2/4/8
A0 000
SD16INCHx
+
001
+
010
+
011
+
100
+
101
+
110
+
111
+
A1
A2
A3
A4
A5
A6
2ndOrder
Σ∆ Modulator
SD16GAINx
SD16DF
SD16LP
SD16SC
SD16OSRx
SD16SNGL
SD16MEM0
Reference
A7
SD16VMIDON
SD16REFON
fM
Reference
1.2V
Start Conversion
Logic
AVSS
SD16XDIVx
Divider
1/3/16/48
SD16XOSR
BUF
1
0
SD16UNI
1
AVCC
SD16INCHx=101
Temp.
sensor
PGA
1..32
5R
R
5R
SD16BUFx
Not Implemented in MSP430x20x3 devices
Reference
SD16_A
介绍
www.ti.com.cn
26-1. SD16_A 方框框图
598 SD16_A ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
FSR
1.2 V
2
±V = = ±0.6 V
1
REF
FSR
PGA
V
2
V =
GAIN
www.ti.com.cn
SD16_A
操作
26.2 SD16_A 操作
SD16_A 模块用用户软件进行配置。 在以下章节详细阐述了 SD16_A 的设置和操作。
26.2.1 ADC
芯片
模数转换是由一个 1位二阶三角积分调节器实现的。 调节器中的一个单位比较器通过调节器频率 fM量化输
入信号。 所产生的 1位数据流由数字滤波器平均分配作为转化结果。
26.2.2
模拟拟输输入入范范围围和
PGA
各模拟输入对的满量程输入电压范围由各通道的可编程放大器增益设置来决定。 最大满量程范围为 ±VFSR
中,VFSR由以下公式定义:
对于一个 1.2V 的基准电压,在增益为 1时,最大全程输入范围为:
有关满量输入规格请参阅《器件专用数据表》。
26.2.3
基准准电电压压发发生生器
SD16_A 模块有一个 1.2v 的内置基准电压 可以通过 SD16REFON 位来启用它。 当使用内部基准电压时,
为了减少噪声,建议用一个外部 100nF 电容把 VREF连接到 AVSS。 当 SD16VMIDON = 1 时,内部基准电压
可以在片外使用。缓冲输出可提供高达 1mA 的驱动。 当使用片外内部基准电压时,需要在 VREFAVSS
间接一个 470nF 的电容。 详细参数请参阅《器件专用数据表》。
SD16REFON SD16VMIDON 都复位时,外部电压可以用于 VREF输入端。
26.2.4
自动动断断电
SD16_A 是专为低功耗应用而设计的。 当 SD16_A 不进行转换时,它就会自动关闭,而当一个转换开始时
又自动重新使能。 基准电压不会自动禁止,但是可以通过设置 SD16REFON = 0 来关闭。当 SD16_A 或基
准电压被禁止时,它们不消耗电流。
26.2.5
模拟拟输输入入对对选选择
SD16_A 可将多达 8个不同的差分输入对复路到 PGA。 在器件上的多达 5个模拟输入对 (A0-A4) 对外是可
用的。 通过使用 A5 多路复用器输入可以使一个用于检测电源电压的电阻分压器可用。 通过使用 A6 多路复
用器输入可以使一个内部温度传感器可用。 A7 +-输入对之间的短路连接,且可用于校准 SD16A
输入级的偏移。
26.2.5.1 模拟拟输输入入设设置
模拟输入是通过使用 SD16INCTL0 SD16AE 寄存器来配置的。 SD16INCHx 位选择了模拟多路复用器的
8个不同差分输入对中的其中一个。 PGA 的增益由 SD16GAINx 决定。 共有 6个增益设置可用。
SD16AEx 位用于使能或禁止模拟输入引脚。 设置任何 SD16AEx 位可以禁止相应引脚的复用数字电路。 有
关引脚图请参阅《器件专用数据表》。
599
ZHCU032IDecember 2004Revised January 2012 SD16_A
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
CC CC
S Ax S+ S–
Settling
AV AV
1
f = and V = max – V , – V
2 × t 2 2
æ ö
ç ÷
ç ÷
è ø
17 Ax
Settling S S REF
GAIN × 2 × V
t (R + 1 k ) × C × ln V
æ ö
ç ÷
³ W ç ÷
è ø
RS1 k
VS+
MSP430
CS
VS+ = Positive external source voltage
VS− = Negative external source voltage
RS= External source resistance
CS= Sampling capacitance
RS1 k
VS−
CS
AVCC / 2
† Not implemented in MSP430x20x3 devices
SD16_A
操作
www.ti.com.cn
在转换过程中,对 SD16INCHx SD16GAINx 位的任何修改都会在下一个数字滤波器的采样周期生效。 由
于数字滤波器的建立时间,在这些位被修改之后,接下来的 3次转换可能会无效。 这可由 SD16INTDLYx
位自动处理。 当 SD16INTDLY = 00h 时,在一个转换开始条件后,转换中断请求将在第 4次转换时才开
始。
可以通过使用 SD16BUFx 位来使能器件上正在执行的高阻抗输入缓冲。 设置的速度根据 SD16A 调节器频
率来选择,如在26-1中所示。
26-1. 高输输入入阻阻抗抗缓缓冲冲器
SD16BUFx 缓冲冲器SD16 制器器频fM
00 缓冲被禁止
01 低速/电流 fM< 200kHz
10 中速/电流 200kHz < fM< 700kHz
11 高速/电流 700kHz < fM< 1.1MHz
建议为 SD16_A 添加一个 RC 反锯齿滤波器来防止输入信号失真。 对于一个 1MHz 的调制器时钟且
OSR=256 时,截止频率应该 < 10kHz。 在带宽要求较低的应用中,截止频率可以设置为一个较低频率。
26.2.6
模拟拟输输入入特特性
SD16_A 使用一个开关电容输入级,该输入极对外部电路来说就如一个阻抗,如在26-2中所示。
26-2. 模拟拟输输入入等等效效电电路
当使用缓冲器时,RS不影响采样频率 fS。 然而,当不使用缓冲器时,或器件上没有缓冲器时,最大采样频
fS可以由采样电路的最小建立时间 t稳定时间来计算:
其中
VS+VS-AVSS为基准。
CS随着如26-2中所示的增益设置而不同。
600 SD16_A ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
−140
−120
−100
−80
−60
−40
−20
0
Frequency
GAIN [dB]
fSfM
3 3
M M
M M
f f
sinc OSR × × sin OSR × ×
f f
1
H(f) = = ×
OSR
f f
sinc × sin ×
f f
p p
p p
é ù é ù
æ ö æ ö
ê ú ê ú
ç ÷ ç ÷
ç ÷ ç ÷
ê ú ê ú
è ø è ø
ê ú ê ú
æ ö æ ö
ê ú ê ú
ç ÷ ç ÷
ç ÷ ç ÷
ê ú ê ú
è ø è ø
ë û ë û
3
-OSR
-1
1 1 – z
H(z) = ×
OSR 1–z
æ ö
ç ÷
ç ÷
è ø
www.ti.com.cn
SD16_A
操作
26-2. 采样样电电容
PGA 增益益 采采样电容容,CS
1 1.25pF
2, 4 2.5pF
8 5pF
16, 32 10pF
26.2.7
数字字滤滤波波器
数字滤波器用一个 SINC3梳状滤波器来处理调制器的 1位的数据流。 在 Z域表述了该传递函数。
频域传递函数为:
这里过采样频率,OSR,是调制器频率 fM与采样频率 fS的比率。26-3给出了 32 的一个 OSR 滤波器频率
响应。 第一个滤波器陷波是在 fS= FM/OSR 时。 可以通过更改调制器的频率,fM使用 SD16SSELx
SD16DIVx,且过采样率用 SD16OSRx SD16XOSR 位来调节陷波的频率。
在采样频率为 fS时,每个使能的 ADC 通道的数字滤波器完成数字位流的采样,并输出新的转换结果到
SD16MEM0 寄存器。
26-3. 梳状状滤滤波波器器的的频频率率响响应应,OSR = 32
26-4给出了数字滤波器的阶跃响应和转换点。 在开始转换后,对于在输入端的阶跃变化,必须在获得一
个有效转换结果之前提供一段建立时间。 SD16INTDLYx 位可以为 ADC 输入的一个满量程变化提供足够的
滤波建立时间。 如果阶跃和数字滤波器的采样同时进行,则有效数据会在第 3次转换时可用。 一个异步阶
跃会在有效数据可用之前需要多一次转换。
601
ZHCU032IDecember 2004Revised January 2012 SD16_A
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
1
2
3
4
1
0
0.2
0.4
0.6
0.8
1
0
0.2
0.4
0.6
0.8
1
2
3
Asynchronous Step Synchronous Step
% VFSR
Conversion Conversion
SD16_A
操作
www.ti.com.cn
26-4. 数字字滤滤波波器器阶阶跃跃响响应应和和转转换换点
26.2.7.1 数字字滤滤波波器器输输出
数字滤波器输出的位数由过采样率决定,且范围为 15 30 位。26-5给出了数字滤波器输出和在每个
OSRLSBACC, SD16UNI 设置下,它们与 SD16MEM0 的关系。 例如,对于 OSR=1024LSBACC =
0, SD16UNI = 1SD16MEM0 寄存器包含了数字滤波器输出的第 28 13 。当OSR= 32 , 1
(SD16UNI = 0) 2(SD16UNI=1) LSB 总是为 0
SD16LSBACC SD16LSBTOG 位允许访问数字滤波器输出的最低有效位。 当 SD16LSBACC = 1 时,通
过用字指令,数字滤波器的输出的最低有效位 16 位可以从 SD16MEM0 读出。 通过只返回数字滤波器输出
的最低有效位 8位,也可以通过字节指令访问SD16MEM0 寄存器。
SD16LSBTOG = 1 时,每次读取 SD16MEM0 时都会自动触发 SD16LSBACC 位。 这就使得数字滤波器
的输出结果可以通过 2次读取 SD16MEM0 来获得。 在下一次 SD16MEM0 访问前,置位或复位
SD16LSBTOG 并不会改变 SD16LSBACC
602 SD16_A ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
048121620
24 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529
OSR=512, LSBACC=1, SD16UNI=0
048121620
24 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529
OSR=512, LSBACC=0, SD16UNI=0
048121620
24 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529
OSR=512, LSBACC=1, SD16UNI=1
048121620
24 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529
OSR=512, LSBACC=0, SD16UNI=1
048121620
24 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529
OSR=1024, LSBACC=1, SD16UNI=0
048121620
24 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529
OSR=1024, LSBACC=0, SD16UNI=0
04812162024 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529
OSR=1024, LSBACC=1, SD16UNI=1
048121620
24 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529
OSR=1024, LSBACC=0, SD16UNI=1
www.ti.com.cn
SD16_A
操作
603
ZHCU032IDecember 2004Revised January 2012 SD16_A
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
048121620
24 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529
048121620
24 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529
OSR=32, LSBACC=x, SD16UNI=1
OSR=32, LSBACC=x, SD16UNI=0
04812162024 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529
OSR=64, LSBACC=1, SD16UNI=0
048121620
24 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529
OSR=64, LSBACC=0, SD16UNI=0
048121620
24 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529
OSR=64, LSBACC=1, SD16UNI=1
048121620
24 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529
OSR=64, LSBACC=0, SD16UNI=1
048121620
24 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529
OSR=128, LSBACC=1, SD16UNI=0
048121620
24 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529
OSR=128, LSBACC=0, SD16UNI=0
048121620
24 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529
OSR=128, LSBACC=1, SD16UNI=1
04812162024 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529
OSR=128, LSBACC=0, SD16UNI=1
048121620
24 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529
OSR=256, LSBACC=1, SD16UNI=0
048121620
24 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529
OSR=256, LSBACC=0, SD16UNI=0
048121620
24 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529
OSR=256, LSBACC=1, SD16UNI=1
048121620
24 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529
OSR=256, LSBACC=0, SD16UNI=1
SD16_A
操作
www.ti.com.cn
26-5. 数字字滤滤波波器器输输出出的的使使用用位
604 SD16_A ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Input
Voltage
SD16MEMx
−VFSR
+V FSR
7FFFh
8000h
Bipolar Output: 2’s complement
Input
Voltage
SD16MEMx
−VFSR +V FSR
FFFFh
8000h
Bipolar Output: Offset Binary
0000h
0000h
Input
Voltage
SD16MEMx
−VFSR +V FSR
FFFFh
Unipolar Output
0000h
www.ti.com.cn
SD16_A
操作
26.2.8
转换换存存储储寄寄存存器
SD16MEM0
SD16MEM0 寄存器和 SD16_A 通道相关联。 转换结果随着数字滤波器的每次采样阶跃被转移到
SD16MEM0 寄存器中。 当新数据被写入 SD16MEM0 时,SD16IFG 位就会被置位。 当 SD16MEM0
CPU 读取或被软件清除时,SD16IFG 会被自动清零。
26.2.8.1 输出出数数据据格格式
输出数据格式被配置为 2的补码、偏移二进制或单极性模式,如在26-3中所示。 数据格式由 SD16DF
SD16UNI 位来选择。
26-3. 数据据格格式
数字字滤波器器输
SD16UNI SD16DF Format 模拟拟输输入SD16MEM0(1) (OSR = 256)
+FSR FFFF FFFFFF
0 0 双极性偏移二进制 8000 800000
-FSR 0000 000000
+FSR 7FFF 7FFFFF
0 1 双极性二补码 0000 000000
-FSR 8000 800000
+FSR FFFF FFFFFF
1 0 单极性 0000 800000
-FSR 0000 000000
(1) 不受 SD16OSRx SD16XOSR 设置的影响;SD16LSBACC = 0
:偏移移测测量量和和数数据据格格式
只有当 SD16UNI= 0、通道在双极性模式下运行时,任何已完成的外部偏移测量或使用内部差
分对 A7 才将是适当的。
26-6给出了范围为 -VFRS+VFRS的满量程输入电压和转换结果之间的关系。 已用图解形式给出了数据格
式。
26-6. 输入入电电压压与与数数字字输输出出的的关关系
605
ZHCU032IDecember 2004Revised January 2012 SD16_A
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
SD16SNGL = 1
Time
Conversion
SD16SC
SD16SNGL = 0
Conversion
SD16SC
Conversion Conversion
Set by SW Auto−clear
Set by SW
Conv
Cleared by SW
= Result written to SD16MEM0
SD16_A
操作
www.ti.com.cn
26.2.9
转换换时时间
SD16_A 模块可以被配置为两种操作模式,在26-4中列出了这两种模式。 SD16SNGL 位选择了转换模
式。
26-4. 转换换模模式式汇汇总
SD16SNGL 模式式 运运行
1单次转换 该通道被转换一次。
0连续转换 通道被连续转换。
26.2.9.1 单一一转转换
SD16SNGL = 1 时,置位该通道的 SD16SC 位会初始化该通道的一次转换。SD16SC 位在转换结束后会
自动清零。
在转换完成之前清除 SD16SC 会立即停止该通道的转换,该通道会被断电并且相应的数字滤波器也会被关
闭。 SD16MEM0 的值在 SD16SC 被清除时可能会变化。 因此建议在清除 SD16SC 前读取 SD16MEM0
值,以避免读到一个无效的结果。
26.2.9.2 连续续转转换
SD16SNGL = 0 时,连续转换模式将会被选择。 当 SD16SC 被置位时,该通道的转换开始,并连续转换
SD16SC 位被软件清零。
清零 SD16SC 会立刻停止所选通道的转换,该通道会被断电,且相应的数字滤波器也会被关闭。
SD16MEM0 中的值在 SD16SC 被清零时可能会变化。 为了避免读到一个无效的结果,建议在清零
SD16SC 前读取 SD16MEM0 值。
26-7给出了转换操作。
26-7. 单通通道道操操作
26.2.10
使使用用集集成成的的温温度转换换器器。
为了使用片上温度传感器,用户应选择模拟输入对 SD16INCHx = 110 并且设置 SD16REFON = 1。任何其
他的配置都和外部模拟输入对一样被选择,包括 SD16INTDLYx SD16GAINx 的设置。 因为为了使用温
度传感器,内部基准电压时必须打开,因此不能使用一个外部基准电压作为温度传感器电压的转换。 并且,
内部基准电压会和任何使用的外部基准电压发生争用。 在这种情况下,为了最小化转换中争用的影响,可以
设置 SD16VMIDON 位。
606 SD16_A ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Celsius
Volts
0 50 100
0.350
0.250
0.300
0.400
0.450
0.500
−50
0.200
VSensor,typ = TCSensor(273 + T[oC]) + VOffset, sensor [mV]
www.ti.com.cn
SD16_A
操作
这种典型的温度传感器传递函数如26-8所示。 当把一个 SD16_A 通道的输入转换为温度传感器时,必须
使用 SD16INTDLYx 提供适当的延时,以便允许数字滤波器建立和保证转换结果的正确性。 在大多数应用
中,温度传感器误差偏移可能较大,但可以校准。 有关温度传感器的参数请参阅《器件专用数据表》。
26-8. 典型型的的温温度度传传感感器器传传递递函函数
26.2.11
中断断处处理
它的 ADC 通道的 SD16_A 2个中断源:
• SD16IFG
• SD16OVIFG
SD16MEM0 存储寄存器写入转换结果时,SD16IFG 位被设置。 如果相应的 SD16IE 位和 GIE 位都被设
置,就会产生一个中断请求。 当在前一个结果被读取之前,新的转换结果写入 SD16MEM0 时,SD16_A
会发生溢出状况。
26.2.11.1 SD16IV,中中断断向向量量发发生生器
所有的 SD16_A 中断源都被优先化,并被连接到一个中断向量上。 SD16IV 被用于确定哪一个使能的
SD16_A 中断源请求了一个中断。 被启用的最高优先级 SD16_A 的中断请求在 SD16IV 寄存器中产生一个
数字(请参见寄存器描述)。 该数字可以被估计,或被添加到程序计数器相中以便自动进入相应的软件程
序。 禁用 SD16-A 的中断不影响 SD16IV 的值。
任何对 SD16IV 寄存器的访问,读取或写入均不会影响到 SD16OVIFG SD16IFG 的标志。 通过读取
SD16MEM0 寄存器或清零软件中的标志可以复位 SD16IFG 标志。 SD16OVIFG 位只能由软件复位。
如果在服务一个中断后另一个中断挂起,就会产生另外一个中断。 例如,当中断服务子程序访问 SD16IV
存器时,如果 SD16OVIFG 和一个或多个 SD16IFG 中断被挂起,会首先响应 SD16OVIFG 中断条件,并且
相应的标志必须用软件清除。 在执行完中断子程序的 RETI 指令后,最高优先级 SD16IFG 的挂起会生成另
一个中断请求。
607
ZHCU032IDecember 2004Revised January 2012 SD16_A
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
SD16_A
操作
www.ti.com.cn
26.2.11.2 中断断延延时时操操作
SD16INTDLYx 位控制为相应通道的第一次中断服务请求定时。 为了在产生一个中断请求之前允许数字滤波
器建立,该功能把一次完整的转换中中断请求延迟了多达 4个转换周期。 每次 SD16SC 被置位或当通道的
SD16GAINx SD16INCHx 位被修改时就会发生延迟。 SD16INTDLYx 会为通道所选择的延时周期数禁止
溢出中断的产生。 在延时期间,延时转换的中断请求不会产生中断。
608 SD16_A ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
SD16_A
寄存器
26.3 SD16_A 寄存存器
26-5中列出了 SD16_A 寄存器。
26-5. SD16_A 寄存存器
寄存存器 简氏氏 寄寄存存器器类型 地地址址 初初始化状状态
SD16_A 的控制 SD16CTL 读取/写入 0100h PUC 复位
SD16_A 中断向量 SD16IV 读取/写入 0110h CPU 复位
SD16_A 通道 0的控制 SD16CCTL0 读取/写入 0102h PUC 复位
SD16_A 转换存储器 SD16MEM0 读取/写入 0112h PUC 复位
SD16_A 的输入控制 SD16INCTL0 读取/写入 0B0h PUC 复位
SD16_A 的模拟使能 SD16AE 读取/写入 0B7h PUC 复位
609
ZHCU032IDecember 2004Revised January 2012 SD16_A
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
SD16_A
寄存器
www.ti.com.cn
26.3.1 SD16CTL
SD16_A
控制制寄寄存存器
15 14 13 12 11 10 9 8
被保保留SD16XDIVx SD16LP
r0 r0 r0 r0 rw-0 rw-0 rw-0 rw-0
76543210
SD16DIVx SD16SSELx SD16VMIDON SD16REFON SD16OVIE 被保保留
rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 r0
被保保留 15-12 被保留
SD16XDIVx 11-9 SD16_A 时钟分频器
000 /1
001 /3
010 /16
011 /48
1xx 被保留
SD16LP 8低功耗模式。 该位选择了一个低速,低功耗模式。
0低功耗模式被禁用
1低功耗模式被使能。 SD16_A 的最大时钟频率被降低。
SD16DIVx 7-6 SD16_A 时钟分频器
00 /1
01 /2
10 /4
11 /8
SD16SSELx 5-4 SD16_A 时钟源选择
00 MCLK
01 SMCLK
10 ACLK
11 外部 TACLK
SD16VMIDON 3 VMID 缓冲打开
0关闭
1打开
SD16REFON 2基准电压发生器打开
0基准电压关闭
1基准电压打开
SD16OVIE 1 SD16_A 溢出中断使能。 为了启用中断,必须把 GIE 位也置位。
0溢出中断禁用
1溢出中断被启用
被保保留 0被保留
610 SD16_A ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
SD16_A
寄存器
26.3.2 SD16CCTL0, SD16_A
控制制寄寄存存器
0
15 14 13 12 11 10 9 8
被保保留SD16BUFx(1) SD16UNI SD16XOSR SD16SNGL SD16OSRx
r0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0
76543210
SD16LSBTOG SD16LSBACC SD16OVIFG SD16DF SD16IE SD16IFG SD16SC 被保保留
rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 r-0
被保保留 15 被保留
SD16BUFx 14-13 高阻抗输入缓冲模式
00 缓冲被禁止
01 低速/电流
10 中速/电流
11 高速/电流
SD16UNI 12 单极性模式选择
0双极性模式
1单极性模式
SD16XOSR 11 已扩展的过采样率。 该位,与 SD16OSRx 位一起,选择过采样率。 有关设置请参阅《SD16OSRx 位说
明》。
SD16SNGL 10 单次转换模式选择
0连续转换模式
1单次转换模式
SD16OSRx 9-8 过采样率
SD16XOSR = 0
00 256
01 128
10 64
11 32
SD16XOSR= 1
00 512
01 1024
10 被保留
11 被保留
SD16LSBTOG 7 LSB 触发。 该位,当置位时,每当读取 SD16MEM0 寄存器时都会引起 SD16LSBACC 触发。
0每当读取 SD16MEM0 时不会触发 SD16LSBACC
1每当读取 SD16MEM0 时会触发 SD16LSBACC
SD16LSBACC 6 LSB 访问。 该位允许访问高于或低于 SD16_A 转换结果的 16 位。
0 SD16MEMx 包含转换的最高有效位 16 位。
1 SD16MEMx 包含转换的最低有效位 16 位。
SD16OVIFG 5 SD16_A 溢出中断标志
0无溢出中断等待
1溢出中断等待
SD16DF 4 SD16_A 的数据格式
0偏移二进制
1二补码
SD16IE 3 SD16_A 的中断使能
0被禁用
1被启用
SD16IFG 2 SD16_A 的中断标志。 当新的转换结果可用时,可置位 SD16IFG 位。 当相应的 SD16MEMx 寄存器被读取或
被软件清零时,SD16IFG 自动复位。
0无中断等待
1中断等待
(1) 被保留在 MSP430x20x3 器件中。
611
ZHCU032IDecember 2004Revised January 2012 SD16_A
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
SD16_A
寄存器
www.ti.com.cn
SD16SC 1 SD16_A 开始转换
0无转换开始
1转换开始
被保保留 0被保留
26.3.3 SD16INCTL0
SD16_A
输入入控控制制寄寄存存器
76543210
SD16INTDLYx SD16GAINx SD16INCHx
rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0
SD16INTDLYx 7-6 转换开始后产生中断延迟。 在转换开始后,这些位选择第一次中断延迟。
00 4次采样发生中断
01 3次采样发生中断
10 2次采样发生中断
11 1次采样发生中断
SD16GAINx 5-3 SD16_A 前置放大器的增益
000 x1
001 x2
010 x4
011 x8
100 x16
101 x32
110 被保留
111 被保留
SD16INCHx 2-0 SD16_A 的通道差分对输入
000 A0
001 A1
010 A2
011 A3
100 A4
101 A5 - (AVCC- AVSS) / 11
110 A6 - 温度传感器
111 A7 - 短路 PGA 偏移测量
612 SD16_A ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
SD16_A
寄存器
26.3.4 SD16MEM0
SD16_A
转换换存存储储寄寄存存器
15 14 13 12 11 10 9 8
转换换结
rrrrrrrr
76543210
转换换结
rrrrrrrr
转换换结 15-0 转换结果。 SD16MEMx 寄存器是否保持数字滤波器输出的高于或低于 16 位是由SD16LSBACC 位决定的。
26.3.5 SD16AE
SD16_A
模拟拟输输入入使使能能寄存器
76543210
SD16AE7 SD16AE6 SD16AE5 SD16AE4 SD16AE3 SD16AE2 SD16AE1 SD16AE0
rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0
SD16AEx 7-0 SD16_A 的模拟使能
0禁用外部输入。 负极输入端被内连到 VSS
1使能外部输入。
26.3.6 SD16IV
SD16_A
中断断向向量量寄寄存存器
15 14 13 12 11 10 9 8
00000000
r0 r0 r0 r0 r0 r0 r0 r0
76543210
000 SD16IVx 0
r0 r0 r0 r0
SD16IVx 15-0 SD16_A 的中断向量值
SD16IV 的目中断 中断断标标志志 中中断优先先级
000h 无中断等待 -
SD16CCTLx
002h SD16MEMx 溢出 最高
SD16OVIFG
SD16CCTL0
004h SD16_A 的中断 SD16IFG
006h 被保留 -
008h 被保留 -
00Ah 被保留 -
00Ch 被保留 -
00Eh 被保留 -
010h 被保留 -最低
613
ZHCU032IDecember 2004Revised January 2012 SD16_A
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Chapter 27
ZHCU032IDecember 2004Revised January 2012
SD24_A
SD24_A 模块是一个多通道 24 位积分三角模数转换器 (ADC)。 本章介绍了 MSP430x2xx 系列中的
SD24_A
Topic ........................................................................................................................... Page
27.1 SD24_A 介绍................................................................................................... 615
27.2 SD24_A 的操操作................................................................................................ 617
27.3 SD24_A 寄存存器................................................................................................ 632
614 SD24_A ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
SD24_A
介绍
27.1 SD24_A 介绍
SD24_A 模块由多达七个独立的积分三角模数转换器和一个内部基准电压组成,其中模数转换器简称为通
道。 每个通道都具有多达 8个全差分多路复用模拟输入对,该模拟输入对包括一个内置的温度传感器和一
个分割电源电压。 该转换器是基于二阶过采样 Σ-Δ调制器和数字抽取滤波器的。 抽取滤波器是带有可选的
过采样率高达 1024 的梳型过滤器。 额外的滤波电路可在软件中完成。
基于过采样率,SD24_A 的数字滤波器输出范围可以从 15 位达到 30 位。 默认的过采样率是 256,这将导
致从数字滤波器中输出 24 位。 可在 SD24_A 转换存储寄存器中捕获滤波器的 16 个最高有效位,并通过设
SD24LSBACC= 1,可以读取滤波器输出的 16 个最低有效位(更多细节请参阅27.2.7 )。
SD24_A 的特性包括:
多达 7个独立的、同步采样 ADC 通道(通道数与设备有关,请参阅《特定器件的数据手册》)。
多达 8个多路复用、每通道差分模拟输入端(输入端的数量与器件有关,请参阅特定器件的数据手
册)。
可选的片上软件参考电压产生 (1.2 V)
可用软件的内部或外部参考
内置所有渠道都可用的温度传感器
高达 1.1MHz 的调制器输入频率
高阻抗输入缓冲器(未实现在所有器件上实施,请参阅《特定器件的数据手册》)。
可选低功率转换模式
27-1中展示了 SD24_A 模块框图。
615
ZHCU032IDecember 2004Revised January 2012 SD24_A
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
15 0
SD24DIVx
ACLK
TACLK
SD24SSELx
00
01
10
11
00
01
10
11
MCLK
SMCLK
AVCC
VREF
Divider
1/2/4/8
A1.0 000
SD24INCHx
+
001
+
010
+
011
+
100
+
101
+
110
+
111
+
A1.1
A1.2
A1.3
A1.4
A1.5
A1.6
2ndOrder
Σ∆ Modulator
SD24GAINx
SD24DF
SD24LP
SD24OSRx
SD24MEM1
Reference
A1.7
SD24VMIDON
SD24REFON
fM
Reference
1.2V
AVSS
SD24XDIVx
Divider
1/3/16/48
SD24XOSR
1
0
SD24UNI
1
AVCC
SD24INCHx=101
Temp.
sensor
PGA
1..32
5R
R
5R
Reference
SD24_A Control Block
SD24SC
Conversion Control
(to prior channel)
SD24SGNL
Conversion Control
(from next channel)
SD24GRP
Group/Start
Conversion Logic
SD24PRE1
Channel 1
Temperature . and Vcc Sense
Channel 0
Channel 2
Channel 3 ( up to Channel 6)
SD24_A
介绍
www.ti.com.cn
NOTE: Ax.1 Ax.4 并不适用于所有设备。 请参阅特定器件的数据手册。
27-1. SD24_A 模块块框框图
616 SD24_A ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
FSR
1.2 V
2
±V = = ±0.6 V
1
REF
FSR
PGA
V
2
V =
GAIN
www.ti.com.cn
SD24_A
的操作
27.2 SD24_A 的操操作
SD24_A 模块被配置为带有用户的软件。 在下面的章节中讨论了 SD24_A 的设置和操作。
27.2.1 ADC
芯片
模数转换是由一个 1位二阶三角积分调制器执行的。 调制器内的一个单个位比较器用调制器的频率 fM量化
了输入信号。 为了得出转换结果,所得的 1位数据流被数字滤波器平均。
27.2.2
模拟拟输输入入范范围围和可编编程程增增益益放放大大器
(PGA)
每个模拟量输入对的满量程输入电压范围取决于每个通道的可编程增益放大器的增益设置。 最大的满量程范
围为 ±VFSR,其中 VFSR被以下内容所定义:
对于一个 1.2V 的基准,一个增益为 1的最大满量程输入范围是:
请参阅《特定器件的满量程输入规格数据手册》。
27.2.3
基准准电电压压发发电电机
SD24_A 模块具有一个内置的 1.2V 基准。 它可以用于每个 SD24_A 通道且可由 SD24REFON 位使能。 当
使用内部基准电压时,为了减少噪音,建议把一个外部 100nF 电容从 V连接到 AVSS。 当 SD24VMIDON= 1
时,内部基准电压可用于片外。缓冲输出可提供高达 1mA 的驱动。 当使用内部片外基准电压,需要把一个
470nF 电容从 VREF连接到 AVSS。 请参阅《特定器件的数据手册的参数》。
SD24REFON SD24VMIDON 都被复位时,可把外部参考电压应用到 VREF输入。
27.2.4
自动动断断电
设计 SD24_A 专用于低功耗应用。 当 SD24_A 不进行转换时,它会自动禁用,当换开始时,它会自动重新
启用。 该基准不会自动禁用,但可以通过设置 SD24REFON= 0 来禁用它。SD24_A 或基准被禁用时,不消
耗电流。
27.2.5
模拟拟输输入入对对的的选
SD24_A 可以将最多 8个差分对输入复用到 PGA 中。 在器件上可对外使用多达 5个模拟输入对
(A0A4)。 可通过 A5 多路调制器输入来使用一个测量供电电压的电阻分压器。 可通过 A6 多路复用器输入
来使用内部温度传感器。 输入端 A7 是一个 +-输入对之间的短路连接,且可以用于校准 SD24_A 输入
级的偏移量。
27.2.5.1 模拟拟输输入入设设置
使用 SD24INCTLx 寄存器来配置每个通道的模拟输入端。 可以为每个SD24_A通道独立地配置这些设置。
SD24INCHx 位选择了模拟多路复用器的 8个差分输入对的其中之一。 由 SD24GAINx 位为每个 PGA 选择
增益。 共有 6个增益设置可用。
在某些设备上 SD24AEx 位可启用或禁用模拟输入引脚。 设置任何 SD24AEx 位都会禁用关联引脚的复用数
字电路。 有关引脚图请参阅《特定器件数据手册》。
617
ZHCU032IDecember 2004Revised January 2012 SD24_A
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
RS1 k
VS+
MSP430
CS
VS+ = Positive external source voltage
VS− = Negative external source voltage
RS= External source resistance
CS= Sampling capacitance
RS1 k
VS−
CS
AVCC / 2
Not implemented on all devices − see the device-specific data sheet
SD24_A
的操作
www.ti.com.cn
在转换过程中,对 SD24INCHx SD24GAINx 位的任何修改都将使下一个数字滤波器的抽取步骤变得有
效。 这些位被修改之后,由于数字滤波器的建立时间,接下来的三个转换可能是无效的。 这可以用
SD24INTDLYx 位进行自动处理。 当 SD24INTDLY=00H 时,转换中断请求直到一个起始条件后的第四转换
才会开始。
可通过使用 SD24BUFx 位来使能在器件上实施的高阻抗输入缓冲。 如在27-1中所示,基于 SD24_A
制器频率的速度设置是可选的。
27-1. 高输输入入阻阻抗抗缓缓冲冲器
SD24BUFx 缓冲冲器SD24 制器器频率,fM
00 缓冲区禁用
01 低速/电流 fM< 200kHz
10 中速/电流 200kHz < fM< 700kHz
11 高速/电流 700kHz < fM< 1.1MHz
为了防止输入信号混叠,建议为 SD24_A 安装一个外部 RC 抗混叠滤波器。 1MHz 的调制器时钟的截止频
率应该小于 10kHz,且 OSR = 256。 截止频率可能会调到有较低带宽需求的应用程序的一个较低频率。
27.2.6
模拟拟输输入入特特性
SD24_A 使用了一个开关电容器输入级,该输入极被作为一个显示到外部电路的阻抗,如27-2所示。
27-2. 模拟拟输输入入等等效效电电路
618 SD24_A ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
3 3
M M
M M
f f
sinc OSR × × sin OSR × ×
f f
1
H(f) = = ×
OSR
f f
sinc × sin ×
f f
p p
p p
é ù é ù
æ ö æ ö
ê ú ê ú
ç ÷ ç ÷
ç ÷ ç ÷
ê ú ê ú
è ø è ø
ê ú ê ú
æ ö æ ö
ê ú ê ú
ç ÷ ç ÷
ç ÷ ç ÷
ê ú ê ú
è ø è ø
ë û ë û
3
-OSR
-1
1 1 – z
H(z) = ×
OSR 1–z
æ ö
ç ÷
ç ÷
è ø
CC CC
M Ax S+ S–
Settling
AV AV
1
f = and V = max – V , – V
2 × t 2 2
æ ö
ç ÷
ç ÷
è ø
17 Ax
Settling S S REF
GAIN × 2 × V
t (R + 1 k ) × C × ln V
æ ö
ç ÷
³ W ç ÷
è ø
www.ti.com.cn
SD24_A
的操作
当使用缓冲器时,RS不影响采样频率 fS。 然而,当不使用缓冲器或在设备上没有缓冲器时,最大调制器频
fM可以由采样电路的最小建立时间 t建立时间根据以下公式计算:
其中,
VS+VS-参考 AVSS
如在27-2中所示,CS随着增益设置变化。
27-2. 采样样电电容
PGA 增益 采样样电电容(CS)
1 1.25pF
2, 4 2.5pF
8 5pF
16, 32 10pF
27.2.7
数字字滤滤波波器
通过使用一个 SINC3梳状滤波器,数字滤波器处理来自调制器的 1位数据流。 在 z域描述传递函数是根
据:
和在频域中的是根据:
其中过采样率,OSR,是调制器频率fM与采样频率 fS的比率。27-332 OSR 显示了滤波器的频率响
应。 第一个滤波器陷波是在 fS= FM/OSR。 可以通过改变调制器的频率,使用 SD24SSELx SD24DIVx
以及使用 SD24OSRx SD24XOSR 位的过采样率来调整陷波频率,fM
每个启用的 ADC 通道的数字滤波器完成了抽取的数字位流,并在采样频率为 fS时把新的转换结果输入到 相
应的 SD24MEMx 寄存器中。
619
ZHCU032IDecember 2004Revised January 2012 SD24_A
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
1
2
3
4
1
0
0.2
0.4
0.6
0.8
1
0
0.2
0.4
0.6
0.8
1
2
3
Asynchronous Step Synchronous Step
% VFSR
Conversion Conversion
−140
−120
−100
−80
−60
−40
−20
0
Frequency
GAIN [dB]
fSfM
SD24_A
的操作
www.ti.com.cn
27-3. OSR= 32 的梳梳状状滤滤波波器器的的频频率率响响应
27-4给出了数字滤波器的阶跃响应及转换点。 对于转换开始后的在输入端的阶跃变化,在一个有效的转
换结果可用之前,必须允许一个建立时间。 SD24INTDLYx 位可以为在 ADC 输入端的满量程变化提供足够
的滤波器建立时间。 如果该步骤发生与数字滤波器的抽取同步,则有效数据将在第三个转换上可用。 在有
效数据可用之前,异步步骤将需要一个额外的转换。
27-4. 数字字滤滤波波器器的的阶阶跃跃响响应应和和转转换换点
620 SD24_A ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
048121620
24 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529
OSR=512, LSBACC=0, SD24UNI=0
048121620
24 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529
OSR=512, LSBACC=1, SD24UNI=0
048121620
24 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529
OSR=512, LSBACC=0, SD24UNI=1
048121620
24 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529
OSR=512, LSBACC=1, SD24UNI=1
048121620
24 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529
OSR=1024, LSBACC=0, SD24UNI=0
048121620
24 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529
OSR=1024, LSBACC=1, SD24UNI=0
04812162024 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529
OSR=1024, LSBACC=0, SD24UNI=1
048121620
24 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529
OSR=1024, LSBACC=1, SD24UNI=1
www.ti.com.cn
SD24_A
的操作
27.2.7.1 数字字滤滤波波器器输输出
由数字滤波器输出的位的数目取决于过采样率和从 15 30 位的范围。27-5为每个 OSRLSBACC,和
SD24UNI 设置给出了数字滤波器输出以及滤波器与 SD24MEMx 的关系。 例如,对于 OSR=
1024LSBACC= 0,和 SD24UNI= 1SD24MEMx 寄存器包含数字滤波器输出的位 28 至位 13。当OSR
=32 时,一个 (SD24UNI= 0) 2LSB (SD24UNI= 1) 始终为零。
SD24LSBACC SD24LSBTOG 位给出了数字滤波器输出的最少有效位的访问权限。 当 SD24LSBACC=1
时,通过使用字指令,数字滤波器的输出端的 16 个最低有效位可被 SD24MEMx 读取。 通过只返回数字滤
波器输出的 8个最低有效位,可以用字节指令访问 SD24MEMx 寄存器。
SD24LSBTOG= 1 时,每次读取 SD24MEMx 都会自动切换 SD24LSBACC 位。 这就使得完整的数字滤
波器的输出结果被 SD24MEMx 的两次读取所读取。 直到下一个 SD24MEMx 开始访问,设置或清零
SD24LSBTOG 才会改变 SD24LSBACC
621
ZHCU032IDecember 2004Revised January 2012 SD24_A
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
048121620
24 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529
048121620
24 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529
OSR=32, LSBACC=x, SD24UNI=1
OSR=32, LSBACC=x, SD24UNI=0
04812162024 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529
OSR=64, LSBACC=0, SD24UNI=0
048121620
24 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529
OSR=64, LSBACC=1, SD24UNI=0
048121620
24 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529
OSR=64, LSBACC=0, SD24UNI=1
048121620
24 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529
OSR=64, LSBACC=1, SD24UNI=1
048121620
24 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529
OSR=128, LSBACC=0, SD24UNI=0
048121620
24 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529
OSR=128, LSBACC=1, SD24UNI=0
048121620
24 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529
OSR=128, LSBACC=0, SD24UNI=1
04812162024 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529
OSR=128, LSBACC=1, SD24UNI=1
048121620
24 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529
OSR=256, LSBACC=0, SD24UNI=0
048121620
24 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529
OSR=256, LSBACC=1, SD24UNI=0
048121620
24 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529
OSR=256, LSBACC=0, SD24UNI=1
048121620
24 15 3 269 723 22 21 19 18 17 15 14 13 11 1028 27 26 2529
OSR=256, LSBACC=1, SD24UNI=1
SD24_A
的操作
www.ti.com.cn
27-5. 已使使用用位位的的数数字字滤滤波波器器输输出
622 SD24_A ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
SD24_A
的操作
27.2.8
转换换存存储储寄寄存存器
SD24MEMx
一个 SD24MEMx 寄存器与每个 SD24_A 通道是相关联的。 转换结果被移动到相应的带有数字滤波器每个
抽取步骤的 SD24MEMx 寄存器中。 当新的数据被写入 SD24MEMx 时,SD24IFG 位被置位。 当
SD24MEMx CPU 读取或可能被软件清除时,SD24IFG 被自动清零。
27.2.8.1 输出出数数据据格格式
如在27-3中所示,在二进制补码,偏移二进制或单极模式中输出数据格式是可配置的。 由 SD24DF
SD24UNI 位选择数据格式。
27-3. 数据据格格式
数字字滤波器器输
SD24UNI SD24DF Format 模拟拟输输入SD24MEMx (1) (OSR = 256)
起始值也可以是 0
但是由于 SysTick
断和 COUNTFLAG
+FSR FFFFFF
在计数从 10时都
0 0 双极性偏移二进制 会被激活,所以没什
么作用
8000 800000
-FSR 0000 000000
+FSR 7FFF 7FFFFF
0 1 双极性二进制补码 0000 000000
-FSR 8000 800000
起始值也可以是 0
但是由于 SysTick
断和 COUNTFLAG
+FSR FFFFFF
在计数从 10时都
1 0 单极性 会被激活,所以没什
么作用
0000 800000
-FSR 0000 000000
(1) SD24OSRx SD24XOSR 设置的独立;SD24LSBACC= 0
:偏置置测测量量和和数数据据格格式
只有当 SD24UNI= 0,通道在双极性模式下运行时,任何已做的外部偏移测量或使用内部差分
A7 才是适当的。
如果要在单极化模式中把测得的值是用于偏移校正,那么需要把该值乘以 2
27-6给出了从 -VFSR+VFRS 的满量程输入电压范围与转换结果之间的关系。 给出了数据格式。
623
ZHCU032IDecember 2004Revised January 2012 SD24_A
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Input
Voltage
SD24MEMx
−VFSR
+V FSR
7FFFh
8000h
Bipolar Output: 2’s complement
Input
Voltage
SD24MEMx
−VFSR +V FSR
FFFFh
8000h
Bipolar Output: Offset Binary
0000h
0000h
SD24MEMx
−VFSR
FFFFh
Unipolar Output
Input
Voltage
+V FSR
0000h
SD24_A
的操作
www.ti.com.cn
27-6. 输入入电电压压与与数数字字输输出
27.2.9
转换换时时间
可以为四种操作模式配置 SD24_A 模块,在27-4中列出了这四种操作模式。 SD24SNGL SD24GRP
位为每个通道选择了转换模式。
27-4. 转换换模模式式总总结
SD24SNGL SD24GRP(1) 模式式 运运行
1 0 单通道,单次转换 一个单通道被转换一次。
0 0 单通道,连续转换 一个单通道被连续转换。
1 1 通道组,单次转换 一组通道被转换一次。
0 1 通道组,连续转换 一组通道被连续转换。
(1) SD24GRP=0 时,如果前一通道 (S) SD24GRP 被置位,一个通道被分组且是该组的主通道。
27.2.9.1 单通通道道,,单单次次转转换
SD24SNGL= 1,且它不与任何其它通道分组时,在该通道上设置 SD24SC 位通道会起始一个转换。 在
转换完成后 SD24SC 位自动清零。
在转换完成之前清零 SD24SC 会立即停止所选通道的转换,通道被断电,且相应的数字滤波器被关闭。 在
SD24SC 被清零时,可以改变 SD24MEMx 中的值。 为了避免读取无效结果,建议在清除 SD24SC 之前读
SD24MEMx 转换数据。
27.2.9.2 单通通道道,,连连续续转转换
SD24SNGL= 0 时,连续转换模式被选中。 选定通道的转换将在 SD24SC 被置位时开始,并一直持续到
通道不与任何其他通道分组,SD24SC 位被软件清零。
清零 SD24SC 会立即停止所选通道的转换,通道被断电以及相应的数字滤波器被关闭。 在 SD24SC 被清零
时,可以改变 SD24MEMx 中的值。 为了避免读取无效结果,建议在清除 SD24SC 之前读出 SD24MEMx
转换数据。
27-7给出了单次转换模式和连续转换模式中单信道的操作。
624 SD24_A ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Channel 0
SD24SNGL = 1
SD24GRP = 0
Time
Conversion
SD24SC
Channel 1
SD24SNGL = 1
SD24GRP = 0
Conversion
Channel 2
SD24SNGL = 0
SD24GRP = 0
Conversion
SD24SC
SD24SC
Conversion Conversion
Conversion
Set by SW Auto−clear
Set by SW Auto−clear Set by SW Auto−clear
Set by SW
Conv
Cleared by SW
= Result written to SD24MEMx
www.ti.com.cn
SD24_A
的操作
27-7. 单通通道道操操作-示例
625
ZHCU032IDecember 2004Revised January 2012 SD24_A
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Channel 0
SD24SNGL = 1
SD24GRP = 1
Time
Conversion
SD24SC
Channel 1
SD24SNGL = 0
SD24GRP = 1
Conversion
Channel 2
SD24SNGL = 0
SD24GRP = 0
Conversion
SD24SC
SD24SC
Conversion Conversion
Set by Ch2 Auto−clear
Set by Ch2
Conv
Set by SW Cleared by SW
Conversion Conv
Cleared by Ch2
Set by SW Auto−clear
Conversion
(syncronized to master)
Cleared by SW
Conv
Set by SW
(syncronized to master)
= Result written to SD24MEMx
SD24_A
的操作
www.ti.com.cn
27.2.9.3 通道道组组,,单单次次转转换
连续的 SD24_A 通道可以用 SD24GRP 位组合在一起组成同步转换。 为在模块中带有下一个通道的一个通
道组设置 SD24GRP。 例如, 为通道 0组,即带有通道 1的通道,设置 SD24GRP。在这种情况下,通道
1是主通道,能用其 SD24SC 位启用和禁用组中所有通道的转换。 主通道的 SD24GRP 位始终为
0SD24_A 的最后一个通道的 SD24GRP 位没有任何功能,并且始终为 0
当在一组中的通道的 SD24SNGL=1 时,就会选择单次转换模式。 主通道 SD24SC 位被置位时,该通道的
单次转换将同步发生。 该组中所有通道的 SD24SC 位将被自动设置,且被主通道的 SD24SC 清除。 每个
通道的 SD24SC 也可以在软件中被独立清零。
在转换完成之前清零主通道的 SD24SC 会立即停止该组中所有通道的转换,通道被断电,且相应的数字过
滤器被关闭。 在 SD24SC 被清零时,可以改变 SD24MEMx 中的值。 为了避免读取无效结果,建议在清除
SD24SC 之前读出 SD24MEMx 转换数据。
27.2.9.4 通道道组组,,连连续续转转换
当在一组中的通道的 SD24SNGL= 1 时,就会选择连续转换模式。 主通道 SD24SC 位被置位时,该通道的
连续转换将同步发生。 主通道的 SD24SC 位将自动设置和清零所有集合通道的 SD24SC 位。 在该组中的
每个通道的 SD24SC 也可以在软件中被独立清零。
当一个集合通道的 SD24SC 被主机的独立软件置位时,该通道的转换会自动与主通道的转换同步。 这就确
保了集合通道的转换总是与主通道的转换同步。
清零主通道的 SD24SC 会立即停止该组中所有通道的转换,通道被断电,且相应的数字过滤器被关闭。 在
SD24SC 被清零时,可以改变 SD24MEMx 中的值。 为了避免读取无效结果,建议在清除 SD24SC 之前读
SD24MEMx 转换数据。
27-8给出了 3SD24_A 通道的集合通道的操作。 通道 0被配置为单次转换模式,SD24SNGL= 1,且
通道 12被配置为连续转换模式,SD24SNGL= 0。通道 2,该组中的最后一个通道,是主通道。 不管是
否用软件置位每个 SD24SC 位,该组中所有通道的转换与主通道的转换同步发生。
27-8. 集合合通通道道操操作-示例
27.2.10
使使用用预预置置的的转转换操作
当多个通道被集合时,SD24PREx 寄存器可以被用来延迟每个通道的转换时间帧。 使用 SD24PRExfM
钟周期的指定数目增加了数字滤波器的抽取时间,且范围可为 025527-9给出了使用 SD24PREx
一个例子。
626 SD24_A ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Delayed Conversion
40
SD24OSRx = 32
Start of
Conversion
Time
Conversion
32
Conversion
32f Mcycles:
1stSample Ch1
SD24PRE0 = 8
SD24PRE1 = 0 Conversion
32
Conversion
32
Conversion
32
Conversion
1stSample Ch0
Conversion
32
SD24OSRx = 32
Load SD24PREx
SD24PREx = 8 Preload
applied Time
Delayed Conversion
40
Delayed Conversion
Result
Conversion
32fMcycles:
www.ti.com.cn
SD24_A
的操作
27-9. 转换换延延迟迟预预置-示例
SD24PREx 延迟被应用到正在写入后的下一个转换周期的开始。 在 SD24SC 被置位后的第一个转换上和紧
跟着每一个写入 SD24PREx 的转换周期上使用该延迟。 下列转换不被延迟。 修改 SD24PREx 后,直到下
一个转换周期完成才应发生下一个写入 SD24PREx,否则转换的结果可能不正确。
使用 SD24PREx 的已延迟转换周期结果的准确性取决于延迟的长度和正被采样的模拟信号的频率。 例如,
当测量直流信号时,SD24PREx 延迟对转换结果没有影响,与持续时间无关。 用户必须确定延迟的转换结
果何时对他们的应用程序是有用的。
27-10给出了集合通道 01的操作。通道 1的预置寄存器被零加载,这会致使立即转换,而通过设
SD24PRE0= 8,通道 0的转换周期被延迟。 第一个通道 0的转换使用 SD24PREx=8,用 8fM时钟周
期移位所有后续转换。
27-10. 使使用用预预置置的的转转换换的的开开始-示例
当通道进行集合时,当一个或多个通道在单次转换模式中运行或在软件中被禁用、而主渠道仍然活跃时必须
小心。 每次该组中的通道被重新启用,并重新与主通道同步时,该通道的预置延迟将被重新引入。27-11
给出了在一个组中的通道重新同步和预置延迟。 当它们被重新启用时,为了在主通道和其他通道之间维持一
个一致延迟,建议主通道的 SD24PREx= 0
627
ZHCU032IDecember 2004Revised January 2012 SD24_A
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Channel 0
SD24SNGL = 0
SD24GRP = 1
Time
Conversion
SD24SC
Channel 1
SD24SNGL = 1
SD24GRP = 1
Conversion
Channel 2
SD24SNGL = 0
SD24GRP = 0
Conversion
SD24SC
SD24SC
Conversion Conversion
Set by Ch2 Auto−clear
Set by Ch2
Conv
Set by SW
Conversion
Set by SW Auto−clear
(syncronized to master)
Cleared by SW
Conv
Set by SW
(syncronized to master)
= Result written to SD24MEMx
PRE1 PRE1
PRE0
Conversion
PRE0 Conv
SD24_A
的操作
www.ti.com.cn
27-11. 预至至和和通通道道同同步
27.2.11
使使用用集集成成温温度度传感器
为了使用的片上温度传感器,用户选择了的模拟输入对 SD24INCHx= 110,并设置 SD24REFON= 1。任何
其他配置完成后,就如外部模拟输入对被选中,包括 SD24INTDLYx SD24GAINx 设置。 由于内部参考
必须在温度传感器上使用,因此是不能用做温度传感器电压转换的一个外部基准电压的。 此外,内部基准电
压将争用任何使用的外部基准电压。 在这种情况下,为了最小化争用转换的影响,可以 SD24VMIDON
被设置。
27-12给出了典型的温度传感器的传递函数。 当把一个 SD24_A 通道输入切换到温度传感器时,为了能
使数字滤波器建立和保证转换结果是有效的,必须使用 SD24INTDLYx 提供足够的延迟。 对于大多数应用
来说,该温度传感器的偏移误差可以有点大,并可能需要校准。 有关温度传感器参数请参阅《特定器件的数
据手册的》。
628 SD24_A ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Celsius
Volts
0 50 100
0.350
0.250
0.300
0.400
0.450
0.500
−50
0.200
VSensor,typ = TCSensor(273 + T[oC]) + VOffset, sensor [mV]
www.ti.com.cn
SD24_A
的操作
27-12. 典型型的的温温度度传传感感器器传传输输函函数
27.2.12
中断断处处理
每个 ADC 通道的 SD24_A 2个中断源:
• SD24IFG
• SD24OVIFG
SD24IFG 位相应的 SD24MEMx 内存寄存器用转换结果进行写入时,它们会被置位。 如果相应的
SD24IE 位和 GIE 位被置位,那么就会产生一个中断请求。 当在上个转换结果被读取之前,一个转换结果被
写入到任何 SD24MEMx 位置时,就会发生 SD24_A 溢出情况。
27.2.12.1 SD24IV,中中断断向向量量发发生生器
所有 SD24_A 中断源被优先化,并与一个中断向量源结合起来。 SD24IV 用于确定哪一个使能的 SD24_A
中断源请求了一个中断。 在 SD24IV 寄存器中,产生了大量的被使能最高优先级的 SD24_A 中断请求(见
寄存器描述)。 这个数字可以评估,或将其添加到程序计数器,以便自动进入相应的软件程序。 禁用的
SD24_A 中断不影响 SD24IV 值。
SD24IV 寄存器的任何访问,读取或写入都对 SD24OVIFG SD24IFG 标志没有影响。 可通过读取相关的
SD24ME Mx寄存器,或通过清除软件中的标志来复位 SD24IFG 标志。 SD24OVIFG 位只能用软件复位。
在一个中断服务之后,如果另一个中断挂起,则会产生另一个中断。 例如,如果 SD24OVIF G和一个或多
SD24IFG 中断挂起,当中断服务例程访问 SD24IV 寄存器时,SD24OVIFG 中断条件会第一个接收服
务,且其相应的标志 (s) 必须从软件中清除。 中断服务程序的 RETI 指令被执行后,挂起的优先级最高的
SD24IFG 会产生另一个中断请求。
629
ZHCU032IDecember 2004Revised January 2012 SD24_A
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
SD24_A
的操作
www.ti.com.cn
27.2.12.2 中断断延延时时操操作
SD24INTDLYx 位控制为相应通道的第一个中断服务请求定时。 为了在产生一个中断请求之前使数字滤波器
建立,此功能为一个完成的转换把中断请求延迟了高达 4个转换周期。 每次 SD24SC 位被置位时,或者当
通道的 SD24GAINx SD24INCHx 位被修改时都会启用该延迟。 SD24INTDLYx 为所选通道延迟周期数禁
用溢出中断的产生。 在延迟期间,没有生成延迟转换的中断请求。
630 SD24_A ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
SD24_A
的操作
27.2.12.3 SD24_A 中断断处处理理软软件件示示例
以下软件示例给出了建议的 SD24IV 和处理开销的使用。 为了自动跳转到相应的程序,SD24IV 值被添加到
PC
右边距的数字显示了每条指令所需的 CPU 周期。 不同中断源的软件开销包括中断延迟时间和从中断返回周
期,但不包含处理本身的任务。 延迟是:
• SD24OVIFGSD24IFG CH0CH1 SD24IFG16 个周期
CH2 SD24IFG14 个周期
如果在 ISR 处理期间发生一个较高优先级中断,通道 2 SD24IFG 的中断处理程序会给出一个立即检查的方
法。 如果另一个 SD24_A 中断正被挂起,这样可以节省 9个时钟周期。
; Interrupt handler for SD24_A.INT_SD24 ; Enter Interrupt Service Routine 6ADD &SD24IV,PC ; Add
offset to PC 3RETI ; Vector 0: No interrupt 5JMP ADOV ; Vector 2: ADC overflow 2JMP ADM0 ; Vector
4: CH_0 SD24IFG 2JMP ADM1 ; Vector 6: CH_1 SD24IFG 2;; Handler for CH_2 SD24IFG starts here. No
JMP required.;ADM2 MOV &SD24MEM2,xxx ; Move result, flag is reset... ; Other instruction
needed?JMP INT_SD24 ; Check other int pending 2;; Remaining Handlers;ADM1 MOV &SD24MEM1,xxx ;
Move result, flag is reset... ; Other instruction needed?RETI ; Return 5;ADM0 MOV &SD24MEM0,xxx ;
Move result, flag is resetRETI ; Return 5;ADOV ... ; Handle SD24MEMx overflowRETI ; Return 5
631
ZHCU032IDecember 2004Revised January 2012 SD24_A
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
SD24_A
寄存器
www.ti.com.cn
27.3 SD24_A 寄存存器
27-5中列出了 SD24_A 寄存器(寄存器不适用于没被执行的通道,请参阅《特定器件的数据手
册》)。
27-5. SD24_A 寄存存器
寄存存器 简表表 寄寄存存器器类型 地地址 初始始状状态
SD24_A 控制 SD24CTL 读取/写入 0100h PUC 复位
SD24_A 中断向量 SD24IV 读取/写入 0110h PUC 复位
SD24_A 模拟使能(1) SD24AE 读取/写入 0B7h PUC 复位
SD24_A 通道 0的控制 SD24CCTL0 读取/写入 0102h PUC 复位
SD24_A 通道 0的转换存储器 SD24MEM0 读取/写入 0112h PUC 复位
SD24_A 通道 0的输入控制 SD24INCTL0 读取/写入 0B0h PUC 复位
SD24_A 通道 0的预置 SD24PRE0 读取/写入 0B8h PUC 复位
SD24_A 通道 1的控制 SD24CCTL1 读取/写入 0104h PUC 复位
SD24_A 通道 1的转换存储器 SD24MEM1 读取/写入 0114h PUC 复位
SD24_A 通道 1的输入控制 SD24INCTL1 读取/写入 0B1h PUC 复位
SD24_A 通道 1的预置 SD24PRE1 读取/写入 0B9h PUC 复位
SD24_A 通道 2的控制 SD24CCTL2 读取/写入 0106h PUC 复位
SD24_A 通道 2的转换存储器 SD24MEM2 读取/写入 0116h PUC 复位
SD24_A 通道 2的输入控制 SD24INCTL2 读取/写入 0B2h PUC 复位
SD24_A 通道 2的预置 SD24PRE2 读取/写入 0BAh PUC 复位
SD24_A 通道 3的控制 SD24CCTL3 读取/写入 0108h PUC 复位
SD24_A 通道 3的转换存储器 SD24MEM3 读取/写入 0118h PUC 复位
SD24_A 通道 3的输入控制 SD24INCTL3 读取/写入 0B3h PUC 复位
SD24_A 通道 3的预置 SD24PRE3 读取/写入 0BBh PUC 复位
SD24_A 通道 4的控制 SD24CCTL4 读取/写入 010Ah PUC 复位
SD24_A 通道 4的转换存储器 SD24MEM4 读取/写入 011Ah PUC 复位
SD24_A 通道 4的输入控制 SD24INCTL4 读取/写入 0B4h PUC 复位
SD24_A 通道 4的预置 SD24PRE4 读取/写入 0BCh PUC 复位
SD24_A 通道 5的控制 SD24CCTL5 读取/写入 010Ch PUC 复位
SD24_A 通道 5的转换存储器 SD24MEM5 读取/写入 011Ch PUC 复位
SD24_A 通道 5的输入控制 SD24INCTL5 读取/写入 0B5h PUC 复位
SD24_A 通道 5的预置 SD24PRE5 读取/写入 0BDh PUC 复位
SD24_A 通道 6的控制 SD24CCTL6 读取/写入 010Eh PUC 复位
SD24_A 通道 6的转换存储器 SD24MEM6 读取/写入 011Eh PUC 复位
SD24_A 通道 6的输入控制 SD24INCTL6 读取/写入 0B6h PUC 复位
SD24_A 通道 6的预置 SD24PRE6 读取/写入 0BEh PUC 复位
(1) 在所有设备上没有执行;请参阅《特定器件的数据手册》。
632 SD24_A ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
SD24_A
寄存器
27.3.1 SD24CTL
SD24_A
控制制寄寄存存器
15 14 13 12 11 10 9 8
被保保留SD24XDIVx SD24LP
r0 r0 r0 r0 rw-0 rw-0 rw-0 rw-0
76543210
SD24DIVx SD24SSELx SD24VMIDON SD24REFON SD24OVIE 被保保留
rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 r0
被保保留 15-12 被保留
SD24XDIVx 11-9 SD24_A 时钟分频器
00 /1
01 /3
10 /16
11 /48
1xx 被保留
SD24LP 8低功耗模式。 该位选择了一个速度减少功耗降低模式
0低功耗模式被禁用
1低功耗模式被使能。 SD24_A 的最大时钟频率被减小。
SD24DIVx 7-6 SD24_A 时钟分频器
00 /1
01 /2
10 /4
11 /8
SD24SSELx 5-4 SD24_A 时钟源选择
00 MCLK
01 SMCLK
10 ACLK
11 外部 TACLK
SD24VMIDON 3 VMID 缓冲在
0关闭
1打开
SD24REFON 2基准发电机在
0基准关闭
1基准开启
SD24OVIE 1 SD24_A 溢出中断使能。 GIE 位也必须设置为启用中断。
0溢出中断禁用
1溢出中断使能
被保保留 0被保留
633
ZHCU032IDecember 2004Revised January 2012 SD24_A
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
SD24_A
寄存器
www.ti.com.cn
27.3.2 SD24CCTLx
SD24_A
通道
x
控制制寄寄存存器
15 14 13 12 11 10 9 8
被保保留SD24BUFx(1) SD24UNI SD24XOSR SD24SNGL SD24OSRx
r0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0
76543210
SD24LSBTOG SD24LSBACC SD24OVIFG SD24DF SD24IE SD24IFG SD24SC SD24GRP
rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 r(w)-0
被保保留 15 被保留
SD24BUFx 14-13 高阻抗输入缓冲模式
00 缓冲区禁用
01 慢速/电流
10 中速/电流
11 高速/电流
SD24UNI 12 单极性模式选择
0双极性模式
1单极性模式
SD24XOSR 11 已扩展过采样率。 该位,与 SD24OSRx 位,选择过采样率。 有关设置请参阅《SD24OSRx 位说明》。
SD24SNGL 10 单次转换模式选择
0连续转换模式
1单次转换模式
SD24OSRx 9-8 过采样率
SD24XOSR = 0
00 256
01 128
10 64
11 32
SD24XOSR = 1
00 512
01 1024
10 被保留
11 被保留
SD24LSBTOG 7 LSB 触发器。 该位,当置位时,每次读取 SD24MEMx 寄存器都会引起 SD24LSBACC 触发。
0 SD24LSBACC 不会触发每个 SD24MEMx 读取
1 SD24LSBACC 触发每个 SD24MEMx 读取
SD24LSBACC 6 LSB 访问。 此位允许访问 SD24_A 转换结果的高于或低于16 位。
0 SD24MEMx 包含转换的最有效 16 位。
1 SD24MEMx 包含转换的最低有效 16 位。
SD24OVIFG 5 SD24_A 溢出中断标志
0无溢出中断挂起
1溢出中断挂起
SD24DF 4 SD24_A 的数据格式
0偏移二进制
1 2 的补码
SD24IE 3 SD24_A 中断使能
0被禁用
1被启用
(1) 在所有设备上未执行(请参阅《特定器件的数据手册》)。当没有执行高阻抗缓冲器时,带 r0 的访问被保留。
634 SD24_A ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
SD24_A
寄存器
SD24IFG 2 SD24_A 中断标志。 当新的转换结果可用时才置位 SD24IFG。 当相应的 SD24MEMx 寄存器被读取
时,SD24IFG 被自动复位或者被软件清零。
0无中断挂起
1中断挂起
SD24SC 1 SD24_A 开始转换
0无转换开始
1开始转换
SD24GRP 0 SD24_A 集合。 带有下一个较高通道的 SD24_A 集合通道。 不用于最后一个通道。
0没被集合
1被集合
27.3.3 SD24INCTLx
SD24_A
通道
x
输入入控控制制寄寄存存器
76543210
SD24INTDLYx SD24GAINx SD24INCHx
rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0
SD24INTDLYx 7-6 转换开始后产生的中断延迟。 这些位选择转换开始后的第一个中断延迟。
00 第四个采样引起中断
01 第三个采样引起中断
10 第二个采样引起中断
11 第一个采样引起中断
SD24GAINx 5-3 SD24_A 前置放大器的增益
000 x1
001 x2
010 x4
011 x8
100 x16
101 x32
110 被保留
111 被保留
SD24INCHx 2-0 SD24_A 通道差分对输入。 可用的选择依赖于设备。 设置特定器件数据表。
000 Ax.0
001 Ax.1(1)
010 Ax.2(1)
011 Ax.3(1)
100 Ax.4(1)
101 (AVCC- AVSS) / 11
110 温度传感器
111 PGA 偏移测量的简称。
(1) 在所有设备上不可用 Ax.1 Ax.4(请参阅《特定器件的的数据手册》)。
635
ZHCU032IDecember 2004Revised January 2012 SD24_A
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
SD24_A
寄存器
www.ti.com.cn
27.3.4 SD24MEMx
SD24_A
通道
x
的转转换换存存储储寄寄存
15 14 13 12 11 10 9 8
转换换结
rrrrrrrr
76543210
转换换结
rrrrrrrr
转换换结 15-0 转换结果。 SD24MEMx 寄存器是否保存高于或低于 16 位的数字滤波器的输出取决于 SD24LSBACC 位。
27.3.5 SD24PREx
SD24_A
通道
x
的预预置置寄寄存存器
76543210
预置置值
rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0
预置置值 7-0 SD24_A 数字滤波器的预置值
27.3.6 SD24AE
SD24_A
的模模拟拟输输入入使使能寄存存器
76543210
SD24AE7 SD24AE6 SD24AE5 SD24AE4 SD24AE3 SD24AE2 SD24AE1 SD24AE0
rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0
SD24AEx 7-0 SD24_A 模拟使能
0禁用外部输入。 负极输入端被内置连接到 VSS
1使能的外部输入
636 SD24_A ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
SD24_A
寄存器
27.3.7 SD24IV
SD24_A
中断断向向量量寄寄存存器
15 14 13 12 11 10 9 8
00000000
r0 r0 r0 r0 r0 r0 r0 r0
76543210
0 0 0 SD24IVx 0
r0 r0 r0 r-0 r-0 r-0 r-0 r0
SD24IVx 15-0 SD24_A 中断向量值
SD24IV 的目目 中中断优先先级
中断断源源 中断标标志
录 存存器
000h 无中断挂起 -
SD24CCTLx
002h SD24MEMx 溢出 最高
SD24OVIFG(1)
SD24CCTL0
004h SD24_A 通道 0的中断 SD24IFG
SD24CCTL1
006h SD24_A 通道 1的中断 SD24IFG
SD24CCTL2
008h SD24_A 通道 2的中断 SD24IFG
SD24CCTL3
00Ah SD24_A 通道 3的中断 SD24IFG
SD24CCTL4
00Ch SD24_A 通道 4的中断 SD24IFG
SD24CCTL5
00Eh SD24_A 通道 5的中断 SD24IFG
SD24CCTL6
010h SD24_A 通道 6的中断 最低
SD24IFG
(1) SD24_A 发生溢出时,为了确定是哪个通道溢出的,用户必须检查所有SD24CCTLxSD24OVIFG 标志。
637
ZHCU032IDecember 2004Revised January 2012 SD24_A
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
Chapter 28
ZHCU032IDecember 2004Revised January 2012
内嵌嵌式仿仿真真模
(EEM)
本章描述了嵌入式仿真模块 (EEM) 在所有 MSP430 闪存器件中的应用。
Topic ........................................................................................................................... Page
28.1 EEM 说明........................................................................................................ 639
28.2 EEM 构建建模模块.................................................................................................. 641
28.3 嵌入入式式仿仿真真模模块块的的配配置........................................................................................ 642
638
内嵌式仿真模块
(EEM) ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
EEM
说明
28.1 EEM 说明
每个 MSP430 闪存型微控制器都应用了嵌入式仿真模块 (EEM)。 它是通过 JTAG 进行控制和访问的。 每种
应用都与器件相关,在 1.3 EEM
配置
和器件数据手册中进行了详细描述。
概括的说,具有以下特征:
具有非侵入性执行代码的实时断点控制。
单步,单步进入和跳过功能
支持所有的低功耗模式
支持所有的系统频率和时钟源
最多可以在地址总线 (MAB) 和数据总线 (MDB) 上设置 8(器件相关)个硬件触发/断点
最多可以在 CPU 寄存器写入口设置 2(器件相关)个硬件触发/断点
地址总线,数据总线,和 CPU 寄存器触发器可被连接在一起,以便组成 8(器件相关)个硬件触发/断点
触发排序(器件相关)
用一个集成跟踪缓冲器(器件相关)来存储内部总线和控制信号
在一个仿真停顿时,对定时器,通信外围器件,和在其他通用器件或在一个前置基础模块上的其他模块
进行时钟控制
28-1展示了目前最大的 2xx 嵌入式仿真模块应用的简化模块图。
更多关于怎样将 EEM 的功能和 IAR 嵌入式工作平台调试增强型一起使用的详细信息,请参阅
《增强型仿
真模块高级调试应用报告》
SLAA263www.msp430.com。 代码调试器 (CCE) 和其他调试器支持 MSP430
拥有相同或相似的功能设置。 更多详细信息请参阅《适用调试器用户指南》。
639
ZHCU032IDecember 2004Revised January 2012
内嵌式仿真模块
(EEM)
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
CPU Stop
Trigger
Blocks
MB0
MB1
MB2
MB3
MB4
MB5
MB6
MB7
CPU0
CPU1
&
0
Trigger Sequencer
”AND” Matrix − CombinationTriggers
&
1
&
2
&
3
&
4
&
5
&
6
&
7
Start/Stop State Storage
OR
OR
EEM
说明
www.ti.com.cn
28-1. 嵌入入式式仿仿真真模模块(EEM) 的大大应应用
640
内嵌式仿真模块
(EEM) ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
EEM
构建模块
28.2 EEM 构建建模模块
28.2.1
触发发器
MSP430 系统的嵌入式仿真模块的事件控制由触发器组成,触发器是指示一个已发生特定事件的内部信号。
可以将这些触发器用作简单的断点,但也可以结合两个或者更多的触发器来探测复杂事件,同时,除了可以
停止 CPU 以外,也触发各种各样的反应。
一般来说,这些触发器可以用来控制嵌入式仿真模块的以下功能模块:
断点(CPU 停止)
状态存储器
序列发生器
有两种不同类型的触发器,存储触发器和 CPU 寄存器写入触发器。
为了将 MAB MDB 上的数据和已知的数据进行比较,每一个存储触发器模块都可以被独立选中。 根据应
用的嵌入仿真模块,比较方式可以是 =。 通过使用一个掩码可以将这种比较限制到某些位。 掩
码可以是位型的,也可以是字节型的,这由器件来决定。 除了可以选择总线和比较外,也可以选择触发器的
触发条件。 这些条件包括读取访问,写写访问,DMA 访问和获取指令。
为了将写入选中寄存器的数据和已知数据进行比较,每一个 CPU 寄存器写入触发器模块都可以被独立地选
中。 对每一个触发器都可以独立地选择被观察的寄存器。 比较方式可以是 =。 通过使用一个位
掩码可以将这种比较限制到某些位。
可以把这两种类型触发器组合在一起,以便组成更加复杂的触发器。 例如,一个复杂的触发器可以在一个特
定数值被写入一个特定用户的地址时发出信号。
28.2.2
触发发序序列列发发生生器
触发序列发生器允许在一个事件接收一个中断或状态存储事件前定义触发信号的一个特定顺序。 在触发序列
发生器内可以实现以下功能:
四种状态(状态 0到状态 3
每一种状态切换到另一种状态时发生两次传递
把复位触发序列发生器的触发器复位为状态 0
触发序列发生器总是从状态 0开始,且为了产生一个动作,必须执行到状态 3。 如果不需要状态 1和状态
2,它们可以被忽略。
28.2.3
状态态储储存存((内内部跟踪踪缓缓冲冲器器)
状态存储功能用一个内置缓冲器以一种没有侵占性的方式存储 MABMDB,和 CPU 控制信号信息(即:
读,写或者获取指令)。 内置缓冲器可以保持多达八个入口。 灵活的配置可以允许用户非常有效地记录感
兴趣的信息。
28.2.4
时钟钟控控制
嵌入式仿真模块给器件提供了相关灵活的时钟控制。 该应用对于那些在 CPU 停止以后还需要一个运行时钟
的外设是很有用。(例如:为了允许一个 UART 模块完成其一个字符的传送或者允许一个定时器继续产生一
PWM 信号)。
该时钟控制是灵活的并且支持这两种模块:即需要一个运行时钟的模块和那些当由一个断点导致 CPU 停止
时必须被停止的模块。
641
ZHCU032IDecember 2004Revised January 2012
内嵌式仿真模块
(EEM)
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
嵌入式仿真模块的配置
www.ti.com.cn
28.3 嵌入入式式仿仿真真模模块块的的配配置
28-1概括了 MSP430 2xx 系列的嵌入式仿真模块的配置。 这些配置都与器件相关请参阅《器件数据手
册》。
28-1. 2xx 嵌入入式式仿仿真真模模块块的的配配置
特性XS S M L
存储器总线触发 2(只有 =, 358
1)低字节 1)低字节 1)低字节
存储器总线触发掩码对于 所有 16 20
2)高字节 2)高字节 2)高字节
CPU 寄存器写入触发 0112
组合触发 2468
序列发生器 否 不支持 支持 支持
状态存储器 不支持 支持
基本上任一款 2xx 器件都包括了以下这些特性:
至少两个 MAB/MDB 触发器支持:
– CPUDMA,读取,和写入访问区分
– =的比较(在 XS 中仅有 =
至少两个触发结合寄存器
使用 CPU 停止反馈的硬件断点
带有模块时钟独立控制的时钟控制(在某些 XS 配置中模块时钟的控制是硬编码的)
642
内嵌式仿真模块
(EEM) ZHCU032IDecember 2004Revised January 2012
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
www.ti.com.cn
修订历史记录
修订订历历史史记记录
修订订版本 注注释
SLAU144G 第五章
基本时钟模块
+,向 MSP430AFE2xx 器件添加了特定信息的:
图表 5-2。 基本时钟模块+方框图 - MSP430AFE2xx
5.3 节,寄存器 BCSCTL3 缺省
5.3.25.3.35.3.4 节,可用的寄存器位,缺省,和定义。
添加的章节:
18 USART
外设接口,
UART
模式
19 USART
外设接口,
SPI
模式
27 SD24_A
在这个文档中进行了编辑并更改了格式。
SHCU032 2.4 节,已修正了 DCO 启动时间。
8.2.6 节,已更新引脚振荡器的信息;已添加的图表 8-1
3.4.6.5 节,在 BIC 说明中已修正了排版错误。
7.2.1 节,更正了代码示例中的排版错误。
SLAU144I 2-3,已更改了晶振引脚上的注释。
1.4.1 ,已修正了闪存 / ROM 末尾的地址。
3.3.5 ,已更改了示例图表。
在下面的章节中已更新的说明:5.1 5.2.1 5.2.2 5.2.3 5.2.5.25.2.7.15.3.3 DCOR
位),5.3.4 FLST1Sx 位)。
7.3.2 7.3.4 ,已添加了有关 MSP430G2xx 的信息。
8.1 ,已添加了有关 MSP430G22x0 的注释。
Chapter 21,已添加了有关整个 MSP430G2210 的注释。
22-1,已更新了结构图。
22.2.2.1,已更改了模拟端口选择说明。
22.2.3 ,已更改了基准电压发生器描述。
22.3.1 ,已更新了 SREF 位说明。
22.3.2 ,已更新了 INCHx 位说明。
23-1,已将中心偏左复用器上的四个引脚从 GND 改为悬空。
24-1,已更正了 CALDCO...名。
在整个文档中进行了编辑更改。
NOTE: Page numbers for previous revisions may differ from page numbers in the current version.
643
ZHCU032IDecember 2004Revised January 2012 Revision History
SLAU144 — http://www-s.ti.com/sc/techlit/SLAU144
版权 © 2004–2012, Texas Instruments Incorporated
重要要声声明
德州仪器(TI) 及其下属子公司有权根据 JESD46 最新标准,对所提供的产品和服务进行更正、修改、增强、改进或其它更改, 并有权根据
JESD48 最新标准中止提供任何产品和服务。客户在下订单前应获取最新的相关信息,并验证这些信息是否完整且是最新的。所有产品的销售
都遵循在订单确认时所提供的TI 销售条款与条件。
TI 保证其所销售的组件的性能符合产品销售时 TI 半导体产品销售条件与条款的适用规范。仅在 TI 保证的范围内,且 TI 认为 有必要时才会使
用测试或其它质量控制技术。除非适用法律做出了硬性规定,否则没有必要对每种组件的所有参数进行测试。
TI 对应用帮助或客户产品设计不承担任何义务。客户应对其使用 TI 组件的产品和应用自行负责。为尽量减小与客户产品和应 用相关的风险,
客户应提供充分的设计与操作安全措施。
TI 不对任何 TI 专利权、版权、屏蔽作品权或其它与使用了 TI 组件或服务的组合设备、机器或流程相关的 TI 知识产权中授予 的直接或隐含权
限作出任何保证或解释。TI 所发布的与第三方产品或服务有关的信息,不能构成从 TI 获得使用这些产品或服 务的许可、授权、或认可。使用
此类信息可能需要获得第三方的专利权或其它知识产权方面的许可,或是 TI 的专利权或其它 知识产权方面的许可。
对于 TI 的产品手册或数据表中 TI 信息的重要部分,仅在没有对内容进行任何篡改且带有相关授权、条件、限制和声明的情况 下才允许进行
复制。TI 对此类篡改过的文件不承担任何责任或义务。复制第三方的信息可能需要服从额外的限制条件。
在转售 TI 组件或服务时,如果对该组件或服务参数的陈述与 TI 标明的参数相比存在差异或虚假成分,则会失去相关 TI 组件 或服务的所有明
示或暗示授权,且这是不正当的、欺诈性商业行为。TI 对任何此类虚假陈述均不承担任何责任或义务。
客户认可并同意,尽管任何应用相关信息或支持仍可能由 TI 提供,但他们将独力负责满足与其产品及在其应用中使用 TI 产品 相关的所有法
律、法规和安全相关要求。客户声明并同意,他们具备制定与实施安全措施所需的全部专业技术和知识,可预见 故障的危险后果、监测故障
及其后果、降低有可能造成人身伤害的故障的发生机率并采取适当的补救措施。客户将全额赔偿因 在此类安全关键应用中使用任何 TI 组件而
TI 及其代理造成的任何损失。
在某些场合中,为了推进安全相关应用有可能对 TI 组件进行特别的促销。TI 的目标是利用此类组件帮助客户设计和创立其特 有的可满足适用
的功能安全性标准和要求的终端产品解决方案。尽管如此,此类组件仍然服从这些条款。
TI 组件未获得用于 FDA Class III(或类似的生命攸关医疗设备)的授权许可,除非各方授权官员已经达成了专门管控此类使 用的特别协议。
只有那些 TI 特别注明属于军用等级或增强型塑料TI 组件才是设计或专门用于军事/航空应用或环境的。购买者认可并同 意,对并非指定面
向军事或航空航天用途的 TI 组件进行军事或航空航天方面的应用,其风险由客户单独承担,并且由客户独 力负责满足与此类使用相关的所有
法律和法规要求。
TI 已明确指定符合 ISO/TS16949 要求的产品,这些产品主要用于汽车。在任何情况下,因使用非指定产品而无法达到 ISO/TS16949
求,TI不承担任何责任。
产品品 应应用
数字音频 www.ti.com.cn/audio 通信与电信 www.ti.com.cn/telecom
放大器和线性器件 www.ti.com.cn/amplifiers 计算机及周边 www.ti.com.cn/computer
数据转换器 www.ti.com.cn/dataconverters 消费电子 www.ti.com/consumer-apps
DLP® 产品 www.dlp.com 能源 www.ti.com/energy
DSP - 数字信号处理器 www.ti.com.cn/dsp 工业应用 www.ti.com.cn/industrial
时钟和计时器 www.ti.com.cn/clockandtimers 医疗电子 www.ti.com.cn/medical
接口 www.ti.com.cn/interface 安防应用 www.ti.com.cn/security
逻辑 www.ti.com.cn/logic 汽车电子 www.ti.com.cn/automotive
电源管理 www.ti.com.cn/power 视频和影像 www.ti.com.cn/video
微控制器 (MCU) www.ti.com.cn/microcontrollers
RFID 系统 www.ti.com.cn/rfidsys
OMAP应用处理器 www.ti.com/omap
无线连通性 www.ti.com.cn/wirelessconnectivity 德州仪器在线技术支持社区 www.deyisupport.com
IMPORTANT NOTICE
邮寄地址: 上海市浦东新区世纪大道 1568 号,中建大厦 32 楼 邮政编码: 200122
Copyright © 2013 德州仪器 半导体技术(上海)有限公司

Navigation menu