高 琳
(国营第785厂,山西太原030024)
在DSP应用系统中,常用的输入输出器件是LED数码管和键盘,原始的数据信息通过键盘输入,单片机的处理结果由数码管输出。当较多数量的外接键盘和数码管相对于有限的单片机口资源时,就需要一个专用的接口芯片来扩展,而BC7281则满足这个要求,它最多可以控制16位数码管或128位独立的LED管。
BC7281芯片是新型的16位LED数码管显示及键盘接口专用控制芯片。该芯片采用高速二线接口与MCU进行通讯,只占用很少的I/O口资源和主机时间。BC7281芯片可以连接最多64键的键盘矩阵,内部具有去抖动功能,BC7281B还增加了“寄存器保护”(抗干扰)模式,使得抗干扰能力进一步提高。
本系统使用芯片为BC7281B,引脚说明如下:
名称 引脚号 功能描述DAT 1与MCU串行通讯数据端,为双向数据传输口,作为输出时为漏极开路输出,需要外接上拉电阻。KEY 2键盘有效输出端,低电平有效,检测到有效按键后该引脚变为低电平,并一直保持到键值锁存器内容被读出。CLK 3 与MCU串行通讯时钟端,下降沿有效RST 4 复位端,低电平有效。BC7281X内部具有上电复位电路,故一般可将该引脚与VCC直接相连。GND 5接地端DIG0~DIG7 6~9 12~15位驱动输出端,第8-15位显示位驱动与第0-7位共用,同时也是键盘矩阵的“行”。VCC 16电源输入端OSCO 17 RC振荡器输出端,一般应悬空RC 18 外接RC振荡器端,该引脚连接一RC电路形成振荡,给内部扫描等电路提供时钟。SCLK 19 外接段驱动用移位寄存器时钟端。SDAT 20 外接段驱动用移位寄存器数据端,输出段驱动数据,低位在前。
BC7281字节写入与读出的时序如图1所示。
图1 BC7281的读写时序
TMS320F2812芯片是TI公司DSP控制器2000系列的新成员。TMS320F2812提供了强大的计算能力,最高运行速度可达150MIPS,具有处理性能强、外设集成度高、程序存储器大及A/D转换速度快等特点,广泛应用于电机的数字化控制等领域。TMS320F2812采用高性能静态CMOS技术,供电电压为3.3 V,而且有多种低功耗工作模式,能充分地降低系统功耗。
本系统设计采用的控制芯片为BC7281B,DSP芯片采用的是TMS320F2812。在设计过程中,DAT线上外接20k上拉电阻,以使其能可靠地输出高电平。与DSP相连的DAT、CLK信号线接入时采用与地线双绞的接入方式,并且每个信号与地之间接一滤波电容,以提高抗干扰能力。为了更好地提高BC7281B电源输入端的抗干扰能力,在VCC电源引脚和电源之间串入一个RC滤波电路,以滤除电源中的尖峰和毛刺。BC7281B的外接RC振荡电路选用1.5k电阻和20pF电容,提供9.5MHz的时钟。对于位驱动电路,本设计采用连接共阳式的数码管,三极管接成射极跟随器形式,且在基极加一100k限流电阻。
BC7281B与DSP TMS320F2812的具体接口电路如图2。
图2 BC7281B与DSP TMS32OF2812的接口电路
由图2可看出DSP通过I/O接口(IOF10和IOF13)与BC7281B的数据传输线DAT及同步时钟线CLK进行数据传输。CLK引脚由DSP控制,下降沿有效。指令字节中R/W为读写控制。当R/W=0时,由DSP向BC7812B的内部寄存器写入数据;当R/W=1时,DSP读出BC7812内部寄存器的数据。
软件流程图如图3:
图3 软件流程图
具体程序如下:
初始化
BC7281Write(0x15,(0x40+E5));// 千位
BC7281Write(0x15,(0x50+E6));// 百位
BC7281Write(0x15,(0x60+E7));// 十位
BC7281Write(0x15,(0x70+E8));// 个位
......
//写入BC728X,第一个参数为目标寄存器地址,第二个参数为要写入的数据
......
BC7281SendByte(reg_add);//发送寄存器地址
BC7281SendByte(write_data);//发送数据字节
......
//发送一个字节
.......
Setclklow;//set CLK to output low
Setclkhigh;//set CLK to output high
do
{
temp=Readdat; //read DAT value
}
while(temp);//一直等到DAT为低,重发一组时钟信号,等待DAT重新被拉高
Setclklow;//set CLK to output low
Setclkhigh;//set CLK to output high
while(temp==0)
{
temp=Readdat ;//read DAT value
the echo DAT value
//发送8位数据
for(bit_counter=0;bit_counter<8;bit_counter++)
{
if((send_byte&0x80)==0)
{
Setdatlow;//set DAT to output low
}
else
{
Setdathigh;//set DAT to output high
}
send_byte=send_byte*2;//send_byte左移一位
Setclklow;//set CLK to output low
Setclkhigh;//set CLK to output high
}
Setdathigh;//set DAT to output high
}
BC7281B在DSP应用系统中,有效地解决了硬件开销及单片机IO口占用资源问题,该芯片使用简单,稳定可靠,编程灵活。在工程应用中,对设计人员来说不失为一种最佳选择。本人在多个产品已成功使用该芯片,均达到了事半功倍的效果。
[1]智泽英,杨晋岭,刘辉.DSP控制技术实践[M].北京:中国电力出版社,2009.
[2]万山明.TMS320F281X DSP原理及应用实例[M].北京:北京航空航天大学出版社,2007.
[3]BC7281B 128段LED数码管及64键键盘控制芯片[Z].北京凌志比高公司.