第4章 MSP430通信接口
单片机MSP430与PC机串口通讯设计
单片机MSP430与PC机串口通讯设计一、引言串口通信是指通过串行通信接口进行数据传输的一种通信方式。
单片机MSP430和PC机的串口通信设计可以实现二者之间的数据传输和通信交互。
本文将从串口介绍、硬件设计和软件实现等方面详细介绍该设计。
二、串口介绍串口是一种串行通信接口,常用的有RS232和RS485等。
RS232是一种使用较为广泛的串口通信协议。
RS232接口有三根线,分别为发送线Tx、接收线Rx和地线GND。
该协议规定,发送端与接收端之间的电平差为±3至±15V,其中正电平表示逻辑0,负电平表示逻辑1三、硬件设计1.MSP430硬件设计MSP430是一种低功耗的专用于嵌入式应用的16位RISC微控制器。
它具有丰富的外设资源,包括多个通用输入输出引脚(GPIO)和两个USART (UART)接口。
其中一个USART接口用于将MSP430与PC机连接。
2.PC机硬件设计PC机通过串口连接到MSP430。
首先,需要将PC机的串口RS232转换为TTL电平,即RS232转TTL电平转换器。
其次,将转换后的TTL电平通过杜邦线连接至MSP430的USART接口的Tx和Rx引脚。
四、软件实现1.MSP430软件设计(1)串口初始化:设置数据位长度、停止位、奇偶校验等。
(2)发送数据:将要发送的数据存入发送缓冲区,并使能发送中断。
(3)接收数据:开启接收中断,并将接收到的数据存入接收缓冲区。
(4)中断处理:发送中断和接收中断时,分别从发送缓冲区和接收缓冲区读取数据并发送/接收。
2.PC机软件设计(1)打开串口:设置串口参数,如波特率、数据位长度等。
(2)发送数据:向串口发送数据,可以通过打开的串口进行写入。
(3)接收数据:使用轮询或中断方式读取串口接收到的数据。
五、总结与展望本文详细介绍了单片机MSP430与PC机串口通信设计,主要包括了串口介绍、硬件设计和软件实现。
通过串口通信,MSP430和PC机可以实现数据传输和通信交互,从而满足各种嵌入式应用的需求。
MSP430I2C通信
04
MSP430I2C通信模块的 应用实例
MSP430I2C通信模块与EEPROM的通信
总结词
实现数据存储与读取
详细描述
MSP430I2C通信模块通过与EEPROM进行通信,可以实现数据的存储和读取功能。在数据存储时,可以将需要 保存的数据通过I2C通信协议发送到EEPROM中;在数据读取时,可以从EEPROM中读取数据并通过I2C通信协 议返回给MSP430I2C通信模块。
要点三
解决方案
首先检查总线的负载情况,确保总线 上连接的设备数量和信号线的长度在 合理范围内。然后检查信号线的质量 ,排除信号干扰的可能性。此外,可 以尝试调整I2C通信的速率参数,以 找到最适合系统需求的通信速率。
THANKS
感谢观看
寄存器访问
通过读写寄存器的方式,实现数据的读取和 写入。
03
MSP430I2C通信模块的 使用
MSP430I2C通信模块的初始化
初始化I2C通信模块
启动I2C通信
在开始通信之前,需要先初始化I2C通 信模块,包括设置通信速率、数据位、 停止位等参数。
完成初始化后,通过发送起始信号启 动I2C通信。
I2C通信模块支持多主模式和从模式, 方便实现多机通信。
MSP430I2C通信模块具有硬件仲裁 功能,可自动处理多个主设备同时请 求的情况,保证数据传输的可靠性。
02
I2C通信协议
I2C通信协议概述
I2C通信是一种双线串行通信协 议,主要用于连接微控制器和 各种外围设备。
它由Philips公司开发,具有简 单、稳定、高速等优点,广泛 应用于各种嵌入式系统中。
模块的亮度和对比度等参数,从而实现数据显示和控制功能。
05
430串口通信的资料
1 MSP430单片机I/O端口控制特点与8031单片机相比,MSP430的I/O端口的功能要强大的多,其控制的方法也更为复杂。
MSP430的I/O端口可以实现双向的输入、输出;完成一些特殊功能如:驱动LCD、A/D转换、捕获比较等;实现I/O 各种中断。
MSP430采用了传统的8位端口方式保证其兼容性,即每个I/O端口控制8个I/O引脚。
为了实现对I/O端口每一个引脚的复杂控制,MSP430中的每个I/O口都对应一组8位的控制寄存器(如图1)。
寄存器中的每一位对应一个I/O引脚,实现对该引脚的独立控制。
寄存器的功能和数目是由该I/O口所能完成的功能以及类型确定的。
[2]图1为MSP430的一个I/O端口的控制结构示意图。
对于最基本的只能完成输入、输出功能的I/O端口其控制寄存器只有3个。
其中,输入寄存器保存输入状态;输出寄存器保存输出的状态,方向寄存器控制对应引脚的输入、输出状态。
本文中用来实现I2C总线接口的P6.6、P6.7都属于这类的端口。
此外,有些I/O端口不但可以用作基本的输入输出,而且可以用作其他用途,比如可以作为LCD的驱动控制引脚。
这类端口的控制功能寄存器实现引脚功能状态的切换。
再者,有一类端口不但可以完成上述两种端口的功能,而且可以实现中断功能。
该类端口拥有图1中所有的寄存器,中断触发的方式以及中断的屏蔽性都可以通过相应的寄存器控制。
本文中使用的P2.0就属于该类端口,利用它来接收LM92发出的中断。
通过上述的控制结构,MSP430的I/O端口可以实现很丰富的功能。
不仅如此,其中一些I/O口还可以与MSP430中的特殊模块相结合完成更为复杂的工作。
如与捕获比较模块相结合可以实现串行通信,与A/D 模块结合实现A/D转换等。
此外,MSP430 I/O端口的电器特性也十分突出,几乎所有的I/O口都有20mA 的驱动能力,对于一般的LED、蜂鸣器可以直接驱动无需辅助电路。
许多端口内部都集成了上拉电阻,可以方便与外围器件的接口。
MSP 430基础IO口
学习过51单片机的同学都知道,IO口的操作是所有单片机系统的基本操作,单片机作为一个核心的运算和处理器件必须能够对外部的信号做出反应,那么如何让MSP430得知外部信号变化和做出反应就是我们今天要学习的主要内容这里还是以MSP430G2553单片机为例MSP430单片机的IO口都有以下几个相关的寄存器:1、PnDIR:输入输出方向寄存器0-输入1-输出2、PnOUT:输出寄存器0-低电平1-高电平3、PnIN:输入寄存器这是一个只读寄存器用来读取外部电平状态4、PnIFG:中断标志寄存器0-没有中断请求1-有中断请求该寄存器有8个标志位,对应相应的引脚是否有待处理的中断请求这8个中断标志共用一个中断向量,中断标志不会自动复位,必须软件复位外部中断时间的时间必须>=1.5倍的MCLK时间以保证中断请求被接受5、PnIE:中断启用寄存器0-不启用中断1-启用中断6、PnIES:中断触发边沿选择寄存器0-上升沿中断1-下降沿中断7、PnSEL:功能选择寄存器0-选择引脚为普通IO口1-选择引脚为外围模块功能(第二功能引脚)8、PnSEL2:功能选择寄存器2和PnSEL共同作用选择不同功能,当选择引脚作为普通IO口使用时PnSEL和PnSEL2都应该清零(默认)9、PnREN:上拉/下拉电阻使能寄存器0-禁止1-使能OK,以上就介绍完了和IO口相关的寄存器,是不是觉得好多,头晕?不过头晕之余看看描述,还是能够理出一些思绪的。
本篇我们只讨论IO作为普通输入输出口使用所以像PnSEL、PnSEL2、PnIE寄存器就直接写入0x00就好了,或者说可以默认不作修改。
像PnIFG 和PnIES寄存器那就和我们本篇完全无关了。
让我们看看MSP430G2553这个单片机的管脚是如何分布的吧,好让大家有个IO口的存在概念:图片太小?符号密密麻麻看不清?OK,cloud用表格给大家划分一下最简单的引脚图:VCC MSP430G2553GNDP1.0P2.6 / XINP1.1P2.7 / XOUTP1.2TESTP1.3/RSTP1.4P1.7P1.5P1.6P2.0P2.5P2.1P2.4P2.2P2.3看了这张图大家应该都明白了我们的MSP430G2553单片机只引出了P1口和P2口。
MSP430单片机串口通信详解
MSP430单片机串口通信详解#include"msp430G2553.h"#include "in430.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 WDTBCSCTL1 = CALBC1_1MHZ; // Set DCODCOCTL = CALDCO_1MHZ;P1DIR|=BIT6;P1OUT&=~BIT6;P1SEL = BIT1 + BIT2; // P1.1为 RXD, P1.2为TXD P1SEL2 = BIT1 + BIT2; // P1.1为 RXD, P1.2为TXDUCA0CTL1 |= UCSSEL_2; // 选择时钟BRCLKUCA0BR0 = 106; // 1MHz 9600UCA0BR1 = 0; // 1MHz 9600UCA0MCTL = UCBRS2 + UCBRS0; // 波特率=BRCLK/(UBR+(M7+...0)/8)UCA0CTL1 &= ~UCSWRST;// 初始化顺序:SWRST=1设置串口,然后设置SWRST=0,最后设置相应中断IE2 |= UCA0RXIE; // 使能接收中断while(1){//UartPutchar(9);// display_int(temp,0);__delay_cycles(10000);}}/**********************************UART接收中断*************************/#pragma vector=USCIAB0RX_VECTOR__interrupt void USCI0RX_ISR(void){//while (!(IFG2&UCA0TXIFG)); // 等待发送完成 //UCA0TXBUF = UCA0RXBUF; // TX ->; RXed charactertemp=UCA0RXBUF;}/******************************UART发送字节函数*************************/void UartPutchar(unsigned char c){while(!(IFG2 & UCA0TXIFG)); //待发送为空UCA0TXBUF=c;IFG2 &=~UCA0RXIFG;}/*********************************UART接收字节数据******************/unsigned char UartGetchar(){unsigned char c;while(!(IFG2 & UCA0RXIFG)); //等待接收完成c=UCA0RXBUF;IFG2 &=~UCA0TXIFG;return c;}/******智能控制工作室*******/MSP430g2553串口通信MSP430的不同型号,其串行通讯工作模式是一样的。
msp430多处理器之间的通信方式及协议
msp430多处理器之间的通信方式及协议
MSP430多处理器之间的通信方式主要有以下几种:
1.
串行通信:MSP430多处理器之间可以使用串行通信,如UART、I2C 、SPI等。
2.
并行通信:MSP430多处理器之间可以使用并行通信,如GPIO、DM A等。
3.
无线通信:MSP430多处理器之间可以使用无线通信,如ZigBee、Blu etooth等。
MSP430多处理器之间的通信协议主要有以下几种:
1. CAN:Controller Area
Network(控制器区域网络)是一种局域网技术,用于在汽车、工业控制和其他应用中连接多个设备。
2.
Modbus:Modbus是一种串行通信协议,用于在工业控制系统中连接多个设备。
3.
Ethernet:以太网是一种局域网技术,用于在局域网中连接多个设备。
4.
TCP/IP:TCP/IP是一种网络协议,用于在互联网上连接多个设备。
msp430可通过哪些接口进行烧写程序
MSP430可通过哪些接口进行烧写程序?MSP430无论是仿真还是烧写程序,一般可以通过:JTAG、SBW、BSL接口进行。
1、JTAG是利用边界扫描技术,在430内部有逻辑接口给JTAG使用,内部有若干个寄存器连接到了430内部数据地址总线上,所以可以访问到430的所有资源,包括全地址FLASH、RAM及各种寄存器。
可以用于对430的仿真和编程,主要连接线有TMS、TCK、TDI、TDO,430还需要另两条线路RST、TEST来启动JTAG 命令序列。
2、SBW是SPY-BI-WIRE,可以简称为两线制JTAG,主要有SBWTCK(连接到JTAG接口的7脚TCK)与SBWTDIO(连接到JTAG接口的1脚TDO/TDI),该接口主要用于小于28脚的2系列单片机,因为28脚以内单片机的JTAG一般与IO口复用,为了给用于留有更多的IO资源,才推出SBW接口。
SBW同JTAG一样可以访问到430内部的所有资源。
注:目前MSP430F5XX系列中也有SBW 接口,原理同2系列的SBW。
3、BSL是TI在430出厂时预先固化到MCU内部的一段代码,该代码用户不可读写,这有点类似与DSP的bootloader,但又与bootloader有明显的区别,BSL只能用于对MCU内部的FLASH访问,不能对其他的资源访问,所以只能用作编程器接口。
BSL通过UART协议与编程器连接通信。
编程器可以发送不同的通信命令来对MCU的存储器做不同的操作,可以把这种方式称为BSL接口。
BSL代码的启动有些特殊,一般430复位启动时PC指针指向FFFE复位向量,但可以通过特殊的启动方式可以使MCU在启动时让PC指向BSL内部固化的程序。
这种特殊的启动方式一般是由RST引脚与TEST(或TCK)引脚做一个稍复杂的启动逻辑后产生。
BSL启动后,就可以通过预先定义好的UART协议命令对MCU进行读写访问了。
4、一般的MCU都有代码加密功能,430是如何实现的呢?外部对430内部的代码读写只能通过上述的三种方式,只要把这三种方式都堵上,430的程序不就安全了吗?所以又引入了熔丝位,熔丝位只存在于JTAG、SBW接口逻辑内。
msp430 通用IO口
通用IO口3.2.1 IO口IO口是微处理器系统对外界沟通的最基本部件,从基本的键盘、LED到复杂的外设芯片等,都是通过IO口的输入输出操作来进行的。
在MSP430系列中,不同的单片机IO口数量不同。
体积最小的MSP430F20xx系列中只有10个IO口,适合在超小型设备中应用;功能最丰富的MSP430FG46xx系列中多达80多个IO 口,足够应付外部设备繁多的复杂应用。
在MSP430G2553单片机中,共有16个IO口,属于IO口较少的系列。
3.2.2 IO寄存器和大部分单片机类似,MSP430系列单片机也是将8个IO口编为一组。
每个IO口有四个控制寄存器,P1和P2还有额外的3个中断寄存器。
寄存器情况可参见表3.2。
PxDIR寄存器用于设置每一位的IO口方向MSP430单片机的IO口是双向IO口:0=输入 1=输出。
在使用IO口时首先要选择寄存器来设置每个IO口方向。
例如下面的语句:P1DIR |= BIT1+BIT3+BIT4;P1DIR |= ~(BIT5+BIT6+BIT7);以上语句将P1.1,P1.3和P1.4的方向置为输出,P1.5,P1.6和P1.7的方向置为输入。
PxDIR寄存器在复位的过程中会被清零,没有被设置的IO口方向均为输入状态,所以第二句可以省略。
注意,将未用的IO口置为输出可减小漏电流。
对于所有已经设成输出的IO口可通过PxOUT寄存器设置其输出电平;对于所有已经被设成输入的IO口,可通过PxIN寄存器读回其输入电平。
PxSEl寄存器用于设置每一位IO口的功能:0=普通IO口,1=第二功能。
在MSP430系列单片机中,很多内部功能模块也需要和外界进行数据交换,为了不增加芯片的管脚数量,大部分都和IO口管脚复用,这就导致MSP430系列单片机的大多数IO管脚都具有第二功能。
通过PxSEL可以指定某些IO口作为第二功能使用。
如MSP430G2553中P1.1和RXD,P1.2和TXD复用。
msp430 实验报告
msp430 实验报告MSP430 实验报告引言:MSP430是一款低功耗、高性能的微控制器,广泛应用于嵌入式系统开发领域。
本实验报告将介绍我对MSP430进行的一系列实验,包括基本的GPIO控制、定时器应用、模拟信号采集和通信接口应用等。
实验一:GPIO控制在本实验中,我使用MSP430的GPIO引脚控制LED灯的亮灭。
通过配置引脚的输入/输出模式以及设置引脚电平,我成功地实现了对LED灯的控制。
这为后续实验奠定了基础,也让我更加熟悉了MSP430的寄存器配置。
实验二:定时器应用在本实验中,我探索了MSP430的定时器功能。
通过配置定时器的时钟源和计数模式,我实现了定时器中断功能,并利用定时器中断实现了LED灯的闪烁。
这个实验让我更加深入地了解了MSP430的定时器模块,并学会了如何利用定时器进行时间控制。
实验三:模拟信号采集在本实验中,我使用MSP430的模拟信号输入引脚和模数转换模块,成功地将外部的模拟信号转换为数字信号。
通过配置ADC模块的采样速率和精度,我实现了对模拟信号的准确采集,并将采集到的数据通过串口输出。
这个实验让我对MSP430的模拟信号处理有了更深入的了解。
实验四:通信接口应用在本实验中,我使用MSP430的串口通信模块,实现了与外部设备的数据传输。
通过配置串口的波特率和数据格式,我成功地实现了与计算机的串口通信,并通过串口发送和接收数据。
这个实验让我掌握了MSP430与外部设备进行数据交互的方法。
结论:通过一系列的实验,我对MSP430的基本功能和应用有了更深入的了解。
MSP430作为一款低功耗、高性能的微控制器,具备丰富的外设和强大的处理能力,适用于各种嵌入式系统的开发。
通过学习和实践,我掌握了MSP430的GPIO控制、定时器应用、模拟信号采集和通信接口应用等基本技能,为以后的嵌入式系统开发打下了坚实的基础。
未来展望:MSP430作为一款成熟的微控制器,具备广阔的应用前景。
msp430单片机io口
(7)PXSEL:功能选择寄存器。P1,P2两端口还具有其他片内外设功能,将这些功能与芯片外的联系通过复用P1,P2引脚的方式来实现。PXSEL用来选择引脚的I/O端口功能与外围模块功能。0:选择引脚为I/O端口,1:选择引脚为外围模块功能。如:P1SEL|=0X10; //P1.4为外围模块功能。
MSP430 单片机 IO 端口介绍 收藏
MSP430的端口有P1、P2、P3、P4、P5、P6、S和COM(型号不同,包含的端口也不仅相同,如MSP430X11X系列只有P1,P2端口,而MSP430X4XX系列则包含全部上述端口),它们都可以直接用于输入/输出。MSP430系统中没有专门的输入/输出指令,输入/输出操作通过传送指令来实现。端口P1`P6的每一位都可以独立用于输入/输出,即具有位寻址功能。常见的键盘接口可以直接用端口进行模拟,用查询或者中断方式控制。由于MSP430的端口只有数据口,没有状态口或控制口,在实际应用中,如在查询式输入/输出传送时,可以用端口的某一位或者几位来传送状态信息,通过查询对应位的状态来确定外设是否处于“准备好”状态。
(5)PXIES:中断触发沿选择寄存器。如果允许PX口的某个引脚中断,还需定义该引脚的中断触发方式。0:上升沿触发使相应标志置位,1:下降沿触发相应标志置位。如:MOV.B #07H, &P1IES ;p1低3位下降沿触发中断。
(6)PXIE:中断使能寄存器。PX口的每一个引脚都有一位用以控制该引脚是否允许中断。0:禁止中断 ,1:允许中断。MOV.B #0E0H, &P2IE ;P2高3位允许中断。
端口的功能。(1)P1,P2端口: I/O,中断功能,其他片内外设功能如定时器、比较器;(2)P3,P4P5P6端口:I/O,其他片内外设功能如SPI、UART模式,A/D转换等;(3)S,COM端口:I/O,驱动液晶。
第4章 MSP430F5单片机端口
17
P1IV 00h 02h 04h 06h 08h 0Ah 0Ch 0Eh 10h
中断源 中断标志位 无中断产生 P1.0中断 P1IFG.0 P1.1中断 P1IFG.1 P1.2中断 P1IFG.2 P1.3中断 P1IFG.3 P1.4中断 P1IFG.4 P1.5中断 P1IFG.5 P1.6中断 P1IFG.6 P1.7中断 P1IFG.7
中断优先级 最高
最低
18
P2IV 00h 02h 04h 06h 08h 0Ah 0Ch 0Eh 10h
中断源 中断标志位 无中断产生 P2.0中断 P2IFG.0 P2.1中断 P2IFG.1 P2.2中断 P2IFG.2 P2.3中断 P2IFG.3 P2.4中断 P2IFG.4 P2.5中断 P2IFG.5 P2.6中断 P2IFG.6 P2.7中断 P2IFG.7
总结I/O口配置时PxDIRx、PxRENx和PxOUTx寄存器的用法: PxDIR PxRENx PxOUTx I/O 口配置 0 0 x 输入 0 1 0 下拉输入 0 1 1 上拉输入 1 x x 输出
9
10
5 输出驱动能力寄存器 PxDS
PxDS寄存器中的每一位选择全力驱动或者减弱 驱动能力。默认的是减弱驱动能力。 Bit = 0 减弱驱动力 Bit = 1 增强驱动力
11
6 PxIE 中断使能寄存器
该寄存器的各引脚都有一位用以控制该引 脚是否允许中断, 0:禁止该位中断; 1:允许该位中断。
12
7 PxIES 中断触发沿选择寄存器
msp430可通过哪些接口进行烧写程序
MSP430可通过哪些接口进行烧写程序?MSP430无论是仿真还是烧写程序,一般可以通过:JTAG、SBW、BSL接口进行。
1、JTAG是利用边界扫描技术,在430内部有逻辑接口给JTAG使用,内部有若干个寄存器连接到了430内部数据地址总线上,所以可以访问到430的所有资源,包括全地址FLASH、RAM及各种寄存器。
可以用于对430的仿真和编程,主要连接线有TMS、TCK、TDI、TDO,430还需要另两条线路RST、TEST来启动JTAG 命令序列。
2、SBW是SPY-BI-WIRE,可以简称为两线制JTAG,主要有SBWTCK(连接到JTAG接口的7脚TCK)与SBWTDIO(连接到JTAG接口的1脚TDO/TDI),该接口主要用于小于28脚的2系列单片机,因为28脚以内单片机的JTAG一般与IO口复用,为了给用于留有更多的IO资源,才推出SBW接口。
SBW同JTAG一样可以访问到430内部的所有资源。
注:目前MSP430F5XX系列中也有SBW 接口,原理同2系列的SBW。
3、BSL是TI在430出厂时预先固化到MCU内部的一段代码,该代码用户不可读写,这有点类似与DSP的bootloader,但又与bootloader有明显的区别,BSL只能用于对MCU内部的FLASH访问,不能对其他的资源访问,所以只能用作编程器接口。
BSL通过UART协议与编程器连接通信。
编程器可以发送不同的通信命令来对MCU的存储器做不同的操作,可以把这种方式称为BSL接口。
BSL代码的启动有些特殊,一般430复位启动时PC指针指向FFFE复位向量,但可以通过特殊的启动方式可以使MCU在启动时让PC指向BSL内部固化的程序。
这种特殊的启动方式一般是由RST引脚与TEST(或TCK)引脚做一个稍复杂的启动逻辑后产生。
BSL启动后,就可以通过预先定义好的UART协议命令对MCU进行读写访问了。
4、一般的MCU都有代码加密功能,430是如何实现的呢?外部对430内部的代码读写只能通过上述的三种方式,只要把这三种方式都堵上,430的程序不就安全了吗?所以又引入了熔丝位,熔丝位只存在于JTAG、SBW接口逻辑内。
基于MSP430单片机的Profibus-DP通信接口
基于MSP430单片机的Profibus-DP通信接口关键字:通信接口, Profibus, MSP430, 单片机Profibus是开放的、与制造商无关、无知识产权保护的标准。
因此世界上任何人都可以获得该标准并设计各自的软硬件解决方案。
Pro-fibus-DP通信接口的开发有两种方案选择:单片机+软件;单片机+Profibus 通信芯片ASIC。
方案2中Profibus-DP协议完全由Profibus通信ASIC来实现,单片机主要处理用户程序。
因此方案2开发周期相对少很多,本文将采用单片机+Profibus通信ASIC来实现Profibus通信接口的设计。
1 Profibus-DP基本特性Profibus包括三个兼容系列:Profibus-FMS,Profibus-DP,Profibus-PA。
FMS提供大量的通信服务用于完成以中等传输速度进行的循环和非循环的通信服务;DP是一种经过优化的高速廉价的通信连接,适用于实时性要求较高的场合,主要用于自动控制与分散式外设之间的通信;PA是专为过程自动化而设计,具有本质安全性,用于安全性要求较高的场合及总线供电的站点。
1.1 协议结构Profibus-DP协议采用了ISO/OSI模型的第1层(物理层)、第2层(数据链路层),除去了3~7层,并自定义了用户接口层,这种协议结构保证了数据传输的快速有效。
1.2 报文结构Profibus-DP数据编码采用异步不归零制,传输线的空载电平为“1”。
为了避免数据传输中发生冲突而导致数据丢失,在每个请求报文发送前必须保证33位(同步时间)的空载状态。
在单个字符间所有数据传送时没有间隙,即无缝。
各种报文的格式如图1所示。
1.3 Profibus-DP从站状态机图2为DP从站状态机的简单图示。
各种椭圆表示不同的状态,带箭头的连线表示状态间的转换,连线上的文字表示状态转换所需满足的条件。
只有在Power_on状态,从站可以接收来自二类主站的“Set_Slave_Address"报文,从而改变从站地址,从站应具有非易失性存储器来存储从站地址。
MSP430单片机的通用IO接口
{
P1OUT ^= (BIT1 + BIT5); //LED1,LED5闪烁
delayus(200);
//延迟0.2s
}
else if((P2IN&0x07) == 0x03) //K3 开关闭合
{
P1OUT = ~mask;
//LED逐个点亮
delayus(100); //延迟0.1s
mask += mask;
59 60 61
2 3 4 5 6
P6.0/A0 P6.1/A1 P6.2/A2 P6.3/A3 P6.4/A4 P6.5/A5 P6.6/A6 P6.7/A7/SVSIN
P3.0/UCB0STE/UCA0CLK P3.1/UCB0SIMO/UCB0SDA P3.2/UCB0SOMI/UCB0SCL
P1.0/TACLK/CAOUT P1.1/TA0 P1.2/TA1 P1.3/TA2
P1.4/SMCLK P1.5/TA0 P1.6/TA1 P1.7/TA2
12 13 14 15 16 17 18 19
44 45 46 47 48 49 50 51
P5.0/UCB1STE/UCA1CLK
P2.0/ACLK/CA2
XT2OUT XT2IN
RST/NMI TCK
TDI/TCLK TDO/TDI
TMS
52 53 58 57 55 54 56
MSP430F249
R4 R5 R6
10k 10k 10k
K1 K2 K3
R1 330
D1
R2 330
D2
R3 330
D3
6
第3章 MSP430
P1OUT = BIT4+BIT5 +BIT6;
MSP430通信接口简介说明书
UC0CLK
ACLK SMCLK SMCLK
LSB UCAxBR0 UCAxBR1
8
8
Prescaler/Divider
1st Modulator
3
UCBRSx
BITCLK16
/16
2nd Modulator
4
UCBRFx
BITCLK
© 2006 Texas Instruments Inc, Slide 10
Agenda
• USART, USCI, USI Comparison • RS232 Communication • SPI Communication • I2C Communication • Lab Activities
© 2006 Texas Instruments Inc, Slide 4
Cumulative Error
© 2006 Texas Instruments Inc, Slide 7
Reducing Cumulative Error
• Modulation reduces Cumulative Error:
9600 Baud ⇒ Bit Time = 104.17us
↔ 3x 32768Hz clocks = 91.55us 4x 32768Hz clocks = 122.07us
USI NEW
---
SPI: - Only one SPI available - Master and Slave Modes
I2C: - SW state machine needed - Master and Slave Modes
© 2006 Texas Instruments Inc, Slide 3
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
void main(void) { …… UCA1CTL1 |= UCSWRST; UCA1CTL1 |= UCSSEL_1; UCA1BR0 = 0x03; UCA1BR1 = 0x00; UCA1MCTL = UCBRS_3+UCBRF_0;
UCA1CTL1 &= ~UCSWRST; 态机 UCA1IE |= UCRXIE;
通常情况下,N不是一 个整数,因此,需要 使用调制器。
低频波特率生成
当UCOS16 = 0时即选择为“低频波特率生成” 模式。由于该模式使用低频时钟信号(32.768 kHz晶振),故其非常适合低功耗应用。 波特率是由分频器和调制器中获得。 寄存器将通过下面公式得出的值来进行配置。
分频因子的整数部分通过预分频器实现
本章结构
4.1 通信系统概述 4.2 USCI模块概述 4.3 通用异步通信协议UART模式
4.4 串行外设接口协议SPI模式
4.5 内部集成电路协议I2C模式
4.6 通用串行总线协议USB模块
4.1 通信系统概述
例如:PC机的标准并行接口LPT1 (打印机接口)、MSP430的P1~P6均可做8 位并行通信
4.4.2 SPI模式操作
当MSP430USCI模块控制寄存器UCTL的UCSYNC置位且 UCMODEx为00、01或10时,串行模块工作在SPI模式,通过4 线(SOMI、SIMO、SCLK及STE)或者3线(SOMI、SIMO及 SCLK)同外界通信。
UCBxRXBUF USCI_Bx接收缓存 UCBxTXBUF USCI_Bx发送缓存
UCBxI2COA UCBxI2CSA
UCBxICTL UCBxIE UCBxIFG UCBxIV
USCI_Bx I2C本机地址 USCI_Bx I2C从机地址
USCI_Bx中断控制 USCI_Bx中断使能 USCI_Bx中断标志 USCI_Bx中断向量
UCBRx = INT(N)
小数部分由带有下面公式的调制器实现
UCBRSx = round[( N – INT(N)) × 8]
过采样波特率生成
当UCOS16 = 1时即选择为“过采样波特率生成”模式。 这个模式具有精确的位时序。它需要时钟源比所需的波特 率高16倍。 通过以下两步可以产生波特率: 将时钟源16分频,再供给第一个调制器,产生BITCLK16。 再将BITCLK16通过16分频后作为第二个调制器的输入来 产生BITCLK。 寄存器将通过下面公式得出的值来进行配置。
线路空闲多机模式
地址位多机模式
UART模式下可用的USCI寄存器
USCI_Ax和USCI_Bx都有SPI模块,下面以USCI_Bx为例,介绍相关 寄存器
名称 UCBxBRW UCBxMCTL UCBxSTAT 描述 USCI_Bx波特率控制字 USCI_Bx调制器控制 USCI_Bx状态寄存器 读/写 读/写 读/写 00h 00h 00h 字节 字节 字节 访问 读/写 读/写 复位值 0001h 0000h 寄存器访问 字 字 UCBxCTLW0 USCI_Bx控制字0
UART帧结构图
起始位 数据区(由低到高) 1位 一般为7位或8位 校验位 停止位 1位 一般可选为1位或2位
8位数据、无校验、一位停止位的工作示例图
使用UART通信
使用UART通信需要两个引脚:
常用UART接口
USCI介绍:UART模式
UART模块特征包括: 带奇校验、偶校验或非奇偶校验的7或8位数据 独立的发送和接收移位寄存器 独立的发送和接受缓冲寄存器 最低位优先(LSB)或最高位(MSB)优先的数据发 送和接收 多处理器系统的内置空闲线路和地址位通信协议 通过有效的起始位边沿检测,将MSP430从低功 耗唤醒。 波特率可编程控制,支持小数波特率调制 用于错误检测和抑制的状态标志 用于地址检测的状态标志 发送和接收的独立中断能力
UCBRx = INT(N/16) UCBRFx = round([(N/16) – INT(N/16)] ×16)
4.3 通用串行通信接口(USCI)— UART模式 主要内容
UART总线协议 总线结构 工作模式 数据传输时序
MSP430 UART模块 USCI概述 主从机模式 UART模块寄存器 应用示例
// 复位USCI_A1状态机 // CLK = ACLK = 32kHz // 32kHz/9600=3.41 // UCBRS = round[(NINT(N))×8] = 3 // 初始化复位USCI_A1状 // 使能USCI_A1接收中断
#pragma vector=USCI_A0_VECTOR __interrupt void USCI_A0_ISR(void) { switch(__even_in_range(UCA0IV,4)) { case 0: break; // Vector 0 – 无中断 case 2: // Vector 2 – RXIFG while (!(UCA0IFG&UCTXIFG)); // USCI_A1发送缓冲是否准备就绪? UCA0TXBUF = UCA0RXBUF; // 将接收到的字符传递给发送缓冲 break; case 4: break; // Vector 4 - TXIFG default: break; } }
4.2 USCI模块概述
USCI模块特性
低功耗运行模式(自动启动) 两个独立模块: USCI_A: 支持Lin/IrDA的UART; SPI( 主/从、3线和4线模式)。 USCI_B: SPI (主/从、3线和4线模式); 2 I C (主/从, 高达400 kHz)。 双缓冲TX/RX; 波特率/位时钟发生器: 自动波特率检测; 灵活的时钟源。 RX干扰抑制; 使能DMA; 错误检测。
// 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_A0 TX buffer ready? UCA1TXBUF = UCA1RXBUF; // TX -> RXed character break; case 4:break; // Vector 4 - TXIFG default: break; } }
初始化USCI模块
使用USCI模块之前,要先对其进行初始化配置。 建议采用以下步骤初始化或重配置USCI模块:
置位UCAxCTL1的UCSWRST; 初始化USCI寄存器;
配置相应引脚端口;
软件清零UCSWRST;
使能UCxRXIE和/或UCxTXIE中断。
波特率生成
对于一个特定的时钟 源的频率,分频值下 列公式给出:
读/写 读/写
读/写 读/写 读/写 读
0000h 0000h
0200h 00h 02h 0000h
字 字
字 字节 字节 字
例题1 通过串口向目标板发送数据,将收到同样的数据反馈
#include <msp430f6638.h> int main() { WDTCTL = WDTPW + WDTHOLD; // Stop WDT P7DIR |= (1<<4)|(1<<5);//方向设置为输出 P7OUT |= ~(1<<5); P7OUT |= (1<<4); P8SEL |= 0X0C; UCA1CTL1 |= UCSWRST; // **Put state machine in reset** UCA1CTL1 |= UCSSEL_1; // CLK = ACLK UCA1BR0 = 0x03; // 32kHz/9600=3.41 (see User's Guide) UCA1BR1 = 0x00; UCA1MCTL = UCBRS_3+UCBRF_0; // Modulation UCBRSx=3, UCBRFx=0 UCA1CTL1 &= ~UCSWRST; // **Initialize USCI state machine** UCA1IE |= UCRXIE; // Enable USCI_A0 RX interrupt __bis_SR_register(GIE); // Enter LPM3, interrupts enabled }
UART普通模式
这是最普遍采用的工作模式,也是最为简单的工作模式。 示例:回应接收的字符,开启接收中断,每接收到一个字符,就进入中断 处理函数,将接收缓冲寄存器的值赋给发送缓冲寄存器,波特率为9600, ACLK = 32768Hz crystal, MCLK = SMCLK = DCO ~1.045MHz, 波特率配置计算方法: ACLK / Baud = 32768Hz ÷ 9600 = 3.41· · · · · · · · · · · · · UCA1BR0 = 0x03; UCA1BR1 = 0x00; 由于ACLK / Baud <16,round[(N-INT(N))×8] = 3
全双工串行接口(UART)应rsal Asynchronous Receiver ,异步 RxD RxD and Transmitter UART 通信设备 通信收发器),俗称“串口”。 模块 串口是嵌入式系统与外界联系的重要手段,主要用于以下 TxD TxD 两个方面: RS232 片内 1、 UART直接和其他的控制器进行数据交换 电平转换 RxD RxD UART PC机串口 模块 2、 UART和PC机通信:由于PC机串口是RS232电平,所 以连接时需要使用RS232转换器