仝林林,陳 璇
(山西銀河電子設備廠,山西 太原 030000)
在進口元器件形式日益嚴重的今天,全國產化產品的重要性越來越凸顯,尤其在保密要求比較高的應用中,自主可控成為更多產品的一項重要指標[1]。同時,在很多產品中,人們都可以看到話音系統的身影[2]。基于此,本論文設計了一款全國產化話音系統。
該系統由發射系統、接收系統和MCU控制系統組成。發射功能主要由北京中科漢天下的FM發射芯片HS6760完成。該芯片是一款高性能立體聲調頻發射芯片,同時支line-in輸入和直接MIC輸入。由于本文的話音系統的輸入為手柄,所以本文設計單聲道輸入。接收功能由北京昆騰公司的芯片KT0863R實現,該芯片支持的頻率范圍為32 MHz~110 MHz,具有很高的信噪比和接收靈敏度。由于專有的調諧技術,即使使用很短的天線,接收機也能保持良好的信號接收,而且該芯片的集成度很高。這減少了外圍器件的數量,為產品的小型化提供了很大便利,同時提供了真正的單芯片、全波段調頻和多功能無線電解決方案。由于該芯片含有數字低中頻架構和內部集成LNA自動增益控制,所以無需外部濾波器和頻率調諧設備。此外,該芯片高性能的模數轉換器高質量的模擬和數字濾波器以及片內高保真的AB類驅動器和低噪聲自調諧VCO,進一步消除了外部音頻放大器的需求,可以直接驅動立體聲耳機,大大簡化了系統的硬件設計。
芯片HS6760和KT0863R控制接口均為IIC接口,本系統通過GD32F107實現對收發芯片的配置功能[3]。IIC接口是由START信號、命令字節、數據字節,及每個字節后的ACK或NACK比特,和STOP組成,命令字節包括一個7比特的chip 地址(0011000b)和一個讀寫r/w 命令比特。
MCU通過發送不同的器件地址和讀寫位組成的命令字節,分別實現對芯片HS6760和芯片KT0863R的配置,同時,通過判斷接收信息的地址,來判斷讀取的狀態信息為發射芯片還是接收芯片。
HS6760的器件地址為0011000B,加上讀寫標志位,即為0x30(寫操作)和0x31(讀操作)。KT0863R的器件地址為01101010,加上讀寫標志,即為0x6A(寫操作)和0x6B(寫操作)。讀寫方式采用標準IIC接口協議。
本文的MCU選擇兆易創新生產的GD32F107芯片,該芯片完全兼容STM32F107,具有豐富的外設和GPIO資源,包含本設計中需要的IIC接口。HS6760和KT0863R均支持多種晶體振蕩器。本方案中,HS6760選擇北京晨晶的12 MHz晶體振蕩器,KT0863R選擇32.768 KHz產品,并在軟件中做相應配置,供電選用上海貝嶺的電源芯片BL8034和BL1117,從而實現了話音系統的全國產化設計。
在其他外圍電路中,選用了發光二極管作為信號指示燈,蜂鳴器產生振鈴信號,按鍵產生呼叫信號和接通語音。
為了收發電平匹配,本方案分別在發送端和接收端均設計了T型和pi型衰減網絡,在實際測試過程中,可以根據測試結果對電阻阻值進行調整,具體原理圖設計和實物局部如圖1和圖2所示。

圖1 HS6760原理

圖2 KT0863R原理
軟件利用C語言進行實現,分為系統配置、外設配置、收發芯片配置、振鈴處理、通信狀態指示等幾部分功能。
其中,收發芯片配置分別為對芯片HS6760和KT0863R的配置,對收發芯片的配置接口為IIC接口,由于收發芯片具有不同的芯片地址,所以主程序利用一個IIC接口,通過CHIP ID實現對不同芯片的控制。進行對芯片KT0863R的具體配置過程如下。
(1)配置ratio_n。
(2)配置外部時鐘。
(3)配置ratio_p。
(4)配置其他一些參數。
HS6760的具體配置過程如下:
(1)設置芯片工作模式為Normal mode,通過寫寄存器0x01為0x06來實現。
(2)打開音頻通路,通過寫寄存器0x11為0x01來實現。
(3)手動調大頻偏,通過寫寄存器0x1d為0x70來實現。
(4)復位操作,通過將寄存器0x07 的最高位(bit7)先置0,延時10 ms,再置1來實現。
(5)設置頻點,HS6760 覆蓋的波段范圍為27 MHz~125 MHz ,最小頻率步進為50 KHz 。HS6760芯片頻點的設置可以通過配置寄存器0x00和0x01來實現。頻點設置完后,還應寫寄存器0x02的最低位(bit0)為0,延時10 ms,然后再寫0x02 的最低位(bit0)為1,來使設置的頻點生效。
在傳統的話音系統中,振鈴信號都是在硬件設計的基礎上,搭建軟件實現的。在本設計中,振鈴功能是純軟件實現。設計思路為,線路空閑時,有一個默認頻點,系統檢測呼叫按鍵是否被按下。若按下,發送端將從空閑狀態下的代碼切換到通信時的預設頻點,然后接收端間隔固定時間檢測目標頻點信號電平,即利用KT0863R的SNR和RSSI寄存器進行設計。當目標頻點信號電平超過預設值時,認為振鈴信號到達,本地蜂鳴器進行通信提醒,程序等待接通按鍵響應,從而達到收發通信的建立。在硬件GPIO資源比較缺乏的時候,該設計可以節約控制芯片的2個管腳。
在呼叫機制中,設計了相互獨立的各種工作狀態,用于判斷本端和對端的呼叫與被呼叫狀態。利用兩臺設備實際對通信過程中的工作狀態對此進行說明,分為本端設備和對端設備。這些狀態分別如下。
(1)本端按鍵呼叫狀態。此時MCU外部線中斷接收按鍵信號,然后控制占用燈閃爍,并切換到對應的工作頻段,使得通信鏈路頻點一致,鏈路信噪比提升,這也是對端判斷是否被呼叫的依據。此時,本端處于正在呼叫對端,等待對端接通的狀態之中,同時呼叫超時計時器開始計時。
(2)本端呼叫,對端未接聽,超時自動掛斷。當本端呼叫后,若對端一直未接聽,那么當本端的超時計時器計數到達設定值后,本端自動掛斷,即控制占用燈不再閃爍,同時切換頻點到空閑頻點上,以切斷通信鏈路,降低信噪比,這也是對端判斷沒有被呼叫信號的依據。
(3)本端呼叫,對端未接聽,本端按鍵掛斷。這描述的是當本端呼叫后,若對端一直未接聽,那么在本端的超時計時器未到達時間之前,由本端人員主動按下掛斷按鍵。此時,MCU接收按鍵掛斷信號后,軟件應與狀態2響應一致,即控制占用燈不再閃爍,同時切換頻點到空閑頻點上,以切斷通信鏈路。
(4)本端呼叫,對端接聽。此時,通信鏈路處于信噪比較高的狀態,可以直接使用手柄進行語音通話。
(5)接通時,本端掛斷。這是描述當語音通話結束后,由本端主動掛斷的一種狀態,此時本端應控制空閑燈打開,占用燈熄滅,并且應切換頻點到空閑頻點上,切斷通信鏈路。
(6)本端收到呼叫信號。這是描述當本端空閑時,根據信道的信噪比值,判斷是否有對端的呼叫信號,然后使蜂鳴器發出振鈴信號,提醒工作人員收到呼叫。
(7)本端收到呼叫,按下接通按鍵。當本端按下按鍵接通后,應切換對應的空閑頻點到工作頻點,打開通信鏈路,使信噪比達到通語音的條件。
(8)接通時,對端掛斷。當接通時,檢測到通信鏈路中的信噪比急劇降低時,判斷此時應為對端掛斷,應切換本端的狀態燈顯示狀態,同時切換工作頻點到空閑頻點上。
(9)空閑狀態。這是指當本端不做任何操作,也未收到對端呼叫時的一種初始狀態。在空閑狀態時,降低發射芯片的發射功率,降低功耗,同時使頻率保持在空閑頻率,另外還要輪詢信號值的大小,及時檢測是否有對端呼叫。
以上9種狀態是設計呼叫機制的關鍵狀態,分清楚9種狀態中軟件應如何控制硬件響應,這樣才能夠獨立地設計9種狀態對應的控制代碼,使呼叫中的這幾種狀態相對獨立,條理清晰。其中,軟件中使用的響應機制分別為:按鍵使用了外部線中斷進行響應;超時計時器使用了MCU的普通定時器進行設計;狀態燈使用了普通IO口進行驅動;蜂鳴器使用了普通IO口進行驅動,并使用定時器調節占空比,控制輸出信號頻率。合理地使用各種中斷響應機制,能夠充分發揮MCU的性能,提高嵌入式系統的實時性。
使用了9種不同的呼叫狀態,根據外部信號的觸發來響應不同的狀態,各個狀態之間相互獨立,邏輯清晰,有益于代碼的功能實現和后期維護。
在軟件整體設計上,采用了主程序和中斷結合的方式。在對各個硬件完成初始化配置之后,系統便開始不間斷地輪詢工作頻點上的信號值的大小,以及時響應對端的信號呼叫,同時在不同的接收中斷中響應各個外部觸發信號,這樣提高了軟件工作效率,提高了MCU硬件資源的利用率。
本系統的軟件設計主要包括系統時鐘初始化,IIC接口初始化,HS6760和KT0863R芯片配置及初始化,等待呼叫按鍵響應,檢測接收信號大小,改變LED指示燈狀態,改變蜂鳴器狀態,等待掛斷信號等幾部分。算法結構如圖3所示。

圖3 算法結構
本文利用GD32F107作為控制芯片,HS6760作為發射芯片,KT0863R作為接收芯片,搭配軟件,實現了一種全國產化話音收發系統,并利用KT0863R的指定頻點信號功率檢測功能,實現了收發信統的振鈴功能,節約了硬件GPIO資源,簡化了軟件設計,達到了預期功能的實現,對類似設計具有一定的指導意義,同時為全國產化話音系統提供了一種解決方案。