首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

ADμC812的串行外设接口(SPI)及其应用(1)

ADμC812的串行外设接口(SPI)及其应用(1)

摘要:ADμC812是一种新型的集成12位数据采集系统。它的串行外设接口SPI(serial peripheral interface)可进行主机和多片从外围器件的信息传递,即主机对从机的控制及从机向主机提供各种信息等,从而实现系统之间的各种控制和操作。 关键词:ADμC812 串行通信 SPI串行端口 概述 ADμC812是一种全集成的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 fosc/64 注:从方式下这两位都清零另一个SPI寄存器是SPIDAT。对这一寄存器的写操作会产生从高位开始的一位位的数据发送。如果写操作发生在其他数据正在传递的过程中,那么WCOL将置位。如果写操作进行时没有其他数据在传递,SPIDAT中的数据将自动锁存到移位寄存器中,移位寄存器从高位开始发送数据,发送结束后输入的字节将锁存到SPIDAT中,可进行软件读出。 3.主模式 发送和接收可以同时工作在主模式下。主模式的显著特征是不论是发送还是接收始终有SCLOCK信号,SS信号不是必需的。因为SPI串口只能有一片主机,因而不存在主机的选择问题。 发送操作是由向SPIDAT中写数据而触发的。在主模式下,时钟信号的1次作用对应一位数据的发送(MISO)和另一位数据的接收(MOSI)。如图2所示,在主机中数据从移位寄存器中自左向右发出送到从机(MOSI),同时从机中的数据自右向左发到主机(MISO),经过8位时钟周期完成1个字节的发送。输入字节保留在移位寄存器中,此时ISPI自动置位(如果有中断设置,则产生中断),移位寄存器的数据将被锁存到SPIDAT中,此后对SPIDAT 的读操作将把数据读出。 将主机的SS和从机SS的相连的方式没有意义,因为P1.5只可作输入,所以主机的SS不能为从机的SS提供选通信号。为了解决这一问题,可利用主机其他输入/输出口线与从机的SS相连,实现选通控制,可以有多根口线控制多个从机。如果要读取主机SS的状态,需要将主机的SS与主机上另一根输入/输出口线相连,通过对该口线读操作获取主机SS的状态。 4.从模式 发送和接收可以同时工作在从模式下。
返回列表