-
DSP
与单片机通信的多种方案设计
摘
要:基于嵌入式系统发展的需要,
提出
TMS320VC5402 DSP
与
AT89C51
单片机通信的三种设计方案。利用
TMS3
20VC5402
的多通道缓冲串口
MCBSP
分别实现
TMS320VC5402
与
AT89C51
的
SCI
和<
/p>
SPI
串行通信,以及通过
TMS320
VC5402
的
8
位增强主机接口
p>
HPI
一
8
实现<
/p>
TMS320VC5402
与
AT89C
5l
并
行通信。就硬件接口电路和软件编程进行详细的阐述。<
/p>
关键词:单片机
DSP
MCBSP HPI
将
p>
DSP
和单片机构成双
CPU
处理器平台,可以充分利用
DSP
对大容量
数据和复杂算法的处理能力,以及单片机接口的控制能力。而
DSP
p>
与单片机之
间快速正确的通信是构建双
CP
U
处理器的关键问题。下面就此问题分别设计串
行
SCI
、
SPI
和并行
p>
HPI
三种连接方式。
1
串行通信设计与实现
1 1 SCI
串行通信设计
1.1.1
多通道缓冲串行口
McB
SP
原理
TMS320VC5402(
p>
简称
VC5402)
提供了
2
个支持高速、全双工、带缓冲、
多种数据格式等优点
的多通道缓冲串行口
McBSP
。
MC
ESP
分为数据通路和控制通
路。①数据通路负责完成数据的收
发。
CPU
或
DMAC
能够向数据发送寄存器
DXR
写入数据,
DXR
中的数据通过发送移位寄存器
XSR
输出到
DX
引脚。
DR
引脚接收
数据到接收移位寄存器
RSR
,再复制到接收缓冲寄存器
RBR
,最
后复制到数据接
收寄存器
DRR
。这两
种数据多级缓冲方式使得数据搬移和片外数据通信能够同
时进行。②控制通路负责内部时
钟产生,帧同步信号产生,信号控制和多通道
选择。另外.还具有向
CPU
发送中断信号和向
DMAC
发送同步事件的功能。
MCBSP
时钟和帧同步信号通过
CLKR
、
CLKX
、
FXR
、
FSX
引脚进行控制,接收器和
发送器可以相互独立地选择外部时钟和帧同步信号,也可以
选择由内部采样率
发生器产生时钟和帧同步信号。帧同步脉冲有效表示传输的开始。
p>
1.1.2 SCI
串行接口设计
p>
设置
VC5402
的
McRSP
输出时钟和帧同步信号由内部采样率发生器产
生,
内部数据时钟
CLKG
和帧同步信号
F
SG
驱动发送时钟
CLKX
和帧同步<
/p>
FSX(CLKXM=l
,
FSXM=l
,
FSGM=1)
,输入时钟也由内部
采样率发生器产生,内部
数据时钟
CLKG
驱动接收时钟
CLKR(CLKRM=1)
,同时由
CPU
时钟驱动采样率发生
器
(CLKSM=1)
。考虑到
AT89C51(
简称
C51)
串口发送数据帧中第
l
位为起始位,
因此可以利用该位驱动输入帧同步
信号
FSR
,同时要置忽略帧同步信号标志为
< br>1
。其中
FSG
帧同步脉冲宽度
=(FWID 1)?CLKG
;
FS
G
帧同步脉冲周期
=(FPER
1)
?CLKG
;采样率发生器分频系数
(
采样率
=
波特率
)=FIN
/
(CLKGDV
1)
。
SCI
串
口连接如图
l
所示。
1.1.3
波特率不一致的处理
p>
VC5402
初始化
(
以图
1
为例
)
:
STM#SRGRl,SPSAl STM#ooFEH
,
SPSDl
;
FSG
帧同步脉冲宽度位为
1
个
C
LKG
;波特率为
100
MHz
/
(0X(OFF)=392 156
b
/
s
STM#SRGR2
,
SPSAl STM#3D00H,SP
SDl;
内部采样率发生
器时钟由
CP
U
驱动
C51
初始化:
MOV
TMOD,#20H MOVTLl,#FFH
MOVTHl
,
#FFH
;
C51
波特
率
=(2S
MOD
/
32)*(fosc
/
12)[1
/
(256
一初值
)]
一
24 509
b
/
s MOV
SCON
,
#50H
;置串口方式<
/p>
l
,每一帧
10
位数据.允许接收
MOV
PCON
,
#80H
;设置
SMOD=1 VC5402
波
特率/
C51
波特率
=(392
156
/
24
509)=16
.
000 49
VC5
402
每发送
16
位数据,
C51
只采样
1
位数据。
在
VC5402
存储器中
开辟一个空间
对每次发送的
8
位数据进行扩展,
1<
/p>
位扩为
16
位,
0
为
0000H
,
l
为
FFFFH
,共扩为
128
位。在数据头部填加
16
位起始位
0000H
,数据尾部填加
< br>停止位
FFFFH
。在
VC54
02
发送控制寄存器
XCR
中设置
p>
XWDLEN=000(1
字含
8
位
)
,即可将要发送的
8
位数据封装成
1
帧
< br>10
字的数据。这也符合
C51
串口
1
方式下
1
帧
10
位的数据格式。
C51
以
1
/
16
的
VC5402
采样速率接收数据,
0000H
采样为
0
,<
/p>
FFFFH
采样为
1
,由此可以将接收到的
200
位恢复为
8
位数
据,停止位进入
RB8
p>
。
C51
每
发送
1
位数据,
VC5402
要采样为
16
位数据。
C51
一次发送的
10
位数据的起始位
触发
VC5402
的接收帧同步。由于
VC5402
以
16
倍
C51
的采样速
率接收数据,
1
位采样为
16
位,
< br>0
采样为
0000H
,
1
采样为
FFFFH
.
只采样发送
来的
10
位中的前
9
位,
9
位封装成
p>
144
位,即接收的
1
帧数据完成。
VC5402
将
收到
的
144
位数据在开辟的存储器空间存放,抛弃前
16
位,在剩下的
128
位
里
分成
8
组,每组
16
位。比较其中间的
8
位,若有
4
位以上为
1
,则该
16
位为
1
,反之则为
0
。由此将接收到的
1
44
位恢复为
8
位数据。
为了不让
CPU
频繁地被数据接收和发送打断,将
DMA
和
MCBSP
联合使
用来控制数据的接收和发送。
RRDY
直接驱动
MCBSP
向
DMAC
接收数据事件
(R
EVENT
事件
)
,
< br>XRDY
直接驱动
MCBSP
向
DMAC
发送数据事件
(XEVENT
事件
)
。
p>
SCI
通信协议如图
2
所示
1. 2
SPI
串行通信设计
将
p>
C51
置为主机,
VC5402
为从机。
McBSP
的时钟停止模式
(CLKSTP=1X)
兼容
SPI
模式,接收部分和发送部分内部同步。
McBSP
可以
作为
SPI
的从机或
主机。发送时钟<
/p>
BCLKX
作为
SPI
< br>协议的移位时钟
SCK
使用,发送帧同步信号
BFSX
作为从机使能信号
nSS
使用,接收时钟
BCLKR
和接收帧同步信号
BFSR
不
使用。它们在内部分别与
BCLKX
和
BFSX
直
接连接。
BDX
作为
MISO
,而
BDR
作为
MOS
I
,发送和接收具有相同字长。
C51
中的并口
P1
.
1
和
P1
.
2
作为扩展串行
SPI
输人输出口与<
/p>
VC5402
连接,
P1
.
0
作为串行时钟输出口,
P
1
.
3
作为帧同步信号输出口
_
。
SPI
串口连接如图
3
所示。
VC5402
初始化程序
(
以图
3
为例
)
:
STM#SPCRll
,
SPSAl
;设置时钟停
止位进
入
MCBSP
的
SPI
模式
STM#0X1000
,
SPSDl
;时钟开始于上升沿
(
无
延迟
)
STM#SPCRl2,SPSAl STM#0X0
040
,
SPSDl
;
XINT
由
XRDY(
即字尾
)
驱动
STM#PCRl
,
SPSAl ST
M#0X000C
,
SPSDl
;对发
送和接收时钟,同步帧进行设置
STM#RCRll
.
SPSAl S
TM#0X0000
,
SPSDl
;接
收数据
l
帧
1
字.
1
字
8
位
STM#XCRll
,
SPSAl S
TM#0X0000
,
SPSDl
;;
发送数据
1
帧
1
字.
1
字
8
位;
P1
.
0<
/p>
发送到
VC5402
的移位时钟是保证<
/p>
DSP
正确采样接收和发送数据
的时钟。
它要保证和
C51
的采样接收和发送数据的时钟一致.才能使主
从机同
步。
2
并行通信设计与实现
2.1 VC5402
的
HPI
接口原理
HPI
一
8
是一个
8
位
(HD0
~
HD7)
< br>的连接
DSP
与主机设备或主处理器的
< br>并行接口。
DSP
与主机通过
D
SP
的片内
RAM
交换数据,整个片内
RAM
都可以作
为
HPI
一
8
的存储器。
HPIA
地址寄存器只能由主机直接访问,存放当前寻址的
存储器的地址;
HPID
数据锁存器只能由主机直接访
问,存放当前要写入或读出