scrub-hala
第
4
章
SPI
数据传输
本章主要内容包括:
?
SPI
的原理
?
SPI
模块的组成部分
?
SPI
模块的使用方法
?
片上
SP
I
的功能
?
SPI
传输的实现
< br>本章全面介绍
SPI
总线技术的原理和使用方法。读者在
学习本章之后能够全面了解
SPI
的原理和模块的组成部分。<
/p>
本章最后是
SPI
传输程序代码,
读者只需要稍微修改就可以应用
的其他程序。
4.1
SPI
模块概述
串行外围设备接口
SPI
(
Ser
ial
Parallel
Interface
)总线技术是
Motorola
公司推出的一种
p>
同步串行接口。
SPI
总线是一种三线同步
总线,由于其硬件能力很强,与
SPI
有关的软件相
当简单,使
CPU
有更多的时间来处理其他事务,
因此得到了广泛应用。
SPI
传输是
三总线结构,而且能够工作在主从模式下,图
4.1
是
SPI
总线模块结构图,
从图中看出,
SPI
总线模块包含有如下几部分:输入和输出部分,
< br>SPI
模块控制部分及波特
率产生和控制部分。下面将分
别介绍各个部分及其功能。
4.1.1
SPI
模块输入和输出
SPI
模块的输入和输出是
SPI
< br>模块与其它
SPI
模块或元件的接口,时钟信号决定着传
输
的速度。在进行
SPI
传输时,数据
先保存在
SPI
内部的数据寄存器,在
SPI
时钟的作用下,
数据通过移位寄存器依次出现在输出线上
,或从输入线上接收数据。因此,输入输出部分包
含了输入输出引脚和对应的数据寄存器
。
1
单片机与数据通信
SPI
控制寄存器
1
BIDI
ROE
SPI
控制寄存器
2
SPI
状态寄存器
SPIS
MODF
SPTEF
中断
输出
中断控制
从设备
控制
CPOL
CPHA
SCK
输入
SCK
输出
MOSI
S
PC0
MISO
SCK
SS
从设备波特率
主设备波特率
主设备
控制
相位与极
性控制
相位与极
性控制
波特率发生器
时钟
信号
计数器
移位
采样
时钟
时钟
波特率
端口
控制
逻辑
分频系数
时钟选择
SPPR
SPR
LSBE
F=1
SPI
波特率寄存器
LSBEF
=0
输
入
高
位
输
出
SPI
数
据寄存器
LSBEF=1
低
位
LSBEF=1
LSBEF=0
LSBEF=0
图
4.1
SPI
模块
1
.
SPI
输入输出引脚
SPI
模块可以工作在主模式或从模式下,如图
4.2
所示,主模式和从模式的输入引脚和
输出引脚上不同的,而且主从模式的选择是通过
SS
选择的
。
?
MO
SI
(主机输出从机输入引脚):在主模式下,该引脚输出数据到从机;在从模式
下,从机通过该引脚接收主机发送到数据。
?
MISO
(主机输入从机输出引脚):该引脚与
MOSI
引脚功能相反。
在主模式下,主
机通过该引脚接收从机发送到数据;在从模式下,该引脚输出数据到主机
。
?
SC
K(
串行时钟
)
:该引脚为串行数据传
输提供时钟信号,主模式下,该引脚向从机提
供设置信号,从模式下,该引脚接收主机输
出的时钟信号。
?
SS
(从机选择引脚):在主模式下,该引脚置高电平;在从模式下,若该引脚
置低
电平,则说明主机选择了该从机。
2
第
4
章
SPI
数据传输
主模式
SPI
移位寄存器
MISO
MOSI
SCK
波特率发生器
SS
MISO
MOSI
SCK
SS
VCC
GND
从模式
SPI
移位寄存器
图
4.2
SPI
全双工主从模式连接图
图
4.2
为
SPI
通信连接示意图,该图中,由于只有一个从机,故从机<
/p>
SS
引脚接地,主机
SS
引脚未用,接高电平。
2
.
SPI
移位寄存器和
SPI
数据寄存器(
SPIDR
)
SPI
移位寄存器实现并行数据和串行数据的相互转换,<
/p>
它是一个
8
位的寄存器,
从图
4.2
中可以看出,主机和从机的
SPIDR
通过
MISO
和<
/p>
MOSI
串联在一块,形成了一个
16<
/p>
位的移
位寄存器,传输数据时,发生方移位寄存器中的
8
位数据串行移入接收方的移位寄存器中。
p>
SPIDR
是在
SPI
传输中暂存输入或输出数据的寄存器,
它的作用类似于单片机串口中的
SBUF
缓存器。
SPIDR
的状态可以通过读取
SPI
状态寄存器的
SPIF
位和
SPTEF
位获得。
接
收数据时,当数据从移位寄存器移入
SPIDR
时
SPIF
置位;发送数据时,当
< br>SPIDR
空时,
SPTEF
置
位。可以在任意时刻读取该寄存器,通常情况下,当
SPIF
置
位时进行读取数据。
注意:当
SPI
F
标志置位但数据未被读取,且后续字节已接收到移位寄存器时,该字节将一直保
存到移位寄存器中,
该字节不影响
SPIDR
中的字节。
但是,
在该字节变为无效之
前,
SPIF
中断必须被相应,即必须读取
SPIDR
中的数据,否则,该字节将被忽略。
4.1.2
SPI
控制模块
SPI
控制模块是
SPI
传输系统
的控制核心,它控制着
SPI
传输过程,
SPI
中断,
SPI
时钟
选择以及
SPI
的传输波特率。该模块包含三个控
制寄存器和一个状态寄存器。
1
1.
SPI
控制寄存器
1
(
SPICR1
)
1
SPICR1
是
SP
I
模块中第一个控制寄存器,它控制着
SPI
< br>传输过程的禁止和有效,
SPI
SPI Block Guide V04.01
Motorola, Original Release Date: 21 JAN
2000, Revised: 14 JUL 2004
3
单片机与数据通信
模块是否产生中断,同时控制着
SCK
时钟信号的相
位和时钟选择,控制着移位过程中是先
移
LSB
还是先移
MSB
。复位后该寄存器的值为
00000100
,图
4.3
是该寄存器各位的描述。
D7
SPIE
D6
SPE
D5
SPTIE
D4
MSTR
D3
CPOL
D2
CPHA
D1
SSOE
D0
LSBEF
图
4.3 SPI
< br>控制寄存器
1
(
SPICR1<
/p>
)
?
SPIE
:
SPI
中
断允许控制位。
SPIE=1
:允许
SPI
中断;
SPIE=0
:禁止
p>
SPI
中断。
?
SPE
:
SPI
使能控制位。
SPE=1
表:许
SPI
传输,
SPI
传输的任何操作都必须使该位置
位;
SPE=0
:禁止
SPI
(
SPI
进入低功耗状态)。
?
SPTIE
:
SPI
传输中断允许控制位。该位允许在
< br>SPTEF
置位时产生中断。
SPTIE=1
< br>:允许
SPITEF
中断;
SP
TIE=0
表:禁止
SPITEF
中断
。
?
MS
TR
:
SPI
主模式
< br>/
从模式选择位。
MSTR=1
:
SPI
工作在主模式;
MSTR=0
:
SPI
工
作
在从模式。
?
CPOL
:
SPI
时钟极性控制位
。该位选择
SPI
时钟的极性。
在
p>
SPI
传输时,
传输双方必
须设置同样的
CPOL
值。主机在传输中,该位若发生
变化则会中止正在进行的传输。
CPOL =1
:
低电平时钟有效,
空闲时
SCK
信号为高电平;
CPOL =0
:
高电平时钟有效,
空闲时
SCK
信号为
低电平。
?
CPHA
:
SPI
采样时钟相位选择
。
CPHA =1
:在
SCK
时钟的偶数沿(
2
,
4
,
6
,…)
采
样数据;
CPHA =0
:在
SCK<
/p>
时钟的奇数沿(
1
,
3
,
5
,…)采样数据。
SS
输出选择位。
?
SSOE
:
该位只能在主模式下有效,
在
MODFEN
置
1
的情况下,
SSOE
的设置如表
4.1
所示。
表
4.1
MODFEN
0
0
1
1
SSOE
0
1
0
1
SS
输入
/
输出选择表
主模式
从模式
SS
无效
SS
无效
SS
输入
SS
输入
SS
作为模式错误标志输入
SS
作为从机的选择信号
SS
输入
SS
输入
?
LSBFE
:优先传输
LSB
控制位。
LSBF
E =1
:数据传输时,先传输
LBS
;
LSBFE =0
:
数据传输时,先
传输
MBS
。
2. SPI
控制寄存器
2
(
SPICR2
)
SPI
控制寄存器
< br>2
控制
SPI
的模式错误检测,
全双工传输和空闲模式下的
SPI
时钟信号
的停止与否。图
4.4
是该寄存器的各位的描述,复位后,
该寄存器值为
00000000
。
4
第
4
章
SPI
数据传输
D7
-
D6
D5
-
-
D4
MODFEN
图
4.4
D3
BIDIROE
D2
-
D1
SPISWAI
D0
SPC0 <
/p>
SPI
控制寄存器
2
(
SPICR2
)
?
MODFEN
:模式错误检测(
MODF
)允许位。
MODFEN =1
:
SS
p>
引脚作为
MODF
特
征输入;
MODFEN =0
:
SS
无效。详细功能见表
4.1
。
?
BIDIROE
:双向传输模式下输出缓冲区允许位。在双向传输时,该位控制着
MOSI
和
MISO
的输出缓冲区。
在主模式下,该位控制
MOSI
的输出缓冲区,在从模式下,<
/p>
该位控制
MISO
的输出缓冲区。
BIDIROE
=1
:使能输出缓冲区;
BIDIROE
=0
:禁止输出缓冲区。
?
SPISWAI
< br>:空闲模式下
SPI
停止控制位。
SPISWAI =1
:空闲状态下停止
SPI
时钟发
生器;
SPISWAI =0
:空闲状态下不停止
SPI
时钟发生器。
?
SPC0
:双向串行传输控制位。详细描述如表
4.2
。<
/p>
表
4.2
传输模式
正常传输
单线传输
正常传输
单线传输
SPC0
0
1
0
1
单线双向传输和正常传输下各控制位及各引脚的功能表
BIDIROE
×
0
1
×
0
1
MISO
脚状态
主机的操作
主机输入
无效
从机的操作
从机输出
从机输入
从机输入
< br>/
输出
MOSI
引脚状态
主机输出
主机输入
主机输入
< br>/
输出
从机输入
无效
说明:
单线传输是指主机和从机通过一条线,
主机用
MOSI
,
从机用
MISO
实现
单工或双工通信,
这种通信是由
SPC0
和
BIDIROE
共同控制的。
3
.
SPI
波特率控制寄存器(
SPIBR
)
p>
SPIBR
用于控制
SPI
传输的传输波特率,实际上,
SPI
的时钟信号频率取自处理器的晶
振频率,
SPIBR<
/p>
产生分频系数,从而控制了
SPI
时钟的
频率大小。图
4.5
为该寄存器各位的
描述,
SPPR2~SPPR0
为波特率预设系数;
SPR2~SPR0
为波特率选择系数。复位后,该寄存
< br>器值为
00000000
。
D7
-
D6
D5
SPPR2
SPPR1
图
4.5
D4
SPPR0
D3
-
D2
SPR2
D1
SPR1
D0
SPR0
SPI
波特率控制寄存器(
SPIBR2
)
波特率分频系数按如下公式计算:
x
?
(
SPPR
?
1
)
?
2<
/p>
spr
?
1
(
4.1
)
SPI
系统波特率按如下公式计算:
5
单片机与数据通信
B
?
BusClock
/<
/p>
x
(
4.2
)
注意:
主模式下,
CPOL
、
CPHA
、
SSOE<
/p>
、
LSBFE
、
MODFEN
、
SPC0
以及
SPPR2~SPPR0
、
SOR2~SPR0
任意位发生变化,都会中止现行的
SPI
传输,从而进入空闲状态。
4.
SPI
状态寄存器(
SPISR
)
p>
SPISR
描述了
SPI
操作过程中各种状态,
包括数据寄存器的空后不空的状
态和模式错误
诊断状态。图
4.4
为该
寄存器各位的描述。复位后,该寄存器值为
00100000
。
?
SPI
F
:
SPIF
中断标志。
在
SPIE
置
1
的情况下,
SPI
数据寄存器收到传输数据时,<
/p>
SPIF
D7
SPIF
D6
D5
-
SPTEF
D4
MODF
图
4.6
D3
-
D2
-
D1
-
D0
-
SPI
控制寄存器
2
(
SPISR
)
标志置
1
,
SPI
发生中断。该位由硬件清零。
SPIF =1
:
SPI
数据寄存器收到新数据,
该字节的传输完成;
SPIF =0<
/p>
:
SPI
传输过程未完成。
?
SPTEF
:
SPI
发送数据寄存器空中断标志。
SPTEF=1
表明传输数据寄存器空,可以向
数据寄存器写入数据;
SPTEF=0
表明数据寄存器中有要发
送到数据,此时不能向寄
存器中写入数据,否则写入的数据将被忽略。
< br>
?
MODF
:
SPI
模式错误标志。
4.2
SPI
传输模式
SPI
传输过程是单片机和外围器件之间的一种双向的、同步的串行传输。当控制寄
存器
SPICR1
中的位
SPE
置
1
时,
SPI
p>
模块的下列功能引脚有效:
?
从机选择引脚(
< br>SS
)
?
串行时钟(
SCK
)
?
主机输出
/
从机输入引脚(
MOSI
)
?
主机输入
/
从机输出引脚(
MISO
< br>)
SPI
数据寄存器是
SPI
系统中的重要部件,主机中的数据寄存器通过
< br>MOSI
和从机中的
数据寄存器通过
MISO
联接到一起形成一个
16
位的寄存器,
如图
4.2
所示。
SPI
传输过程就
是数据在
< br>16
位寄存器中移动
8
位,从而
完成主机和从机之间的数据交换,当主机输入时,
从机则输出数据,反之亦然。
SPI
模块可以选择工作主模式或从模式,当
SPICR1
中
MSTR
置
1
时,模块工作在主模
式
,
MSTR
清
0
时,模块工作在从模式。
6
第
4
章
SPI
数据传输
4.2.1
SPI
主模式
当
MSTR
置
1
时,
模块工作在主模式。
在一个
S
PI
传输系统中只有一个主模式模块,
称
为主机。
SPI
传输过程是在主机的控制下进行的。图
4.7
是一个多从机的
SPI
传输系统,主
机通过
SS
来选
择从机。下面分别介绍主模式下各功能引脚的作用和控制。
?
SPI
时钟(
SCK
):
SPI
传输系统的传输时钟是有主机提供的,
SCK
的频率决定了
传输系统的波特率。数据传输
速率是由波特率控制寄存器
SPIBR
控制的,通过预设
SPIBR
中的
SPPR2~SPPR0
p>
和
SPR2~SPR0
来设置系统传输的波
特率,具体见
4.1
节。
?
MOS
I
与
MISO
:
在主模式中,
MOSI
引脚作为数
据输出引脚,
MISO
引脚作为数
据输
入引脚。
?
SS
:
主模
式中,
当
MODFEN
和
SSOE
位置
1
时,
该引脚作为选择从机的输出引脚,
当该
SS<
/p>
变低时,与该引脚相连的从机被选中,进行
SPI
数据传输;当
SS
变高时,从
机进入空闲状态。
主机
从机
SCK
MOSI
单片机
MISO
P1.0
P1.1
P1.2<
/p>
SCK
MOSI
MISO
SS
SPI
设备
SCK
MOSI
MISO
SS
SPI
设备
SCK
MOSI
MISO
SS
SPI
设
备
图
4.7
SPI
多从机连接图
从图
4.7
中可以看出,主机是一个单片机或微处理器,它控制着这个
SPI
系统的传输。
主机可以包含
SPI
模
块,这样传输完全由
SPI
模块自动完成,单片机只需要向数据
寄存器中
写入数据或从数据寄存器中读取数据即可;
若主机不包
含
SPI
模块,
那么需要利用单片机的
I/O
端口模拟
SPI
系统来实现数据传输。从机是
SPI
设备或包含
SPI
模块的单片机。
7
单片机与数据通信
在传输过程中,
SCK
时钟沿的选择或采样时刻的选
择将在
4.3
节中介绍。
在
SPI
中,传输总是有主机启动的。如果使能<
/p>
SPI
操作(
SPE=1
)并选择作为主机,主
机对
SPI
数据寄存器的写操作将启动
SPI
时钟发生器和数据的传输
。在数据写入
SPIDR
之
后的半个到
一个
SCK
周期后,数据将出现在
MO
SI
引脚上。
另外,主机可以通过将
从机的
SS
引脚变为低来实现通信。写入主机
< br>SPIDR
寄存器的数
据从
MO
SI
引脚移出到从机的
MOSI
引脚。
同时从机
SPIDR
寄存器的数据从
M
ISO
引脚移
出到主机的
MISO
p>
引脚。
传输完一个字节后,
SPI
时钟发生器停止,
传输完成标志
SPIF
置
1
并产生一个中
断
(若
SPIE=1
)。主机和从机的
两个移位寄存器可以看作一个
16
位循环移位寄存器。当数据从
主
机移位传送到从机的同时,数据也以相反的方向移入。这意味着在一个移位周期中,主
机和
从机的数据相互交换。
注意:主
机在传输过程中,下列位
CPOL
,
C
PHA
,
SSOE
,
< br>LSBFE
,
MODFEN
,<
/p>
SPC
,
BIDIROE
,
SPPR2~SPPR0
和
SPR2~SPR2
中的任一位改变都会中止传输过程并使系统进入空闲状态。
4.2.2
SPI
从模式
当
MSTR
清
0
时,模块工作在从模式,称为从机。一个系统中可以有多个从机,从模
式下各引脚的
功能和控制如下:
?
SPI
时钟(
SCK
):从
模式中
SCK
作为输入引脚接收主机输出的
SCK
。
?
MOSI
与
MISO
:在从模式中,
MOSI<
/p>
引脚作为数据输入引脚,
MISO
引脚作
为数据输
出引脚。
?
SS
:从
模式中,
SS
为输入引脚,作为从机的选择信号。
SS
引脚必须在
SPI
传输
开
始前变为低,而且必须保持到
SPI
传输完成,
SS
变为高时,从机将进入空闲状态。
当
CPHA=1
时,
p>
SSOE
必须为
0
,
SS
引脚必须取反并且在每个连续的串行字节之间重新
设置为高电平。如果
SPIDR
寄存器在
p>
SS
未变化时执行写操作,则将导致一个写冲突错误。
所谓写冲突,就是在发送数据时,数据寄存器中的数据还没有发送出去,新的数据又写入数
据寄存器中,这时就会发生写冲突错误,在这种情况下,正在发送到数据将继续发送,新写
入的数据将丢失。当对主机或从机进行写冲突检测时,主机发生写冲突的情况是很罕见的,
因为主机拥有数据传输的完全控制权,但从机有可能发生写冲突,因为当主机启动传输时,
p>
从机无法进行控制。
当
< br>CPHA=1
时,
SSOE
可以
置
1
。
如果
S
SOE=0
,
SS
引脚可以在连续传输
之间保持有效。
这种方式适用于具有单固定主机和单固定从机驱动
MISO
数据线的系统。
注意:<
/p>
SPI
传输过程中,下列位
CPOL
p>
,
CPHA
,
SS
OE
,
LSBFE
,
< br>MODFEN
,
SPC0
和
p>
BIDIROE
,
8
第
4
章
SPI
数据传输
中的任一位改变都会中止传输过程并使系统进入空闲状态。
4.3
SPI
传输过程格式
SPI
传输中,数据能够同步的发送或接收,其中起关键作用的是同步时钟信号
SCK
,该
信号由主机发出,从机接收
并作为和主机的同步信号,可以选择在
SCK
的上升沿或下降沿
采样数据。
4.3.1
SCK
信号的相位和极性控制
SPICR1
中的两个位
CPOL
和
CPHA
用来控制
SC
K
信号的极性和相位,这两位可以通
过软件改变。
当
CPOL
复位时,
p>
SPI
系统以高电平为激活电平,在空闲状态下
SCK
为低电平;反之,
SPI
以
低电平为激活电平,空闲状态下
SCK
为高电平。
CPHA
置位时,
SPI
在
SCK
的偶数沿采样数据,
CPHA
复位时,
SPI
在
SCK
的奇数沿采
样数据,所以根
据
CPHA
的取值不同,
SPI
系统有两种传输格式。
4.3.2
CPHA=0
传输格式
在这种格式中,在
SCK
的第一个时钟沿进行数据的
采样,即主机中数据的第一位进入
从机中,同时,从机中数据的第一位进入主机中。
p>
说明:第一个
SCK
沿应至少落后于
SS
有效点半个时钟周期。
半个
SCK
周期之后,
p>
出现第二个
SCK
时钟沿,
同时先前的数据位锁存到移位寄存器中,
在这个
SCK
沿之后,主机中数据的第二位通过
MOSI
进入从机中
MOSI
引脚,与此同时,
从机中数据的第二位通过
MISO
进入主机中的
MISO
引脚,在第三个
SCK
< br>沿采样该位,并
在第四个
SCK
沿锁存到移位寄存器中。如是依次处理,
16
个
SCK
时钟沿后,传输数据的
8
位全部分别在奇数沿上锁存到移位寄存器中并在偶数沿进行移位。
在最后一位移到移位
寄存
器的同时,
该字节被传到系统的数据寄存器中。
该过程完成之后,
传输应完成如下两个功能:
?
先前在主机数据寄存器中的数据现
在应在从机的数据寄存器中,
而原先在从机中数据
寄存器中的数
据应在主机中。
9
单片机与数据通信
?
SPI
状
态寄存器中的
SPIF
位置位。
p>
图
4.8
是
CPH
A=0
时的传输格式。
该图给出了
CP
OL=1
和
CPOL=0
两种
SCK
的波形图。
SCK
(CPOL=0)
SCK
(CPOL
=1)
采样时刻
MOSI
MISO
p>
SS
LSBFE=0
LSBFE=1
MSB
LSB
D6
D
1
D5
D2
图
4.8
D4
D3
D3
D4
D2
D5
D1
D6
LSB
MSB
p>
SPI
传输格式
0
(
CPHA=0
)
同时,该图既可以作为主机的传输图,也可作为从机的传输图
。若作为主机,
MOSI
为数据
输出端
,
MISO
为数据输入端,若作为从机,
MOSI
为数据输入端,
MISO
为
数据输出端。
4.3.3
CPHA=1
传输格式
当
CPHA=1
时,
SPI
传输的采样点在
SCK
的偶数沿上。<
/p>
在该种模式中,同步信号出现半个
SC
K
周期后,
SCK
信号的第一个沿立即
有效。在这
第一个沿上,
若从机为输出
,
则从机数据的第一位传输到主机的输入引脚上。
再过半个
SCK
周期,第二个
SCK
沿出现在
SCK
引脚上,在这
个沿上,主机和从机都会采样数据,则被传
输数据的第一位被采样。当第三个
SCK
沿产生时,被采样的第一位数据由输入引脚移位到
< br>移位寄存器中,在这个
SCK
沿之后,主机的输出数据的
第二位传输到从机输入引脚上。在
第四个
SCK
沿上采样第二位,如此
16
个
SCK
沿之后,则一个数据传输完成。在这
16
个
SCK
沿中,系统在奇数沿上移位数据位,在偶数沿
上采样数据。图
4.9
为
CPHA=1
时的
SPI
传输格式的波形图。
10
第
4
章
SPI
数据传输
SCK
(CPOL=0)
SCK <
/p>
(CPOL=1)
采样时刻
MOSI
p>
MISO
SS
LSBFE=0
LSBFE=1
MSB
LSB
D6
D1
D5
D2
< br>D4
D3
D3
D4
D2
D5
D1
D6
LSB
MSB
图
4.9
SPI
传输格式
1
(
CPHA=1
)
该过程完成之后,传输应完成如下两个功能:
?
先前在主机数据寄存器中的数据现
在应在从机的数据寄存器中,
而原先在从机中数据
寄存器中的数
据应在主机中。
?
SPI
状态寄存器中的
SPIF
位置位。
4.4
利用
SPI
单片机实现多从机传输系统
在这个实例中,
< br>利用单片机
STC12C5410
中的
< br>SPI
模块实现一个主机和两个从机的传输
系统,同时主
机通过
RS-232
接口与计算机连接可实现与计算机的通信。
4.4.1
STC12C5410
简介
STC12C5410
是一款宏晶科技生产的增强型的
< br>8051
内核的单片机,该单片机具有一个
SPI
模块。图
4.10
为一款
28
引脚的单片机。
11
单片机与数据通信
P2.2
P2.3
RES
RxD/P3.0
TxD/P3.1
XTAL2
XTAL1
INT0/P3.2
INT1/P3.3<
/p>
T0/P3.4
T1/P3.5
P2.4
P2.5
Gnd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
28
27
26
25
24
23
22
21
20
19
18
17
16
15
VCC
p>
P2.1
P2.0
P1.7/SCLK
p>
P1.6/MISO
P1.5/MOSI
P
1.4/SS
P1.3
P1.2
P1.
1
P1.0
P3.7
P2.7
P2.6
图
4.10
STC12C5410
引脚图
在图
4.
10
中,
P1.4~P1.7
为单片机
的
SPI
模块管脚,与之相对应的还有
SPI
模块的各种
寄存器和
SPI
p>
传输的中断位。下面分别介绍。
1
.
SPI
控制寄存器
SPCTL
STC12C5410
的
SPI
模块只有一个是控制寄存器,地址为
85H
,复位后值为
00000100
。
< br>
D7
SSIG
D6
SPEN
D5
DORD
图
4.11
D4
MSTR
D3
CPOL
D2
CPHA
D1
SPR1
D0
SPR0
STC12C5410
的控制寄存器
表
4.3
为
该寄存器的各位的描述
表
4.3
位
D0
D1
D2
D3
D4
D5
D6
D7
符号
SPR0
SPR1
SPI
控制寄存器的位描述
描述
SPR0/SPR1
是时钟选择控制位
SPR1 SPR0
0 0
CPU_CLK/4
0 1 CPU_CLK /16
1 0 CPU_CLK/64
1
1 CPU_CLK/128
SPI
时钟相位选择位
(见
4.1
节)
SPI
时钟极性选择位(见
4.1
节)
主
/
从
模式选择(见
4.1
节)
SPI
数据顺序(同
4.1
节
LSBFE
)
< br>SPI
使能(同
4.1
节
SPE
)
分机选择
输出使能(同
4.1
节
SSOE
)
CPHA
CPOL
MSTR
DORD
SPEN
SSIG
说明:
SPI
传输协议最早为摩托罗拉公司制定的,但该协议并未成为国际标准
协议,故各器件厂
家并不是按摩托罗拉公司的
SPI
传输协议设计的
SPI
模块,而是有所差异。所以
,介绍的
STC12C5410
单片机的寄存器与前面的协议介
绍有所不同。
2
< br>.
SPI
状态寄存器
SPSTA
T
SPI
状态寄存器只有两个有效位,分别是
SPIF
和
WCOL
,如图<
/p>
4.12
,地址为
84H
,复位
12
scrub-hala
scrub-hala
scrub-hala
scrub-hala
scrub-hala
scrub-hala
scrub-hala
scrub-hala
-
上一篇:国际象棋术语表
下一篇:完型填空中六种常见逻辑关系