s3c2410-第二十二章 SPI(串行外围设备接口)
串行外设接口(SPI)总线解析及应用
串行外设接口(SPI)总线解析及应用
串行外设接口(SPI)总线是一个工作在全双工模式下的同步串行数据链路。
它可用于在单个主控制器和一个或多个从设备之间交换数据。
其简单的实施方案只使用四条支持数据与控制的信号线(图1):
虽然表1 中的引脚名称来自摩托罗拉开发的SPI 标准,但具体集成电路的SPI 端口名称往往与图1 中所示的不同。
图1:基本SPI 总线
表1:SPI 引脚名称分配
SPI 数据速率一般在1 到70MHz 的范围内,字长为从8 位及12 位到这两个值的倍数。
数据传输一般由数据交换构成。
在主控制器向从设备发送数据时,从设备也向主控制器发送数据。
因此主控制器的内部移位寄存器和从设备都采用环形设置(图2)。
图2:双移位寄存器形成一个芯片间的环形缓存器
在数据交换之前,主控制器和从设备会将存储器数据加载至它们的内部移位寄存器。
收到时钟信号后,主控制器先通过MOSI 线路时钟输出其移位寄存器的MSB。
同时从设备会读取位于SIMO 的主控器第一位元,将其存储在存储器中,然后通过SOMI 时钟输出其MSB。
主控制器可读取位于MISO 的从设备第一位元,并将其存储在存储器中,以便后续处理。
整个过程将一直持续到所有位元完成交换,而主控器则可让时钟空闲并通过/SS 禁用从设备。
SPI及其接口介绍
一、SPI接口简介SPI(Serial Peripheral Interface--串行外设接口)总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。
SPI有三个寄存器分别为:控制寄存器SPCR,状态寄存器SPSR,数据寄存器SPDR。
外围设备FLASHRAM、网络控制器、LCD显示驱动器、A/D 转换器(如图一所示)和MCU等。
图一、ADC中的SPI二、SPI接口一个典型的SPI模块的核心部件是一个8位的移位寄存器和一个8位的数据寄存器SPIDR。
通过SPI进行数据传送的设备有主SPI和从SPI之分,即SPI传送在一个主SPI和一个从SPI之间进行。
图二给出了两个SPI模块相互连接、进行SPI传送的示意图,图左边是一个主SPI,图右边为一个从SPI。
图二、典型SPI示意图在AN-877应用笔记中,对spi的接口定义与典型spi接口有所不同,AN-877使用一根线SDIO代替了典型SPI的MISO和MOSI,SS接口用CSB代替。
图三和图四分别是双线模式下单器件控制(主从一对一)和双线模式下多器件控制(主从一对多)。
图三:主从一对一控制图四:主从一对多控制但是原理都一样。
主从机之间一般由3个引脚组成:串行时钟引脚(SCLK)、串行数据输入/输出引脚(SDIO)、片选引脚(CSB)。
1、引脚数据输入/输出(SDIO):该引脚用作数据的输入/输出,用作输入还是用作输出具体取决于所发送的指令(读或写)以及时序帧中的相对位置(指令周期或数据周期)。
在读或写的第一个阶段,该引脚用作输入,将信息传递到内部状态机。
如果该命令为读命令,状态机把该引脚(SDIO)变为输出,然后该引脚将数据回传给外部控制器。
如果该命令为写命令,该引脚始终用作输入。
串行时钟(SCLK):SCLK由外部控制器提供,时钟频率最高为25MHZ。
所有数据的输入输出都是与SCLK同步的。
输入数据在SCLK的上升沿有效,输出数据在SCLK的下降沿有效。
《串行外设接口SPI》课件
目录
• SPI接口概述 • SPI接口工作原理 • SPI接口硬件设计 • SPI接口软件编程 • SPI接口调试与测试 • SPI接口应用实例
01
SPI接口概述
SPI接口定义
SPI,全称为Serial Peripheral Interface,即串行外设接口,是
被片选的从设备的片选引脚。
04
SPI接口软件编程
SPI接口初始化设置
1 2 3
初始化流程
介绍SPI接口的初始化步骤,包括时钟配置、模 式选择、数据位宽、从设备选择等。
SPI模式选择
解释SPI的四种工作模式(模式0、模式1、模式2 、模式3)以及如何根据应用需求选择合适的模 式。
数据传输顺序
说明SPI数据传输的顺序,包括MSB(最高位) 和LSB(最低位)的顺序以及如何通过配置进行 更改。
一种同步串行通信协议。
它主要用于微控制器和外设之间 的通信,如EEPROM、ADC、
DAC等。
SPI接口通过四根线实现通信: SCK(串行时钟)、MOSI(主 设备输出/从设备输入)、MISO (主设备输入/从设备输出)和
NSS(片选)。
SPI接口特点
01
02
03
04
高速通信
SPI接口支持高速数据传输, 最高可达几十Mbps。
高速数据传输
SPI接口的数据传输速度较快,可以满足无线通信设备之间实时数据 传输的需求。
THANKS
感谢观看
详细描述
在选择SPI接口芯片时,需要根据实际需求进行评估。例如,如果需要高速通信 ,可以选择具有高速模式的芯片;如果对功耗有严格要求,可以选择低功耗模式 的芯片。此外,还需要考虑芯片的供应商、价格等因素。
S3C2410系列I2S总线接口功能及应用开发
I2S总线结构配置
随着第一个WS信号的改变,WSP在SCK信号的下降沿 重设计数器。在“1 out of n”译码器对计数器数值进行译码 后,第一个串行的数据(MSB)在SCK时钟信号的上升沿被 存放进入B1,随着计数器的增长,接下来的数据被依次存 放进入B2到Bn中。在下一个WS信号改变的时候,数据根 据WSP脉冲的变化被存放进入左(声道)锁存器或者右(声道) 锁存器,并且将B2一Bn的数据清除以及计数器重设,如果 有冗余的数据则最低位之后的数据将被忽略。注意:译码 器和计数器(虚线内的部分)可以被一个n比特移位寄存器所 代替。
I2S总线规范
I2S总线拥有三条数据信号线:
信 号 线
SCK: (continuous serial clock) 串行时钟 对应数字音频的每一位数据,SCK都有1个脉冲。SCK的 频率=2×采样频率×采样位数。 WS: (word select) 字段(声道)选择 用于切换左右声道的数据。WS的频率=采样频率。 SD: (serial data) 串行数据 用二进制补码表示的音频数据。 对于系统而言,产生SCK和WS的信号端就是主导装置,用 MASTER表示,简单系统示意图如图1所示:
支持32(2×16)字节发送和接收(FIFO);
具有正常和DMA两种传输模式。
S3C2410X
2 I S总线结构
图7 IIS总线框图 各部分功能如下:
S3C44B0X I2S总线结构
总线接口、寄存器组、和状态机(BRFC):总线接口逻辑和FIFO的 访问由状态机控制;
两个三位的预分频器(IPSR):一个被用作IIS总线接口的主时钟发 生器,另一个被用作外部编码解码的时钟发生器;
I2S总线规范
信 号 线 ( 续 )
第三章S3C2410通用接口
I2C简介——总线时序
I2C总线数据传送时,每传送一个字节数据后都必 须有应答信号(A).主控器接收数据时,如果要结束 __ 通信时,将在停止位之前发送非应答信号( ). A
SDA SCL
A 应答信号
A 非应答信号
I2C简介——总线时序
4种操作模式:主发送模式,主接收模式,从发送模式 和从接收模式.
信号连线 图3-3 接口的电气特性 逻辑1:-5~-15V 逻辑0:+5~+15V 噪声容限2V 接口的物理结构 DB-25,插头在DCE端,坐在DTE端;PC DB-9
串口——物理层标准
RS-485
逻辑1 +(2~6)V 逻辑0 -(2~6)V 最高传输率为10Mbps 抗噪声性能强 最大传输距离可达3000m
串口—— 终端函数
Linux下的头文件 打开串口
int fd; fd=open("/dev/ttyS0",O_RDWR); if(fd== -1 ) {perror("提示错误!") ;}
设置串口
termios 数据结构 波特率设置 校验位设置 停止位设置
读/写串口 关闭串口
串口——物理层标准
RS-232C串行接口
SDA入
I2C简介——总线时序
在数据传送过程中,必须确认数据传送的开始和 结束,这通过起始和结束信号识别.
SDA SCL S 起始信号 P 结束信号
发送起始信号后传送的第一字节数据具有特别的意 义,其中前七位为从机地址,最后一位为读写方向位 (0表示写,1表示读).
S 从器件地址 R/W
第一字节
…
IIC总线
I2C简介——电气连接
I2C总线接口均为开漏或开集电极输出,因此需要 为总线增加上拉电阻Rp.
s3c2410中文手册
s3c2410中文手册简介S3C2410 是一种嵌入式处理器,由韩国三星电子公司设计和制造。
它是一款高度集成的 ARM 架构芯片,广泛应用于各种移动设备中,如智能手机、平板电脑、PDA 等。
本手册将详细介绍 S3C2410 芯片的特性、功能和使用方法,帮助开发人员更好地理解和应用该芯片。
芯片特性S3C2410 芯片具有以下主要特性:1.ARM920T 内核: S3C2410 芯片采用了 ARM920T 内核,它是一种高性能、低功耗的 32 位 RISC 处理器。
ARM920T 内核支持 ARMv4T 指令集,并具有强大的计算和处理能力。
2.高度集成的外设: S3C2410 芯片内集成了许多常用的外围设备,包括 UART、SPI、I2C、PWM 等。
这些外设可满足各种应用需求,简化了系统设计和连接。
3.多种接口: S3C2410 芯片提供了丰富的接口,如LCD 控制器、触摸屏控制器、SDIO 控制器等。
这些接口允许连接各种外部设备,如显示屏、输入设备、存储卡等,实现更丰富的功能。
4.低功耗设计: S3C2410 芯片采用先进的低功耗设计技术,具有很低的静态功耗和动态功耗。
这使得它非常适合于移动设备,延长了电池寿命。
芯片功能GPIOS3C2410 芯片提供了多个 GPIO 管脚,用来实现输入和输出功能。
GPIO 管脚可以通过软件配置为输入模式或输出模式,并可以设置电平状态。
开发人员可以利用GPIO 实现各种功能,如控制 LED 灯、读取按键状态等。
UARTS3C2410 芯片内集成了多个 UART 模块,用于串口通信。
每个 UART 模块都提供了数据传输和接收的功能,并支持多种通信协议,如 RS232、RS485 等。
开发人员可以使用 UART 实现与外部设备的串口通信。
LCD 控制器S3C2410 芯片具有强大的 LCD 控制器,支持多种显示模式和分辨率。
LCD 控制器可以控制显示屏的像素点,实现图形显示和文字显示功能。
SPI协议串行外设接口协议的解析
SPI协议串行外设接口协议的解析SPI(Serial Peripheral Interface)协议是一种串行外设接口协议,常用于在微控制器和外部设备之间进行数据通信。
本文将对SPI协议的基本原理、通信格式以及常见应用进行解析。
一、SPI协议概述SPI协议是一种同步的全双工通信协议,其核心思想是通过使用四根线(片选信号、时钟、输入数据、输出数据)来实现设备之间的通信。
SPI可以同时支持单主机和多从机的通信方式,能够实现高速数据传输,并且相对简单易用。
二、SPI工作原理SPI工作在主-从模式下,一个主设备可以与一个或多个从设备进行通信。
SPI协议中的主设备控制时钟信号,指示数据传输的开始和结束,从设备根据时钟信号来读取或写入数据。
SPI通信时,主设备通过选择片选信号来选择要与其通信的从设备。
三、SPI通信格式1. 时钟极性(CPOL)和相位(CPHA):SPI通信协议的时钟极性和相位可以根据设备的要求进行设置,以适应不同设备的通信模式。
CPOL定义了在空闲状态下(时钟未激活)时钟信号的电平,高电平或低电平;CPHA定义了数据采样的时机,以时钟的上升沿还是下降沿为准。
2. 数据位顺序:SPI通信中数据传输的位顺序可以是LSB(Least Significant Bit,最低有效位)或MSB(Most Significant Bit,最高有效位)。
3. 传输速度:SPI通信的速度由主设备的时钟频率控制,可以根据从设备的要求和系统的稳定性来进行设置。
四、SPI应用场景SPI协议广泛应用于各种外设和传感器之间的通信,以下是几个常见的应用场景:1. 存储器芯片:SPI协议被广泛应用于存储器芯片(如Flash和EEPROM)和微控制器之间的通信,实现数据的读写操作。
2. 显示模块:很多液晶屏和OLED显示模块都采用SPI协议与主控制器进行通信,传输图像数据和命令。
3. 传感器:许多传感器(如温度传感器、加速度传感器等)通过SPI协议与控制器进行数据传输,实现实时数据采集和处理。
S3C2410中文手册:SPI总线
S3C2410中文手册:SPI总线SPI总线概述S3C2410的串行外设接口SPI可以进行串行数据传输接口。
S3C2410具有两个SPI,每个SPI具有两个8位移位寄存器用于独立地发送和接收数据。
在SPI传输过程中,数据时同时发送和接收的(全双工),8位串行数据传输频率由相应的控制寄存器设置,如果希望仅发送数据,则接收数据can be dummy,同样如果只希望接收数据,则应该发送dummy '1' data。
有4个与SPI传输相关的引脚:SCK (SPICLK0,1)、MISO (SPIMISO0,1)数据线、MOSI (SPIMOSI0,1) 数据线、SS (nSS0,1)-低电平有效。
特性— SPI 2.11版协议兼容8位发送移位寄存器—— 8位接收移位寄存器— 8位预定标器逻辑Polling、中断、DMA传输模式—方框图图22-1 SPI方框图SPI操作使用SPI接口,S3C2410能够与外部设备同时收发8位数据。
一个串行时钟线SCK用于同步两根数据线来以为和采样信息。
当SPI为主机时,可以通过设置SPPREn寄存器的适当的位来控制传输频率,你可以通过调整波特率寄存器的值修改它的的频率。
如果SPI是从机,由另外的主机提供时钟。
当用户向SPTDATn寄存器中写入数据时,SPI接收/发送操作将同步开始。
某些情况下,nSS应该在数据写入SPTDATn之前有效。
编程流程当一个数据被写入SPTDATn寄存器时,如果ENSCK和SPCONn寄存器中的MSTR位被置位,则启动数据发送。
可以根据如下步骤对SPI模块进行编程:1. 设置波特率预定标器寄存器SPPREn2. 设置SPCONn来恰当地配置SPI模块3. 向SPTDATn写入10次0XFF来初始化MCC或SD卡4. 设置作为nSS的GPIO,配置为低电平使MCC或SD卡生效5. Tx数据—>检查Transfer Ready flag (REDY = 1)的状态,然后向SPTDATn写入数据。
S3C2410 I2C SPI接口
S3C2410 I2C总线接口Ø I2C(Inter-Integrated Circuit)总线 是由Philips半导体公司于上世纪80年为了 实现在同一块电路板上的各个器件进行简 单的消息传递而设计的。
Ø 开始信号:SCL为高电平时,SDA由高 电平向低电平跳变,开始传送数据Ø 结束信号:SCL为高电平时,SDA由低电平向 高电平跳变,结束传送数据Ø 传输状态与空闲状态:当SCL为高电平 时,保持SDA高电平(或低电平)不变 ,那么I2C总线保持在传输状态或者空 闲状态。
Ø 应答信号:接收数据的组件在接收到 8bit数据后,向发送数据的I2C器件发 出特定的低电平脉冲,表示已收到数 据。
Ø 2. I2C总线的操作 Ø 控制字节 在起始条件之后,必须是器件的 控制字节,其中高四位为器件类型识别符 (不同的芯片类型有不同的定义),接着 三位为片选,最后一位为读写位,当为1时 为读操作,为0时为写操作。
Ø 写操作 分为“字节写”和“页面写”两种操作。
对于页面写,根据芯片的一次装载的字节 不同有所不同。
Ø 读操作 有三种基本操作:当前地址读、随 机读和顺序读三种。
Ø 3. I2C总线地址地址 0000000 0 0000000 1 0000001 X 0000010 X 0000011 X 00001XX X 11110XX X 11111XX X 用途 广播地址 起始字节 CBUS 地址(一种三线总线,和 I2C 不同) 保留地址,或者用做其他总线 保留地址 高速主设备地址(第三位用来确定主设备) 10 位地址模式 保留地址S3C2410 I2C总线功能模块 Ø S3C2410支持多主控的I2C串行总线接口。
Ø 一条专门的串行数据线(SDA)和一条时 钟信号线(SCL)在所有连接到I2C总线上 的主控组件和周边设备之间进行信息的传 送。
嵌入式 串行外设接口(SPI)
MSB LSB MSB
6 6
5 5
4 4
3 3
2 2
1 1
LSB LSB②
14
SPI数据传输格式
CPOL=1.CPHA=0(格式A)
Cycle SPICLK MOSI MISO MSB MSB 6 6 5 5 4 4 3 3 2 2 1 1 LSB LSB
1
2
3
4
5
6
7
8
CPOL=1.CPHA=1(格式B)
SPI接收数据寄存器(SPRDATn) 接收数据寄存器中存放SPI口接收到的数据。
寄存器 SPTDAT0 SPTDAT1 地址 0x59000014 0x59000034 读/写状态 R R 功能描述 SPI0接收数据寄存器 SPI1接收数据寄存器 复位值 0x00 0x00
9
SPI引脚控制寄存器(SPPINn)
6
SPI控制寄存器(SPICONn)
寄存器 SPCON0
SPCON1
地址 0x59000000
0x59000020
读/写状态 R/W
R/W
功能描述
SPI0控制寄存器
复位值 0x00
0x00
SPI1控制寄存器
该寄存器控制SPI的工作模式。 SPCONn[6:5] (SMOD) :SPTDAT的读/写模式。 00:查询模式;01:中断模式;10:DMA模式;11:保留。 SPCONn[4] (ENSCK):时钟SCK允许/禁止位。 0:禁止SCK;1:允许 SCK。 SPCONn[3] (MSTR):主/从选择位。 0:从设备;1:主设备。 SPCONn[2] (CPOL): 时钟极性选择位。 0:时钟高电平起作用;1:时钟低电平起作用。 SPCONn[1] (CPHA): 时钟相位选择位。 0:数据采样从第一个时钟边沿开始 1: 数据采样从第二个时钟边沿开始 SPCONn[0] (TAGD):决定是否只需要接收数据。 0:正常模式 1;自动发送虚拟数据
SPI串行外设接口概念及通信原理
SPI串行外设接口概念及通信原理一、SPI简介SPI串行外设接口(Serial Peripheral Interface,SPI)是微控制器和外围IC (如传感器、ADC、DAC、移位寄存器、SRAM等)之间使用最广泛的接口之一。
SPI是一种同步、全双工、主从式接口。
来自主机或从机的数据在时钟上升沿或下降沿同步。
主机和从机可以同时传输数据。
SPI接口可以是3线式或4线式。
下面就随着云里物里来看下SPI的4线和通信原理。
二、SPI有几根线?SPI通常有4根线(四线制),可实现全双工通信【SCK】:串行时钟(Serial Clock)【MOSI】:主发从收信号(Master Output,Slave Input)【MISO】:主收从发信号(Master Input,Slave Output【CS/CS】:片选信号(Slave Select)SPI应用也有3根线(三线制),实现半双工通信。
三、SPI通信原理SPI模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,通过CPHA(时钟相位)、CPOL(时钟极性)来控制设备的通信模式。
时钟极性CPOL是用来配置SCK的电平在哪种状态时是有效状态或者空闲状态。
时钟相位CPHA是用来配置数据采样是在哪个边沿:CPHA=0,数据采样是在第1个边沿,数据发送在第2个边沿CPHA=1,数据采样是在第2个边沿,数据发送在第1个边沿CPOL=0,当SCLK=0时处于空闲态,有效状态就是SCLK处于高电平时CPOL=1,当SCLK=1时处于空闲态,有效状态就是SCLK处于低电平时CPHA=0、CPOL=0:此时空闲态时,SCK处于低电平,数据采样是在第1个边沿,就是SCK由低电平到高电平的跳变,所以数据采样是在上升沿(准备数据),(发送数据)数据发送是在下降沿。
CPHA=0、CPOL=1:此时空闲态时,SCK处于高电平,数据采集是在第1个边沿,即SCK由高电平到低电平的跳变,所以数据采集是在下降沿,数据发送是在上升沿。
一文读懂SPI串行外设接口
一文读懂SPI串行外设接口
SPI 总线系统是一种同步串行外设接口,它可以使MCU 与各种外围设备
以串行方式进行通信以交换信息。
正是由于有了通信方式,我们才能够通过芯
片控制各种各样的外围器件,实现很多“不可思议”的现代科技。
这里将以SPI
为题,从编程角度来介绍SPI 总线。
下面就随网络通信小编一起来了解一下相
关内容吧。
1、SPI 协议简介
图1 SPI 接口
SPI 是英语Serial Peripheral interface 的缩写,顾名思义就是串行外围设备接口。
是Motorola 首先在其MC68HCXX 系列处理器上定义的。
SPI 是一种高速的,全双工,同步的通信总线,由于其简单易用的特性,现在很多的nor
flash 和nandflash 芯片集成了这种通信协议,也就是我们说的SPI flash。
2、应用及现状
图2 SPI 应用
SPI flash 芯片应用十分广泛,在很多电子产品上面或多或少都有它的踪影,如手机、数码、液晶显示器、机顶盒、电脑主板等。
最近,有消息透露,苹果
新手机iPhone 8 将导入采用编码型快闪存储(NOR Flash),让已经处于缺货状态的NOR 芯片更为恼火,另外据存储业者透露,今年NOR 芯片供给缺口将可能
扩大至20%。
3、解剖SPI 总线
SPI 接口一般使用4 条线通信,MISO 主设备数据输入,从设备数据输出。
MOSI 主设备数据输出,从设备数据输入。
SCLK 时钟信号,由主设备产生。
CS 从设备片选信号,由主设备控制。
(完整版)SPI_IP串行外围设备接口毕业设计
摘要SPI是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。
SPI是一种高速的、全双工、同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间。
SPI Flash 主要用于代码存储或者其他非易失性存储应用。
本设计目的在于完成一个SPI Flash Controller的设计,相当于在上层的Driver 和Flash 器件之间建立起一座连接的桥梁。
控制器接收上层配置的并行数据和控制信号,经过控制器处理之后以串行的方式发送至Flash 器件以完成对Flash 的相应的读写等操作。
本设计采用Verilog HDL 语言,在Vi 编辑器中完成设计,并用EDA tool对设计进行了编译、模拟、仿真和调试。
最后又在FPGA上对结果进行了实践证明。
完成上述全部工作之后,再从功能、面积优化和成本缩减等方面对设计进行分析总结本次毕业设计中获得的宝贵经验。
关键词: 闪存Verilog HDL 串行并行FPGAABSTRACTSPI (Serial Peripheral interface) is a serial periphery slave interface. SPI is a fast, duplex and synchronism communication bus. And there are only 4 pins on the chip of SPI. It is so convenient for wire layings of PCB. SPI Flash is ideal for code download as well as storing nonvolatile voice, text and data.In this design, I the parallel data will be processed, and transmitted to the flash by SPI interface as serial signal in order to execute the read or write operation to the flash. The program actualizes in Verilog HDL, designed in VI under linux. EDA tools are used to simulate, synthesize and debug such as Debussy. After the design’s RTL code and simulation, this design made up a system with other IP on a FPGA platform in order to check the design. After all the work above finished, this paper analyze the function, area and cost of the SPI flash controller, summarize the experience of the graduation design. Keywords:Flash Verilog SERIAL COLLATERAL FPGA毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。
SPI简介
SPI简介SPI(Serial Peripheral Interface--串行外设接口)总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。
SPI有三个寄存器分别为:控制寄存器SPCR,状态寄存器SPSR,数据寄存器SPDR。
外围设备包括FLASHRAM、网络控制器、LCD显示驱动器、A/D转换器和MCU等。
SPI总线系统可直接与各个厂家生产的多种标准外围器件直接接口,该接口一般使用4条线:串行时钟线(SCLK)、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOSI和低电平有效的从机选择线NSS(有的SPI接口芯片带有中断信号线INT、有的SPI接口芯片没有主机输出/从机输入数据线MOSI)。
SPI接口的全称是"Serial Peripheral Interface",意为串行外围接口,是Motorola首先在其MC68HCXX系列处理器上定义的。
SPI接口主要应用在EEPROM、FLASH、实时时钟、AD转换器,还有数字信号处理器和数字信号解码器之间。
SPI接口是在CPU和外围低速器件之间进行同步串行数据传输,在主器件的移位脉冲下,数据按位传输,高位在前,低位在后,为全双工通信,数据传输速度总体来说比I2C 总线要快,速度可达到几Mbps。
接口信号(1)MOSI –主器件数据输出,从器件数据输入(2)MISO –主器件数据输入,从器件数据输出(3)SCLK –时钟信号,由主器件产生,最大为fPCLK/2,从模式频率最大为fCPU/2 (4)NSS –从器件使能信号,由主器件控制,有的IC会标注为CS(Chip select)在点对点的通信中,SPI接口不需要进行寻址操作,且为全双工通信,显得简单高效。
多个从器件硬件连接示意图在多个从器件的系统中,每个从器件需要独立的使能信号,硬件上比I2C系统要稍微复杂一些。
SPI接口在内部硬件实际上是两个简单的移位寄存器,传输的数据为8位,在主器件产生的从器件使能信号和移位脉冲下,按位传输,高位在前,低位在后。
串行外设接口(SPI)总线时序详解
串行外设接口(SPI)总线时序详解SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB 的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。
SPI 是一个环形总线结构,由ss(cs)、sck、sdi、sdo 构成,其时序其实很简单,主要是在sck 的控制下,两个双向移位寄存器进行数据交换。
SPI 总线是Motorola 公司推出的三线同步接口,同步串行3 线方式进行通信:一条时钟线SCK,一条数据输入线MOSI,一条数据输出线MISO;用于CPU 与各种外围器件进行全双工、同步串行通讯。
SPI 主要特点有:可以同时发出和接收串行数据;可以当作主机或从机工作;提供频率可编程时钟;发送结束中断标志;写冲突保护;总线竞争保护等。
SPI 总线有四种工作方式(SP0,SP1,SP2,SP3),其中使用的最为广泛的是SPI0 和SPI3 方式。
SPI 模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。
如果CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。
时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。
如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。
SPI 主模块和与之通信的外设音时钟相位和极性应该一致。
SPI 时序详解---SPI 接口在模式0 下输出第一位数据的时刻SPI 接口有四种不同的数据传输时序,取决于CPOL 和CPHL 这两位的组合。
图1 中表现了这四种时序,时序与CPOL、CPHL 的关系也可以从图中看出。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二十二章SPI(串行外围设备接口)22.1概述S3C2440A的SPI接口可以接口串行数据传输。
S3C2440A包括两个SPI接口,每个接口分别有两个8位的数据移位器用于发送和接收。
在SPI发送期间,数据同时发送(串行移出)和接收(串行移入)。
在某个频率下的8位串行数据由相应的控制寄存器设置决定。
如果你仅想发送,接收数据可以保持缄默。
另外如果你只想接收,你应该发送缄默数据1。
22.2特点-支持两个通道的SPI-兼容SPI协议(2.11版本)-8位发送移位寄存器-8位接收移位寄存器-8位预定标器-查询,中断和DMA传输模式-容忍5V输入,除nSS22.3模块图22.4SPI操作使用SPI接口,S3C2440A可以和外部设备接收发送8位数据。
一个串行时钟线来同步两个用于信息移位和采用的数据线。
当SPI是主机时,传输频率通过设定SPPREn寄存器的相应位来控制。
你可以修改其频率来调节波特率数据寄存器的值。
如果SPI是从属,其他的主机提供时钟。
当程序员写字节数据到SPTDATn寄存器时,SPI发送接收操作会同时开始。
在这种情况下,在写字节数据到SPTDATn之前,nSS应该被激活。
22.4.1编程步骤当一个字节的数据写入SPTDATn寄存器,如果ENSCK、SPCONn寄存器的MSTR被置位,SPI开始发送。
你可以使用一个典型的编程步骤来操作SPI卡。
对SPI模块编程,按照一下基本步骤(1)时钟波特率预定标器寄存器(SPPREn)(2)设置SPCONn来合理配置SPI模块(3)写数据0xFF到SPTDATn10次,目的是初始化MMC或SD卡。
(4)设置一个GPIO引脚,其作为nSS,低电平是激活MMC或SD卡。
(5)发送数据->检查传输准备标志(REDY=1)的状态,然后写数据到SPTDATn(6)接收数据(1):SPCONn的TAGD位是无效=normal mode->写0xFF到SPTDATn,然后确认REDY置1,然后从读缓存读取数据(7)接收数据(2):SPCONn的TAGD位是有效=Tx Auto Garbage Data mode ->确认REDY置1,然后从读缓存读取数据(然后自动开始传输)(8)设置一个GPIO引脚,其作为nSS,高电平是解除激活MMC或SD卡。
22.4.2SPI传输格式S3C2440A支持4种不同格式来传输数据。
如图22-2所示对于SPICLK的四种波形。
22.4.3对于DMA的发送步骤(1)SPI配置为DMA模式(2)DMA作相应配置(3)SPI请求DMA服务(4)DMA发送1个字节数据到SPI(5)SPI发送数据到卡(6)返回步骤3直到DMA计数器为0(7)SPI配置SMOD位为中断或查询模式22.4.4对于DMA的接收步骤(1)SPI配置为有SMOD位的DMA开始和TAGD位置1(2)DMA做相应的配置(3)SPI从卡接收1个字节的数据(4)SPI请求DMA服务(5)DMA从SPI接收数据(6)知道写数据0xFF到SPTDATn(7)返回步骤4直到DMA计数为0(8)SPI配置为有SMOD位的查询模式和清除TAGD位(9)如果SPSTAn的READY标志置位,则读最后一个字节数据注:总的接收数据=DMA TC值+查询模式下的最后数据(步骤9)第一个DMA接收数据是无效的,用户可以忽略掉。
22.5SPI特殊寄存器(1)SPI控制寄存器(SPCONn)(2)SPI状态寄存器(SPSTAn)(3)SPI引脚控制寄存器(SPPINn)(4)SPI波特率预定标器寄存器(SPPREn)(5)SPI发送数据寄存器(SPTDATn)(6)SPI接收数据寄存器(SPRDATn)22.5.1SPI控制寄存器SPI CONTROL REGISTER(SPCONn)寄存器地址读写描述复位值SPCON00x59000000R/W SPI通道0控制寄存器0x00SPCON10x59000020R/W SPI通道1控制寄存器0x00 SPCONn位描述初始值SPI Mode Select (SMOD)[6:5]决定SPTDAT如何读写00=查询模式01=中断模式10=DMA模式11=reserved00SCK Enable (ENSCK)[4]决定SCK是否使能(仅对主机)0=无效1=有效Master/Slave Select(MSTR)[3]决定主从模式0=从1=主Note:在从模式下,应该留有时间给主机初始化发送接收Clock Polarity Select(CPOL)[2]决定高态有效或低态有效时钟0=高态有效1=低态有效Clock Phase Select(CPHA)[1]从两个基本不同的传输格式中选一0=格式A1=格式BTx Auto Garbage Data mode enable (TAGD)[0]决定是否需要正在接收的数据0=normal mode1=Tx auto garbage data mode注:在正常模式下,如果你仅想接收数据,你可以改传输无效数据0xFF22.5.2SPI 状态寄存器SPI STATUS REGISTER (SPSTAn )22.5.3SPI 引脚控制寄存器SPI PIN CONTROL REGISTER (SPPINn )当SPI 系统使能,除nSS 外引脚的方向由SPCONn 寄存器的MSTR 位控制。
nSS 的方向始终为输入。
当SPI 为主机时,nSS 引脚用于检测多主机错误,提供SPPIN 的ENMUL 位是激活的,其他GPIO 应该用于选择从设备。
如果SPI 配置为从设备,nSS 引脚用来选择SPI 为另一个主设备的从设备。
SPIMISO (MISO )和SPIMOSI (MOSI )数据引脚是用来接收和发送串行数据。
当SPI 配置为主设备,SPIMISO (MISO )是主数据输入线,SPIMOSI (MOSI )是主数据输出线,SPICLK (SCK )是时钟输出线。
当SPI 为从设备,这些引脚翻转角色。
在一个多主机系统中,SPICLK (SCK )、SPIMISO (MISO )和SPIMOSI (MOSI )引脚分别捆绑配置成组。
当另一个SPI 设备工作在主设备状态并选择S3C2440A SPI 为从设备,一个主SPI 将经历多主机错误。
当错误被检测时,接下来的措施被立即执行。
但是如果你想检测这个错误,你必须预先设置SPPINn 的ENMUL 位。
(1)在从模式下SPCONn 的MSTR 位被强制设置为0来操作寄存器地址读写描述复位值SPSTA00x59000004R/W SPI 通道0状态寄存器0x01SPSTA10x59000024R/W SPI 通道1状态寄存器0x01SPCONn位描述初始值保留[7:3]Data CollisionError Flag (DCOL)[2]如果当传输在过程中且通过读SPSTAn 清除,写SPTDAT 或读SPRDATn ,则该标志置位。
0:不检测1:冲突错误检测Multi Master Error Flag (MULF)[1]如果当SPI 配置为主机时nSS 信号为低态有效,该标志置位。
0:不检测1:多主机错误检测0Transfer Ready Flag (REDY)[0]该位是指SPTDATn 或SPRDATn 准备发送或接收。
写数据到SPTDATn 该位自动清除。
0:不准备1:数据接收发送准备1寄存器地址读写描述复位值SPPIN00x59000008R/W SPI 通道0引脚控制寄存器0x00SPPIN10x59000028R/W SPI 通道1引脚控制寄存器0x00SPPINn 位描述初始值保留[7:3]Multi Master error detect Enable (ENMUL)[2]当SPI 系统是主设备,nSS 引脚用作输入来侦测多主机错误0:无效(通用目的)1:多主机错误侦测使能0保留[1]保留0Master Out Keep (KEEP)[0]决定MOSI 驱动或当1个字节发送完成时释放(仅对主机)0:释放1:驱动先前电平1(2)SPSTAn 的MULF 标志置位,且产生SPI 中断。
22.5.4SPI 波特率预定标器寄存器SPI BAUD RATE PRESCALER REGISTER (SPPREn )注:波特率应该小于25MHz 。
22.5.5SPI 发送数据寄存器SPI TX DATA REGISTER (SPTDATn )22.5.6SPI 接收数据寄存器SPI RX DATA REGISTER (SPRDATn )寄存器地址读写描述复位值SPPRE00x5900000C R/W SPI 通道0波特率预定标器寄存器0x00SPPRE10x5900002CR/WSPI 通道1波特率预定标器寄存器0x00SPPREn 位描述初始值Prescaler Value[7:0]决定SPI 时钟率波特率=PCLK /2/(Prescaler 的值+1)0x00寄存器地址读写描述复位值SPTDAT00x59000010R/W SPI 通道0发送数据寄存器0x00SPTDAT10x59000030R/W SPI 通道1发送数据寄存器0x00SPTDATn 位描述初始值Tx Data Register[7:0]该区域包含通过SPI 通道发送的数据0x00寄存器地址读写描述复位值SPRDAT00x59000014R/W SPI 通道0接收数据寄存器0xFF SPRDAT10x59000034R/W SPI 通道1接收数据寄存器0xFFSPRDATn 位描述初始值Rx Data Register[7:0]该区域包含通过SPI 通道接收到的数据0xFF。