摘 要:本文以举例的方式从硬件和软件原理上阐述了如何运用SPBA01B对MCU进行IO扩展、总线扩展和级联使用。
关键词:SPBA01B SPEC061A
1 引言
随着数字语音、图像处理技术的飞速发展,其在电子产品中也得到广泛应用,如语音智能玩具、PDA、有语音和图像识别技术的机器人等。一个复杂或功能强大的语音图像处理系统需要很大的、不同的存储器(ROM、FLASH、SRAM)的存储空间。由凌阳公司开发的可级连的单片总线扩展芯片SPBA01具有接口简单、扩展能力强、易于应用的特点,极大的适应了语音、图像处理系统和需要总线扩展的其它系统之需求。另外,SPCE061A是由凌阳公司开发的16位带有DSP功能的单片机。它具有语音,图像处理的运算能力。用SPCE061A和SPBA01构成的带数据总线扩展系统,必将推动数字语音、图像处理技术的电子产品进一步发展。
2 SPBA01B芯片简介
2.1 芯片特性
· 用11个IO口可扩展4Mbytes的Memory或25个IO口
· 可最多7个SPBA01B级联
· 支持各种Memory类型的扩展,比如:SRAM、ROM、EPROM、EEPROM 和FLASH
· SPBA01B内部结构模块图如图 2.1所示。
2.2 内部结构
图 2.1 SPBA01B内部结构模块图
2.3 管脚说明
SPBA01B的封装为LQFP44-0.8,它的管脚图如图 2.2如所示。
图 2.2 SPBA01B管脚图
SPBA01B的各个管脚说明如表 2.1所示。
表 2.1 SPBA01B的各管脚说明
符号 管脚号 类型 描述
CI 17 I 片选信号
CO 16 O 下一级联芯片的片选
AD7-AD0 4-11 地址/数据总线
MC1、MC0 1、2 读/写(数据/地址)信号线
P2.7 () P2.6-P2.0 27 26-20 I/O 存储器扩展器 P2.7:用作片选 P2.6-P2.0:用作地址线A[14:8] I/O扩展器 输入模式下:内置下拉电阻
P1.7-P1.0 37-44 I/O 存储器扩展器 P1.7-P1.0:用作地址线 A[7:0] I/O扩展器 输入模式下:内置下拉电阻
P0.7 () P0.6 () P0.5-P0.0 28 29 30-35 I/O 存储器扩展器 P0.7:用作Memory 1片选 P0.6:用作Memory 2片选 P0.6-P0.0:用作存储器的BANK地址B[6:0] I/O扩展器 输入模式下:内置下拉电阻
OSCO () 18 O 存储芯片的读使能信号
P55 () 19 O 存储器扩展器:存储芯片的写使能信号 I/O扩展器:仅用输出
XI 12 I 晶振输入引脚
XO 13 O 晶振输出引脚
CLK0 15 O 时钟输出
VDD 36 I 电源
VSS 3 I 参考地
DVP 14 I 测试模式选择,内接下拉电阻,通常悬空
2.4 地址映射
当SPBA01B用作总线扩展时,使用地址$4000H-$BFFFH为存储扩展,存储页的大小为32K Bytes,其中地址$8000H-$BFFFH被映射为存储器的地址$0000H-$3FFFH,地址$4000H-$7FFFH被映射为存储器的地址$4000H-$7FFFH。地址$0000H-$003FH用作寄存器设置。详细的映射图如图 2.3所示。
图 2.3地址映射图
2.5 读写时序
对SPBA01B的读写时序图分别如图 2.4、图 2.5所示。
图 2.4 读SPBA01B的时序
图 2.5 写SPBA01B的时序
从图 2.4、图 2.5可以看出,MC1决定AD总线是地址总线还是数据总线,MC0决定操作模式(读或写)。MC1为高电平时,AD[7:0]是地址输入线,MC1为低电平时AD[7:0]是数据输入/输出线。当作为输入地址时,MC0为高电平时AD[7:0]是高地址A[15:8],MC0为低电平时AD[7:0]是低地址A[7:0]。当作为数据线时,MC0为高电平时AD[7:0]是读数据D[7:0], MC0为低电平时AD[7:0] 是写数据D[7:0]。
MC0、MC1、AD总线三者之间的状态关系如表 2.2所示。
表 2.2 解码表
MC1 MC0 AD总线
H H AH(高地址)
H L AL(低地址)
L H 读数据
L L 写数据
3 扩展应用方案介绍
3.1 IO扩展应用
本例介绍SPCE061A使用SPBA01B扩展IO。主要实现功能:使用三个按键实现控制LED的亮灭。
3.1.1 电路框图
SPCE061A使用SPBA01B扩展IO的电路框图如图 3.1所示:
图 3.1 IO扩展模块图
3.1.2 电路连接图
SPCE061A与SPBA01B的连接图如图 3.2所示:
图 3.2 IO扩展的电路连接图
3.1.3 功能描述
使用Key1、Key2、Key3三个按键实现控制16个LED灯的亮灭,三个按键的作用如下:
· Key1:按下该键的时候,点亮16个LED灯。
· Key2:按下该键的时候,点亮与SPBA01B的P1口相连的LED灯,同时熄灭与SPBA01B的P2口相连的LED灯。
· Key3:按下该键的时候,点亮与SPBA01B的P2口相连的LED灯,同时熄灭与SPBA01B的P1口相连的LED灯。
3.2 总线扩展应用
本例介绍SPCE061A使用SPBA01B扩展Memory。系统主要实现的功能是利用外扩的Memory实现数码录放音。下面介绍使用外扩HM628128、W29C040实现DVR录放音。
3.2.1 外扩HM628128的电路连接图
SPCE061A使用SPBA01B外扩HM628128的电路连接如图 3.3所示。
图 3.3 外扩HM628128的电路连接图
3.2.2 外扩W29C040的电路连接图
SPCE061A使用SPBA01B外扩W29C040的电路连接如图 3.4所示。
图 3.4 外扩W29C040的电路连接图
3.2.3 功能描述
使用Record、Stop、Play三个按键实现控制数码录放音,三个按键的作用如下:
· Record:按下该键的时候,开始录音。
· Stop:按下该键的时候,停止录音。
· Play:按下该键的时候,播放录音。
3.2.4 程序流程
SPCE061A使用SPBA01B外扩存储器的时候,主程序以及读、写操作的简易流程如图 3.5所示。
图 3.5 简易流程图
3.3 SPBA01B级联使用介绍
前面说过SPBA01B最多可以级联7个,现在介绍SPBA01B的级联用法。
从图 3.6(为了便于说明,将其中的一个SPBA01B称为BEXA,另一个SPBA01B称为BEXB。)可以看出SPCE061A有11个管脚连接到SPBA01B,其中有一个为OUT管脚,连接到SPBA01B的CI管脚,类似片选的作用。当CI由低电平变为高电平的时候,SPBA01B的VID/SID(Volume ID/Selecting ID)将被复位,使用时必须重新设置;当访问SPBA01B的时候,CI要保持高电平。
SPBA01B中的CI和CO保证各级联芯片的正确初始化。如图 3.6所示,BEXA的CO连接到BEXB的CI。当BEXA的CI由低电平变为高电平,第一个设置VID(设置寄存器$000DH)将被应用到BEXA,当BEXA被配置完后,它的CO变为高电平,这样第二个设置VID(设置寄存器$000DH)被应用到BEXB。若级联多个芯片,以此类推,设置各级联芯片的VID。当所有的级联芯片的VID都被设置完毕后,任何对寄存器$000DH的写,都被当作是SID。
图 3.6 SPCE061A外挂两个级联的SPBA01B的电路图
下面举一个简单例子说明两个级联芯片BEXA和BEXB是如何配合工作的。寄存器$000DH用来为每一个SPBA01B设置唯一的VID。设置完VID后,寄存器$000DH用来选择ID,也就是决定哪一个级联芯片工作。SPCE061A的程序步骤大致如下:
1. 设置OUT为低电平
2. 设置OUT为高电平
3. Send_Addr_Data(0x000d,0x03)设置BEXA的VID为3
4. Send_Addr_Data(0x000d,0x05)设置BEXB的VID为5
5. Send_Addr_Data(0x000d,0x03)设置BEXA和BEXB的SID为3,此时BEXA有效,BEXB
6. Send_Addr_Data(0x0023,0xxx)配置BEXA为“存储器扩展器”或“I/O扩展器”
7. 访问BEXA
8. ……
9. Send_Addr_Data(0x000d,0x05)设置BEXA和BEXB的SID为5, 此时BEXA无效,BEXB
有效
10. Send_Addr_Data(0x0023,0xxx)配置BEXB为“存储器扩展器”或“I/O扩展器”
11. 访问BEXB
在第9步后,BEXA和BEXB的状态如图 3.7所示。
图 3.7 BEXA和BEXB的状态图
3.4 级联应用举例
本例介绍的是SPCE061A外挂两个SPBA01B芯片,扩展两个AT29C020 以及一个8×8按键。它的详细电路连接如图 3.8所示。
图 3.8 SPCE061A外挂两个SPBA01B的电路图
4 结语
SPBA01B具有很强的IO扩展、总线扩展功能,配合凌阳公司提供的SPBA01B底层Driver代码,可以很容易实现SPCE061A的IO、总线扩展。相信以SPBA01B构成的带数据总线扩展系统,必将推动数字语音,图象处理技术的电子产品进一步发展。