专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
单片机—SPI接口简述(上)
2019-04-15 12:41
发布
生成海报
站内文章
/
PIC单片机
10749
0
1581
1
SPI
接口
SPI(Serial PeripheralInterface)
即串行外设接口,是一种高速同步的串行接口,可以串行接收或发送数据,支持主从机之间的全双工同步传输,传输速率可编程设定。在
SPMC65
系列单片机中,
SPI
模块有
4
个引脚
(
与端口
C
的低
4
位复用
)
,支持主模式和从模式。许多参数都可编程设定,如工作模式、传输速率、时钟相位和极性等。
SPI
模块特性如下。
·
4
个接口引脚。
SDO
为数据输出引脚
(
与
PC3
复用
)
;
SDI
为数据输入引脚
(
与
PC2
复用
)
;
SCK
为时钟输人/输出引脚
(
与
Pcl
复用
)
;
SSB
为从机选择引脚
(
与
PCO
复用
)
。
·支持全双工同步传输。
·
2
种工作模式:主模式、从模式。
·波特率:
8
种可编程传输速率.
CPU
时钟频率在
8 MHz
时,波特率最高可达
2 Mbps
。
·每次发送或接收的数据长度为
8
位。
·时钟相位和极性的可编程设定。
·数据采样时刻选择:可在数据输出中或数据输出末尾进行采样。
·
SPI
接收/发送缓冲器大小为
1B
。
SPMC65
系列单片机的
SPI
串行接口功能框图如图
6.1
所示。
SPI
接口经常用于和
E2PROM
通信。
图
6
.
2
即为
SPMC65
系列单片机与
93C46
通信的应用电路。
2
控制寄存器
1
.
SPI
控制寄存器
0 P_SPI_Ctri0($38
,
R
/
W)
写
SPI
控制寄存器
0 P_SPI_Ctrl0($38)
可以完成
SPI
模块的使能控制、主/从模式选择、时钟信号特性设置,以及
SPI
通信时钟频率选择等;该寄存器默认初始值为
#OOh
。有关
SPI
控制寄存器
0
的功能如表
6
.
2
所列。
bit7
SPIEN
:
SPI
使能位。该位置
1
后
PC[3:0]
作为
SPI
通信接口。
1=
使能
SPI
功能;
1=
禁止
SPI
功能。
bit6
MOD
:
SPI
运行模式。
1=
从机模式;
1=
主机模式。
bit5
SCKPHA
:
SPI
时钟相位选择,见
SPI
主模式时序。
bit4
SCKPOL
:
SPI
时钟极性选择,见
SPI
主模式时序。
bit3
SMS
:主机采样模式选择。
1=
输入数据输出末尾段进行采样;
0=
输入数据输出中部进行采样。
bit
[2:0]SCKSEL[2:0]
:主模式时钟选择位。
111=Fsys
/
128
110=Fsys
/
128
101=FSYS
/
128
100=Fsys
/
64
011=Fsys
/
32
010=Fsys
/
16
001=Fsys
/
8
000=Fsys
/
4
2
.
SPI
控制寄存器
1 P_SPLCtrl1($39
,
R
/
W)
SPI
模块的从模式的设置,以及采样时钟频率的选择等,可以通过写
SPI
控制寄存器
1 P_SPI_Ctrll($39)
完成设置。采样时钟的目的是为了防止在接收数据时受到尖脉冲的干扰,但是低的采样率会影响通信速度。建议采样时钟频率≥
4
×
SPI
时钟频率。
SPI
控制寄存器
1
默认初始值为
#02h
,该寄存器各位的功能如表
6
.
3
所列。
bit7
SMSEN
:
SPI
从模式选择输入。
1=PC0
作为
SSB
输入引脚
(SSB
:从模式选择,低有效
)
;
0=PC0
作为通用
I
/
O
引脚。
bit6
SWRST
:
SPI
软件复位。
写:
1=
产生脉冲复位
SPI
模块
(
寄存器设置除外
)
;
0=
无效。
读:总为
0
。
bit
[5:2]
保留。
bit
[1:0]SPISPCLK[1:0]
:采样时钟选择位。
11=Fsys
/
4
10=Fsys
/
2
01=Fsys
00=
不采样
3
.
SPI TX
/
RX
状态寄存器
P_SPI_status($3A
,
R
/
w)
SPMC65
系列单片机的
SPI
模块提供了发送和接收中断,可以通过读取
SPI TX
/
RX
状态寄存器
P_SPI_Status($3A)
查询
SPI
模块的中断标志;而写
SPI TX
/
RX
状态寄存器可以设置
SPI
中断的使能、清除
SPI
中断标志。该寄存器默认初始值为
#00h
,具体各个位的功能如表
6
.
4
所列。
bit7
SPIIF
:
SPI
中断标志。
读:
1=
有
SPI
中断发生;
0=
无
SPI
中断发生。
写:
1=
清除标志;
0=
无效。
bit6
SPIIEN
:
SPI
中断使能位。
1=
使能;
0=
禁止。
bit5
TXBF
:发送缓冲器满标志位。
1=
发送缓冲器满;
0=
发送缓冲器空。
bit
[4:1]
保留。
bit0
BUFFull
:接收缓冲器满并覆盖标志位。
l=
覆盖;
0=
接收缓冲器工作正常。
当前
SPI
接收到一个完整的数据时,会把接收缓冲器中上次接收到的数据覆盖,此时将
BUFFull
标志位置位。若上次接收到的数据被读取,则该标志位清零。
4
.
SPI
发送数据缓冲器
P_SPI_rrxData($3B
,
R
/
W)
SPMC65
系列单片机的
SPI
模块提供了发送和接收数据的缓冲器,这两个寄存器默认初始值为
#00h
,发送数据缓冲器的具体功能如表
6
.
5
所列。接收数据缓冲器的具体功能参考表
6
.
6
。
bit
[7:0]
SPITXDATA
:
SPI
发送数据。
读:总为
#00h
;
写:发送数据。
5
.
SPI
接收数据缓冲器
P_SPI_RxData($3C
。
R
/
w)
其具体功能如表
6
.
6
所列。
bit
[7:0]
SPIRxDATA
:
SPI
接收数据。
读:
SPI
接收数据;
写:无效。
Ta的文章
更多
>>
单片机—SPI接口简述(上)
0 个评论
热门文章
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮