文档介绍: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
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模块进行编程:
设置波特率预定标器寄存器SPPREn
设置SPCONn来恰当地配置SPI模块
或SD卡
设置作为nSS的GPIO,或SD卡生效
Tx数据—>检查Transfer Ready flag (REDY = 1)的状态,然后向SPTDATn写入数据。
Rx数据(1):SPCONn的TAGD位禁止=正常模式—>向SPTDATn写入0xFF,然后,确认READY置位,然后从读缓冲中读取数据。
Rx数据(1):SPCONn的TAGD位使能=Tx自动垃圾数据模式—>确认READY置位,然后从读缓冲中读取数据(然后自动启动发送)。
设置连接为nSS的GPIO引脚,解除MMC或SD卡
SPI传输格式
S3C2410支持4种不同的传输模式,图22-2显示了4种模式下SPICLK的波形
DMA模式下的发送过程
SPI配置为DMA模式
恰当地配置DMA
SPI请求DMA服务
DMA发送1字节数据到SPI
SPI发送数据到卡
返回第3步直到DMA计数器变为0
通过SMOD位配置SPI为中断或POLLING模式
DMA模式下的发送过程
通过设置SMOD位和TAGD位将SPI配置为DMA启动
恰当地配置DMA
SPI从卡上接收1字节数据
SPI请求DMA服务
DMA从SPI接收数据
自动向SPTDATn写入0xFF
返回第4步直到DMA计数器变成0
通过设置SMOD位和清零TAGD位将SPI配置为Polling模式
如果SPSTAn的REDY标记为1,读取最后1字节数据
注意:总共接收的数据=DMA TC的值+Polling模式下的最后一个数据(第9步)。DMA接收到的第一个数据是dummy的,因