高 琳
(國營第785廠,山西太原030024)
在DSP應(yīng)用系統(tǒng)中,常用的輸入輸出器件是LED數(shù)碼管和鍵盤,原始的數(shù)據(jù)信息通過鍵盤輸入,單片機(jī)的處理結(jié)果由數(shù)碼管輸出。當(dāng)較多數(shù)量的外接鍵盤和數(shù)碼管相對于有限的單片機(jī)口資源時(shí),就需要一個(gè)專用的接口芯片來擴(kuò)展,而BC7281則滿足這個(gè)要求,它最多可以控制16位數(shù)碼管或128位獨(dú)立的LED管。
BC7281芯片是新型的16位LED數(shù)碼管顯示及鍵盤接口專用控制芯片。該芯片采用高速二線接口與MCU進(jìn)行通訊,只占用很少的I/O口資源和主機(jī)時(shí)間。BC7281芯片可以連接最多64鍵的鍵盤矩陣,內(nèi)部具有去抖動(dòng)功能,BC7281B還增加了“寄存器保護(hù)”(抗干擾)模式,使得抗干擾能力進(jìn)一步提高。
本系統(tǒng)使用芯片為BC7281B,引腳說明如下:
名稱 引腳號 功能描述DAT 1與MCU串行通訊數(shù)據(jù)端,為雙向數(shù)據(jù)傳輸口,作為輸出時(shí)為漏極開路輸出,需要外接上拉電阻。KEY 2鍵盤有效輸出端,低電平有效,檢測到有效按鍵后該引腳變?yōu)榈碗娖?,并一直保持到鍵值鎖存器內(nèi)容被讀出。CLK 3 與MCU串行通訊時(shí)鐘端,下降沿有效RST 4 復(fù)位端,低電平有效。BC7281X內(nèi)部具有上電復(fù)位電路,故一般可將該引腳與VCC直接相連。GND 5接地端DIG0~DIG7 6~9 12~15位驅(qū)動(dòng)輸出端,第8-15位顯示位驅(qū)動(dòng)與第0-7位共用,同時(shí)也是鍵盤矩陣的“行”。VCC 16電源輸入端OSCO 17 RC振蕩器輸出端,一般應(yīng)懸空RC 18 外接RC振蕩器端,該引腳連接一RC電路形成振蕩,給內(nèi)部掃描等電路提供時(shí)鐘。SCLK 19 外接段驅(qū)動(dòng)用移位寄存器時(shí)鐘端。SDAT 20 外接段驅(qū)動(dòng)用移位寄存器數(shù)據(jù)端,輸出段驅(qū)動(dòng)數(shù)據(jù),低位在前。
BC7281字節(jié)寫入與讀出的時(shí)序如圖1所示。
圖1 BC7281的讀寫時(shí)序
TMS320F2812芯片是TI公司DSP控制器2000系列的新成員。TMS320F2812提供了強(qiáng)大的計(jì)算能力,最高運(yùn)行速度可達(dá)150MIPS,具有處理性能強(qiáng)、外設(shè)集成度高、程序存儲器大及A/D轉(zhuǎn)換速度快等特點(diǎn),廣泛應(yīng)用于電機(jī)的數(shù)字化控制等領(lǐng)域。TMS320F2812采用高性能靜態(tài)CMOS技術(shù),供電電壓為3.3 V,而且有多種低功耗工作模式,能充分地降低系統(tǒng)功耗。
本系統(tǒng)設(shè)計(jì)采用的控制芯片為BC7281B,DSP芯片采用的是TMS320F2812。在設(shè)計(jì)過程中,DAT線上外接20k上拉電阻,以使其能可靠地輸出高電平。與DSP相連的DAT、CLK信號線接入時(shí)采用與地線雙絞的接入方式,并且每個(gè)信號與地之間接一濾波電容,以提高抗干擾能力。為了更好地提高BC7281B電源輸入端的抗干擾能力,在VCC電源引腳和電源之間串入一個(gè)RC濾波電路,以濾除電源中的尖峰和毛刺。BC7281B的外接RC振蕩電路選用1.5k電阻和20pF電容,提供9.5MHz的時(shí)鐘。對于位驅(qū)動(dòng)電路,本設(shè)計(jì)采用連接共陽式的數(shù)碼管,三極管接成射極跟隨器形式,且在基極加一100k限流電阻。
BC7281B與DSP TMS320F2812的具體接口電路如圖2。
圖2 BC7281B與DSP TMS32OF2812的接口電路
由圖2可看出DSP通過I/O接口(IOF10和IOF13)與BC7281B的數(shù)據(jù)傳輸線DAT及同步時(shí)鐘線CLK進(jìn)行數(shù)據(jù)傳輸。CLK引腳由DSP控制,下降沿有效。指令字節(jié)中R/W為讀寫控制。當(dāng)R/W=0時(shí),由DSP向BC7812B的內(nèi)部寄存器寫入數(shù)據(jù);當(dāng)R/W=1時(shí),DSP讀出BC7812內(nèi)部寄存器的數(shù)據(jù)。
軟件流程圖如圖3:
圖3 軟件流程圖
具體程序如下:
初始化
BC7281Write(0x15,(0x40+E5));// 千位
BC7281Write(0x15,(0x50+E6));// 百位
BC7281Write(0x15,(0x60+E7));// 十位
BC7281Write(0x15,(0x70+E8));// 個(gè)位
......
//寫入BC728X,第一個(gè)參數(shù)為目標(biāo)寄存器地址,第二個(gè)參數(shù)為要寫入的數(shù)據(jù)
......
BC7281SendByte(reg_add);//發(fā)送寄存器地址
BC7281SendByte(write_data);//發(fā)送數(shù)據(jù)字節(jié)
......
//發(fā)送一個(gè)字節(jié)
.......
Setclklow;//set CLK to output low
Setclkhigh;//set CLK to output high
do
{
temp=Readdat; //read DAT value
}
while(temp);//一直等到DAT為低,重發(fā)一組時(shí)鐘信號,等待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
//發(fā)送8位數(shù)據(jù)
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應(yīng)用系統(tǒng)中,有效地解決了硬件開銷及單片機(jī)IO口占用資源問題,該芯片使用簡單,穩(wěn)定可靠,編程靈活。在工程應(yīng)用中,對設(shè)計(jì)人員來說不失為一種最佳選擇。本人在多個(gè)產(chǎn)品已成功使用該芯片,均達(dá)到了事半功倍的效果。
[1]智澤英,楊晉嶺,劉輝.DSP控制技術(shù)實(shí)踐[M].北京:中國電力出版社,2009.
[2]萬山明.TMS320F281X DSP原理及應(yīng)用實(shí)例[M].北京:北京航空航天大學(xué)出版社,2007.
[3]BC7281B 128段LED數(shù)碼管及64鍵鍵盤控制芯片[Z].北京凌志比高公司.