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