串行外设接口(spi)协议芯片资料

上传人:F****n 文档编号:88062184 上传时间:2019-04-18 格式:PPT 页数:41 大小:1.46MB
返回 下载 相关 举报
串行外设接口(spi)协议芯片资料_第1页
第1页 / 共41页
串行外设接口(spi)协议芯片资料_第2页
第2页 / 共41页
串行外设接口(spi)协议芯片资料_第3页
第3页 / 共41页
串行外设接口(spi)协议芯片资料_第4页
第4页 / 共41页
串行外设接口(spi)协议芯片资料_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《串行外设接口(spi)协议芯片资料》由会员分享,可在线阅读,更多相关《串行外设接口(spi)协议芯片资料(41页珍藏版)》请在金锄头文库上搜索。

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

2、允许一个主机操作总线,并且同时只能与一个从机通信。主机控制数据的传输过程。 目前应用中的数据速率可达Mbps级。,SPI总线可在软件的控制下构成各种简单的或复杂的系统: 1个主MCU和几个从MCU 几个从MCU相互连接构成多主机系统(分布式系统) 1个主MCU和1个或几个从I/O设备 ,SPI典型结构如下:,SPI总线结构,SPI工作模式,主机模式: 当器件作为主机时,使用一个IO引脚拉低相应从机的选择引脚(STE),传输的起始由主机发送数据来启动,时钟(SCK)信号由主机产生。通过MOSI发送数据,同时通过MISO引脚接收从机发出的数据。 从机模式: 当器件作为从机时,传输在从机选择引脚(S

3、TE)被主机拉低后开始,接收主机输出的时钟信号,在读取主机数据的同时通过MISO引脚输出数据。,SPI电气连接,以线SPI为例,其通信时需要的4个引脚分别为:,作SPI主机时,STE要接上拉电阻,STE引脚作用,STE:从机模式发送接收允许控制引脚,控制多主从系统中的多个从机。该引脚不用于3线SPI操作,可以在4线SPI操作中使多主机共享总线,避免发生冲突。 4线SPI操作主模式中,STE的含义如下: SIMO和SCLK被强制进入输入状态 SIMO和SCLK正常操作 4线SPI操作从模式中,STE的含义如下: 允许从机发送接收数据,SIMO正常操作 禁止从机发送接收数据,SIMO被强制进入输入

4、状态,SPI数据传输,数据传输格式: 通常是高位(MSB)在前,低位(LSB)在后。一些增强型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,CP

5、HA=0 (4)SPI3:CPOL=1,CPHA=1,传输模式,时钟极性(CPOL)定义了时钟空闲状态电平,对传输协议没有重大影响。 CPOL=0:时钟空闲状态为低电平。 CPOL=1:时钟空闲状态为高电平。,传输模式,时钟相位(CPHA)定义数据的采样时间。 CPHA=0:在时钟的第一个跳变沿(上升沿或下降沿)进行数据采样。 CPHA=1:在时钟的第二个跳变沿(上升沿或下降沿)进行数据采样。,SPI接口内部结构,特点,优点: (1)接口简单,利于硬件设计与实现。 (2)时钟速度快,且没有系统开销。 (3)相对抗干扰能力强,传输稳定。,特点,缺点: (1)缺乏流控制机制,无论主器件还是从器件均

6、不对消息进行确认,主器件无法知道从器件是否繁忙。因此,需要软件弥补,增加了软件开发工作量。 (2)没有多主器件协议,必须采用很复杂的软件和外部逻辑来实现多主器件架构。,通用串行通信接口(USCI)模块,通用串行通信接口(USCI)模块支持多种串行通信模式。不同的USCI 模块支持不同的模式 USCI_Ax 模块支持: UART 模式 IrDA 通信的脉冲整形 LIN 通信的自动波特率检测 SPI 模式 USCI_Bx 模块支持: I2C 模式 SPI 模式,MSP430模块特点,MSP430的SPI模块有如下特点: 支持3线或4线SPI操作 支持7位或8位数据格式 接收和发送有单独的移位寄存器

7、 接收和发送有独立的缓冲器 接收和发送有独立的中断能力 时钟的极性和相位可编程 主模式的时钟频率可编程 传输速率可编程 支持连续收发操作 支持主从方式,主模式,MSP430 USCI作为主机、外围设备作为从机 图,从模式,外围设备作为主机,MSP430 USCI作为从机 图,UCSI串行时序,同步串行通信时序,UCMSB=1,SPI模式下可用的USCI寄存器,USCI_Ax和USCI_Bx都有SPI模块,下面以USCI_Bx为例,介绍相关寄存器,应用示例,SPI主机与从机通过三线SPI接口通信,主机发送数据给从机,同时又接收从机发来的数据,发送数据从0x01开始递增,从机接收到数据,就立马发出

8、,主机接到这个数据,进入中断如果发送和接收数据相同,则点亮LED灯,否则熄灭。,程序流程图,主机端口初始化,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端口方向为输出,UCB1CTL1 |= UCSWRST; UCB1CTL0|=UCMST+UCSYNC+UCCKPL+UCMSB; UCB1CTL1 |= UCSSEL_2; UCB1BR

9、0 = 0x02; UCB1BR1 = 0; UCB1IE |= UCRXIE; UCB1CTL1 &= UCSWRST,主机SPI模块初始化,选择SMCLK,配置波特率,打开SPI中断,USCI_Bx复位释放,主机其他配置,MST_Data = 0x01; SLV_Data = 0x00; P1OUT |= BIT1; _delay_cycles(100); while (!(UC B1IFG,从机选择引脚,延时,判断发送缓冲是否为空,如果为空, 标志位置位,则说明上个数据未发送完毕, 等待直到数据发送完毕,发送第一个字符,主机接收中断,#pragma vector=USCI_ B1_VEC

10、TOR _interrupt void USCI_ B1_ISR(void) switch(_even_in_range(UC B1IV,4) case 0: break; case 2: while (!(UC B1IFG ,判断发送缓冲是否为空,如果为空, 标志位置位,则说明上个数据未发送完毕, 等待直到数据发送完毕,如果接收与发送相同,点亮LED,发送下一个字符,从机端口初始化,P8SEL |= BIT4+BIT5+BIT6; P8DIR |= BIT4+BIT5+BIT6; P1REN |= BIT4; P1OUT |= BIT4; P1IES ,使能P1.4内部电阻,P1.4输出为1

11、,选择P8.4P8.6为外设功能,选择P8.4P8.6端口方向为输出,P1.4上升沿捕获,进入中断,P1.4 IFG 清零,P1.4中断使能,主机SPI模块初始化,UCB1CTL1 |= UCSWRST; UCB1CTL0 |= UCSYNC+UCCKPL+UCMSB; UCB1CTL1 &= 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: whi

12、le (!(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 B1IFG ,判断发送缓冲是否为空,如果为空, 标志位置位,则说明上个数据未发送完毕, 等待直到数据发送完毕,发送下一个字符,从机主机开始工作提示中断,#pragma vec

13、tor=PORT1_VECTOR _interrupt void Port_1(void) P1IFG ,USCI_Bx复位释放,打开SPI中断,主机端口初始化库,/ Set P1.1 for slave reset GPIO_setOutputHighOnPin(_MSP430_BASEADDRESS_PORT1_R_, GPIO_PORT_P1, GPIO_PIN1 ); / Set P1.0 to output direction GPIO_setAsOutputPin(_MSP430_BASEADDRESS_PORT1_R_, GPIO_PORT_P1, GPIO_PIN0 ); /

14、P3.5,4,0 option select GPIO_setAsPeripheralModuleFunctionInputPin(_MSP430_BASEADDRESS_PORT8_R_, GPIO_PORT_P8, GPIO_PIN4 + GPIO_PIN5 + GPIO_PIN6 );,主机SPI模块初始化库,/ Initialize Master returnValue = SPI_masterInit(_MSP430_BASEADDRESS_USCI_B1_, SPI_CLOCKSOURCE_SMCLK, UCS_getSMCLK(_MSP430_BASEADDRESS_UCS_),

15、 SPICLK, SPI_MSB_FIRST, SPI_PHASE_DATA_CHANGED_ONFIRST_CAPTURED_ON_NEXT, SPI_CLOCKPOLARITY_INACTIVITY_HIGH ); if (STATUS_FAIL = returnValue) return; / Enable SPI module SPI_enable(_MSP430_BASEADDRESS_USCI_B1_); / Enable Receive interrupt SPI_enableInterrupt(_MSP430_BASEADDRESS_USCI_B1_, SPI_RECEIVE_

16、INTERRUPT);,主机其他配置库,/ Now with SPI signals initialized, reset slave GPIO_setOutputLowOnPin( _MSP430_BASEADDRESS_PORT1_R_, GPIO_PORT_P1, GPIO_PIN1 ); / LED On GPIO_setOutputHighOnPin( _MSP430_BASEADDRESS_PORT1_R_, GPIO_PORT_P1, GPIO_PIN0 ); / Wait for slave to initialize _delay_cycles(100); / Initialize data values transmitData = 0x00; /

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号