嵌入式串行外设接口(SPI)全解

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

6
SPI控制寄存器(SPICONn)
寄存器 SPCON0
SPCON1
wk.baidu.com
地址 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)介绍
作者:卢兴
1
主要内容

SPI接口 寄存器介绍 编程步骤
2
SPI接口概述


S3C2410包含有两个串行外围设备接口(SPI口), 每个SPI口都有两个分别用于发送和接收的8位移位寄 存器,在一次SPI通信当中数据被同步发送(串行移 出)和接收(串行移入)。8位串行数据的速率由相关 的控制寄存器的内容决定。如果只想发送,接收到的 是一些虚拟的数据。另外,如果只想接收,发送的数 据也可以是一些虚拟的“1”。 SPI 结构框图如下图所示。
预分频器 0 状态寄存器 0
MULF DCOL REDY
从设备
INT 0 / INT1 REQ0 / REQ1 ACK0 / ACK1
APB 1/F 0 (INT DMA 0)
8
SPIMISO 1
LSB MSB 从设备 主设备 从设备 主设备
发送移位寄存器 1 8
MSB LSB
接收1 SPIMOSI 1
8
数据寄存器

SPI发送数据寄存器(SPTDATn) 发送数据寄存器中存放待SPI口发送的数据。
寄存器 SPTDAT0 SPTDAT1 地址 0x59000010 0x59000030 读/写状态 R/W R/W 功能描述 SPI0发送数据寄存器 SPI1发送数据寄存器 复位值 0x00 0x00
3
8 8
SPIMISO 0
LSB MSB 从设备 主设备 MSB LSB 从设备 主设备
发送移位寄存器0 Date Bus 接收移位寄存器0
接收0 SPIMOSI 0
引脚控制逻辑 0
发送0 SPICLK 0 时钟 nSS 0 片选
PCLK
8位分频器 0
SPI Clock 主设备
Clock 时钟逻辑 0
7
SPI状态寄存器(SPSTAn)
寄存器 SPSTA0 SPSTA1

地址 0x59000004 0x59000024
读/写状态 R R
功能描述 SPI0状态寄存器 SPI1状态寄存器
复位值 0x01 0x01
SPSTAn[7:3] 保留。 SPSTAn[2] (DCOL):数据碰撞错误标志。 0:未检测到碰撞;1:检测到碰撞错误。 SPSTAn[1] (MULF):多主设备错误标志。 0:未检测到该错误;1:发现多主设备错误。 SPSTAn[0] (REDY):是否准备好发送或接收。 0:未准备好;1:准备好。
接收移位寄存器1
引脚控制逻辑 1
发送1
PCLK
8位分频器 1 预分频器1 状态寄存器 1
REDY DCOL MULF
SPI Clock 主设备 CPOL CPHA
Clock 时钟逻辑 1
SPICLK 1 时钟
nSS 1
从设备
片选
INT0 / INT1 REQ0 / REQ1 ACK0/ ACK1
APB 1/F 1 (INT DMA 1)


当一个SPI系统被允许时,nSS之外的引脚的数据传输方向都由 SPCONn的MSTR位控制,nSS引脚总是输入。 当SPI是一个主设备是,nSS引脚用于检测多主设备错误(如果 SPPIN的ENMUL位被使能),另外还需要一个GPIO 来选择从 设备。 如果SPI被配置为从设备,nSS引脚用来被选择为从设备。

SPI接收数据寄存器(SPRDATn) 接收数据寄存器中存放SPI口接收到的数据。
寄存器 SPTDAT0 SPTDAT1 地址 0x59000014 0x59000034 读/写状态 R R 功能描述 SPI0接收数据寄存器 SPI1接收数据寄存器 复位值 0x00 0x00
9
SPI引脚控制寄存器(SPPINn)
4
SPI接口特性



与SPI接口协议v2.11兼容; 8位用于发送的移位寄存器; 8位用于接收的移位寄存器; 8位预分频逻辑; 查询、中断和DMA传送模式;
5
SPI接口操作

通过SPI接口,S3C2410可以与外设同时发送/接收8 位数据。串行时钟线与两条数据线同步,用于移位和 数据采样。如果SPI是主设备,数据传输速率由 SPPREn寄存器的相关位控制。可以修改频率来调整 波特率寄存器的值。如果SPI是从设备,其他的主设 备提供时钟,向SPDATn寄存器中写入字节数据, SPI发送/接收操作就同时启动。某些情况下片选nSS 要在向SPDATn寄存器中写入字节数据之前激活。
10
SPI引脚控制寄存器(SPPINn)
寄存器 SPPIN0
SPPIN1

地址 0x59000008
0x59000028
读/写状态 R/W
R/W
功能描述
SPI0控制寄存器
复位值 0x02
0x02
SPI1控制寄存器


SPPINn[7:3] 保留。 SPPINn[2] (ENMUL):多主设备错误检测使能 0:禁止该功能;1:允许该功能。 SPPINn[1] 保留,总为1。 SPPINn[0] (KEEP):主设备发送完一个字节后继续驱动还是释 放。 0:释放;1:继续驱动。 SPIMISO和SPIMOSI数据引脚用于发送或者接收串行数据。如 果SPI口被配置为主设备,SPIMISO就是主设备的数据输入线, SPIMOSI就是主设备的数据输出线,SPICLK是时钟输出线;如 果SPI口被配置为从设备,这些引脚的功能就正好相反。在一个 多主设备的系统中,SPICLK、SPIMOSI、SPIMISO都是一组 一组单独配置的。
相关文档
最新文档