文档库 最新最全的文档下载
当前位置:文档库 › Msp430通信协议

Msp430通信协议

在单片机系统中,多处理器是指多个相同类型或者不同类型的单片机协作处理同一个系统的不同工作。它们之间必须具备一定的数据交换和协作处理能力,共同完成一个系统化的工作。不同处理器之间可以采用数据交换方式、并行总线方式、串行总线方式进行通信。其中,数据交换方式又可以称为共享内存交换方式;串行总线方式又可以分为单总线方式、集成电路之间的通信方式和UART方式。

1 MSP430多处理器

MSP430是一款超低功耗的混合信号控制器,具有16位RISC结构,有着丰富的片内外设,主要包括有看门狗、定时器、比较器、硬件乘法器、液晶驱动器、ADC、I/0端口、串口(USART)等等,还集成有64 KB的Flas’E-ROM和2KB的RAM。其功能强大,应用场合广泛。但是在大型复杂的场合或者实时性要求较高的场合,使用一个处理器处理所有的业务,总是显得有些不足。引入多个MsP430处理器协作工作的模式,可以提高系统的实时性、可靠性和适用性。

在多数场合,MSP430无须为每个处理器扩展FlashROM,也无须扩展RAM,采用共享内存的数据交换方式组成多处理器系统并非最佳选择。此外,MSP430包括有两个串口(USART),在MSP430的应用中,可以把两组串行端口中的一个供外部通信使用,另一个串行端口供内部通信使用。采用串行总线中的串行通信方式组成多处理器系统是比较理想的选择。

2 技术要点

2.1 MSP430多处理器组成

MSP430具有两个串行端口(USART),可以使用其中的一个作为多处理器之间的通信端口。由于串行通信的架构限制,MSP430采用UART串行通信模式组成的多处理器系统,必须建立一个主处理器和若干从处理器。主处理器的TXD端与所有从处理器的RXD端相连,所有从处理器的TXD端与主处理器的RXD端相连。MSP43O多处理器拓扑结构如图1所示。

在这个结构中,主处理器通过TXD端发送出指令报文,传输到从处理器的RXD接收端;从处理器对指令报文进行解包并且对这个指令报文进行响应。从处理器的响应报文通过TXD发送到主处理器的RXD接收端,主处理器获取响应报文确认指令是否被正确执行。从这个结构上看,主处理器可以与任何从处理器进行通信,任何从处理器也可以和主处理器进行通信,但是从处理器与从处理器之间却不可以进行直接的通信。

2.2 多处理器系统串行通信协议

在多处理器系统的串行通信方式中,可以有若干种通信协议进行选择,如ModBus、Brooks、工业总线协议等等。在此,可以选择业界通用的MocBus通信协议作为处理器与处理器之间的通信协议。

2.3 ModBus通信协议

Modbus协议支持传统的RS232、RS422、RS485和以太网设备。ModBus协议包括ASCII、RTU、TCP等报文格式,并没有规定物理层。此协议定义了控制器能够认识和使用的消息结构,而不管它们是经过何种网络进行通信的。ModBtls的ASCII、RTU协议规定了消息和数据的结构、命令和就答的方式,数据通信采用Master/Slave方式。Master端发出数据请求消息,Slave端接收到正确消息后就可以发送数据到Mastez端,以响应请求;Master端也可以直接发消息修改Slave端的数据,实现双向读写。

2.4 ModBus在多处理器系统中的报文格式

由于是一个主服务器对应多个从处理器的系统,处理器与处理器之间的报文传输必须明确标注目标地址和源地址,以免不相干的处理器之间进行误导操作。除此以外,为了提高主处理器的处理能力,同时避免不同处理器存在报文相应速度差,以及不同指令任务之间存在处理量差异的问题,必须采用异步通信模式进行通信。要满足异步通信模式,必须在报文中对每次的通信操作加注请求报文的16位标示(可以称之为句柄),同时对这些句柄进行记录。

2.4.1 数据读取请求报文格式

源地址:主处理器地址。

目标地址:指令目的地地址(从处理器)。

句柄:指令请求标示号。

功能代码:操作指令代码。

起始地址:读取从处理器数据寄存器的起始地址。

字节数:操作所涉及的寄存器字。

校验码:CRC校验码或者LRC校验码。

2.4.2 数据读取应答报文格式

源地址:从处理器地址。

目标地址:主处理器地址。

句柄:指令请求标示号。

功能代码:操作指令代码。

数据字节数:操作所涉及的寄存器字节数。

数据1至数据n:数据。

校验码:CRC校验码或者LRC校验码。

其中,应答报文中的目标地址等价于请求报文中的源地址,应答报文中的源地址等价于请求报文中的目标地址。

2.5 校验码

在ModBus中,通用的校验方式是ASCII协议方式采用LRC校验方式,RTU协议方式采用CRC校验方式。

2.5.1 LRC校验

LRC校验比较简单。它在ASCII协议中使用,检测了消息域中除开始的冒号及结束的回车换行号外的内容。它仅仅是把每一个需要传输的数据按字节叠加后取反加1即可。下面是它的C代码:

BYTE GetCheckCode(const char*pSendBuf,Int nEnd)

{ //获得校验码

BYTE byLrc=O。

char pBuf[4];

int nData=0

for(i=1;i{//每两个需要发送的ASCII码转化为一个十六进制数

pBuf[O]=pSendBuf[i];

pBu=pSendBuf;

pBuf[2]=、O’;

sscanf(pBuf,”%x”,& nData);

bvLrc+=nData;

byhc=~byLrc;

byLrc++;

return byLrc;

}

2.5.2 CRC校验

CRC是先调入一值是全“1”的16位寄存器,然后调用一过程将消息中连续的8位字节和当前寄存器中的值进行处理。仅每个字符中的8位数据对CRC有效,起始位和停止位以及奇偶校验位均无效。

CRC产生过程中,每个8位字符都单独和寄存器内容相或(OR),结果向最低有效位方向移动,最高有效位以0填充。LSB被提取出来检测。如果LSB为1,寄存器单独和预置的值“或”一下;如果LSB为O,则不进行。整个过程要重复8次。在最后一位(第8位)完成后,下一个8位字节又单独和寄存器的当前值相“或”。最终寄存器中的值,是消息中所有字节都执行之后的CRC值。

CRC添加到消息中时,低字节先加入,然后高字节加入。下面是它的C代码:

WORD GetCheckCode(const char*pSendBuf,int nEnd)

{ //获得校验码

WORD wCrc=WORD(0xFFFF);

for(int i=O;iwCrc^=WoRD(BYTE(pSendBuf[i]);

for(Intj=O;j<8;J++){

if(wCrc&1){

wCrc>>=l;

wCrc^一OxA00l:

}

else{

wCrc>>=1;

retIlrIl wCrc

3 报文示范

ModBus包含ASCII和RTU两种报文格式。RTU报文较短,但是没有边界定义;ASCII报文较长,但是边界明了。在多处理器通信之中,由于通信距离很短,干扰较小,因此可以选择较高的通信速率。通信速率提高了,报文长度较长对通信的影响不大,因此可以选择ASCII 报文格式进行通信。

ModBus的ASCII读取请求报文格式如下:

ModBus 的ASCII读取请求报文格式如下:

假设主机地址01,要对从机地址02进行读取247和248地址的两个寄存器值的通信,并且本次通信为第1次通信,设定流水号为000l。

结语

多处理器协作工作模式和通信协议,已经成功应于CNG加气机,使系统信息交换更加迅速、可靠,整个系统的性能得到了提高。

单片机MSP430F149-DS1302读写及串口收发程序

/******************************************************** * 文件名称: * IIC.c * 文件说明: * 使用口线模拟IIC * 程序使用波特率为2400,程序运行时需要在pc机上使用一个串口* 接收发送程序,任意发送字符,接收的字符为十六进制时间数据* MSP-FET430P149 Demo - Basic Clock, MCLK Sourced from HF XTAL XT2 * L.TCH * Feb 2007 * Built with IAR Embedded Workbench Version: 3.10A *******************************************************/ /*********************************************************/ #include /********************************************************* * 定义 *********************************************************/ #define RST BIT7 #define SDA BIT6 #define SCLK BIT5 char pbuf[7]; char clok[7]={0x16,0x15,0x14,0x13,0x12,0x04,0x07}; char cbuf; char bbuf; char *pda; char *pck; char *prg; /************************************************ 说明 ************************************************/ void Port_Init(void); void Init_CLK(void); void Init_UART0(void); void RST_Enable(void); void RST_Disable(void); void SCLK_HI(void); void SCLK_LO(void); void WriteByte(char nVal); char ReadByte(void); void WriteTo1302(char nAddr, char nVal); char ReadFrom1302(char nAddr);

MSP430单片机题目答案整理(大部分)

第一章 1. MCU(微控制器单元)与MPU(微处理器单元)的区别 MCU集成了片上外围器件,而MPU不带外围器件,是高度集成的通用结构的处理器。是去除了集成外设的MCU。 2. MSC430单片机的不同系列的差别 MSP430系列单片机具有超低功耗、处理能力强大、片内外设丰富、系统工作稳定、开发环境便捷等显着优势,和其他类型单片机相比具有更好的使用效果、更广泛的应用前景。 3. MSC430单片机主要特点 1.超低功耗 2. 强大的处理能力 3. 高性能模拟技术及丰富的片上外围模块 4. 系统工作稳定 5. 方便高效的开发环境 4. MSC430单片机选型依据 选择最容易实现设计目标且性能价格比高的机型。 在研制任务重,时间紧的情况下,首先选择熟悉的机型。 欲选的机型在市场上要有稳定充足的货源。 第二章 1. 从计算机存储器体系结构上看,MSP430单片机属于什么结构 冯·诺依曼结构,是一种程序存储器和数据存储器合并在一起的存储器体系结构。 2. RISC与CISC体系结构的主要特征是什么MSP430单片机属于哪种结构 CISC----是复杂指令系统计算机Complex Instruction Set Computer的缩写,MCS-51单片机属于CISC。具有8位数据总线、7种寻址模式,111条指令。 RISC----是精简指令系统计算机Reduced Instruction Set Computer的缩写,MSP430单片机属于RISC。具有16位数据总线、7种寻址模式,27条指令。 3. 对MSP430单片机的内存访问时,可以有哪几种方式读写字数据有什么具体要求 字,字节,常字。字访问地址必须是偶数地址单元。 4. MSP430单片机的中断向量表位于什么位置其中存放的是什么内容 中断向量表:存放中断向量的存储空间。430单片机中断向量表地址空间:32字节,映射到存储器空间的最高端区域 5. MSP430单片机的指令系统物理指令和仿真指令各有多少条。 27种物理指令-内核指令和24种仿真指令 6. MSP430单片机的指令系统有哪些寻址方式各举一例说明。 有7种寻址方式:寄存器寻址,变址寻址,符号寻址,绝对寻址, 间接寻址,间接增量寻址,立即数寻址 7. MSP430单片机的CPU中有多少个寄存器其中专用寄存器有哪几个 4个专用寄存器(R0、R1、R2、R3)和12个通用寄存器(R4~R15) R0:程序计数器(PC) R1:堆栈指针(SP)—总是指向当前栈顶 R2:状态寄存器(SR)只用到16位中的低9位 R2/R3:常数发生器(CG1/CG2) 8. 按要求写出指令或指令序列。 9. 写出给定指令或指令序列的执行结果。 10.汇编语言程序的分析与理解。

MSP430f5438初学者笔记

一、简介 1.1CPU: 16-bit RISC 除program-flow指令外所有指令都在寄存器和7种源操作数寻址方式及4种目的操作数合作下执行 16个寄存器,register-to-register指令执行时间是一个CPU时钟 R0 程序计数器寄存器20-bit R1 堆栈指针20-bit R2 状态寄存器16-bit R3 不变的产生器 R4~R15 通用寄存器 1.2指令集: 51指令3格式7中寻址方式附加指令 1.3操作模式 6个可软件设置的LOW-POWER模式一个中断事件可以唤醒5个模式中的任何一个,响应请求,并从中断程序中返回原模式 Mode ACTIVE DISABLED Active mode (AM) 所有时钟ACTIVE Low-power mode 0 (LPM0) ACLK SMCLK FLL CPU MCLK LPM1 ACLK SMCLK CPU FLL MCLK LPM2 DCO发生器ACLK CPU MCLK FLL DCOCLK LPM3 ACLK CPU MCLK FLL DCOCLK DC发生器LPM4 晶振关闭完整数据保留 LPM5 内部调节器关闭无数据保留通过RST和IO唤醒 1.4中断矢量 地址:FFFF~FF80H 1.5 SFR 处于最低地址空间可以进行字访问和字节访问 1.6存储 256K闪存空间64K程序存储器16KRAM 512BBSL程序装载器用于编程存储器串连接口 1.7外围 时钟:支持统一的时钟系统UCS包括: 32K手表晶振(XT1 低频模式) 内部低频振荡器VLO 内部平衡低频振荡器REFO 内部集成数字控制器DCO 高频晶振(XT1高频模式or XT2) FLL锁频环连同一个数字调节器使得DCO构成一个多倍可编程的手表晶振 时钟信号:ACLK 32K手表晶振、高频晶振、VLO、REFO、DCO MCLK CPU用,来源同ACLK

msp430f5529简单uart程序

/*****用串口助手发什么回复什么****/ #include "" // ACLK = REFO = 32768Hz, MCLK = SMCLK = default DCO/2 = 1048576Hz // ,5——USCI_A0 TXD/RXD;,5——USCI_A2 TXD/RXD;,5——USCI_A3 TXD/RXD; void main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop WDT P4SEL |=BIT4+BIT5 ; // ,7 = USCI_A1 TXD/RXD UCA1CTL1 |= UCSWRST; // **Put state machine in reset** UCA1CTL1 |= UCSSEL_2; // SMCLK UCA1BR0 = 9; // 1MHz 115200 (see User's Guide) UCA1BR1 = 0; // 1MHz 115200 UCA1MCTL |= UCBRS_1 + UCBRF_0; // Modulation UCBRSx=1, UCBRFx=0 UCA1CTL1 &= ~UCSWRST; // **Initialize USCI state machine** UCA1IE |= UCRXIE; // Enable USCI_A1 RX interrupt __bis_SR_register(LPM0_bits + GIE); // Enter LPM0, interrupts enabled } // Echo back RXed character, confirm TX buffer is ready first,发送数据之前确定发送缓存准备好 #pragma vector=USCI_A1_VECTOR __interrupt void USCI_A1_ISR(void) { switch(__even_in_range(UCA1IV,4)) { case 0:break; // Vector 0 - no interrupt case 2: // Vector 2 - RXIFG while (!(UCA1IFG&UCTXIFG)); // USCI_A1 TX buffer ready UCTXIFG(USCI Transmit Interrupt Flag) //等待数据发送完成完成UCTXIFG置1 跳出循环 UCA1TXBUF = UCA1RXBUF; // TX -> RXed character break; case 4:break; // Vector 4 - TXIFG default: break; } } // UCTXIFG=0x02,UCA1IFG&UCTXIFG,当UCA1IFG的UCTXIFG位为1时,说明UCA1TXBUF 为空, //跳出while循环循环;当UCTXIFG位为0时UCA1TXBUF不为空,停在循环。

IAR for msp430 学习笔记

IAR for MSP430软件安装使用详解 1、下载安装包,注册机 2、运行安装包,进入安装页面,一直Next,直到出现提示输入注册码的页面; 3、若是Win7系统,以管理员身份运行注册机,选择For MSP430 v5.50 然后Get ID

4、将License number粘贴至安装程序的License#一栏,;

5、将注册机中的License key 粘贴至 Next 6、选择安装全部功能;

7、选择安装路径; 8、等待软件自动安装完成,点击Finish 完成安装; 附录A 关于驱动的安装 下载的IAR for MSP430 软件自带的有针对各种操作系统的驱动程序,都存在安装文件中,只需要找到和自己使用操作系统对应的驱动进行安装就行了。 以本机为例,为Win7 64位操作系统,进入软件安装目录 选择图中阴影文件夹,打开看到驱动程序,双击运行即可自动安装。

附录B 从下面几个方面介绍EW430 的基本使用: 一、创建一个工程,并在工程目录下创建C 语言项目 二、设置项目属性 三、编写源程序 四、编译和连接程序 五、下载程序到目标MCU 中 六、运行程序 一、第一次使用EW430时按如下步骤创建工程。 1.在E盘创建工程文件夹(不要用中文); 2.启动IAR Embedded Workbench; 3.创建一个C语言项目; 1>点击菜单栏中Project/Create New Project,创建一个新的项目

2>在弹出的对话框中选择C语言环境,点击前面的+号,选择main,如图; 3>在出现的“另存为”对话框中找到之前在E盘建立的工程文件夹;在其目录下新建一个项目文件夹Day00;双击进入项目文件夹Day00,将新建的项目命名为Day00.ewp保存;如图 4>进入到IAR 提供的集成工作环境下,其中编辑界面下出现的程序main.c 是EW430 提供的C 语言程序模板;

如何学习并使用MSP430单片机(入门)

如何学习MSP430单片机 如何学习MSP430单片机 。 下面以MSP430系列单片机为例,解释一下学习单片机的过程。 (1)获取资料 购买有关书籍,并到杭州利尔达公司网站和TI网站获取资料,例如,在网上可以找到FET使用指导、MSP430 F1xx系列、F4xx系列的使用说明和具体单片机芯片的数据说明,可以找到仿真器FET的电路图、实验板电路图、芯片封装知识等大量的实际应用参考电路,当然有些资料是英文的,看懂英文资料是个挑战,学会4、6级英语就是为看资料的。英语难学,但是看资料容易,只要下决心,看完一本资料,就可以看懂所有的相关资料。 (2)购买仿真器FET和实验电路板 如果经济条件不错,可以直接购买。 (3)自制仿真器FET和实验电路板 自制仿真器FET,首先要到网上找到FET电路图,然后就可以使用画电路板软件画电路图和电路板图,这又是个挑战。FET电路非常简单,但要把它制作出来还是需要下一番工夫的,找一本有关书,然后练习画原理图,画完原理图后,就学习认识元件封装,再购买元件,这时就可以画电路板图了,一旦画好,将形成的PCB文件交给电路板制作公司,10天后,就可以得到电路板,焊上元件和电缆,等实验电路板做好后,就可以与实验电路板一起调试了。 自制实验电路板,需要单片机芯片内部工作原理的知识、封装知识,清楚的知道每一个引脚的功能,还需要数码管、按钮、排电阻、三端稳压器、二极管、散热器、电解电容、普通电容、电阻、钮子开关等元件的知识,对于初学者,可以做一个只有3个数码管、8个按钮、8个发光二极管的简单实验板,这样的实验板,虽然简单,但足可以帮助初学者入门单片机。自制实验电路板与自制FET 一样,首先画电路图,然后买元件,再画电路板。由于MSP430系列芯片是扁平封装,焊接起来有一定难度,这好象是个挑战,但实际上很简单,方法如下:

MSP430G2553学习笔记(数据手册)

MSP430G2553学习笔记(数据手册)

MSP430G2553性能参数(DIP-20) 工作电压范围:1.8~3.6V。 5种低功耗模式。 16位的RISC结构,62.5ns指令周期。 超低功耗: 运行模式-230μA; 待机模式-0.5μA; 关闭模式-0.1μA; 可以在不到1μs的时间里超快速地从待机模式唤醒。 基本时钟模块配置: 具有四种校准频率并高达16MHz的内部频率; 内部超低功耗LF振荡器; 32.768KHz晶体; 外部数字时钟源。 两个16 位Timer_A,分别具有三个捕获/比较寄存器。 用于模拟信号比较功能或者斜率模数(A/D)转换的片载比较器。 带内部基准、采样与保持以及自动扫描功能的10位200-ksps 模数(A/D)转换器。 16KB闪存,512B的RAM。 16个I/O口。

注意:MSP430G2553无P3口!

MSP430G2553的时钟 基本时钟系统的寄存器 DCOCTL-DCO控制寄存器 DCOx DCO频率选择控制1 MODx DCO频率校正选择,通常令MODx=0

注意:在MSP430G2553上电复位后,默认RSEL=7,DCO=3,通过数据手册查得DCO频率大概在0.8~1.5MHz之间。 BCSCTL1-基本时钟控制寄存器1 XT2OFF 不用管,因为MSP430G2553内部没有XT2提供的HF时钟 XTS 不用管,默认复位后的0值即可 DIV Ax 设置ACLK的分频数 00 /1 01 /2 10 /4 11 /8 RSELx DCO频率选择控制2 BCSCTL2-基本时钟控制寄存器2

msp430串口1收发程序

#include char UART1_TX_BUF[60]; // 串口1 的发送缓冲区 char UART1_RX_BUF[60]; // 串口1 的接收缓冲区 int nTX1_len; char nRX1_len; char nRX1_Len_temp; //临时文件 char nTX1_Flag; int nSend_TX1; char UART1_RX_Temp[60]; inti; void Init_UART1(void) { U1CTL =0x00; //将寄存器的内容清零 U1CTL &=~SWRST; //SWRDT复位,uart允许 U1CTL += CHAR;//数据位为8bit U1TCTL |=SSEL0; //波特率发生器选择ACLK UBR0_1 = 0x03; UBR1_1 = 0x00; UMCTL_1 = 0x4A; //使用32khz晶振时,波特率为9600 ME2 |= UTXE1 + URXE1; //使能UART1的TXD和RXD IE2 |= URXIE1; //使能UART1的RX中断 IE2 |= UTXIE1; //使能UART1的TX中断 P3SEL |= BIT6; //设置P3.6为UART1的TXD P3SEL |= BIT7; //设置P3.7为UART1的RXD P3DIR |= BIT6; //P3.6为输出管脚 return; } voidInit_Port(void) { //将所有的管脚在初始化的时候设置为输入方式 P3DIR = 0; //将所有的管脚设置为一般I/O口 P3SEL = 0; return; } voidInit_CLK(void) { unsignedinti; BCSCTL1 = 0x00; //将寄存器的内容清零//XT2震荡器开启//LFTX1工作在低频模式//ACLK的分频因子为1 //xts=0

串口通信UART(msp430g2553)

#include "io430.h" #include "in430.h" #include "shumaguan.h" void UartPutchar(unsigned char c); unsigned char UartGetchar(); unsigned char temp=0; unsigned char number[2]={0}; void main( void ) { WDTCTL = WDTPW + WDTHOLD; // Stop WDT BCSCTL1 = CALBC1_1MHZ; // Set DCO DCOCTL = CALDCO_1MHZ; P1DIR|=BIT6; P1OUT&=~BIT6; P1SEL = BIT1 + BIT2; // P1.1为RXD, P1.2为TXD P1SEL2 = BIT1 + BIT2; // P1.1为RXD, P1.2为TXD UCA0CTL1 |= UCSSEL_2; // 选择时钟BRCLK UCA0BR0 = 106; // 1MHz 9600 UCA0BR1 = 0; // 1MHz 9600 UCA0MCTL = UCBRS2 + UCBRS0; // 波特率=BRCLK/(UBR+(M7+...0)/8) UCA0CTL1 &= ~UCSWRST; // 初始化顺序:SWRST=1设置串口,然后设置SWRST=0,最后设置相应中断 IE2 |= UCA0RXIE; // 使能接收中断 while(1) { //UartPutchar(9); display_int(temp,0); delay(); } } /**********************************UART接收中断********************************/ #pragma vector=USCIAB0RX_VECTOR __interrupt void USCI0RX_ISR(void) { //while (!(IFG2&UCA0TXIFG)); // 等待发送完成

单片机学习日志

msp430学习笔记 默认分类2009-10-06 16:18:36 阅读5 评论0 字号:大中小 这只是我在学习TI公司生产的16位超的功耗单片机MSP430的随笔,希望能对其他朋友有所借鉴,不对 之处还请多指教。 下面,开始430之旅。 讲解430的书现在也有很多了,不过大多数都是详细说明底层硬件结构的,看了不免有些空洞和枯燥,我认为了解一个MCU的操作首先要对其基础特性有所了解,然后再仔细研究各模块的功能。 1.首先你要知道msp430的存储器结构。典型微处理器的结构有两种:冯。诺依曼结构——程序存储器和数据存储器统一编码;哈佛结构——程序存储器和数据存储器;msp430系列单片机属于前者,而常用的 mcs51系列属于后者。 0-0xf特殊功能寄存器;0x10-0x1ff外围模块寄存器;0x200-?根据不同型号地址从低向高扩展;0x1000-0x107f seg_b0x1080_0x10ff seg_a 供flash信息存储 剩下的从0xffff开始向下扩展,根据不同容量,例如149为60KB,0xffff-0x1100 2.复位信号是MCU工作的起点,430的复位型号有两种:上电复位信号POR和上电清楚信号PUC。POR 信号只在上电和RST/NMI复位管脚被设置为复位功能,且低电平时系统复位。而PUC信号是POR信号产生,以及其他如看门狗定时溢出、安全键值出现错误是产生。但是,无论那种信号触发的复位,都会使msp430在地址0xffff处读取复位中断向量,然后程序从中断向量所指的地址开始执行。复位后的状态不写 了,详见参考书,嘿嘿。 3.系统时钟是一个程序运行的指挥官,时序和中断也是整个程序的核心和中轴线。430最多有三个振荡器,DCO内部振荡器;LFXT1外接低频振荡器,常见的32768HZ,不用外接负载电容;也可接高频450KHZ -8M,需接负载电容;XT2接高频450KHZ-8M,加外接电容。 430有三种时钟信号:MCLK系统主时钟,可分频1 2 4 8,供cpu使用,其他外围模块在有选择情况下也可使用;SMCLK系统子时钟,供外围模块使用,可选则不同振荡器产生的时钟信号;ACLK辅助时钟,只 能由LFXT1产生,供外围模块。 4.中断是430处理器的一大特色,因为几乎每个外围模块都能产生,430可以在没有任务时进入低功耗状 态,有事件时中断唤醒cpu,处理完毕再次进入低功耗状态。 整个中断的响应过程是这样的,当有中断请求时,如果cpu处于活动状态,先完成当前命令;如果处于低功耗,先退出,将下一条指令的pc值压入堆栈;如果有多个中断请求,先响应优先级高的;执行完后,等待中断请求标志位复位,要注意,单中断源的中断请求标志位自动复位,而多中断的标志位需要软件复位; 然后系统总中断允许位SR.GIE复位,相应的中断向量值装入pc,程序从这个地址继续执行。 这里要注意,中断允许位SR.GIE和中断嵌套问题。如果当你执行中断程序过程中,希望可以响应更高级

S.D.Lu的MSP430入门学习笔记(4):时钟选择(2)VLO、LFXT1和XT2

S.D.Lu的MSP430入门学习笔记(4): 时钟选择(2)VLO、LFXT1和XT2 MSP430最多可提供4种时钟源:DCO、VLO、LFXT1和XT2,有些器件不包含XT2或LFXT1。 VLO是一个内部超低功耗、低频率振荡器,上图中的时钟源1,其频率为12KHz。其使用方法请参考TI官方例程“msp430g2xx2_1_vlo.c”,在此不作赘述。 LFXT1是外部时钟源,它有LF和HF两种模式,分别支持外部低频和高频时钟。 XT2是外部高频时钟源,支持0.4~16MHz高频时钟。 (注:G2xx2系列没有XT2,G2xx2系列LFXT1不支持HF模式。) MSP430的主时钟、子时钟和辅助时钟,可以分别通过相应的寄存器控制位选择4种时钟源中的一种作为其来源。之后还可以通过分频器分频,得到想要的时钟频率。 主时钟是CPU运行的时钟源,子时钟和辅助时钟是各个片内外设的时钟源。在MSP430系统中,有时为了降低功耗会关闭CPU和一些外设,同时要求一些外设继续工作。

和时钟模块相关的寄存器只有6个,时钟配置的过程就是设置这些寄存器。具体各寄存器的各个位的功能请查看《MSP430x2xx系列用户指南》(中文版)第五章。 时钟的切换 一次PUC之后,基本时钟模块将DCOCLK用于MCLK。如果需要将MCLK时钟源改为LFXT1或XT2。 把MCLK的源从DCO时钟转换成晶振时钟(LFXT1CLK 或XT2CLK)的顺序是: 1. 打开晶体振荡器并选择合适的模式 2. 清零OFIFG标志 3. 等待至少50uS 4. 测试OFIFG,并重复2至4的步骤,直到OFIFG保持被清零。 作者:S.D.Lu 深圳 2014-3-25

MSP430串口通信讲解

串行通信接口是处理器与外界进行数据传输最常用的方式之一。顾名思义,串行通信是指使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。与并行通信相比,串行通信速度较慢,但占用更少的I/O 资源,只需要少数几条线就可以在系统间交换信息,特别适用于计算机与计算机、计算机与外设之间的远距离通信。 串行通信可以分为同步通信和异步通信两种类型。如果带有同步时钟,则称为同步串行 通信,如常用的 SPI 和 I2C 接口就属于同步串行通信接口。如果没有同步时钟,依靠严格的时间间隔来传输每一比特,则称为异步串行通信。MSP430 系列单片机有两种串行通信接口,较早的 USART 模块和较新的 USCI 模块。 同步通信方式,是把许多字符组成一个信息组,这样,字符可以一个接一个地传输。但是,在每组信息(通常称为信息帧)的开始要加上同步字符,在没有信息要传输时,要填上空字符,因为同步传输不允许有间隙。同步方式下,发送方除了发送数据,还要传输同步时钟信号,信息传输的双方用同一个时钟信号确定传输过程中每1位的位置。 在异步通信方式中,两个数据字符之间的传输间隔是任意的,所以,每个数据字符的前后都要用一些数位来作为分隔位。

MSP430G2553单片机USCI模块原理图 串口通信所需配置: 1、时钟选择——以SMCLK时钟频率为1MHz为例。 ①选择SMCLK为串口通信频率。(P95页) ②设置SMCLK时钟频率为1MHz。 需要设置的寄存器:UCA0CTL1;(P95页)。

2、IO口定义为第二功能,即串口发送接收端口。 需要设置的寄存器:P1SEL|=BIT1+BIT2;,P1SEL2|=BIT1+BIT2;(中文P44页)。 2、数据传输格式

MSP430初学者教程(最详细)

如何学习 学习就是迎接挑战、解决困难的过程,没有挑战,就没有人生的乐趣。 下面以系列为例,解释一下学习的过程。 (1)获取资料 购买有关书籍,并到杭州利尔达公司网站和TI网站获取资料,例如,在网上可以找到FET 使用指导、F1xx系列、F4xx系列的使用说明和具体芯片的数据说明,可以找到FET的、实验板、知识等大量的实际应用参考电路,当然有些资料是英文的,看懂英文资料是个挑战,学会4、6级英语就是为看资料的。英语难学,但是看资料容易,只要下决心,看完一本资料,就可以看懂所有的相关资料。 (2)购买FET和实验电路板 如果经济条件不错,可以直接购买。 (3)自制FET和实验电路板 自制仿真器FET,首先要到网上找到FET,然后就可以使用画电路板软件画电路图和电路板图,这又是个挑战。FET电常简单,但要把它制作出来还是需要下一番工夫的,找一本有关书,然后练习画,画完后,就学习认识,再购买元件,这时就可以画电路板图了,一旦画好,将形成的PCB文件交给公司,10天后,就可以得到电路板,焊上元件和电缆,等实验电路板做好后,就可以与实验电路板一起调试了。 自制实验电路板,需要单片机芯片内部工作原理的知识、封装知识,清楚的知道每一个的功能,还需要、按钮、、三端、、散热器、、普通电容、电阻、等元件的知识,对于初学者,可以做一个只有3个、8个按钮、8个的简单实验板,这样的实验板,虽然简单,但足可以帮助初学者入门单片机。自制实验电路板与自制FET一样,首先画电路图,然后买元件,再画电路板。由于系列芯片是扁平封装,焊接起来有一定难度,这好象是个挑战,但实际上很简单,方法如下:首先在焊盘上涂上,在未干的情况下,将芯片放在焊盘上,注意芯片第一的位置,并使与焊盘对齐,将擦干净的(不能有任何)接触引脚,引脚只要一热,焊盘上的就自动将引脚焊住了,千万注意上不能有,焊接时最好配备一个。焊接电路板时,每一个元件都要核对参数,可以用万用表测量的元件一定要测量。 (4)从网上获得IA 到利尔达公司或的网站下载IA,并安装到计算机上。 (5)调试FET和实验板

430单片机串口的程序升级

摘要:介绍了一种MSP430单片机通过串口升级程序的方法,并在MSP430F5438上得以实现。通过实验,证明此方法稳定、可靠,避免了利用仿真器更新程序的 繁琐,提高了效率。 关键词:MSP430F5438;串口;程序更新 随着性能的不断提高以及成本的降低,单片机在各个领域都得到了广泛的应用。尤其在信号的控制和处理方面,单片机以其超低的功耗、简单的操作成为设计者的首选。TI公司推出的MSP430x5xx系列单片机具有低电压、低功耗、高速处理能力以及配置灵活的接口等特点,是当今主流单片机之一。 同其他处理器一样,单片机正常工作除了需要硬件电路以外,还需要相应的用户应用程序。但应用程序在调试阶段以及实际使用时往往都需要更新,常规的方法需要打开机箱,将仿真器与单片机连接好,再更新程序。这种步骤比较繁琐,如果操作不当还会损坏设备。因此,如果能通过单片机已有的简单接口(如串口)更新应用程序,那么将给单片机的使用带来更大的方便。 1 总体思想 首先通过仿真器向单片机中写入一段小程序,称之为Bootloader程序。这个程序不是用户的应用程序,它的作用有两个:第一是在上电的一小段时间里实时检测串口,如果有上位机发出的更新程序命令,就发送握手信号,通知上位机发送更新代码,并将收到的更新代码写入单片机相应的Flash中;第二个作用是当检测到有应用程序存在时,跳转到应用程序的入口地址,执行应用程序。其流 程如图1所示。 上位机程序(VC++语言编写)的功能是,当用户发出更新程序的指令后,在一段时间内连续发送更新程序命令。如果收到单片机的应答信号,表示单片机准备开始接收更新代码。此时上位机读取已选择的代码文件,分段发给单片机。其流程如

MSP430单片机深入学习笔记

复位 1.POR信号只在两种情况下产生: 微处理器上电。 RST/NMI管脚被设置为复位功能,在此管脚上产生低电平时系统复位。 2.PUC信号产生的条件为: POR信号产生。 看门狗有效时,看门狗定时器溢出。 写看门狗定时器安全健值出现错误。 写FLASH存储器安全键值出现错误。 3.POR信号的出现会导致系统复位,并产生PUC信号。而PUC信号不会引起POR信号的产生。系统复位后(POR之后)的状态为: RST/MIN管脚功能被设置为复位功能。 所有I/O管脚被设置为输入。 外围模块被初始化,其寄存器值为相关手册上注明的默认值。 状态寄存器(SR)复位。 看门狗激活,进入工作模式。 程序计数器(PC)载入0xFFFE(0xFFFE为复位中断向量)处的地址,微处理器从此地址开始执行程序。 4.典型的复位电路有以下3种: (1)由于MSP430具有上电复位功能, 因此,上电后只要保持RST/NMI(设置 为复位功能)为高电平即可。通 常的做法为,在RST/NMI管脚接100k? 的上拉电阻,如图1-5(a)所示。 (2)除了在RST/NMI管脚接100k?的 上拉电阻外,还可以再接0.1μF的电 容,电容的另一端接地,可以使复位 更加可靠。如图1-5(b)所示。 (3)由于MSP430具有极低的功耗,如 果系统断电后立即上电,则系统中电 容所存储的电荷来不及释放,此时系 统电压不会下降到最低复位电压以下, 因而MSP430不会产生上电复位,同时 RST/NMI管脚上也没有足够低的电平 使MSP430复位。这样,系统断电后立 即上电,MSP430并没有被复位。为了 解决这个问题,可增加一个二极管, 这样断电后储存在复位电容中的电荷 就可以通过二极管释放,从而加速电 容的放电。二极管的型号可取1N4008。 如图1-5(c)所示。

MSP430学习总结

MSP430学习总结 前言 这次主要看的资料是MSP430F425型号的,与MSP430F169有点区别,但由于MSP430单片机采用模块化结构,在不同型号的单片机中,同一种模块的使用方法和寄存器都是相同的。下面会对它们的功能和区别加以说明。 一、MSP430单片机的特点 1、我觉得MSP430最大的特点就是超低功耗,430之所以能够在 低功耗的条件下运行,主要是由于引入了“时钟系统”的概念,和采用模块化结构。让CPU可以间歇性的工作,节省功耗。 在MSP430单片机中,通过时钟配置可以产生3种时钟: MCLK:主时钟,MCLK是专门为CPU运行提供的时钟,MCLK配置的越高,CPU执行的速度就越快。一旦关闭MCLKE,CPU 就停止工作,所以在超低功耗中通过间接开启MCLK的方式降低功耗。 SMCLK:子系统时钟,为单片机内部某些高速设备提供时钟,并且SMCLK是独立于MCLK的,关闭MCLK让CPU停止工作,子系统SMCLK开启,仍然可以使外设继续工作。 ACLK:活动时钟;ACLK一般是由32.768KHz晶

振直接产生的低频时钟,在单片机运行时一般不关闭,和定时器使用间接唤醒CPU。时钟系统对于3种时钟不同程度的关闭,就可以进入不同的低功耗模式(低功耗在下面讨论)。 2、MSP430单片机采用模块化结构,每一种模块都具有独立 而完整的结构,这样就可以单独开启或者关闭某些模块,只需要激活某些使用的模块,以节省电力。 3、MSP430单片机的内核是16位RISC处理器,其运算能力和速度都具有一定的优势。 MSP430还有其它的一些优势在这里就不一一列举了。 二、MSP430单片机的内部资源 1、I/O口寄存器 PxIN: Px口输入寄存器 PxOUT: Px口输出寄存器 PxDIR : Px口方向寄存器 0=输入 1=输出 PxSET: Px口第二功能选择寄存器 0=普通I/O 1=第二功能 使用总结:以上的4个寄存器是所有I/O都具有的,在使用I/O 口之前首先要设置PxDIR,对于要使用第二功能的还要设置PxSET 下面介绍的是430中P1,P2口引发中断需要设置的寄存器

MSP430g2553串口通信

MSP430g2553串口通信 MSP430的不同型号,其串行通讯工作模式是一样的。以MSP430G2553为例进行说明。MSP430G2553是20个引脚的16位单片机。具有内置的16位定时器、16k 的FLASH 和512B 的RAM ,以及一个通用型模拟比较器以及采用通用串行通信接口的内置通信能力。此外还具有一个10位的模数(A/D)转换器。其引脚排布如图1.1所示。其功能表如表1.1所示。 串行通讯模块主要由三个部分组成:波特率生成部分、发送控制器以及接收控制器。如图1.2所示。 一、UART 模式 在异步模式下,接收器自身实现帧的同步,外部的通讯设备并不使用这一时钟。波特率的产生是在本地完成的。异步帧格式由1个起始 位、7或8个数据位、校验位(奇/偶/无)、1个地址位、和1或2个停止位。一般最小帧为9个位,最大为13位。 图1.2 串行通讯模块内部结构图 图1.1 MSP430G2553引脚图

(一)UART的初始化 单片机工作的时钟源来自内部三个时钟或者外部输入时钟,由SSEL1、SSEL0,以决定最终进入模块的时钟信号BRCLK的频率。所以配置串行通讯的第一步就是选择时钟。 通过选择时钟源和波特率寄存器的数据来确定位周期。所以波特率的配置是串行通讯中最重要的一部分。波特率设置用三个寄存器实现:UxBR0(选择控制器0):波特率发生器分频系数低8位。UxBR1(选择控制器1):波特率发生器分频系数高8位。UxMCTL 数据传输的格式,以及数据传输的模式是通过配置控制寄存器UCTL来进行设置。 接收控制部分和发送控制部分。首先需要串行口进行配置、使能以及开启中断。串口接收数据一般采用中断方式,发送数据采用主动发送。当接收到一个完整的数据,产生一个信号:URXIFG0=1(类似于51单片机的接收中断标志位),表示接收完整的数据。当数据正在发送中,UTXIFG0=1,此时不能再发送数据,必须等当前数据发送完毕(UTXIFG0=0)才能进行发送。程序实例如下: Void UART_init() { WDTCTL = WDTPW + WDTHOLD; P1SEL|= 0x06;//I/O口的功能寄存器配置。为1时作为模块输出或者输出,0 为端口输入或者输出。配置P1.1,P1.2为串行口。 P2DIR=0x04;//串口发送端为输出,串口接收端为输入。0为输入,1为输出 U0CTL |= CHAR; // 配置控制寄存器,数据类型为8位。 U0TCTL |= SSEL0; // 选择时钟UCLK= ACLK。 U0BR0 = 0x45; // 分频系数的高8位,8MHz 时钟下波特率为115200 U0BR1 = 0x00; // 分频系数的低8位。 U0MCTL = 0x00; // 波特率的调整。 U0CTL&= ~SWRST;//系统复位。只有对SWRST 复位,USART 才能重新被允许。 而接收和发送允许标志URXE和UTXE不会因SWRST 而 更改。 ME1 |= UTXE0 + URXE0; //使能USART0 TXD/RXD模块USART中特有的使能配置。 IE1 |= URXIE0;//使能USART0 接收中断 _EINT();//开启全部中断。 _BIS_SR(LPM0_bits + GIE); // 初始化完毕,进入睡眠状态。等待工作。该程序直接调用。 } 发送数据函数: __interrupt void usart0_rx (void) { while (!(IFG1 & UTXIFG0)); // 判断发送缓冲区是否为空。 TXBUF0 = RXBUF0; // 将数据发送到串口。 }

MSP430单片机原理解读

第 2 章MSP430 单片机原理与 C 语言基础MSP430系列超低功耗单片机有200多种型号,TI公司用3~ 4位数字表示其型号。其中第一位数字表示大系列,如MSP430F1xx系列、MSP430F2xx系列、MSP430F4xx系列、MSP430F5xx系列等。在每个大系列中,又分若干子系列,单片机型号中的第二位数字表示子系列号,一般子系列越大,所包含的功能模块越多。最后1~2 位数字表示存储容量,数字越大表示RAM 和ROM 容量越大。430 家族中还有针对热门应用而设计的一系列专用单片机。如SP430FW4xx 系列水表专用单片机、MSP430FG4xx 系列医疗仪器专用单片机、MSP430FE4xx 系列电能计量专用单片机等。这些专用单片机都是在同型号的通用单片机上增加专用模块而构成的。最新的MSP430型号列表可以通过TI公司网站下载。 在开发单片机应用系统时,第一步就是单片机的选型,选择合适的单片机型号往往就能事半功倍。单片机选型基本方法是选择功能模块最接近项目需求的系列,然后根据程序复杂程度估算存储器和RAM 空间,并留有适当的余量,最终决定选用的单片机型号。 本章节以MSP430F249单片机为学习目标,介绍单片机的基本结构和工作原理,读者可以举一反三、触类旁通,而不必每种型号都去学习却无法深入掌握。 2.1 MSP430F249单片机基本结构与原理 2.1.1MSP430F249的主要结构特点 供电电压范围1.8V~3.6V 。 超低功耗:活动状态270uA(1MHz,2.2V);待机模式0.3uA;关机模式0.1uA。 16位RISC精简指令集处理器。 时钟系统:多种时钟源,可灵活使用。时钟频率达到16MHz ;具有内部振荡器;可外接32kHz 低频晶振;外接时钟输入。 12位A/D转换器,内部参考电压,采用保持电路。 16位定时器A,3个捕获/比较寄存器。 16 位定时器B,7 个捕获/比较寄存器。 4个通用串口:USCI_A0 和USCI_A1、USCI_B0 和USCI_B1(I2C、SPI)。 60kB+256B的flash程序存储器,2kB的RAM数据存储器。 64引脚QFP封装。 MSP430F249单片机的芯片封装形式如图2.1所示,各引脚的功能描述如表2-1 所列。 2.1.2 MSP430F249单片机的基本结构 MSP430F24x系列单片机功能结构示意图如图2.2所示。 (1)CPU简介 MSP430单片机的CPU为16位RISC精简指令集的处理器,只有27条正交汇编指令和7 种寻址方式。RISC 处理器基本上是为高级语言所设计的,编译程序对正交指令系统很容易做到最优化,利于产生高效紧凑的代码。MSP430CPU 中集成了16个16位通用寄存器 R0~R15,其中R0~R3分别复用为程序指针PC、堆栈指针SP、状态寄存器SR和常数发生器CG1/CG2。这些寄存器之间的操作只需要一个CPU 周期。

MSP430时钟配置及ad模块等学习笔记

MSP430收集资料笔记 问: 个刚从51转到msp430这块的学生,我想知道,分频其实到底可以干什么,具体什么时候才会需要我们去分频? 能举些详细的例子告诉我分频什么时候改用,什么时候不该用吗?不需要代码,例子就好 答: 51也要分频啊,一个系统CPU(中央处理单元)的频率最高的,其他的外设都是低速的,都要通过主时钟分频产生低速的时钟来工作;比如8Mhz的单片机是说CPU的时钟是工作在8mhz,但gpio、串口,定时器等它们的工作频率很低的,这个时钟就需要分频来产生;当你想要改变一个外设的工作频率时就需要重新设置分频系数,比如串口波特率,定时时间,IIC时钟,spi时钟等等; 问: MSP430单片机的定时器,看门狗等东西的时钟来源于于各个时钟 (SMCLK,ACLK,MCLK,DCO等)有什么区别呢?还有这些问什么要分频呢,不分频好像程序也可以写啊! 有这三种时钟我也知道,我只是想知道。我是想知道这些时钟给外设使用的时候到底到底选择哪个,为什么要选择这个? 答: 不知道楼主用的是那个型号!我用的149,就用这个给你说吧!msp430F149 不分频具体的根据系统需要决定,楼主应该是初学吧!有些问题你不必深究,慢慢的在学习和使用中你就明白了,刚开始你知道怎么用就可以了! CTRL_C+CTRL_V,就算是抄别人的,也自己敲一遍,加深理解,加深印象!

话有说回来,学编程本来就是这么个过程,一看二抄三写四调试!我就是这么过来的,网上资源很多,多看看别人是怎么学的,怎么做的! || || 信号源---分频输出---------》时钟----------------》输出信号源----------外围模块|| (DCO)//************不设置即被MCLK默认***********************// || (LFXTI)→MCLK==→信号源分频输出=→信号源供给外围模块,CPU || (LFXT2) 1)MCLK系统主时钟。除了CPU运算使用此时钟以外,外围模块也可以使用。MCLK可以选择任何一个振荡器所产生的时钟信号并进行1、2、4、8分频作为其信号源。 (2)SMCLK系统子时钟。供外围模块使用。并在使用前可以通过各模块的寄存器实现分频。SMCLK可以选择任何一个振荡器所产生的时钟信号并进行1、2、4、8分频作为其信号源。 ||(DCO)//************不设置即被MCLK默认***********************// ||(LFXTI)→信号源分频输出=→SMCLK==→信号源供给外围模块 ||(LFXT2) (3)ACLK辅助时钟。供外围模块使用。并在使用前可以通过各模块的寄存器实现分频。但ACLK只能由LFXT1进行1、2、4、8分频作为信号源。 PUC复位后,MCLK和SMCLK的信号源为DCO,DCO的振荡频率默认为800KHZ。ACLK的信号源为LFXT1。 || ||LFXI1=→信号源分频====》ACLK========→外围模块 MCLK,SMCLK ||PUC复位===|=======》 DCO=800KHZ |ACLK | |LFXTI

相关文档