|
摘
要
:基于嵌入式系统发展的需要,提出
TMS320VC5402 DSP
与
AT89C51
单片机通信的三种设计方案。利用
TMS320VC5402
的多通道缓冲串口
MCBSP
分别实现
TMS320VC5402
与
AT89C51
的
SCI
和
SPI
串行通信,以及通过
TMS320VC5402
的
8
位增强主机接口
HPI
一
8
实现
TMS320VC5402
与
AT89C5l
并行通信。就硬件接口电路和软件编程进行详细的阐述。
关键词
:单片机
DSP
MCBSP
HPI
将
DSP
和单片机构成双
CPU
处理器平台,可以充分利用
DSP
对大容量数据和复杂算法的处理能力,以及单片机接口的控制能力。而
DSP
与单片机之间快速正确的通信是构建双
CPU
处理器的关键问题。下面就此问题分别设计串行
SCI
、
SPI
和并行
HPI
三种连接方式。
1
串行通信设计与实现
1 1 SCI
串行通信设计
1.1.1
多通道缓冲串行口
McBSP
原理
TMS320VC5402(
简称
VC5402)
提供了
2
个支持高速、全双工、带缓冲、多种数据格式等优点的多通道缓冲串行口
McBSP
。
MCESP
分为数据通路和控制通路。①数据通路负责完成数据的收发。
CPU
或
DMAC
能够向数据发送寄存器
DXR
写入数据,
DXR
中的数据通过发送移位寄存器
XSR
输出到
DX
引脚。
DR
引脚接收数据到接收移位寄存器
RSR
,再复制到接收缓冲寄存器
RBR
,最后复制到数据接收寄存器
DRR
。这两种数据多级缓冲方式使得数据搬移和片外数据通信能够同时进行。②控制通路负责内部时钟产生,帧同步信号产生,信号控制和多通道选择。另外.还具有向
CPU
发送中断信号和向
DMAC
发送同步事件的功能。
MCBSP
时钟和帧同步信号通过
CLKR
、
CLKX
、
FXR
、
FSX
引脚进行控制,接收器和发送器可以相互独立地选择外部时钟和帧同步信号,也可以选择由内部采样率发生器产生时钟和帧同步信号。帧同步脉冲有效表示传输的开始。
1.1.2 SC
I串行接口设计
设置
VC5402
的
McRSP
输出时钟和帧同步信号由内部采样率发生器产生,内部数据时钟
CLKG
和帧同步信号
FSG
驱动发送时钟
CLKX
和帧同步
FSX(CLKXM=l
,
FSXM=l
,
FSGM=1)
,输入时钟也由内部采样率发生器产生,内部数据时钟
CLKG
驱动接收时钟
CLKR(CLKRM=1)
,同时由
CPU
时钟驱动采样率发生器
(CLKSM=1)
。考虑到
AT89C51(
简称
C51)
串口发送数据帧中第
l
位为起始位,因此可以利用该位驱动输入帧同步信号
FSR
,同时要置忽略帧同步信号标志为
1
。其中
FSG
帧同步脉冲宽度
=(FWID+1)
·
CLKG
;
FSG
帧同步脉冲周期
=(FPER+1)
·
CLKG
;采样率发生器分频系数
(
采样率
=
波特率
)=FIN
/
(CLKGDV+1)
。
SCI
串口连接如图
l
所示。

1.1.3
波特率不一致的处理
VC5402
初始化
(
以图
1
为例
)
:
STM#SRGRl,SPSAl
STM#ooFEH
,
SPSDl
;
FSG
帧同步脉冲宽度位为
1
个
CLKG
;波特率为
100 MHz
/
(0X(OFF)=392 156 b
/
s
STM#SRGR2
,
SPSAl
STM#3D00H,SPSDl;
内部采样率发生器时钟由
CPU
驱动
C51
初始化:
MOV TMOD,#20H
MOVTLl,#FFH
MOVTHl
,
#FFH
;
C51
波特率
=(2SMOD
/
32)*(fosc
/
12)[1
/
(256
一初值
)]
一
24 509 b
/
s
MOV SCON
,
#50H
;置串口方式
l
,每一帧
10
位数据.允许接收
MOV PCON
,
#80H
;设置
SMOD=1
VC5402
波特率/
C51
波特率
=(392 156
/
24 509)=16
.
000 49
VC5402
每发送
16
位数据,
C51
只采样
1
位数据。在
VC5402
存储器中开辟一个空间对每次发送的
8
位数据进行扩展,
1
位扩为
16
位,
0
为
0000H
,
l
为
FFFFH
,共扩为
128
位。在数据头部填加
16
位起始位
0000H
,数据尾部填加停止位
FFFFH
。在
VC5402
发送控制寄存器
XCR
中设置
XWDLEN=000(1
字含
8
位
)
,即可将要发送的
8
位数据封装成
1
帧
10
字的数据。这也符合
C51
串口
1
方式下
1
帧
10
位的数据格式。
C51
以
1
/
16
的
VC5402
采样速率接收数据,
0000H
采样为
0
,
FFFFH
采样为
1
,由此可以将接收到的
200
位恢复为
8
位数据,停止位进入
RB8
。
C51
每发送
1
位数据,
VC5402
要采样为
16
位数据。
C51
一次发送的
10
位数据的起始位触发
VC5402
的接收帧同步。由于
VC5402
以
16
倍
C51
的采样速率接收数据,
1
位采样为
16
位,
0
采样为
0000H
,
1
采样为
FFFFH
.只采样发送来的
10
位中的前
9
位,
9
位封装成
144
位,即接收的
1
帧数据完成。
VC5402
将收到的
144
位数据在开辟的存储器空间存放,抛弃前
16
位,在剩下的
128
位里分成
8
组,每组
16
位。比较其中间的
8
位,若有
4
位以上为
1
,则该
16
位为
1
,反之则为
0
。由此将接收到的
144
位恢复为
8
位数据。
为了不让
CPU
频繁地被数据接收和发送打断,将
DMA
和
MCBSP
联合使用来控制数据的接收和发送。
RRDY
直接驱动
MCBSP
向
DMAC
接收数据事件
(REVENT
事件
)
,
XRDY
直接驱动
MCBSP
向
DMAC
发送数据事件
(XEVENT
事件
)
。
SCI
通信协议如图
2
所示

1. 2 SPI
串行通信设计
将
C51
置为主机,
VC5402
为从机。
McBSP
的时钟停止模式
(CLKSTP=1X)
兼容
SPI
模式,接收部分和发送部分内部同步。
McBSP
可以作为
SPI
的从机或主机。发送时钟
BCLKX
作为
SPI
协议的移位时钟
SCK
使用,发送帧同步信号
BFSX
作为从机使能信号
nSS
使用,接收时钟
BCLKR
和接收帧同步信号
BFSR
不使用。它们在内部分别与
BCLKX
和
BFSX
直接连接。
BDX
作为
MISO
,而
BDR
作为
MOSI
,发送和接收具有相同字长。
C51
中的并口
P1
.
1
和
P1
.
2
作为扩展串行
SPI
输人输出口与
VC5402
连接,
P1
.
0
作为串行时钟输出口,
P1
.
3
作为帧同步信号输出口
_
。
SPI
串口连接如图
3
所示。

VC5402
初始化程序
(
以图
3
为例
)
:
STM#SPCRll
,
SPSAl
;设置时钟停止位进入
MCBSP
的
SPI
模式
STM#0X1000
,
SPSDl
;时钟开始于上升沿
(
无延迟
)
STM#SPCRl2,SPSAl
STM#0X0040
,
SPSDl
;
XINT
由
XRDY(
即字尾
)
驱动
STM#PCRl
,
SPSAl
STM#0X000C
,
SPSDl
;对发送和接收时钟,同步帧进行设置
STM#RCRll
.
SPSAl
STM#0X0000
,
SPSDl
;接收数据
l
帧
1
字.
1
字
8
位
STM#XCRll
,
SPSAl
STM#0X0000
,
SPSDl
;;发送数据
1
帧
1
字.
1
字
8
位;
P1
.
0
发送到
VC5402
的移位时钟是保证
DSP
正确采样接收和发送数据的时钟。它要保证和
C51
的采样接收和发送数据的时钟一致.才能使主从机同步。
|