打印
[MCU]

MSP430单片机理论知识点

[复制链接]
428|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
LED2013|  楼主 | 2020-8-6 13:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
纵观微处理器的发展,一是朝着具有复杂数据运算、高速通信、信息处理等功能的高性能计算机系统方向发展;二是产生了一种将中央处理器,存储器,I/O接口电路以及连接他们的总线都集成一块芯片上的计算机。单片机在设计上主要突出了控制功能,调整了接口配置,在单一芯片上制成了结构完整的计算机。
目前最常用的3中可编程处理器:微控制器(MCU)、微处理器(MPU)、数字信号处理器(DSP);
单片机可应用的领域:工业控制(工业机器人)、智能化仪器仪表(温度湿度的测量)、日常生活钟的电器产品(MP3)、计算机网络与通信(以太网)、计算机外部设备(微型打印机);
单片机的结构特点:时钟频率比通用MPU和DSP低;功耗低;字长一般为8-32位;内存有限,通常小于1mb;具有几个到上百个输入/输出引脚;
单片机应用特点:小巧灵活、成本低、易于产品化(组装成智能式控制设备以及各种智能仪器仪表)、面向控制、抗干扰能力强、可以方便地实现多机和分布式控制,提高效率和可靠性;
MSP430是16位超低功耗、具有精简指令集的混合信号处理器(因其针对实际应用需求,将多个不同功能的模拟电路、数字电路模块和微处理器集成在一个芯片上,以提供“单片”解决方案(丰富的片内外设));
MSP430的特点:1.最显著:超低功耗(电源电压为1.8-3.6V,最高工作频率25MHz)2.强大的处理能力(16位,采用精简指令集结构,一个时钟周期可执行一条指令)3.高性能模拟技术以及丰富的片内外围模块4.系统工作稳定5.方便高效的开发环境
MSP430发展和应用:推出X1XX--X6XX系列,其中X3xx、X4xx、X6xx具有LCD驱动模块,对提高系统的集成度较有利
MSP430微控制器架构:CPU具有16位数据总线、7种寻址模式,采用精简指令集(代码更短、更紧凑、执行速度更快),微控制器采用冯诺依曼架构(程序指令存储器和数据存储器共用一个存储空间,地址线和数据线共用一组;哈佛结构是程序存储器和数据存储器分开的,地址和数据是两组独立的总线),CPU、多种外设和时钟系统通过存储器地址总线和存储器数据总线相连。
MSP430主要功能部件:CPU、存储器、外围模块;存储器分为程序存储器(以字方式访问)和数据存储器(以字(16位)或字节(8位)方式访问),字通常编址在偶数单元,这个地址存放字的低字节,后面紧邻的奇数地址包含字的高字节,8位运算数据访问可以从偶数或奇数地址开始,16运算数据访问只能从偶数地址开始。
MSP430所有内存包括RAM、ROM、Flash、信息内存、特殊功能寄存器、外设寄存器;
Flash:字母F标识,可擦除以及重新变成代码空间;ROM字母C,价格低廉、适用于大容量;FRam字母FR,具备动态区功能统一存储器,访问速度快,实现零功率状态保持;存储器的每个储存单元由一个字节构成。
中断向量表位于存储空间的最后一段区域,从0FFE0h到)0FFFEh,中断向量优先级随字地址的增加而递增。
所有的代码、表、编码常量都存储在FLash/ROM内,其起始地址取决于Flash/ROM的容量。软件能从Flash/ROM中存储并读出字或字节表。MSP430的Flash中含有信息内存地址空间(只存数据),还含有引导内存地址空间,引导程序在此,是一个能对Flash编程的外部接口之一(还有一个JTAG),此区域不会被其他应用程序访问,也不会被意外覆盖。
RAM结尾地址取决于设备中的RAM的容量,RAM可以用来存储代码或数据;
外设模块包含了所有映射到地址空间的片上外设寄存器,这些模块可以通过字或字节指令访问。
一些外设功能被映射到带有特殊功能的内存中,特殊功能寄存器有:中断使能寄存器,中断标志寄存器,使能标志寄存器;特殊功能寄存器仅能通过字节指令访问。
MSP430 CPU适用于高性能、低功耗应用,RISC(精简指令集)类型CPU体系结构基于正交的短指令集(27条指令),采用3级指令流水线进行译码,包含ALU、4个专用寄存器,12个通用寄存器。将常用的值和变量存到通用寄存器中,节省CPU周期。
ALU(算术逻辑单元)处理加法、减法、比较和逻辑运算(AND、OR、XOR)。ALU运算会影响状态寄存器中的溢出、零标志、负标志和进位标志位。
4个专用寄存器(R0--R3)12个通用寄存器(R4--R15):R0:程序计数器(PC):16位的程序计数器存放着下一条将要从程序存储器中取出的指令的地址,程序计数器的实现依赖于指令使用的字节数(2、4、6总是偶数),由于指令是16位的,故PC一定是在偶数地址对齐。
R1可用于保存堆栈指针(SP/R1)用户可以使用堆栈存储数据(PUSH指令来存数据、POP指令来取数据)。用户和编译器均可使用堆栈为子函数传递参数(PUSH、POP用于调用函数,被调用的函数使用SP来计算偏移);系统进入子函数之前,把PC值存储到堆栈中,从子函数返回时,再取出堆栈中的值,重新赋值给PC。系统堆栈在系统进入中断服务程序时,首先保护程序计数器(PC),然后将中断矢量地址送入程序计数器,再执行中断服务程序,中断服务程序执行完毕,遇到返回指令时,将堆栈的内容送到程序计数器中,程序又回到原来的地方继续执行,在函数调用之前保存的寄存器变量、局部变量和参数都不会变。
R2状态寄存器(SR):用来存储状态位和控制位,CPU根据运算结果,自动改变系统标志,SR的预留位用来支持常量发生器。“8位 V”是溢出位,v=1 表示算术结果溢出有符号变量的范围;“7位SCG1”系统时钟生成器0,SCG1=1 表示DCO生成器被关闭;“6位SCG0”系统时钟生成器1,SCG0=1 代表FLL+循环控制被关闭;“5位OSOFF 振荡器关闭 OSOFF=1关闭LFXT1”;“4位CPUOFF CPU关闭 CPUOFF=1禁用CPU内核”;“3位GIE一般中断使能 GIE=1使能可屏蔽中断”“2--0位”是状态位,N——求反标识“N=1字节或字运算结果为负”Z——零标识“Z=1字节或字运算结果为0” C——进位标识 “C=1字节或字运算结果产生进位”。
R2/R3(常量发生寄存器(CG1/CG2))根据源寄存器寻址模式(AS)的值,常量发生寄存器可以不需要通过代码字或代码内存访问即可生成6个常用的常量。可以实现仿真指令。
R4-R15通用寄存器可以用来保存数据值、地址指针或者索引值,可以通过字节或字指令访问它们。
寄存器寻址模式可以直接操作通用寄存器或特殊功能及寄存器。
RISC和CISC体系结构主要特征:RISC结构简单,易于设计,程序执行效率高;CISC:功能丰富,指令执行更加灵活;
系统复位:3种复位信号:掉电复位(BOR)、上电复位(POR)、上电清零(PUC);POR为高电平时,状态寄存器复位,程序计数器指向0FFFEh,外设寄存器全部恢复到上电状态;PUC将PC和SR复位,仅复位某些外设寄存器。
3种时钟:辅助时钟(ACLK一般用于低速外设模块)、主系统时钟(MCLK主要用于CPU和系统)、子系统时钟(SMCLK高速外设模块);
XT1振荡器(在PUC后开始工作):工作在低频(LF)模式(XTS=0)时,提供支持32768Hz的超低功耗模式,晶振只需经过XIN和XOUT两个引脚连接;工作在高频(HF)模式时(XTS=1),支持高频晶振或谐振器。XT1在LF时通过XT1DRIVE提高驱动,在HF时,通过XT1DRIVE适应不同的晶振或振荡器。在XT1BYPASS下输入到XT1的外部时钟信号(4MHz-32MHz),XT1自动关闭电源;
XT2振荡器(高速振荡器):产生XT2CLK时钟信号,当XT2CLK信号没有用作ACLK、MCLK、SMCLK,可用控制位XT2OFF关闭XT2。系统频率和系统的工作电压密切相关;
片内数字控制振荡器(DCO):是数字可控的RC振荡器,其频率随供电电压、环境温度变化而具有一定的不稳定性;可以用控制位SCG0关闭;
MPS430的中断源有内部中断和外部中断,分为复位中断、不可屏蔽中断(NMI不能被状态寄存器中的通用中断使能(GIE)位禁用)、可屏蔽中断;所有可屏蔽中断均能被CPU的中断控制识别,所以GIE必须置位;系统复位中断(振荡器/闪存和硬复位)是不可能屏蔽中断,具有最高的中断向量和处理优先级;
不可屏蔽中断(NMI)有两个等级:系统NMI(SNMI)和用户(UNMI)。
可屏蔽中断:每个都在外设寄存器或独立模块中有独立的使能或禁用标志,可屏蔽中断都能被状态寄存器(SR)中的通用中断使能位(GIE)禁用。当发生可屏蔽中断事件时,必须是GIE和中断事件有关的模块都中断允许时,该中断才能有可能被响应;
中断向量:最多可有64个中断源,指向响应中断服务程序的起始位置
中断是应用程序的外部事件,外设中断使能位和gie均置位中断请求发出后就会调用ISR,中断延迟时间为中断事件开始到中断服务程序执行之间的时间间隔,CPU识别并调用ISR6个时钟周期:中断发生时,程序计数器(PC)和状态寄存器(SR)被压入到栈中,SCG0异常,将SR清零,设置GIE禁止中断,此时其他ISR将不会被调用,中断服务程序结尾的reti指令会将程序流重定位,且自动弹出栈中SR和PC值。ISR处理时间必须小于中断请求的时间间隔,否则栈会溢出。
端口能直接用于输入/输出,输入/输出操作都是通过传送指令完成的,端口P1——P11和PJ都可以按位寻址,每一位可独立用于输入/输出;相邻两个端口组合成端口对(分别命名为:PA、PB、PC、PD等),通过字节形式访问单独端口,通过字形式访问端口对;MSP430只有数据端口,可用端口的某一位或几位来传送状态信息,来确定外设状态。
端口特点:1.类型丰富:有P1——P11、PJ、S、COM端口;2.功能丰富:P1、P2口有中断能力;3.寄存器丰富:P1和P2具有9个(或7个)寄存器,其他有6个(或4个)寄存器,通过设置寄存器,(1每个I/O口可以独立编程,2输入或输出可任意组合,3P1、P2所有I/O口都具有边沿可选的输入中断功能,4能使用所有指令对寄存器操作,5可设置I/O口的上拉或下拉功能,6可配置I/O驱动能力);端口的数据输出特性:MSP430输入端口的最大漏电流为50na,输入端口的漏电流对系统的耗电影响很大;每个端口的输出晶体管都能够限制输出电流(最大约为25mA);
端口P1和P2具有输入/输出、中断和外部模块功能;可以通过9个(或7个)控制寄存器的设置来实现:1.PxDIR输入/输出方向寄存器:相互独立的8为分别定义了8个引脚的输入/输出方向,8位在PUC(上电清零)后都被复位。使用输入/输出功能时,应该先定义端口的方向,作为输入时,只能读,作为输出时,可读可写,对某位置位时,表示对应引脚设置为输出方向,否则为输入方向,“|=”按位或运算;2.PxIN输入寄存器:是只读寄存器,用户不能对其写入,对这种只读寄存器写入,会在写操作有效期间增加电流消耗;3.PxOUT输出寄存器:可读可写,读寄存器时,读的值为上一次写入的值,若某引脚设置为输入方向,则对该寄存器写操作不会改变引脚之前的状态;4.PxREN上拉或下拉电阻使能寄存器(提高信号的驱动能力):该寄存器的每一位可以使能或禁用I/O引脚的上拉/下拉电阻,通过设置PxOUT相应位来选择引脚上拉或下拉功能:"0为禁止,1为使能”;5.PxSEL功能选择寄存器:P1和P2端口还具有其他片内外设功能,为减少引脚,将这些功能与芯片外的联系通过复用P1和P2引脚的方式来实现,P1SEL和P2SEL用来选择引脚的I/O端口功能与外围模块功能,”0:选择引脚为I/O端口,1:选择引脚为外围模块功能“;6.PxDS输出驱动强度寄存器:每位设置引脚的输出强度为高驱动强度(“1”)或低驱动强度(“0”),默认值为低驱动强度;7.PxIE中断使能寄存器:该寄存器的8位与该端口的8个引脚一一对应,某一位置位表示允许对应的引脚在电平变化(上升沿或下降沿)时产生中断;8.PxIES中断触发沿选择寄存器:如果允许Px口某个引脚中断,还需定义该引脚的中断触发方式,该寄存器8位对应Px口的8个引脚(”0:上升沿使相应标志置位,1:下降沿使相应标志置位“);9.PxIFG(”0:没有中断请求;1:有中断请求“)中断标志寄存器:用来表示对应引脚是否产生了有PxIES设定的电平跳变,如果GIE置位,引脚对应的中断使能寄存器PxIE位置位,则会向CPU请求中断处理;中断标志共用一个中断向量,属于多源中断,须用软件来判定是对哪一个事件服务,并将相应的标志复位,外部中断事件的时间必须保持不低于1.5倍的MCLK的时间,以保证中断请求被接受,且使相应的中断标志位置位。
端口COM和S实现与液晶片的直接接口,COM端口为液晶片的公共端,S端口为液晶片的段码端;
定时功能模块是MSP430应用系统中经常用到的重要部分,可用来实现定时控制、延迟、频率测量、脉宽测量和信号产生、信号检测等等。定时信号可以用软件和硬件两种方法来获得。
看门狗定时器(WDT):特性:8种软件可选的定时时间,看门狗工作模式,定时器工作模式,带密码保护的WDT控制寄存器,适中源可选择,为降低功耗,可停止,时钟失效保护;看门狗寄存器:1.计数单元(WDTCNT)是不能通过软件直接访问的32位增计数器,是由所选定的时钟电路产生的固定周期脉冲信号对计数器进行加法计数。2.控制寄存器(WDTCTL)是一个16位寄存器,高8位用于存放访问密码,低8位6位(WDT时钟源有SMCLK和ACLK,时钟源的选择由控制位WDTSSEL确定;WDTHOLD(1是禁用)看门狗定时器停止位;WDTTMSEL:工作模式选择(0看门狗模式1间隔定时器模式))用于WDT控制,其余两位用于NMI(不可屏蔽中断)的控制;
看门狗的工作模式:关闭状态、定时模式、看门狗模式;处于定时模式下的 WDT 中断属于可屏蔽中断。其中断优先级介于定时器 A 与定时器 B 之间;
看门狗模式下: 用户软件一都需要进行如下操作:     进行WDT的初始化:设置合适的时间。           周期性地对WDTCNT清零:防止WDT溢出。
WDT为什么能抗干扰:将WDT定时时间稍大于程序执行一遍所用的时间,而且程序执行过程中都有对看门狗定时器清零指令,不会产生溢出,使计数器清零(喂狗)重新计数,如果干扰使程序跑飞,不会在WDT定时时间到之前执行WDT清零指令,WDT溢出,从而产生系统复位,CPU需要重新运行用户程序,这样程序就可以回到正常状态;
定时器 A (MSP430Flash型单片机都含有定时器A)由一个16位定时器和多路捕获/比较通道(提高I/O 端口处理事务的能力和速度)组成,4种计数模式:00停止模式、01增计数模式、10连续计数模式、11增/减计数模式;停止模式:用于定时器暂停,不发生复位,寄存器所有现行内容在该模式结束后仍可用; 增计数模式:(增到TAxCCR0降到0)捕获/比较寄存器TAxCCR0为Timer_A增计数模式的周期寄存器,适用于周期小于65536的连续计数情况;连续计数模式:定时器从当前值计数到0FFFFH后,又从0开始重新计数,TAxCCR0工作方式和其他捕获/比较寄存器相同,不再作为周期寄存器;需要对称波形通常需要用到增/减计数模式,该模式计数方向锁定,先增计数到TAxCCR0然后反向减计数到0;
增计数模式和连续计数模式区别:在连续计数模式中,很多时候会用到CCR0、CCR1等信号,闹钟的例子最形象了,在周期循环定时中,CCR0、CCR1对应不同时刻的事件
模数转换器(ADC)从信号系统中采集信号电压,经过信号处理后,将其转换为等效的数字量。A/D转换,通常按取样、保持、量化、编码四个步骤进行(基本过程);
取样:是对模拟信号周期性抽取样值;保持:在下一个取样脉冲到来前,暂时保持取得的样值脉冲幅度;量化:将样值电压变换为量化单位电压整数倍的过程;编码:量化后的离散量用相应的二进制码表示;数字量计算方法:ADC内核一般要使用两个参考电压VR+和VR-,一般这两个电压可以是用户接入或者是使用内部参考电压。VR+是定义的转换最大值,VR-则是转换的最小值;公式:N = 4095*(Vin-Vr-)/(Vr+ - Vr-);


程序:
//ADC中断程序:
#pragma vector=ADC_VECTOR
_interrupt void ADC12ISR(void)
{
uchar j;
while(ADC12CTL1&0x01)==1);//如果ADC忙,则等待,否则读取ADC转换数值
Flag=1;
TEMP=ADC12MEM0;//读取ADC转换值
Data_do(TEMP);//处理ADC值,用于显示,数字量
Voltage_do(TEMP);//处理ADC值,用于显示,模拟电压值
for(j=0;j<15;j++)
{
LCD_DisplayADC();//显示ADC数据,ADC数字量;
LCD_DisplayVoltage();//显示ADC的电压值;
}
}

使用特权

评论回复

相关帖子

沙发
wakayi| | 2020-9-3 14:46 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
板凳
wowu| | 2020-9-3 14:46 | 只看该作者
看的我头晕

使用特权

评论回复
地板
xiaoqizi| | 2020-9-3 14:47 | 只看该作者
这排版 不好看

使用特权

评论回复
5
木木guainv| | 2020-9-3 14:48 | 只看该作者
基础点很全面

使用特权

评论回复
6
磨砂| | 2020-9-3 14:48 | 只看该作者
楼主码字辛苦了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2377

主题

29385

帖子

24

粉丝