ADμC841串行外设接口(SPI)和其应用.docVIP

  • 0
  • 0
  • 约4.95千字
  • 约 11页
  • 2018-12-11 发布于湖北
  • 举报
ADμC841的串行外设接口(SPI)及其应用 摘要:ADμC812是一种新型的集成12位数据采集系统。它的串行外设接口SPI(serial peripheral interface)可进行主机和多片从外围器件的信息传递,即主机对从机的控制及从机向主机提供各种信息等,从而实现系统之间的各种控制和操作。 ??? 关键词:ADμC841 串行通信 SPI串行端口 概述 ADμC841是一种全集成的12位数据采集系统。它在单个芯片内包含了高性能的自校准多通道ADC、2个12位DAC以及可编程的8位MCU(与8051兼容)。为便于MCU与各种外围设备进行通信,ADμC812提供了3种串行I/O端口:UART接口、I2C兼容的串行接口和串行外设接口(SPI)。其中,SPI接口是工业标准的同步串行接口,是一种全双工、三线通信的系统。它允许MCU与各种外围设备以串行方式(8位数据同时、同步地被发送和接收)进行通信。在SPI接口中,数据的传输需要1个时钟信号和两条数据线。 SPI可工作在主模式或从模式下。在主模式,每一位数据的发送/接收需要1次时钟作用;而在从模式下,每一位数据都是在接收到时钟信号之后才发送/接收。1个典型的SPI系统包括1个主MCU和1个或几个从外围器件。SPI接口可设置成在发送/接收1个字节的结束时产生1次中断。 主时钟可以通过编程而成为不同的状态,既可编程为4种不同主波特率的任一种,又可对时钟的极性和相位进行编程。 SPI也可用于那些需要比微控制器上的并行I/O端口更多输入或输出端的场合中。SPI提供了一种扩展I/O功能的最简单的办法,只需使用最少的微控制器引脚。 一、工作原理 1.SPI的信号说明 SPI系统使用4条线可与多种标准外围器件直接接口:串行时钟线(SCLOCK)、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOSI和低电平有效的从机选择线SS。 SCLOCK是主机的时钟线,为MISO数据的发送和接收提供同步时钟信号。每一位数据的传输都需要1次时钟作用,因而发送或接收1个字节的数据需要8个时钟的作用。主机的时钟是通过主机的硬件设置的,并和各个从机的SCLOCK相连。时钟的波特率、极性、相位是由SPICON(SPI控制寄存器)来设置的。 MISO是主机的输入/从机的输出数据线。主机的MISO应与从机的MISO相连进行高位在前的数据交换。 MOSI是SPI接口的SPI主机输出/从机输入数据引脚。这一引脚应当连接主微控制器的数据输出和从微控制器的数据输入端MOSI,进行高位在前数据的交换。 SS只在从方式中用于低电平选中从。SS对应的是P1.5,在初始化时P1口被设置为模拟输入,因而通过清除P1.5可将其设置为数据输入,才可完成主、从机的通信。 ??? 2.SPI的寄存器 SPI有2个相关寄存器:SPICON和SPIDAT,其中SPICON包含各种标志位、使能位、方式位及时钟位。各位都是可寻址的,如表1及表2所列。 表1 SPICON寄存器 ISPI WCOL SPE SPIM CPOL CPHA SPR1 SPR0 FFH 0 FEH 0 FDH 0 FCH 0 FBH 0 FAH 0 F9H 0 F8H 0 R/W R/W R/W R/W R/W R/W R/W R/W 表2 SPICON各位功能 位 功??????? 能 ISPI 中断标志位。 当发送和接收1字节数据完毕时自动置全。该位也可以通过软件控制。当于中断时,应当打开中断EA,将IE2.0置位。当执行中断服务程序时,硬件自动清除该位 WCOL 写冲突错误标志位。 当SPI正进行数据交换时,若向SPIDAT中写数据将产生写冲突错误,写入的数据将无效,原有交换继续执行。必须由软件清除 SPE SPI使能位。 SPE=0,I2C串口使能,SPI串口禁止; SPE=1,I2C串口禁止,SPI串口使能 SPIM 主模式选择位。 SPIM=0,SPI工作于从模式; SPIM=1,SPI工作于主模式 CPOL 时钟极性选择位。 CPOL=0,主机时钟有高到低的跳变读取数据,数据字节之间传输时,时钟处于高电平空闲状态; CPOL=1,主机时钟有低到高的跳变读取数据,各数据字节之间传输时时钟处于低电平空闲状态(见图1) CPHA 时钟相位选择位。 CPHA=0,传输数据的高位MSB在SS的降沿出现,在时钟第1个前沿读入;之后下一数据位在时钟后沿出现,在下一个前沿读入;直到8位数据读完。 CPHA=1,数据在时钟前沿出现,在同一时钟周期的后沿读入(见图1)。 读位还可控制从机的同步方式 SPR1 SPR0 SPI波行选择位。 SPR1? SPR0? 波特率 0? 0? fosc/4 0? 1? fosc/8 1? 0? fosc/32 1? 1?

文档评论(0)

1亿VIP精品文档

相关文档