基于CMX469A的無(wú)線MODEM設(shè)計(jì)
摘要:CMX469A是CML公司推出的FFSK/MSK全雙工MODEM芯片,它內(nèi)部集成了載波檢測(cè)、RX時(shí)鐘恢復(fù)電路和振蕩電路,并具有很好的信噪比以及低電壓、低功耗等特性,能夠接收、發(fā)射FFSK/MSK信號(hào),同時(shí)可提供收發(fā)時(shí)鐘。文中給出了CMX469A的工作原理、應(yīng)用電路和程序控制流程。
關(guān)鍵詞:快速移頻鍵控;CMX469A;調(diào)制解調(diào)器
1 CMX469A的主要特點(diǎn)
CMX469A是CML(公司新推出的全雙工無(wú)線Modem芯片)它采用CMOS工藝制造,工作電壓為2.7V~5.5V,當(dāng)電源電壓為3V時(shí),它的典型工作電流為2mA,數(shù)據(jù)傳輸速率可設(shè)定為1200 bps、2400 bps和4800bps。在這三種波特率下,邏輯高、低電平的頻率相應(yīng)為1200/1800Hz,1200/2400Hz,2400/4800Hz。
CMX469A采用快速移頻鍵控FFSK/MSK調(diào)制方式,可廣泛應(yīng)用于無(wú)線通訊系統(tǒng)中(例如水文檢測(cè)系統(tǒng)、船載監(jiān)控系統(tǒng)等)。CMX469A的主要特性如下:
●具有獨(dú)立的發(fā)送、接收使能控制;
●可以接外部1.008MHz或4.032MHz晶振;
●可選擇三種波特率:1200bps、2400bps、4800bps(4800bps傳輸時(shí),需要外接4.032MHz晶振);
●具有載波檢測(cè)、接收時(shí)鐘故障恢復(fù)功能;
●低電壓、低功耗(電源為3V時(shí),典型工作電流為2mA;節(jié)能模式下,供電電流只有300μA);
●抗干擾性能優(yōu)良,在信號(hào)條件比較差的情況下具有優(yōu)良的靈敏度,同時(shí)可通過(guò)外部電容設(shè)置載波檢測(cè)周期,以使器件在高噪音環(huán)境下具有更完善的性能。
2 CMX469A的引腳說(shuō)明
CMX429A有22腳PDIP、20腳SOIC、24腳TSSOP三種封裝,這三種封裝的對(duì)應(yīng)引腳不同。表1是20腳SOIC封裝所對(duì)應(yīng)的引腳功能介紹,其余兩種封裝只是引腳序號(hào)不相同。
表1 CMX469AD3的引腳說(shuō)明
引 腳 | 名 稱 | 類 型 |
功 能 描 述 |
1 | CLOCK/XTAL | I | 片內(nèi)振蕩器的輸入端或外部時(shí)鐘輸入端 |
2 | XTALN | O | 片內(nèi)振蕩器的輸出端 |
3 | Tx SYNC | O | 發(fā)送同步時(shí)鐘輸出 |
4 | TxSIGNAL | O | FFSK/MSK信號(hào)輸出 |
5 | TxDATA | I | 發(fā)送數(shù)據(jù)串行輸入端 |
6 | TxENABLEN | I | 發(fā)送使能 |
7 | BAND PASS | RX帶通濾波器輸出 | |
8 | RxENABLE | I | 接收使能 |
9 | VBIAS | BI | 偏置電壓輸出 |
10 | VSS | P | 地 |
11 | UNCLK DATA | O | 接收異步數(shù)據(jù)輸出 |
12 | CLK DATA | O | 接收同步數(shù)據(jù)輸出 |
13 | CD OUT | O | 載波檢測(cè)輸出 |
14 | RxSIGNAL | I | FFSK/MSK信號(hào)輸入 |
15 | RxSYNC | O | 接收同步時(shí)鐘輸出 |
16 | BAUD SELECT | I | 1200/2400波特率選擇 |
17 | BAUD SELECT | I | 4800波特率選擇 |
18 | COLOCK RATE | I | 4.032MHz/1.008MHz外晶振選擇 |
19 | CD TIME CINSTANT | BI | 載波檢測(cè)響應(yīng)時(shí)間調(diào)整端,影響抗干擾能力 |
20 | VDD | P | 接電源2.7~5.5V |
3 與單片機(jī)的硬件接口設(shè)計(jì)
基于CMX469A的無(wú)線調(diào)制解調(diào)器的硬件設(shè)計(jì)主要包括CMX469A與電臺(tái)的接口電路以及與單片機(jī)的接口電路兩部分。
CMX469A與電臺(tái)的接口主要用于實(shí)現(xiàn)輸入、輸出模擬電路部分的放大。這部分電路設(shè)計(jì)非常簡(jiǎn)單,用運(yùn)放LM358就可以實(shí)現(xiàn),這里就不再多說(shuō),以下主要說(shuō)明CMX469A與單片機(jī)的接口設(shè)計(jì)。硬件接口電路如圖1所示。
CMX469A與單片機(jī)接口時(shí),CMX469A內(nèi)部產(chǎn)生的TxSYNC和RxSYNC同步時(shí)鐘線可以同步單片機(jī)的發(fā)送和接收串行數(shù)據(jù)。由于發(fā)送數(shù)據(jù)時(shí),從單片機(jī)輸出的串行數(shù)據(jù)在TxSYNC的上升沿必須有效且穩(wěn)定,因此,應(yīng)該在時(shí)鐘的下降沿輸出單片機(jī)的串行數(shù)據(jù)。同樣,在RxSYNC的下降沿讀取單片機(jī)同步數(shù)據(jù)線(CLOCK DATA)上的串行數(shù)據(jù),同時(shí)在RxSYNC的上升沿忽略同步數(shù)據(jù)線的狀態(tài)。而在接收數(shù)據(jù)時(shí),載波檢測(cè)端口的輸出狀態(tài)可表明有效的FFSK數(shù)據(jù)是否進(jìn)入CMX469A,并可通過(guò)載波檢測(cè)來(lái)防止CMX469A接收虛假的數(shù)據(jù)。
CMX469A與單片機(jī)的接口電路設(shè)計(jì)主要分為兩部分:發(fā)送接口電路設(shè)計(jì)和接收接口電路設(shè)計(jì)。發(fā)送接口電路由發(fā)送允許(TxEN)、發(fā)送時(shí)鐘線(TxSYNC)、發(fā)送數(shù)據(jù)線(TxDATA)三部分構(gòu)成。此時(shí)的FFSK數(shù)據(jù)輸出線(TxSIGNAL)用于輸出經(jīng)過(guò)調(diào)制的FFSK信號(hào)。接收接口則由接收允許(RXEN)、接收時(shí)鐘線(RxSYNC)、載波檢測(cè)(Carrier Detect)、時(shí)鐘同步接收數(shù)據(jù)線(CLOCK DATA)等四部分構(gòu)成。此時(shí),FFSK數(shù)據(jù)輸入線RxSIGNAL為需要解調(diào)的FFSK/MSK信號(hào)的輸入端口。
TXEN為發(fā)送使能控制端口,當(dāng)?shù)碗娖桨l(fā)送使能后,在時(shí)鐘信號(hào)TxSYNC的同步下,TXDATA數(shù)據(jù)線上的信號(hào)將依次被采樣,同時(shí)經(jīng)過(guò)調(diào)制即可在TxSIGNAL引腳輸出調(diào)制后的FFSK信號(hào)。在1200bps下,該系統(tǒng)可將高電平“1”轉(zhuǎn)換為1200Hz的正弦波,而將低電平“0”轉(zhuǎn)換為1800Hz的正弦波,并由TxSIGNAL端口輸出。其發(fā)送時(shí)序如圖2所示,Tx-DATA引腳信號(hào)將在時(shí)鐘信號(hào)TXSYNC的上升沿被采樣,因此,TXSYNC的上升沿必須有效并且保持穩(wěn)定。設(shè)計(jì)程序時(shí),應(yīng)該在時(shí)鐘信號(hào)的下降沿依次串行輸出要發(fā)送的數(shù)據(jù)。拉高TxEN將使發(fā)送電路進(jìn)入節(jié)能狀態(tài),這時(shí)TXSYNC將輸出邏輯高電平,TxSIGNAL進(jìn)入高阻態(tài)。TxEN由內(nèi)部上拉為VCC。
RxEN為接收使能引腳。RxEN為高時(shí),使能接收電路,為低時(shí)則使接收電路進(jìn)入節(jié)能狀態(tài)。此時(shí),RxSYNC和接收數(shù)據(jù)端將輸出固定電平。接收使能時(shí),輸入RxSIGNAL的 FFSK信號(hào)經(jīng)過(guò)內(nèi)部濾波器后可被恢復(fù)為串行數(shù)據(jù)輸出。同時(shí),從接收的數(shù)據(jù)中還可恢復(fù)出同步時(shí)鐘,單片機(jī)通過(guò)采樣此同步時(shí)鐘來(lái)同步接收數(shù)據(jù)。接收時(shí)序如圖3所示。設(shè)計(jì)該程序時(shí),應(yīng)該在同步時(shí)鐘RxSYNC的下降沿采樣CLOCK DATA引腳的數(shù)據(jù)。
4 軟件設(shè)計(jì)
該MODEM的軟件設(shè)計(jì)主要包括FFSK發(fā)送程序和FFSK接收程序,其程序流程圖如圖4所示。發(fā)送FFSK數(shù)據(jù)時(shí),首先需要拉低發(fā)送使能端口TxEN,接著檢測(cè)時(shí)鐘線(TxSYNC)?并在每一個(gè)時(shí)鐘下降沿移位輸出一位數(shù)據(jù),一直到數(shù)據(jù)全部發(fā)送完成,然后拉高發(fā)送使能端口。至此,FFSK發(fā)送數(shù)據(jù)結(jié)束。
接收FFSK數(shù)據(jù)時(shí),由于接收時(shí)鐘線RxSYNC被接在單片機(jī)的中斷引腳上,因此,只要有FFSK數(shù)據(jù)到達(dá),接收時(shí)鐘線就會(huì)輸出經(jīng)過(guò)恢復(fù)的時(shí)鐘信號(hào),并引起單片機(jī)中斷。為了防止誤操作,進(jìn)入中斷子程序以后,應(yīng)該首先判斷載波檢測(cè)端口是否有效。如果無(wú)效,表明是誤操作,此時(shí)應(yīng)退出接收子程序;如果有效,則繼續(xù)接收FFSK數(shù)據(jù)。在每一個(gè)RxSYNC時(shí)鐘的下降沿,都要鎖存接收數(shù)據(jù)線(CLOCKED DA-TA)的狀態(tài),一直到接收數(shù)據(jù)結(jié)束。同時(shí),在接收數(shù)據(jù)時(shí),為了防止單片機(jī)由于等待數(shù)據(jù)而死機(jī),必須加上碼間隔判斷,如果超過(guò)一定的時(shí)間沒(méi)有收到預(yù)期的數(shù)據(jù),則將以前接收的數(shù)據(jù)廢棄,并進(jìn)行數(shù)據(jù)接收初始化,以重新進(jìn)行接收。
發(fā)送、接收FFSK數(shù)據(jù)內(nèi)容可以按照自定義協(xié)議來(lái)完成,具體為:第一字節(jié)為數(shù)據(jù)長(zhǎng)度,然后為若干個(gè)字節(jié)的數(shù)據(jù)內(nèi)容,最后為和校驗(yàn)碼以及異或校驗(yàn)碼。經(jīng)筆者實(shí)踐證明,這種協(xié)議可以比較有效地實(shí)現(xiàn)數(shù)據(jù)的發(fā)送和接收,同時(shí)檢測(cè)傳輸誤碼的效果也比較好。
5 結(jié)束語(yǔ)
利用CMX469A實(shí)現(xiàn)的無(wú)線MODEM具有抗干擾能力強(qiáng)、電路簡(jiǎn)單、程序設(shè)計(jì)方便等優(yōu)點(diǎn),對(duì)于只有一個(gè)串行口的51系列單片機(jī)來(lái)說(shuō),由于CMX469A不占用串行口,因此,單片機(jī)可以利用串行口方便地與計(jì)算機(jī)或者其它設(shè)備進(jìn)行串口通信,從而為整個(gè)系統(tǒng)的設(shè)計(jì)提供方便。