MSP430各功能模块的介绍 - 图文

更新时间:2024-01-19 15:24:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

各个时钟信号源介绍如下:

1、 LFXT1CLK:低频/高频时钟源。可以外接32768Hz的时钟芯片或频率为450KHz~8MHz的标准警惕或共振器。

2、 XT2CLK:高频时钟源。需要外接两个震荡电容器。可以外接32768Hz的时钟芯片或频率为450KHz~8MHz的标准警惕或共振器和外部时钟输入。较常用的晶体是8MHz的。

3、 DCOCLK:内部数字可控制的RC振荡器。MSP430单片机时钟模块提供3个时钟信号以供给片内各部分电路使用,这3个时钟信号分别是:

(1) ACLK:辅助时钟信号。ACLK是从LFXT1CLK信号由1/2/4/8分频器分频后得到的。由BCSCTL1寄存器设置DIVA相应位来决定分频因子。ACLK可提供给CPU外围功能模块做时钟信号使用。

(2) MCLK:主时钟信号。MCLK是由3个时钟源所提供的。它们分别是:LFXT1CLK、XT2CLK、和DCO时钟源信号。MCLK主要用于MCU和相关 模块做时钟。同样可设置相关寄存器来决定分频因子及相关设置。

(3) SMCLK:子系统时钟。SMCLK由2个时钟源信号提供,他们分别是XT2CLK和DCO。如果是F11或F11X1系列单片机,则由LFXT1CLK代替XT2CLK。同样可设置相关寄存器来决定分频因子及相关的设置。

低频振荡器LFXT1:

LFXT1支持超低功耗,它在低频模式下使用一个32768Hz的晶体。不需要任何电容因为在低频模式下内部集成了电容。低频振荡器也支持高频模式和高速晶体,但连接时每端必须加电容。电容的大小根据所接晶体频率的高低来选择。低频振荡器在低频和高频模式下都可以选择从XIN引脚接入一个外部输入时钟信号,但所接频率必须根据所设定的工作模式来选择,并且OSCOFF位必须复位。

高频振荡器LFXT2:

LFXT2作为MSP430的第二晶体振荡器。与低频相比,其功耗更大。高频晶体真大气外接在XIN2和XOUT2两个引脚,并且必须外接电容。高频振荡器可以作为SMCLK和MCLK的时钟源。高频振荡器可以选择从XIN2引脚接入一个外部输入时钟信号,但是所接的频率必须根据所设定的工作模式来选择,兵器XT2OFF必须复位。

数字控制振荡器DCO:

DCO是内部集成的RC类型振荡器。DCO的频率会随温度和电压的变化而变化。DCO

的频率精度比较差,但可以通过软件设置DCOx、MODx、和RSLEx等位来调整其频率,从而增加它的稳定性。当DCO不是作为SMCLK或MCLK的时钟源时,可以通过设置SCG0位来使DCOCLK失效。

当系统复位(PUC)后,DCO被选择为系统的MCLK和SMCLK时钟源,RC选择为内部电阻产生振荡器。RSELx=3,DC0x=4,DCO频率处于中间频率。

DCO频率设置是经过一下几步来实现的: 通过设置DCOR位来选择是外部或内部电阻 通过外部电阻或内部电阻来确定一个基准频率 通过设置3个RSELx位来分频

通过设置3个DCOz位来选择DCOx和DCOx+1之间的频率。

当DCO=07H时,MODx位对选择没有效果,因为已经达到最高频率了。

DCO可以工作在很高的频率上,内部电阻大约为300K,此时DCO的工作频率大约为5MHz,当使用一个100K的外部电阻时,此时DCO的工作频率可以达到10MHz。

需要注意的是,MCLK不能高于该器件所规定的最高频率。DCO的调制器混合DCO到DCO+1的频率产生一个稳定有效的中频频率来减小电磁干扰。这个功能是通过设置MODx位来实现的。当MODx位为0时,该功能失效。

而实际DCO周期t的计算公式为: t=(32-MODx)*tDCO+MODx*tDCO+1

MSP430的中断分为3种:系统复位中断、不可屏蔽中断和可屏蔽中断。 系统复位后的地址位0FFFEH 不可屏蔽中断

不可屏蔽中断的中断向量为0FFFCH。响应不可屏蔽中断时,硬件将OFIE、NMIE、ACCVIE复位。软件首先判断中断源并复位中断标志,接着执行用户代码。退出中断之前需要置位OFIE、NMIE、ACCVIE,以便能够再次响应中断。需要特别注意的是:置位OFIE、NMIE、ACCVIE后,必须立即退出中断响应程序,否则会再次触发中断,导致中断嵌套,从而导致堆栈溢出,使得程序执行结果无法预料。产生不可屏蔽中断有3种情况:上升沿电平出现在NMI引脚,当NMI引脚配置为NMI模式时;振荡器发生错误,Flash的误操作。

当系统上电复位时,RST/NMI引脚被设置为复位模式。RST/NMI引脚选择RST或者NMI功能是通过设置看门狗的寄存器WDTCTL实现的。

当此引脚设置为复位状态时,CPU会保持复位状态。当该引脚保持低电平且输入变成高电平时,CPU开始从0FFFEH所指定的起始地址处执行程序。

当次引脚配置成NMI功能时,如果有一个边沿信号(上升沿或下降沿)被WDTNMIES位选择并且NMIE中断允许,将会产生NMI中断,并且会产生NMI中断标志NMIIFG。

当此引脚配置成NMI模式时,一个NMI中断产生,不会锁定NMI引脚为低电平。如果此时有不同原因产生PUC复位并且NMI引脚为低电平时,系统将保持复位状态,这是因为PUC复位后将该引脚配置为复位模式。

当此引脚配置成NMI模式时,修改WDTNMIES位是否产生中断取决于该引脚实际的电平。当NMI中断边沿选择位在配置为NMI模式前修改时,则不会产生中断。

可屏蔽中断

可屏蔽中断的中断源来源于具有中断能力的外围模块,包括看门狗定时器工作在定时器模式时溢出产生的中断。每一个中断都可以由各自的中断控制器寄存器中的对应控制位进行屏蔽,也可以由全局中断控制位屏蔽。

中断响应的过程

多个中断请求发生时,响应最高优先级中断。响应中断时,MSP430单片机将不可屏蔽中断控制位SR.GIE复位。因此,一旦响应了中断,即使有优先级更高的可屏蔽中断出现,也不会中断当前正在响应的中断而去响应较高优先级的中断。但SR.GIE复位不影响不可屏蔽中断,所以仍可接受不可屏蔽中断的中断请求。

中断响应的过程如下:

如果CPU处于活动状态,则完成当前指令 如果CPU处于低功耗状态,则退出低功耗状态 将下一条指令的PC值压入堆栈 将状态寄存器SR压入堆栈

若有多个中断请求,则响应最高优先级中断

单中断源的中断请求标志位自动复位,多中断源的标志位不变,等待软件复位。 总中断允许位SR.GIE复位;SR状态寄存器中的CPUOFF、OSCOFF、SCG1、V、N、Z、C位复位。

相应的中断向量值装入PC寄存器,程序从此地址开始执行。 中断返回的过程如下:

从堆栈中恢复PC值,若响应中断前CPU处于低功耗模式,则可屏蔽中断仍然恢复低

功耗模式

从堆栈中恢复PC值,若响应中断前CPU不处于低功耗模式,则从此地址继续执行程序。

特殊功能寄存器 中断使能寄存器1

中断使能寄存器1是一个8位的寄存器,该寄存器主要是使能某些模块的中断功能,其存储地址为00H。中断使能寄存器1中的位分配如下:

UTXIE0 URXIE0 ACCBIE NMIIE OFIE WDTIE 中断使能寄存器2

中断使能寄存器2是一个8位的寄存器,该寄存器主要是使能某些模块的中断功能,其存储地址为01H。

UTXIE1 URXIE1 中断标志寄存器1

中断标志寄存器1是一个8位的寄存器,该寄存器主要是响应模块的中断标志位,其存储地址为02H。 UTXIFG0 URXIFG0 NMIIFG OFIFG WDTIFG

Bit7 Bit6 Bit4 Bit1 Bit0 USART0、UART和SPI发送标志 USART0、UART和SPI接收标志 通过RST/NMI引脚置位 振荡器发生故障时标志置位 溢出,或安全值错误,或VCC上电复位,或RST/NMI有复位条件时置位 Bit5 Bit4 USART1、UART和SPI发送中断使能信号 USART1、UART和SPI接收中断使能信号 Bit7 Bit6 Bit5 Bit4 Bit1 Bit0 USART0、UART和SPI发送中断使能信号 USART0、UART和SPI接收中断使能信号 Flash访问错误中断使能信号 非屏蔽中断使能信号 振荡器故障中断使能信号 看门狗定时器中断使能信号 中断标志寄存器2

中断标志寄存器2是一个8位的寄存器,该寄存器主要是相应模块的中断标志位,其存储地址为03H。

UTXIFG1 URXIFG1 模块使能寄存器1

模块使能寄存器1是一个8位的寄存器,该寄存器主要是相应模块的中断标志位,其存储地址为04H。

UTXE0 URXE0 USPIE0 模块使能寄存器2

模块使能寄存器2是一个8位的寄存器,该寄存器主要是相应模块的中断标志位,其存储地址位05H。

UTXE1 URXE1 USPIE1

MSP430F149的I/O口操作是通过读/写寄存器来完成的。与I/O口相关的寄存器有PxDIR

、PxIN、PxOUT、PxSEL、PxIFG、PxIE和PxIES,其中后面三个是中断寄存器。 当I/O口作为一般的输入/输出口使用时,其基本操作流程如下: 选择I/O口功能,基本I/O口模式或其他模式(即设置PxSEL寄存器) 设置方向寄存器(PxDIR)

读出外部输入值(PxIN)或写入相应值(PxOUT) 对I/O口中断操作的基本流程如下:

设置I/O模式 设置中断触发方式(PxIES寄存器) 允许中断(PxIE) 开总中断(调用_EINT()或_BIS_SR(LPM4_bits+GIE)函数) 等待中断,有中断时执行中断服务程序

Bit5 Bit4 Bit4 USART1、UART发送使能 USART1、UART和SPI接收使能 USART1、SPI(同步外设接口)发送和接收使能 Bit7 Bit6 Bit6 USART0、UART发送使能 USART0、UART和SPI接收使能 USART0、SPI(同步外设接口)发送和接收使能 Bit5 Bit4 USART1UART和SPI发送标志 USART1UART和SPI接收标志

寄存器

功能选择寄存器PxSEL

PxSEL(x=1,2,3,4,5,6),设置响应的位为1,则该位对应的引脚为外围模块的功能,即第二功能;设置响应的位为0,则该位对应的引脚为普通的I/O口。 PxSEL.7 PxSEL.6 PxSEL.5 PxSEL.4 PxSEL.3 PxSEL.2 PxSEL.1 PxSEL.0 方向控制寄存器PxDIR

PxDIR(x=1,2,3,4,5,6):该寄存器控制Px口的各个引脚的方向。设置相应的位为1,则该位对应的引脚为输出;设置响应的位为0,则该位对应的引脚为输入。 PxDIR.7 PxDIR.6 PxDIR.5 PxDIR.4 PxDIR.3 PxDIR.2 PxDIR.1 PxDIR.0 输出控制寄存器PxOUT

PxOUT(x=1,2,3,4,5,6):该寄存器控制I/O口的输出值。在输出模式下,设置相应的位为1,则该位对应的引脚输出为高电平1;设置相应的位为0,则该位对应的输出为低电平0。 PxOUT.7 PxOUT.6 PxOUT.5 PxOUT.4 PxOUT.3 PxOUT.2 PxOUT.1 PxOUT.0 注意:PxOUT复位时其值不确定,在使用过程中应该先使PxOUT的值确定以后才设置方向寄存器。

输入状态寄存器PxIN

PxIN(x=1,2,3,4,5,6):该寄存器反映I/O口的输入值。在输入模式下,当I/O口相应输入为高电平时,该寄存器相应的位为1;当I/O口相应输入为低电平时,该寄存器相应的位为0。 PxIN.7 PxIN.6 PxIN.5 PxIN.4 PxIN.3 PxIN.2 PxIN.1 PxIN.0 中断允许寄存器PxIE

PxIE(x=1,2):该控制器控制I/O口的中断允许。设置相应的位为1,则该位对应的引脚允许中断;设置相应的位为0,则该位对应的引脚不允许中断。其复位值全为0,默认为不允许中断。 PxIE.7 PxIE.6 PxIE.5 PxIE.4 PxIE.3 PxIE.2 PxIE.1 PxIE.0 中断触发选择寄存器PxIES

PxIES(x=1,2): 该控制器控制I/O口的中断边沿选择。设置相应的位为1,则该位对应的引脚选择下降沿触发中断;设置相应的位为0,则该位对应的引脚选择上升沿触发中断。复位值全为0,默认为上升沿触发中断。 PxIES.7 PxIES.6 PxIES.5 PxIES.4 PxIES.3 PxIES.2 PxIES.1 PxIES.0 中断标志寄存器PxIFG

PxIFG(x=1,2): 该寄存器为I/O口的中断标志寄存器。若相应的位为1,则该位对应的引脚有外部中断产生;若相应的位为0,则该位对应的引脚没有外部中断产生。复位值全为0,该寄存器必须通过软件复位,同时也可以通过软件写1产生相应的中断。 PxIFG.7 PxIFG.6 PxIFG.5 PxIFG.4 PxIFG.3 PxIFG.2 PxIFG.1 PxIFG.0 注意:当设置为第二功能的时候,MSP430不会主动设置引脚的方向,必须通过PxIN寄存器去设置。

当设置为输出时,输入到外设的信号是锁存后的信号。当PxSEL=1时,内部输入信号跟随引脚端的信号;当PxSEL=0时,在PxSELx被复位以前,输入到外设的信号保持外设输入信号的值。

当P1SEL和P2SEL寄存器的位设置为1,则P1、P2口的I/O口中断功能失效。 当P1或P2口进行中断功能允许时,在进入中断程序时必须用软件对中断标志清零,中断标志不可以自动清零。

通用同步/异步收发器USART

通用同步/异步收发器采用一个硬件,支持两种通用串行总线模式:UART接口(异步模式)和SPI(同步模式)。根据寄存器UxCTL的SYNC位来选择USART的工作模式。在MSP430F149中有两个相同的串行总线接口,可以分别或同时配置成两种模式。

SYNC位为0时,USART工作在异步模式下,在异步模式下,USART通过URXD、UTXD这两个引脚与外部系统连接。

异步模式的主要特点是:

7位或者8位数据并且支持奇、偶、无校验位;独立的接收和发送移位寄存器;独立的接收和发送寄存器;接收和发送时,低位在前;空闲模式和地址模式支持多机通信;接收开始边沿检测使CPU在低功耗模式下进入工作状态(LPMx);错误检测标志和挂起、地址检测功能;独立的接收和发送中断功能。

串口操作的基本步骤:

置位SWRST来复位串口(串口复位主要通过两个操作实现:上电复位或置SWRST位为1);初始化所有的USART寄存器;使能USART模块;清零SWRST位;如果需要,则

使能中断。

注意:如果不按照这样的过程进行操作,可能会得到不确定的结果。 异步通信模式

当两个器件异步通信时,我们使用空闲模式。当多个器件异步通信时,通用异步串口支持空闲模式或地址模式。

空闲模式

当MM=0时,空闲多机模式被选择。在空闲多级模式中,数据块被空闲时间段分成不同数据块。一个标准的空闲时间段有10位或更多位连续的1组成。如果停止位采用2位,那么最后一个停止位将被看成是空闲位的开始位。空闲位后面紧跟的就是地址位信息。用户在空闲位以后就可以判断地址信号是不是自己的地址,如果是则继续接受数据,如果不是则等待接收下一个地址。

通过寄存器的URXWIE位可以控制数据接收是否允许。当URXWIE=1时,只接收地址信息,数据将被忽略。接收到地址信息后,判断是否和自己的地址相符合。如果符合,则清零URXWIE位准备接收数据;如果不符合,则保持URXWIE=1等待接收下一个地址。这样就很容易实现多机通信任务。

注意:硬件不会自动清零URXWIE位,当用户准备接收数据的时候需要用户软件清零该位。在发送状态下,MSP430F149产生空闲模式的步骤主要分为两个步骤:置TXWAKE位为1,当UxTXBUF准备好发送数据(UTXIFGx=1)时,写任意数据到接收缓冲寄存器UxTXBUF里;当UxTXBUF准备好发送数据(UTXIFGx=1)时,写需要的地址到UxTXBUF,然后发送数据到相应的从机。

地址模式

当MM=1时,地址模式被选择。在传送的数据中包含一个额外的位,用来表明此时发送的是地址还是数据。

URXWIE位用来控制数据接收是否允许。当URXWIE=1时,接收到的数据信息将被忽略,并且不会产生相应的中断。当接收到一个地址信息时,我们可以判断是否和自己的地址符合,如果符合,则清零URXWIE等待接收数据信息;如果不符合,则保持URXWIE=1等待接收下一个地址。

注意:和空闲模式一样,硬件不会自动清零URXWIE位,当用户准备接收数据的时候需要用户软件清零。

在发送状态下,地址位受TXWAKE位控制。当TXWAKE=1时,发送地址信息;当

TXWAKE=0时,发送数据信息。当数据写到WUT中或者SWRST位被置位时,TXWAKE将自动清零。

UART的波特率

由UxBR1和UxBR0组成16位计数器。在主机模式下,最大波特率为BRCLK/2。在从机模式下,最大波特率为BRCLK。因为分频因子一般不是整数,所以用16位计数器来调整整数部分,而小数部分则通过UxMTCL寄存器来微调。

分频因子N=UBR+(M7+M6+M5+M4+M3+M2+M1+M0)/8,其中UBR为16位数据值,而Mx为调整寄存器UxMTCL中的各数据位。

波特率=BRCLK/N=BRCLK/[UBR+(M7+M6+M5+M4+M3+M2+M1+M0)/8]

异步模式下的寄存器 UxCTL寄存器

UxCTL寄存器是一个8位的寄存器,用来控制USART的基本操作

PENA PEV SPB CHAR LISTEN SYNC MM SWRST 奇偶使能位(0:不使能奇偶位;1:奇偶使能位,奇偶产生于(UTXDx)并且在(URXDx)PENA Bit7 接收。在地址-多机模式下,地址位包括在奇偶校验计算里) PEV SPB CHAR LISTEN Bit6 Bit5 Bit4 Bit3 奇偶校验选择位。该位在PENA使能时有效。0:偶校验 1:奇校验 停止选择位,发送停止位位数。 0: 1位停止位 1: 2位停止位 数据长度选择。0: 7位数据 1: 8位数据 循环模式选择位。0:禁止循环模式1:使能循环模式。 SYNC MM SWRST Bit2 Bit1 Bit0 模式选择。0:UART模式。1:SPI模式 多CPU模式选择。0:空闲多机模式 1:地址选择多机模式 软件复位。 0:正常工作模式 1:复位状态

UxTCTL寄存器

UxTCTL寄存器是一个8位的寄存器,用来控制USART的接收操作。

Unused Unused CKPL SSELx URXSE TXWAKE Unused TXEPT CKPL Bit7 Bit6 Bit5~4 Bit3 Bit2 Bit1 Bit0 SSELx URXSE 未用 时钟极性选择。0:UCLK 1:和UCLK相反 串口工作时钟选择位。00:UCLKI; 01:ACLK; 10:SMCLK 11:SMCLK 异步串口接收开始边沿选择。0:禁止 1:使能 发送地址数据选择。0:下一个要发送的是数据 1:下一个要发送的是地址 未用 发送空标志寄存器。0:正在发送数据 1:空闲 TXWAKE Unused TXEPT

UxRCTL寄存器

UxRCTL寄存器是一个8位的寄存器,它用来控制USART的接收操作。

FE FE PE OE BRK PE Bit7 Bit6 Bit5 Bit4 OE BRK URXEIE UTXWIE RXWAKE RXERR 帧出错标志位。 0:没有帧错误 1:帧错误 校验出错标志位。0:校验正确 1:校验错误 溢出标志位。0:无溢出 1:有溢出 打断检测位。0:没有被打断。1:被打断 接收出错中断允许位。0:不允许中断,不接收出错字符并且不改变URXIFG标志。 URXEIE Bit3 1:允许中断,出错字符接收并且能够置位URXIFG 接收唤醒中断允许位。 0:所有接收到的字符都能够置位URXIFG UTXWIE Bit2 1:只能接收到地址字符才能够置位URXIFG RXWAKE RXERR Bit1 Bit0 接收唤醒检测位。0:没有被唤醒,接收的字符时数据。1:唤醒,接收的字符是地址 接收出错标志位。0:没有接收错误 1:有接收到错误 UxBR0、UxBR1寄存器

UxBR0、UxBR1寄存器都是8位的寄存器,用来确定波特率的整数部分。其中UxBR0为低字节,UxBR1为高字节。UxBR0和UxBR1两个字节合起来为一个16位的子,成为

UxBR。有效波特率的范围是3<=UxBR<=0FFFH

UxMCTL寄存器

UxMCTL寄存器是一个8位的寄存器,用来确定波特率的小数部分。 UxRXBUF寄存器

UxRXBUF寄存器是一个8位的寄存器,又来接收数据。当有数据时,从该寄存器里读出数据。

UxTXBUF寄存器

UxTXBUF寄存器是一个8位的寄存器,又来发送数据。当有数据需要发送时,将数据写入到该寄存器中。

ME1寄存器

ME1寄存器是一个8位的寄存器。用来使能MSP430F1XX序列中的USART0的TXD和RXD位;而对于MSP430X12XX序列,则是通过ME2寄存器来设置的。

UTXE0 UTXE0 URXE0 URXE0 Bit7 Bit6 USART0发送允许位。0:不允许 1:允许 USART0接收允许位。0:不允许 1:允许 ME2寄存器

ME2寄存器是一个8位的寄存器。用来使能USART1的TXD和RXD位;以及MSP430X12XX序列中的USART0的TXD和RXD位。

UTXE1 URXE1 UTXE0 URXE0 Bit5 Bit4 Bit1 Bit0 UTXE1 URXE1 USART1发送允许位。0:不允许 1:允许 USART1接收允许位。0:不允许 1:允许 USART0发送允许位。0:不允许 1:允许 USART0接收允许位。0:不允许 1:允许 IE1寄存器

IE1寄存器是一个8位寄存器,用来对MSP430F1XX序列中的USART0的中断使能进行设置;而对于MSP430FX12XX序列,则是通过IE2寄存器尽心设置的。

UTXIE0 UTXIE0 URXIE0 Bit7 USART0发送中断允许位。0:不允许 1:允许 URXIE0 Bit6 USART0接收中断允许位。0:不允许 1:允许 IE2寄存器

IE2寄存器是一个8位寄存器,用来设置USART1的中断使能,以及MSP430X12XX序列中USART0的中断使能。

UTXIE1 URXIE1 UTXIE0 URXIE0 Bit5 Bit4 Bit1 Bit0 UTXIE1 URXIE1 UTXIE0 URXIE0 USART1发送中断允许位。0:不允许 1:允许 USART1接收中断允许位。0:不允许 1:允许 USART0发送中断允许位。0:不允许 1:允许 USART0接收中断允许位。0:不允许 1:允许 IFG1寄存器

IFG1寄存器是一个8位寄存器,用来设置MSP430F1XX序列中USART0的中断标志位。而对于MSP430X12XX序列,则是通过IFG2寄存器来设置的。

UTXIFG0 UTXIFG0 URXIFG0 URXIFG0 Bit7 Bit6 USART0发送中断标志位。0:没有中断 1:中断挂起 USART0接收中断标志位。0:没有中断 1:中断挂起 IFG2寄存器

IFG2寄存器是一个8位寄存器,用来设置USART1的中断标志位。以及MSP430X12XX序列中USART0的中断标志位。

UTXIFG1 URXIFG1 UTXIFG0 URXIFG0 Bit5 Bit4 Bit1 Bit0 UTXIFG1 URXIFG1 UTXIFG0 URXIFG0 USART1发送中断允许位。0:没有中断 1:中断挂起 USART1接收中断允许位。0:没有中断 1:中断挂起 USART0发送中断允许位。0:没有中断 1:中断挂起 USART0接收中断允许位。0:没有中断 1:中断挂起 SPI接口

串行外围设备接口SPI总线是一种同步串行接口。MSP430F149本身具有硬件支持的SPI接口,所以软件的设置就非常简单,并且CPU有更多的时间去处理其他的任务。SPI总线可以连接多个主机和设备,因此MSP430F149单片机在连接SPI接口的ADC/DAC、存储

器、液晶时,接口电路变得非常简单。

MSP430F149单片机的同步操作

当USART模块的控制寄存器UCTL的SYNC位置位,并且IIC位复位时将工作在同步模式下。通过4线(SOMI、SIMO、UCLK和STE)或3线(SOMI、SIMO和UCLK)与外界通信,具有如下特点:

支持3线或4线SPI操作;支持主机与从机模式;接收与发送具有单独的移位寄存器;接收和发送具有独立的缓冲器;接收和发送具有独立的中断能力;时钟的极性和相位可以编程;主模式的时钟频率可编程;7位或8位的字符长度。

SPI初始化或重新配置流程

置位SWRST;在SWRST=1的情况下,初始化USART寄存器;通过MEx、SFRs使能USART模块。通过软件置零SWRST;如果需要,通过IEx,SFRs使能中断。若不按此流程,将会得到不可预料的结果。

SPI模式的引脚

引脚SOMI、SIMO、UCLK、STE用于SPI模式,其中,SOMI、SIMO、UCLK在主机和从机模式下有差别

引脚 SIMO SOMI UCLK 含义 从进主出 从出主入 USART时钟 主机模式 数据输出引脚 数据输入引脚 输出时钟 从机模式 数据输入引脚 数据输出引脚 输入时钟 其中,STE是从机模式发送/接收允许控制引脚,控制多主从系统中的从机。该引脚不用于3线而用于4线SPI操作中,以使多主机共享总线,避免发送冲突

STE=0,允许从机发送接收数据,SOMI正常工作 工作在从机模式下 STE=1,禁止从机发送接收数据,SOMI被强制进入输入状态 STE=0, SOMI和UCLK被强制进入输入状态 工作在主机模式下 STE=1,SOMI和UCLK正常工作 SPI的操作方式

SPI是全双工的,即主机在发送的同时也在接收数据,并且时钟的极性和相位也是可编程的。只是要求相关设置与各设备匹配,该接口支持主机和从机两种模式。

SPI主机模式

当控制寄存器中国MM=1时,工作在主机模式。USART通过UCLK信号控制通信,在第一个UCLK周期,数据由SIMO移出,并在相应的UCLK周期的中间从SOMI引脚所存数据。每当移位寄存器的内容为空时,就把发送缓冲区的内容存入移位寄存器,并启动发送数据,高位在前;同时,接收到的数据移入移位寄存器中。当达到所设定的位数后,将之移入缓冲URXBUF中,并设置中断标志URIFG,表明接收到一个数据。在接收的过程中,最先收到的位最高位,当前一个数据位被读取时,将置位溢出位OE。当数据从移位寄存器发送给主机后,可立即用UTXIFG标志将数据从缓冲移入移位寄存器,开始一次发送数据操作。注意:URXIFG标志不能代表数据移入完成。

URXIFG表示数据移出完成,主机可利用URXIFG确定从机已经准备好接受数据。 在使用4线通信时,通过激活主机的STE信号来防止与别的主机发生总线冲突。主机的STE信号为高电平时正常工作。当STE信号为低电平时,表明另一个设备申请了主机,当前主机作出以下反应:

SIMO和UCLK引脚被强制输入,不在驱动SPI总线。 出错标志FE和URCTL中中断标志URXIFG将被置位。 在3线模式当中,STE输入信号与控制无关。 SPI从机模式

当选择同步模式并且MM=0时,工作在从机模式。通信时钟来自外部从机,从机的UCLK引脚为输出状态。在开始UCLK之前,由UTXBUF装入移位寄存器中的数据在主机提供的时钟下,通过从机的SOMI对外发送给主机。同时,在UCLK的反向沿,SIMO引脚上的数据移入接收寄存器中。如果接收中断标志URXIFG=1,则表示数据已接收到缓存器中;如果前一个数据还没有被取出,则溢出位将被置位。

在使用4线同步通信时,SIE信号将被从机用作发送和接收允许信号,它由主机提供: STE=0,该从机被允许接收和发送。STE=1,该从机被禁止接收和发送。 STE=1时,已经启动的接收操作将被暂停,直到STE=0。

SPI的使能

SPI模式下,接收/发送位USPIEx决定SPI是否使能。当USPIEx=0时,USART将当前操作完成后停止;如果当前没有操作,则立即停止。上电清除或职位SWRST时,将会立刻禁止USART,并且使传输数据停止。

主从机模式下发送使能,当USPIEx=0时,任何数据写入UxTXBUF均无效,不会发送;只有在USPIEx=1和BRCLK有效时,写入UxTXBUF的数据才会发送。

主从机模式下接收使能,只有当USPIEx=0时,接收才使能。 SPI中断 发送中断

发送中断位UTXIFGx由发送器置位,同时表明UxTXBUF中可以装入下一个数据。此时,如果UTXIEx和GIE位为1,就会产生一个中断请求。如果中断被执行或新的数据写入UxTEBUF中,UTXIFGz标志位将被自动复位。

注意:当UTXIFGx=0和USPIEx=1时,写入数据到UxTXBUF,将会发生一个错误的结果。

接收中断

当数据被接收到UxTXBUF中时,接收中断标志URXIFGx将被置位。此时如果URXIEx和GIE位都为1,就会产生一个中断请求;如果中断被执行或UxRXBUF中的数据被读取,则URXIFGx标志将被自动复位。

同步模式下的寄存器

UxCTL寄存器(控制寄存器) Unused Unused I2C Unused Bit7~6 Bit5 I2C CHAR LISTEN SYNC MM SWRST 未使用 模式选择位。当SYNC=1时,选择SPI或I2C模式。0:SPI 1:I2C 字符长度,选择7位或8位发送。 CHAR Bit4 当选择7位时,不发送或接收缓存的最高位,补0。0:7位 1:8位 选择是否将发送数据由内部反馈给接收器。 LISTEN Bit3 0:无反馈 1:有反馈,通常又称为自闭环模式。 SYNC MM Bit2 Bit1 USART模块选择位。0:UART模式 1:SPI模式 主机模式或从机模式选择位。0:从机模式 1:主机模式 软件复位使能。 SWRST Bit0 0:USART复位释放,允许工作。1:USART处于复位状态

UxTCTL寄存器(发送控制寄存器) CKPH CKPH CKPL Bit7 1:UCLK延时半个周期后作SPICLK信号 SPICLK信号时钟极性控制位。 0:时钟信号的低电平位无效电平,数据在UCLK上升沿输出,输出CKPL Bit6 数据在UCLK的上升沿被锁村。 1:时钟信号的高电平位无效电平,数据字UCLK下降沿输出,输入数据在UCLK的上升沿被锁存。 时钟源选择位。这两位确定波特率的时钟源。 00 外部时钟UCLK(仅对从机模式有效) SSELx Bit5~4 01 辅助时钟ACLK(仅对主机模式有效) 10 子系统主时钟(仅对主机模式有效) 11 子系统时钟(仅对主机模式有效) Unused STC TXEPT Bit3~2 Bit1 Bit0 位寄存器和UTXBUF为空。 UxRCTL寄存器(接收控制寄存器) FE FE OE Unused

UxBR0、UxBR1(波特率选择寄存器,它们用来确定波特率的整数部分)

UxMCTL寄存器(波特率调整控制寄存器,该寄存器不能用在SPI模式下,并且要设为00H) UxRXBUF(接收数据缓存,在7位数据时,接收缓存右对齐,最高位为0) UxTXBUF(发送数据缓存,在7位数据时,接收缓存右对齐,最高位为0)

OE Bit7 Bit6 Bit5~0 Unused Unused Unused Unused Unused Unused 未使用 从机发送控制位。0 4线模式 1 3线模式,此时STE不起作用 发送器空标志。0:有数据正在发送或在发送缓冲器中;1: 发送移SSELx Unused Unused STC TXEPT 时钟相位控制位。0:SPICLK使用正常的UCLK时钟; 帧错误标志。0:没有帧错误 1:帧错误 溢出标志位。0 无溢出 1 有溢出 未使用 ADC12寄存器详细介绍 ADC12CTL0寄存器

ADC12CTL0寄存器是一个16位的寄存器,该寄存器主要控制ADC12模块的工作。 SHET1x SHET1x SHT0x SHTx MSC REF2_5V REFON ADC12ON ADC12OVIE ENC ADC12SC SHT0x Bit15~12 Bit11~8 Bit15~8 Bit7 Bit6 Bit5 Bit4 Bit3 Bit1 Bit0 MSC REF2_5V REFON ADC12ON ADC12OVIE ADC12TOVIE ENC ADC12SC 采样保持时间选择位。当采用脉冲采样模式时,这些位定义寄存器ADC12MEM8到ADC12MEM15才采样保持时间,保持时间为ADC12CLK的个数。 采样保持时间选择位,当采用脉冲采样模式时,这些位定义寄存器ADC12MEM0到ADC12MEM7的采样保持时间,保持时间为ADC12CLK的个数。 ADC12CLK cycles。0000:4;0001:8;0010:16;0011:32;0100:64;0101:96;0110:128; 0111:192;1000:256;1001:384;1010:512;1011:768;1100:1024;1101:1204;1110:1024;1111:1024 多次采样转换控制位,只用于连续或重复模式。0:采样时序,要求SHI上升沿来触发每次采样转换;1:第一次SHI的上升沿触发采样时序,当上一次采样转换结束后,以后的采样自动完成。 内部参考电压选择位。0:1.5V 1:2.5V 参考电压模块控制位。0:参考电压模块关闭。1:参考电压模块打开。 ADC模块电源控制位。0:ADC12关。1:ADC12开。 ADC12MEMx溢出中断使能。当ADC转换结果没有被读取,而且有完成了一次转换,结果写入ADC12MEMx时,将产生该中断。0:溢出中断不使能。1:溢出中断使能 ADC转换功能。0:ADC12转换器不使能;1:ADC12转换器使能。 ADC12转换开始,软件控制采样转换开始位。ADC12SC和ENC可以用一条指令同时置位。ADC12SC可以自动清零。0:没有开始采样转换。1:开始采样转换 ADC12CTL1寄存器

ADC12CTL1寄存器是一个16位寄存器,该寄存器主要控制ADC12模块的工作。(红色部分当ENC=0时才能修改) CSTARTADDx SHSx SHP ISSH ADC12DIVx ADCSSELx CONSEQx ADC12BUSY CSTARTADDx Bit15~12 SHSx Bit11~10 转换开始地址。这些位用来选择单次转换或者连续多路转换的开始寄存器ADC12MEMx,它的取值为0~0x0F 采样保持触发源选择位。00:DSC12SC/位 01:Timer_A的OUT1 10:Timer_B的OUT0 11:Timer_B的OUT1 采样保持脉冲模式选择。该位用来选择采样信号(SAMPCON)是采样时序的输出还是直接输入信号。如果不采用TA1、TB0、TB1、和ADC12CLK来产生采样时钟信号时,SHP位必须置1,否则不能进行A/D转换。0:SAMPCON信号采用采样输入信号1:SAMPCON信号采用采样时序电路产生的信号。 采样保持信号反转控制位。0:不反转 1:反转 SHP Bit9 ISSH ADC12DIVx ADCSSELx CONSEQx ADC12BUSY Bit8 Bit7~5 Bit4~3 Bit2~1 Bit0 ADC12时钟分频控制位。000:不分频 001:2分频 010:3 011:4 100:5 101:6 110:7 111:8 ADC12时钟选择控制位。00:ADC12OSC 01:ACLK 10:MCLK 11: SMCLK ADC12转换模式选择位 00:单路单次转换 01:多路单次转换 10:单路重复转换11 多路重复转换 ADC12忙信号。0:没有忙信号 1: 有ADC正在转换 ADC12MEMx寄存器

ADC12MEMx寄存器是一个16位寄存器,该寄存器主要存储转换得到的数据。 0 Conversion Results Bit15~0 Conversion Results ADC12的转换结果。12位转换结果是向右对齐,15~12位通常为0,写该寄存器将破坏原有的转换结果 ADC12MCTLx寄存器

ADC12MCTLx寄存器是一个8位的寄存器,该寄存器主要控制各个转换存储器的转换条件 EOS EOS SREFx Bit7 INCHx 连续转换结束标志。注意当ADC12MCTL15的EOS位没有被置位时,ADC12MEM15转换结果结束以后将跳到ADC12MEM0.0:不是连续转换结束通道。1:连续转换结束通道 参考选择控制位。000:VR=AVCC, 且VR-=AVss 001:VR=VREF+, 且VR-=AVss 010:VR=VReREF+,且VR-=AVss 011:VR=VReREF+,且VR-=AVss 100:VR+=AVCC, 且VR-=VREF-/ VeREF- 101:VR+=VREF+, 且VR-= VREF-/ VeREF- 110:VR+=VeREF+, 且VR-=VREF-/ VeREF- 111:VR+=VeREF+, 且VR-=VREF-/ VeREF- 输入通道选择.0000:A0 0001:A1 0010:A2 0011:A3 0100:A4 0101:A5 0110:A6 0111:A7 1000:VeREF+ 1001: VREF-/ VeREF- 1011~1111:( AVCC - AVss)/2 SREFx Bit6~4 INCHx Bit3~0 ADC12IE寄存器

ADC12IE寄存器是一个16位的寄存器,该寄存器主要控制各个转换存储器的转换条件。 ADC12IE15 ADC12IEx 14 13 12 11 10 9 8 7 6 5 4 3 2 1 ADC12IE0 Bit15~0 中断使能位。这些位控制中断标志ADC12IFGx的使能或者不使能。0:中断不使能 1中断允许 ADC 12IFG寄存器。

ADC 12IFG寄存器是一个16位的寄存器,该寄存器为ADC12模块的中断标志寄存器。 ADC12IFC15 ADC12IFGx 14 Bit15~0 13 12 11 10 9 8 7 6 5 4 3 2 1 ADC12IFG0 ADC12MEMx中断标志位。当ADC转换结果被写入ADC12MEMx寄存器时,中断标志被置位;当相应的ADC12MEMx被读取或者软件复位时,将清零该位。 ADC12IV寄存器

ADC12IV寄存器时一个16位的寄存器,该寄存器为ADC12模块的中断向量寄存器。 0 ADC12IVx ADC中断向量表值,该寄存器指示当前中断时哪个中断。 000H:没有中断挂起 002H:ADC12MEMx溢出中断。 004H:转换时间溢出中断 006H:ADC12MEM0中断; 008H:ADC12MEM1中断; 00AH:ADC12MEM2中断; 00CH:ADC12MEM3中断; 00EH:ADC12MEM4中断; 010H:ADC12MEM5中断; 012H:ADC12MEM6中断; 014H:ADC12MEM7中断; 016H:ADC12MEM8中断; 018H:ADC12MEM9中断; 01AH:ADC12MEM10中断;01CH:ADC12MEM11中断; 01EH:ADC12MEM12中断; 020H:ADC12MEM13中断;022H:ADC12MEM14中断; 024H:ADC12MEM15中断; ADC12IVx Bit15~0 比较器Comparator_A

Comparator_A是一个模拟比较器,它支持高精度的斜坡模拟/数字转换和电源电压管理,以及外部模拟信号检测功能。它的主要特点如下:

反相和同相输入信号可以通过多路选择器进行选择; 软件可编程比较输出RC滤波器; 输出可以作为Timer_A的捕捉输入; 输入缓冲器控制软件可编程; 中断功能;

可以选择参考电压发生器;

可关断比较器和比较器参考电压发生器。

MSP430单片机的比较器单元主要由以下几个部分组成: 输入选择器:主要用于选择比较器输入信号

参考电压发生器:实现输入信号的比较。当正向信号大于负向信号时,输出高电平;当负向信号大于正向信号时,输出低电平。

输出滤波单元,主要实现对比较器的输出进行RC滤波。

基本工作原理:

比较器A主要完成对比较器正向输入端和反向输入端的模拟信号的电压比较。当正向输入信号大于反向输入信号时,比较器输出信号为高电平,反之位低电平。注意:比较器实际输出可以通过寄存器的CAEX位进行取反,当CAEX位等于1时,输出取反。 同时比较器可以通过寄存器操作来关断和打开,在不适用比较器的情形下,通过关断比较器可以降低系统功耗。当比较器被关闭后,CACTL2寄存器的比较输出为CAOUT通常为低电平。

基本操作流程: 1、 打开比较器单元

2、 打开参考电压发生器单元(可选,如果比较器的输入信号全部是外部输入,则可关闭该

单元)

3、 选择相应输入信号(CA0、CA1和内部参考)连接到比较器的输入端口 4、 单片机的比较器A的外部输入端口CA0和CA1分别接至P2.3和P2.4口; 5、 选择配置相关的寄存器 6、 使能中断信号 7、 读取比较输出信号 模拟输入信号的选择:

通过模拟选择单元电路选择输入信号CAx内部参考电压发生器和比较器的输入端口连接 注意:当比较器A打开时,它的输入信号就应该连接相关外部输入信号、参考电源或地信号,否则引起不可预料的中断并增加系统功耗。

寄存器CAEX位控制输入多路开关,通过控制位CARSEL决定输入信号与比较器的正端或负端连接。另外,CAEX位还可以控制输出的反转。利用这个特性,用户可以测量或者补偿偏置电压。CA0、CA1内部参考电压发生器通过模拟选择单元电路连接到比较器的正、负输入端。

输出滤波器的选择

比较器的输出吸纳后可以通过CAF位来选择是够采用内部输出滤波器。当两个输入端信号相差很小、内部电路和外部电路寄生效应、在加上外部信号耦合到两个输入端口、电源以及系统其它部分的干扰时,将会引起震荡。建议使用比较单元的时候选择内部输出滤波器。

参考电压的产生和选择

参考电压发生器主要用来产生VCAREF信号,并且以连接到比较器的任意一个输入端。寄存器CAREFx位控制参考电压的产生,CARSEL位控制参考电压和比较器输入端的连接(内部参考电压发生器可以产生多个参考电压)如果比较器的2个输入端口都和外部信号连接,则必须关闭内部参考电压发生器。 比较器中断

比较器A的中断相关包括1个中断标志和1个中断向量。

中断标志CAIFG在比价器的输出上升沿或者下降沿被置位(通过CAIES位选择)如果比较器中断使能位CAIE和总中断使能位GIE被置位,则CAIFG的置位将产生一个中断,中断被相应后,CAIFG标志自动清零。

相关寄存器说明: CACTL1寄存器

CACTL1寄存器是一个8位的寄存器,该寄存器包括了比较器的大部分控制位。 CAEX CAEX Bit7 CARSEL CAREFx CAON CAIES CAIE CAIFG 比较器A正向端和反相端交换,是比较器A是输出取反控制位。 0:输入见CARSEL位,输出不取反;1:输入见CARSEL位、输出取反 比较器A参考选择位,该位选择比较器的输入端和VCAREF连接情况。(注意:如果参考电压选择为正端输入,那么外部引脚必须选择CA1连接到负端;如果参考电压选择位负端输入,那么外部引脚必须选择CA0连接到正端。当希望比较器的输入信号都和外部引脚连接的时候,必须关闭内部参考发生器。) 当CAEX=0时 0:VCAREF连接到输入的正端,CA1或CA0可以作为负端输入,输出不反向。当CARSEL Bit16 内部参考电压发生器关闭时,CA1输入到负端,CA0输入到正端。 1:VCAREF连接到输入的负端,CA1或CA0可以作为正端输入,输出不反向。当内部参考电压发生器关闭时,CA1输入到负端,CA0输入到正端。 当CAEX=1时 0:VCAREF连接到输入的正端,CA1或CA0可以作为正端输入,输出反向。当内部参考电压发生器关闭时,CA1输入到负端,CA0输入到正端。 1:VCAREF连接到输入的正端,CA1或CA0可以作为负端输入,输出反向。当内部参考电压发生器关闭时,CA1输入到负端,CA0输入到正端。 比较器A参考电压选择位,这两位选择参考电压VCAREF 00:内部参考电压关闭; 01:参考电压等于0.25VCC 10:参考电压等于0.50VCC 11:选择二极管参考 比较器A使能,可以通过该位关闭比较器A以降低系统电源消耗。注意比较器和参考电压发生器是独立的,可以独立的对其进行操作。0:关闭 1:打开 比较器中断触发边沿选择位。0:上升沿 1:下降沿 比较器A中断使能信号 。0:禁止中断。1:允许中断 比较器A中断标志位。0:没有中断挂起。1:有中断被挂起 CAREFx CAON CAIES CAIE CAIFG

Bit5~4 Bit3 Bit2 Bit1 Bit0 CACTL2寄存器

CACTL2寄存器是一个8位寄存器,包含比较器的控制位,主要是一些与输入/输出有关的信息。 Unused Unused P2CA1 P2CA0 CAF CAOUT P2CA1 Bit7~4 Bit3 Bit2 Bit1 Bit0 P2CA0 CAF 未使用 CA1引脚选择位。0:CA1不作为比较器的输入 1:CA1作为比较器的输入 CA0引脚选择位。0:CA0不作为比较器的输入 1:CA0作为比较器的输入 输出滤波器选择。0:比较器A输出滤波不使能 1:比较器A输出滤波使能 输出信号,这一位反映比较器的输出值,该位不可写(写该位无效) CAOUT CAPD寄存器 CAPD寄存器是一个8位的寄存器,该寄存器用来控制比较器输入的缓冲功能。 CAPD7 CAPDx

6 Bit7~0 5 4 3 2 1 CAPD0 比较器A端口禁止位。这些位独立地禁止比较器A的输入缓冲,以防止寄生电流的产生。0:输入缓冲使能。1:输入禁止使能。

CACTL2寄存器

CACTL2寄存器是一个8位寄存器,包含比较器的控制位,主要是一些与输入/输出有关的信息。 Unused Unused P2CA1 P2CA0 CAF CAOUT P2CA1 Bit7~4 Bit3 Bit2 Bit1 Bit0 P2CA0 CAF 未使用 CA1引脚选择位。0:CA1不作为比较器的输入 1:CA1作为比较器的输入 CA0引脚选择位。0:CA0不作为比较器的输入 1:CA0作为比较器的输入 输出滤波器选择。0:比较器A输出滤波不使能 1:比较器A输出滤波使能 输出信号,这一位反映比较器的输出值,该位不可写(写该位无效) CAOUT CAPD寄存器 CAPD寄存器是一个8位的寄存器,该寄存器用来控制比较器输入的缓冲功能。 CAPD7 CAPDx

6 Bit7~0 5 4 3 2 1 CAPD0 比较器A端口禁止位。这些位独立地禁止比较器A的输入缓冲,以防止寄生电流的产生。0:输入缓冲使能。1:输入禁止使能。

本文来源:https://www.bwwdw.com/article/yboo.html

Top