仝林林,陳 璇
(山西銀河電子設(shè)備廠,山西 太原 030000)
在進(jìn)口元器件形式日益嚴(yán)重的今天,全國(guó)產(chǎn)化產(chǎn)品的重要性越來(lái)越凸顯,尤其在保密要求比較高的應(yīng)用中,自主可控成為更多產(chǎn)品的一項(xiàng)重要指標(biāo)[1]。同時(shí),在很多產(chǎn)品中,人們都可以看到話音系統(tǒng)的身影[2]。基于此,本論文設(shè)計(jì)了一款全國(guó)產(chǎn)化話音系統(tǒng)。
該系統(tǒng)由發(fā)射系統(tǒng)、接收系統(tǒng)和MCU控制系統(tǒng)組成。發(fā)射功能主要由北京中科漢天下的FM發(fā)射芯片HS6760完成。該芯片是一款高性能立體聲調(diào)頻發(fā)射芯片,同時(shí)支line-in輸入和直接MIC輸入。由于本文的話音系統(tǒng)的輸入為手柄,所以本文設(shè)計(jì)單聲道輸入。接收功能由北京昆騰公司的芯片KT0863R實(shí)現(xiàn),該芯片支持的頻率范圍為32 MHz~110 MHz,具有很高的信噪比和接收靈敏度。由于專(zhuān)有的調(diào)諧技術(shù),即使使用很短的天線,接收機(jī)也能保持良好的信號(hào)接收,而且該芯片的集成度很高。這減少了外圍器件的數(shù)量,為產(chǎn)品的小型化提供了很大便利,同時(shí)提供了真正的單芯片、全波段調(diào)頻和多功能無(wú)線電解決方案。由于該芯片含有數(shù)字低中頻架構(gòu)和內(nèi)部集成LNA自動(dòng)增益控制,所以無(wú)需外部濾波器和頻率調(diào)諧設(shè)備。此外,該芯片高性能的模數(shù)轉(zhuǎn)換器高質(zhì)量的模擬和數(shù)字濾波器以及片內(nèi)高保真的AB類(lèi)驅(qū)動(dòng)器和低噪聲自調(diào)諧VCO,進(jìn)一步消除了外部音頻放大器的需求,可以直接驅(qū)動(dòng)立體聲耳機(jī),大大簡(jiǎn)化了系統(tǒng)的硬件設(shè)計(jì)。
芯片HS6760和KT0863R控制接口均為IIC接口,本系統(tǒng)通過(guò)GD32F107實(shí)現(xiàn)對(duì)收發(fā)芯片的配置功能[3]。IIC接口是由START信號(hào)、命令字節(jié)、數(shù)據(jù)字節(jié),及每個(gè)字節(jié)后的ACK或NACK比特,和STOP組成,命令字節(jié)包括一個(gè)7比特的chip 地址(0011000b)和一個(gè)讀寫(xiě)r/w 命令比特。
MCU通過(guò)發(fā)送不同的器件地址和讀寫(xiě)位組成的命令字節(jié),分別實(shí)現(xiàn)對(duì)芯片HS6760和芯片KT0863R的配置,同時(shí),通過(guò)判斷接收信息的地址,來(lái)判斷讀取的狀態(tài)信息為發(fā)射芯片還是接收芯片。
HS6760的器件地址為0011000B,加上讀寫(xiě)標(biāo)志位,即為0x30(寫(xiě)操作)和0x31(讀操作)。KT0863R的器件地址為01101010,加上讀寫(xiě)標(biāo)志,即為0x6A(寫(xiě)操作)和0x6B(寫(xiě)操作)。讀寫(xiě)方式采用標(biāo)準(zhǔn)IIC接口協(xié)議。
本文的MCU選擇兆易創(chuàng)新生產(chǎn)的GD32F107芯片,該芯片完全兼容STM32F107,具有豐富的外設(shè)和GPIO資源,包含本設(shè)計(jì)中需要的IIC接口。HS6760和KT0863R均支持多種晶體振蕩器。本方案中,HS6760選擇北京晨晶的12 MHz晶體振蕩器,KT0863R選擇32.768 KHz產(chǎn)品,并在軟件中做相應(yīng)配置,供電選用上海貝嶺的電源芯片BL8034和BL1117,從而實(shí)現(xiàn)了話音系統(tǒng)的全國(guó)產(chǎn)化設(shè)計(jì)。
在其他外圍電路中,選用了發(fā)光二極管作為信號(hào)指示燈,蜂鳴器產(chǎn)生振鈴信號(hào),按鍵產(chǎn)生呼叫信號(hào)和接通語(yǔ)音。
為了收發(fā)電平匹配,本方案分別在發(fā)送端和接收端均設(shè)計(jì)了T型和pi型衰減網(wǎng)絡(luò),在實(shí)際測(cè)試過(guò)程中,可以根據(jù)測(cè)試結(jié)果對(duì)電阻阻值進(jìn)行調(diào)整,具體原理圖設(shè)計(jì)和實(shí)物局部如圖1和圖2所示。
圖1 HS6760原理
圖2 KT0863R原理
軟件利用C語(yǔ)言進(jìn)行實(shí)現(xiàn),分為系統(tǒng)配置、外設(shè)配置、收發(fā)芯片配置、振鈴處理、通信狀態(tài)指示等幾部分功能。
其中,收發(fā)芯片配置分別為對(duì)芯片HS6760和KT0863R的配置,對(duì)收發(fā)芯片的配置接口為IIC接口,由于收發(fā)芯片具有不同的芯片地址,所以主程序利用一個(gè)IIC接口,通過(guò)CHIP ID實(shí)現(xiàn)對(duì)不同芯片的控制。進(jìn)行對(duì)芯片KT0863R的具體配置過(guò)程如下。
(1)配置ratio_n。
(2)配置外部時(shí)鐘。
(3)配置ratio_p。
(4)配置其他一些參數(shù)。
HS6760的具體配置過(guò)程如下:
(1)設(shè)置芯片工作模式為Normal mode,通過(guò)寫(xiě)寄存器0x01為0x06來(lái)實(shí)現(xiàn)。
(2)打開(kāi)音頻通路,通過(guò)寫(xiě)寄存器0x11為0x01來(lái)實(shí)現(xiàn)。
(3)手動(dòng)調(diào)大頻偏,通過(guò)寫(xiě)寄存器0x1d為0x70來(lái)實(shí)現(xiàn)。
(4)復(fù)位操作,通過(guò)將寄存器0x07 的最高位(bit7)先置0,延時(shí)10 ms,再置1來(lái)實(shí)現(xiàn)。
(5)設(shè)置頻點(diǎn),HS6760 覆蓋的波段范圍為27 MHz~125 MHz ,最小頻率步進(jìn)為50 KHz 。HS6760芯片頻點(diǎn)的設(shè)置可以通過(guò)配置寄存器0x00和0x01來(lái)實(shí)現(xiàn)。頻點(diǎn)設(shè)置完后,還應(yīng)寫(xiě)寄存器0x02的最低位(bit0)為0,延時(shí)10 ms,然后再寫(xiě)0x02 的最低位(bit0)為1,來(lái)使設(shè)置的頻點(diǎn)生效。
在傳統(tǒng)的話音系統(tǒng)中,振鈴信號(hào)都是在硬件設(shè)計(jì)的基礎(chǔ)上,搭建軟件實(shí)現(xiàn)的。在本設(shè)計(jì)中,振鈴功能是純軟件實(shí)現(xiàn)。設(shè)計(jì)思路為,線路空閑時(shí),有一個(gè)默認(rèn)頻點(diǎn),系統(tǒng)檢測(cè)呼叫按鍵是否被按下。若按下,發(fā)送端將從空閑狀態(tài)下的代碼切換到通信時(shí)的預(yù)設(shè)頻點(diǎn),然后接收端間隔固定時(shí)間檢測(cè)目標(biāo)頻點(diǎn)信號(hào)電平,即利用KT0863R的SNR和RSSI寄存器進(jìn)行設(shè)計(jì)。當(dāng)目標(biāo)頻點(diǎn)信號(hào)電平超過(guò)預(yù)設(shè)值時(shí),認(rèn)為振鈴信號(hào)到達(dá),本地蜂鳴器進(jìn)行通信提醒,程序等待接通按鍵響應(yīng),從而達(dá)到收發(fā)通信的建立。在硬件GPIO資源比較缺乏的時(shí)候,該設(shè)計(jì)可以節(jié)約控制芯片的2個(gè)管腳。
在呼叫機(jī)制中,設(shè)計(jì)了相互獨(dú)立的各種工作狀態(tài),用于判斷本端和對(duì)端的呼叫與被呼叫狀態(tài)。利用兩臺(tái)設(shè)備實(shí)際對(duì)通信過(guò)程中的工作狀態(tài)對(duì)此進(jìn)行說(shuō)明,分為本端設(shè)備和對(duì)端設(shè)備。這些狀態(tài)分別如下。
(1)本端按鍵呼叫狀態(tài)。此時(shí)MCU外部線中斷接收按鍵信號(hào),然后控制占用燈閃爍,并切換到對(duì)應(yīng)的工作頻段,使得通信鏈路頻點(diǎn)一致,鏈路信噪比提升,這也是對(duì)端判斷是否被呼叫的依據(jù)。此時(shí),本端處于正在呼叫對(duì)端,等待對(duì)端接通的狀態(tài)之中,同時(shí)呼叫超時(shí)計(jì)時(shí)器開(kāi)始計(jì)時(shí)。
(2)本端呼叫,對(duì)端未接聽(tīng),超時(shí)自動(dòng)掛斷。當(dāng)本端呼叫后,若對(duì)端一直未接聽(tīng),那么當(dāng)本端的超時(shí)計(jì)時(shí)器計(jì)數(shù)到達(dá)設(shè)定值后,本端自動(dòng)掛斷,即控制占用燈不再閃爍,同時(shí)切換頻點(diǎn)到空閑頻點(diǎn)上,以切斷通信鏈路,降低信噪比,這也是對(duì)端判斷沒(méi)有被呼叫信號(hào)的依據(jù)。
(3)本端呼叫,對(duì)端未接聽(tīng),本端按鍵掛斷。這描述的是當(dāng)本端呼叫后,若對(duì)端一直未接聽(tīng),那么在本端的超時(shí)計(jì)時(shí)器未到達(dá)時(shí)間之前,由本端人員主動(dòng)按下掛斷按鍵。此時(shí),MCU接收按鍵掛斷信號(hào)后,軟件應(yīng)與狀態(tài)2響應(yīng)一致,即控制占用燈不再閃爍,同時(shí)切換頻點(diǎn)到空閑頻點(diǎn)上,以切斷通信鏈路。
(4)本端呼叫,對(duì)端接聽(tīng)。此時(shí),通信鏈路處于信噪比較高的狀態(tài),可以直接使用手柄進(jìn)行語(yǔ)音通話。
(5)接通時(shí),本端掛斷。這是描述當(dāng)語(yǔ)音通話結(jié)束后,由本端主動(dòng)掛斷的一種狀態(tài),此時(shí)本端應(yīng)控制空閑燈打開(kāi),占用燈熄滅,并且應(yīng)切換頻點(diǎn)到空閑頻點(diǎn)上,切斷通信鏈路。
(6)本端收到呼叫信號(hào)。這是描述當(dāng)本端空閑時(shí),根據(jù)信道的信噪比值,判斷是否有對(duì)端的呼叫信號(hào),然后使蜂鳴器發(fā)出振鈴信號(hào),提醒工作人員收到呼叫。
(7)本端收到呼叫,按下接通按鍵。當(dāng)本端按下按鍵接通后,應(yīng)切換對(duì)應(yīng)的空閑頻點(diǎn)到工作頻點(diǎn),打開(kāi)通信鏈路,使信噪比達(dá)到通語(yǔ)音的條件。
(8)接通時(shí),對(duì)端掛斷。當(dāng)接通時(shí),檢測(cè)到通信鏈路中的信噪比急劇降低時(shí),判斷此時(shí)應(yīng)為對(duì)端掛斷,應(yīng)切換本端的狀態(tài)燈顯示狀態(tài),同時(shí)切換工作頻點(diǎn)到空閑頻點(diǎn)上。
(9)空閑狀態(tài)。這是指當(dāng)本端不做任何操作,也未收到對(duì)端呼叫時(shí)的一種初始狀態(tài)。在空閑狀態(tài)時(shí),降低發(fā)射芯片的發(fā)射功率,降低功耗,同時(shí)使頻率保持在空閑頻率,另外還要輪詢信號(hào)值的大小,及時(shí)檢測(cè)是否有對(duì)端呼叫。
以上9種狀態(tài)是設(shè)計(jì)呼叫機(jī)制的關(guān)鍵狀態(tài),分清楚9種狀態(tài)中軟件應(yīng)如何控制硬件響應(yīng),這樣才能夠獨(dú)立地設(shè)計(jì)9種狀態(tài)對(duì)應(yīng)的控制代碼,使呼叫中的這幾種狀態(tài)相對(duì)獨(dú)立,條理清晰。其中,軟件中使用的響應(yīng)機(jī)制分別為:按鍵使用了外部線中斷進(jìn)行響應(yīng);超時(shí)計(jì)時(shí)器使用了MCU的普通定時(shí)器進(jìn)行設(shè)計(jì);狀態(tài)燈使用了普通IO口進(jìn)行驅(qū)動(dòng);蜂鳴器使用了普通IO口進(jìn)行驅(qū)動(dòng),并使用定時(shí)器調(diào)節(jié)占空比,控制輸出信號(hào)頻率。合理地使用各種中斷響應(yīng)機(jī)制,能夠充分發(fā)揮MCU的性能,提高嵌入式系統(tǒng)的實(shí)時(shí)性。
使用了9種不同的呼叫狀態(tài),根據(jù)外部信號(hào)的觸發(fā)來(lái)響應(yīng)不同的狀態(tài),各個(gè)狀態(tài)之間相互獨(dú)立,邏輯清晰,有益于代碼的功能實(shí)現(xiàn)和后期維護(hù)。
在軟件整體設(shè)計(jì)上,采用了主程序和中斷結(jié)合的方式。在對(duì)各個(gè)硬件完成初始化配置之后,系統(tǒng)便開(kāi)始不間斷地輪詢工作頻點(diǎn)上的信號(hào)值的大小,以及時(shí)響應(yīng)對(duì)端的信號(hào)呼叫,同時(shí)在不同的接收中斷中響應(yīng)各個(gè)外部觸發(fā)信號(hào),這樣提高了軟件工作效率,提高了MCU硬件資源的利用率。
本系統(tǒng)的軟件設(shè)計(jì)主要包括系統(tǒng)時(shí)鐘初始化,IIC接口初始化,HS6760和KT0863R芯片配置及初始化,等待呼叫按鍵響應(yīng),檢測(cè)接收信號(hào)大小,改變LED指示燈狀態(tài),改變蜂鳴器狀態(tài),等待掛斷信號(hào)等幾部分。算法結(jié)構(gòu)如圖3所示。
圖3 算法結(jié)構(gòu)
本文利用GD32F107作為控制芯片,HS6760作為發(fā)射芯片,KT0863R作為接收芯片,搭配軟件,實(shí)現(xiàn)了一種全國(guó)產(chǎn)化話音收發(fā)系統(tǒng),并利用KT0863R的指定頻點(diǎn)信號(hào)功率檢測(cè)功能,實(shí)現(xiàn)了收發(fā)信統(tǒng)的振鈴功能,節(jié)約了硬件GPIO資源,簡(jiǎn)化了軟件設(shè)計(jì),達(dá)到了預(yù)期功能的實(shí)現(xiàn),對(duì)類(lèi)似設(shè)計(jì)具有一定的指導(dǎo)意義,同時(shí)為全國(guó)產(chǎn)化話音系統(tǒng)提供了一種解決方案。