MSP430同步串行通信SPI.ppt

上传人:小飞机 文档编号:5440832 上传时间:2023-07-07 格式:PPT 页数:46 大小:1.77MB
返回 下载 相关 举报
MSP430同步串行通信SPI.ppt_第1页
第1页 / 共46页
MSP430同步串行通信SPI.ppt_第2页
第2页 / 共46页
MSP430同步串行通信SPI.ppt_第3页
第3页 / 共46页
MSP430同步串行通信SPI.ppt_第4页
第4页 / 共46页
MSP430同步串行通信SPI.ppt_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《MSP430同步串行通信SPI.ppt》由会员分享,可在线阅读,更多相关《MSP430同步串行通信SPI.ppt(46页珍藏版)》请在三一办公上搜索。

1、同步串行通信SPI,内容提要,SPI总线协议MSP430 SPI模块SPI应用,SPI总线介绍,SPI接口是Motorola首先提出的全双工三/四线同步串行外围接口,采用主从模式架构,支持多从设备应用,一般只支持单主设备。利用34条线完成两个芯片之间的双工高速通信。两条数据线用于收发数据,一条时钟线用于同步,一条作为从机选择。时钟由主设备控制,当主机发送一字节数据(通过主出从入MOSI引脚)的同时,从机返回一字节数据(通过主入从出MISO引脚)。总线上允许连接多个设备,在同一时刻只允许一个主机操作总线,并且同时只能与一个从机通信。主机控制数据的传输过程。目前应用中的数据速率可达Mbps级。,一

2、、SPI总线协议,SPI总线可在软件的控制下构成各种简单的或复杂的系统:1个主MCU和几个从MCU几个从MCU相互连接构成多主机系统(分布式系统)1个主MCU和1个或几个从I/O设备,SPI总线结构,SPI典型结构如下:,SPI工作模式,主机模式:当器件作为主机时,使用一个IO引脚拉低相应从机的选择引脚(STE),传输的起始由主机发送数据来启动,时钟(SCK)信号由主机产生。通过MOSI发送数据,同时通过MISO引脚接收从机发出的数据。从机模式:当器件作为从机时,传输在从机选择引脚(STE)被主机拉低后开始,接收主机输出的时钟信号,在读取主机数据的同时通过MISO引脚输出数据。,SPI电气连接

3、,以线SPI为例,其通信时需要的4个引脚分别为:,作SPI主机时,STE要接上拉电阻,MSP430G2553引脚图,STE引脚作用,STE:从机模式发送接收允许控制引脚,控制多主从系统中的多个从机。该引脚不用于3线SPI操作,可以在4线SPI操作中使多主机共享总线,避免发生冲突。4线SPI操作主模式中,STE的含义如下:SIMO和SCLK被强制进入输入状态SIMO和SCLK正常操作4线SPI操作从模式中,STE的含义如下:允许从机发送接收数据,SIMO正常操作禁止从机发送接收数据,SIMO被强制进入输入状态,SPI数据传输,数据传输格式:通常是高位(MSB)在前,低位(LSB)在后。一些增强型

4、MCU中可以通过软件设置高位在前或低位在前。下面以位数据的传输为例,看一下种不同数据传输格式的时序。首先介绍两个概念:1.时钟极性:表示时钟信号在空闲时是高电平还是低电平。2.时钟相位:决定数据是在SCK的起始沿采样还是在SCK的结束沿采样。,SPI传输时序,传输模式,根据时钟极性(CPOL)及相位(CPHA)不同可以组合成4种工作模式:SPI0,SPI1,SP2,SP3.(1)SPI0:CPOL=0,CPHA=0(2)SPI1:CPOL=0,CPHA=1(3)SPI2:CPOL=1,CPHA=0(4)SPI3:CPOL=1,CPHA=1,传输模式,时钟极性(CPOL)定义了时钟空闲状态电平,

5、对传输协议没有重大影响。CPOL=0:时钟空闲状态为低电平。CPOL=1:时钟空闲状态为高电平。,传输模式,时钟相位(CPHA)定义数据的采样时间。CPHA=0:在时钟的第一个跳变沿(上升沿或下降沿)进行数据采样。CPHA=1:在时钟的第二个跳变沿(上升沿或下降沿)进行数据采样。,特点,优点:(1)接口简单,利于硬件设计与实现。(2)时钟速度快,且没有系统开销。(3)相对抗干扰能力强,传输稳定。,特点,缺点:(1)缺乏流控制机制,无论主器件还是从器件均不对消息进行确认,主器件无法知道从器件是否繁忙。因此,需要软件弥补,增加了软件开发工作量。(2)没有多主器件协议,必须采用很复杂的软件和外部逻辑

6、来实现多主器件架构。,通用串行通信接口(USCI)模块,通用串行通信接口(USCI)模块支持多种串行通信模式。不同的USCI 模块支持不同的模式USCI_Ax 模块支持:UART 模式IrDA 通信的脉冲整形LIN 通信的自动波特率检测SPI 模式USCI_Bx 模块支持:I2C 模式SPI 模式,MSP430模块特点,MSP430的SPI模块有如下特点:支持3线或4线SPI操作支持7位或8位数据格式接收和发送有单独的移位寄存器接收和发送有独立的缓冲器接收和发送有独立的中断能力时钟的极性和相位可编程主模式的时钟频率可编程传输速率可编程支持连续收发操作支持主从方式,主模式,MSP430 USCI

7、作为主机、外围设备作为从机,从模式,外围设备作为主机,MSP430 USCI作为从机,SPI模式下可用的USCI寄存器,USCI_Ax和USCI_Bx都有SPI模块,下面以USCI_Bx为例,介绍相关寄存器,UCB控制寄存器 UCBxCTL1(USCI_Bx control register),00:保留01:ACLK10:SMCLK11:SMCLK,0:不允许软件复位1:允许软件复位,0:前沿采样,后沿输出1:前沿输出,后沿采样,0:从机模式1:主机模式,00:三线制01:四线制,UCxSTE=1选择从机10:四线制,UCxSTE=0选择从机11:I2C模式,0:异步通信1:同步通信,0:时

8、钟空闲状态为低电平1:时钟空闲状态为高电平,UCB控制寄存器 UCBxCTL0(USCI_Bx control register),0:LSB first1:MSB first,0:8-bit data1:7-bit data,波特率控制寄存器 UCBxBR0和UCBxBR1,UCBxBR0是波特率发生器的低8位;UCBxBR1是波特率发生器的高8位.,串口中断允许寄存器 UCBxIE,0:发送中断禁止1:发送中断允许,0:接收中断禁止1:接收中断允许,串口中断标志寄存器 UCBxIFG,1:发送缓冲器为空,1:接收缓冲器为空,串口中断向量值寄存器 UCBxIV,00:没有中断02:Inter

9、rupt source:Data received;Interrupt flag:UCRXIFG;Interrupt priority:Highest 04:Interrupt source:Transmit buffer empty;Interrupt flag:UCTXIFG;Interrupt priority:Lowest,串口中断缓冲器 UCBxRXBUF和UCBxTXBUF,UCRXBUFx:接收缓冲器UCTXBUFx:发送缓冲器,应用示例,SPI主机与从机通过三线SPI接口通信,主机发送数据给从机,同时又接收从机发来的数据,发送数据从0 x01开始递增,从机接收到数据,就立马发出

10、,主机接到这个数据,进入中断如果发送和接收数据相同,则点亮LED灯,否则熄灭。波特率为500kbps,程序流程图,主机端口初始化,P8SEL|=BIT4+BIT5+BIT6;P8DIR|=BIT4+BIT5+BIT6;P1DIR|=BIT0+BIT1;P1SEL|=BIT0+BIT1;,选择P1.1P1.0端口为输出,选择P1.1P1.0端口为输出,选择P8.4P8.6为外设功能,选择P8.4P8.6端口方向为输出,主机SPI模块初始化,UCB1CTL1|=UCSWRST;UCB1CTL0|=UCMST+UCSYNC+UCCKPL+UCMSB;UCB1CTL1|=UCSSEL_2;UCB1BR

11、0=2;UCB1BR1=0;UCB1IE|=UCRXIE;UCB1CTL1&=UCSWRST,选择SMCLK,配置波特率,打开SPI中断,USCI_Bx复位释放,主机其他配置,MST_Data=0 x01;SLV_Data=0 x00;P1OUT|=BIT1;_delay_cycles(100);while(!(UC B1IFG,主机接收中断,#pragma vector=USCI_ B1_VECTOR_interrupt void USCI_ B1_ISR(void)switch(_even_in_range(UC B1IV,4)case 0:break;case 2:while(!(UC

12、B1IFG,判断发送缓冲是否为空,如果为空,标志位置位,则说明上个数据未发送完毕,等待直到数据发送完毕,如果接收与发送相同,点亮LED,发送下一个字符,从机端口初始化,P8SEL|=BIT4+BIT5+BIT6;P8DIR|=BIT4+BIT5+BIT6;P1REN|=BIT4;P1OUT|=BIT4;P1IES,使能P1.4内部电阻,选择P8.4P8.6为外设功能,选择P8.4P8.6端口方向为输出,P1.4上升沿捕获,进入中断,P1.4 IFG 清零,P1.4中断使能,主机SPI模块初始化,UCB1CTL1|=UCSWRST;UCB1CTL0|=UCSYNC+UCCKPL+UCMSB;UC

13、B1CTL1&=UCSWRST,USCI_Bx复位释放,从机接收中断,#pragma vector=USCI_ B1_VECTOR_interrupt void USCI_ B1_ISR(void)switch(_even_in_range(UC B1IV,4)case 0:break;case 2:while(!(UC B1IFG,判断发送缓冲是否为空,如果为空,标志位置位,则说明上个数据未发送完毕,等待直到数据发送完毕,发送下一个字符,从机主机开始工作提示中断,#pragma vector=PORT1_VECTOR_interrupt void Port_1(void)P1IFG,USCI

14、_Bx复位释放,打开SPI中断,/|XIN|-|-|RST XOUT|-|P1.2|-Data Out(UCA0SIMO)|LED Serial Clock Out(UCA0CLK),三线制主机模式多次发数据,每次发的数据都加1,第一次发1;同时也接收从机发过来的数据,第一次接0,依次加1.波特率为500kbps,#include unsigned char MST_Data,SLV_Data;int main(void)volatile unsigned int i;WDTCTL=WDTPW+WDTHOLD;/Stop watchdog timer UCA0CTL1|=UCSWRST;P1O

15、UT=0 x00;/P1 setup for LED/Enable USCI0 RX interrupt,P1OUT/CPU off,enable interrupts,#pragma vector=USCIAB0RX_VECTOR_interrupt void USCIA0RX_ISR(void)volatile unsigned int i;while(!(IFG2/Add time between transmissions to/make sure slave can keep up,/|XIN|-|XOUT|-Master-+-|RST|P1.2|Data In(UCA0SIMO)|P1.4|-Serial Clock In(UCA0CLK),三线从机模式,自己发自己收,数据循环,#include int main(void)WDTCTL=WDTPW+WDTHOLD;/Stop watchdog timer UCA0CTL1|=UCSWRST;while(!(P1IN/Enter LPM4,enable interrupts,#pragma vector=USCIAB0RX_VECTOR_interrupt void USCI0RX_ISR(void)while(!(IFG2,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号