资源描述
其次十二章 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传输模式
方框图
SPI 操作
图22-1 SPI方框图
使用SPI接口,S3C2410能够与外部设备同时收发8位数据。一个串行时钟线SCK用于同步两根数据线来以为和采样信息。当SPI为主机时,可以通过设置SPPREn存放器的适当的位来把握传输频率,你可以通过调整波特率存放器的值修改它的的频率。假设SPI是从机,由另外的主机供给时钟。当用户向SPTDATn存放器中写入数据时,SPI接收/发送操作将同步开头。某些状况下,nSS应当在数据写入SPTDATn之前有效。
编程流程
当一个数据被写入SPTDATn 存放器时,假设ENSCK 和SPCONn 存放器中的MSTR 位被置位,则启动数据发送。
可以依据如下步骤对SPI模块进展编程:
1. 设置波特率预定标器存放器SPPREn
2. 设置SPCONn 来恰当地配置SPI模块
3. 向SPTDATn 写入10次0XFF 来初始化MCC 或SD 卡
4. 设置作为nSS的GPIO ,配置为低电平使MCC 或SD 卡生效
5. Tx数据—>检查Transfer Ready flag (REDY = 1的) 状态,然后向SPTDATn 写入数据。
6. Rx 数据(1):SPCONn 的TAGD 位制止=正常模式—>向SPTDATn 写入0xFF, 然后,确认READY 置位,然后从读缓冲中读取数据。
7. Rx 数据(1):SPCONn 的TAGD 位使能=Tx 自动垃圾数据模式—>确认READY 置位,然后从读缓冲中读取数据(然后自动启动发送)。
8. 设置连接为nSS的GPIO 引脚,解除MMC 或SD 卡
SPI 传输格式
S3C2410 支持4种不同的传输模式,图22-2显示了4种模式下SPICLK 的波形
DMA模式下的发送过程
1. SPI配置为DMA模式
2. 恰当地配置DMA
3. SPI恳求DMA效劳
4. DMA发送1字节数据到SPI
5. SPI发送数据到卡
6. 返回第3步直到DMA计数器变为0
7. 通过SMOD位配置SPI为中断或POLLING模式
DMA模式下的发送过程
1. 通过设置SMOD位和TAGD位将SPI配置为DMA启动
2. 恰当地配置DMA
3. SPI从卡上接收1字节数据
4. SPI恳求DMA效劳
5. DMA从SPI接收数据
6. 自动向SPTDATn写入0xFF
7. 返回第4步直到DMA计数器变成0
8. 通过设置SMOD位和清零TAGD位将SPI配置为Polling模式
9. 假设SPSTAn的REDY标记为1,读取最终1字节数据
留意:总共接收的数据=DMA TC的值+Polling模式下的最终一个数据〔第9
步〕。DMA接收到的第一个数据是dummy的,因此用户可以无视他。
B格式的SPI从接收模式
假设SPI工作在从接收模式,且SPI格式为B格式,则SPI操作将会失败:
READY信号——一个内部信号——在SPI_CNT计数到0之前变成高电平。因此在DMA模式下,DATA_READ信号在最终一个数据被锁存之前产生。
指南
1) DMA模式:这种模式不能用于B格式的SPI从接收模式
2) Polling 模式:在B格式的SPI从接收模式DATA_READ信号应当延迟1个
SPICLK相位
3) 中断模式:在B格式的SPI从接收模式DATA_READ信号应当延迟1个
SPICLK相位
SPI 特别存放器
SPI把握存放器SPCONn
SPI引脚把握存放器
当SPI系统使能时,除nSS引脚以外的方向引脚由SPCONn存放器中的MSTR位把握,nSS引脚的方向总是输入。
当SPI为主机时,nSS引脚用于检查多主错误,供给SPPIN的ENMUL位有效, 另外一个GPIO用于选择一个从设备。
假设SPI被配置为从设备,nSS引脚用于被主机选中作为从机。
SPIMISO和SPIMOSI数据引脚用于发送和接收串行数据。当SPI配置为主机时,SPIMISO是主机的数据输入线,SPIMOSI是主机的数据输出线,SPICLK是时钟输出线。在从机模式下,这些引脚起着相反的作用。在多主系统中,SPICLK、SPIMISO和SPIMOSI引脚are tied to configure a group respectively。
当其他SPI设备作为主机工作并选中S3C2410的SPI作为从机时,一个SPI主机可以经受一个 多主错误。假设检测到这个错误,将会马上实行如下动作,但是要想检测这个错误,必需先设置SPPINn的ENMUL位:
1. SPCONn的MSTR位强制清零以操作从模式
2. SPSTAn的MULF标记置位,并且SPI中断产生。
展开阅读全文