FSKModemMSM7512B在電力線通信中的應用
http://www.104case.com/article/201612/332846.htm 一、芯片特點及引腳說明 1.特點 MSM7512B是OKI公司推出的1200bps半雙工FSK Modem芯片,采用16腳雙立直插塑封或24腳扁平封裝,具有如下特點: *單電源(3~5V)供電,提供掉電工作方式; *低功耗CMOS電路(工作模式功耗典型值為25mW,掉電模式功耗低達0.1mW); *FSK移頻鍵控,符合ITU-TV.23標準,1200bps半雙工; *模擬輸出可直接驅動600Ω通信電路; *片內回音消除電路; *使用3.579545MHz晶振; *外圍電路簡單。 2.引腳說明 芯片MSM7512B(16DIP)的引腳排列如圖1所示,引腳說明見表1。表1中打星號的引腳內部均具有上拉電阻。 二、MSP7512B的工作原理 MSM7512B的內部結構如圖2所示。 MSM7512B主要由輸入/輸出回路、FSK調制/解調器、晶體振蕩以及控制器組成。其中MOD1、MOD2控制MSM7512B的工作模式,即調制/解調/掉電。工作模式如表2所列。 模 式 當MOD2=0、MOD1=0時,MSM7512B工作于調制方式。XD輸入值為“0”、“1”的數字調制信號,AO對應輸出頻率為2100Hz、1300Hz的FM模擬信號。RS是模擬信號輸出的使能控制端。芯片的內部連線如圖3所示。
表1 MSM7512B引腳說明
引腳號 名稱 I/O 說 明 RS GS-K 1 1 VDD - +3-+5V電源 2 3 AI I 模擬接收信號輸入 3 5 AO O 模擬送信號輸出 4 6 EAI I 外部模擬信號輸出。此腳上的信號通過送輸出放大器從AO腳發送出去。不此腳時,它應該被懸空 5 7 GND 地,0V 6 8 X1 I 3.57954M H晶體諧振器應連至X1和X2。當器件采用3.579545MHz外部時鐘時,它應通過1個100pF的AC耦合電容加至X2(而非X1),且X1應該懸空 7 10 X2 O 8 12 CLK O 3.579545MH時鐘信號輸出 9 13 RD O Modem接收串行數據輸出。數字“1”和“0”分別對應“Mark”和“Space”。當CD(載波檢測)關斷時,RD被保持在“Mark”狀態 10 15 CD O FSK接收信號和應答信號控制。數字“0”和“1”分別表示“檢測到”和“未檢測到” 11 17 XD I* Modem發送串行數據輸入。數字“0”和“1”分別對應“Mark”和“Space” 12 18 RS I* FSK信號和應答信號發送使能腳。當數字“0”加至RS時,被使能 13 19 TEST I* 芯片測試輸入。TEST應為開路或數字“1” 14 20 MOD1 I* 工作模式選擇。參見表2 15 22 MOD2 I* 16 24 AOG I* 模擬發送信號幅度選擇:數字“1”--10dBm(典型值,AO腳);數字“0”--4dBm(典型值,AO腳)
表2 工作模式
MOD MOD 0 0 FSK發送模式(圖3) 0 1 FSK接收及75bps發送模式(圖4) 1 0 模擬環路返回測試模式(圖5) 1 1 掉電模式
當MOD2=1、MOD1=0時,MSM7512B工作于模擬環路返回測試模式。芯片的內部連線如圖5所示。
當MOD2=1、MOD1=1,MSM7512B工作于掉電方式,此時MSM7512B功耗僅0.1mW,其它方式一般功耗為25mW。
三、MSM7512B在電力線通信中的應用
在電力線上實現數據通信,人們進行了很多嘗試。電力線作為一種通信傳輸介質,具有可變信號衰減、阻抗調制、脈沖噪聲以及等幅振蕩波干擾等不利數據傳輸的特性。為了排除這些干擾,目前利用電力線進行通信的產品有很多,通信質量和距離各有差異。這里介紹的是利用FSK調制解調芯片MSM7512B來實現的一種點對點通信方式。這種傳輸方法是隔離(變壓器隔離方式)的。當通信距離較遠時,可用MSM7512B替代隔離的RS-485接口芯片。它具有抗干擾能力強、誤碼率低、可靠性高、投資少、建設方便等優點,同時也存在著數據傳輸速度低(只能達到1200bps),在通信距離變得很遠時誤碼率有所增高的缺點。這種基于MSM7512B來實現電力線通信已經在智能小區數據通信的實踐應用中取得了良好的使用效果。圖6是其實際電路原理圖。
從圖6可以看出,由U3、U4、U5以及外圍的電阻、電容構成接口電路,完成電平調整和阻抗變換功能。電力線采用的是600 Ω平衡輸入/輸出,通過600 Ω 1:1變壓器完成不平衡到平衡的電路轉換。U3、U4、U5采用高速運放NE5534,以提高轉換速率,提高動態響應。U5跟隨器,完成阻抗變換、輸入/輸出隔離以及提高負載能力。U3、U4完成接收、發送信號的放大。通過調整W1和W2來實現電路增益的調整。發送除了硬件調整外,還可以通過程序設定AOG端口0或1狀態達到配合硬件調整發送電平的目的。
單片機采用的是由ATMEL公司推出一種小型單片機AT89C2051。它具有Flash存儲器、成本低、與MCS-51完全兼容、可多次電可擦寫編程等特點。AT89C2051與MSM7512B的連接如圖6所示。它們之間的通信方式采用8位異步通信模式。波特率為1200baud,fosc=11.0596MHz,T1工作在定時器模式2,TH1=TL1=0E8H,PCON寄存器的SMOD位為0,傳送的數據采用ASCII碼格式。下面給出雙機點對點通信程序。假定A機為發送者,B機為接收者。可在函數中根據程序的發送、接收設置TR,采用條件判別決定使用發送函數還是接收函數,這樣點對點通信的雙方都可以運行此程序,只需在程序運行之前進行人為設置選擇TR(一個為0,另一個為1),然后分別編譯,在兩個機器上分別裝入,同時運行。
用C51語言編寫的點對點通信程序p_pcom.c如下:
#include
#define uchar unsigned char
#define TR 1 /*發送接收差別值TR=0發送*/
sbit AOG=P1^0;
sbit MOD1=P1^2;
sbit MOD2=P1^1;
sbi TEST=P1^3;
sbit CD=P3^7;
sbit RS=P1^4; /*定義位尋址的對象位*/
uchar idata buff[16]; /*數據塊長度為16個字節*/
uchar check_sum; /*定義校驗和變量*/
void InitSerialPort(void){ /*串行口初始化函數*/
TMOD=0x20; /*設置定時器1為模式/2*/
TH1=0xe8;
TL1=0xe8; /*設波特率為1200baud*/
PCON=0x00;
TR1=1; /*啟動定時器1*/
SCON=0x50; /*設置串行口為模式1,并允許接收*/
}
void SetMSM7512B(uchar st){ /*設置收發狀態*/
if(st= =0) {
MOD1=0;
MOD2=0; /*發送模式*/
TEST=1;
TS=0; /*發送使能*/
AOG=0; /*發送信號幅度選擇-4dBm*/
}
else{
MOD1=1;
MOD2=0; /*接收模式*/
TEST=1;
}
}
A機發送程序
void SendData(uchar idata *dat){
uchar i;
do{
SBUF=0xaa; /*發送聯絡信號“AA”*/
while(TI= =0); /*等待發送出去*/
TI=0; /*清TI標志,允許再發送*/
while(RI= =0) /*等待B機回答*/
RI=0;
}while((SBUF^0xbb)!=0) /*B機未準備好,繼續聯絡*/
check_sum=0; /*清校驗和*/
for(i=0;i<16;i+ +){
SBUF=dat[i];/*求校驗和*/
while(TI= =0);TI=0;
}
SBUT=check_sum; /*發送校驗和*/
while(TI= =0);TI=0;
while(RI= =0);RI=0; /*等待B機應答*/
}while(SBUF!=0); /*回答出錯,則重發*/
}
B機接收程序
void ReceiveData(uchar idata *dat){
uchar i;
do{
while(RI= =0); RI=0;
}while((SBUF^0xaa)!=0); /*判A機請求否*/
SBUF=0xbb;
While(TI= =0);TI=0;
while(1){
check_sum=0; /*清校驗和*/
for(i=0;i<16;i+ +){
while(RI= =0);RI=0;
dat(i)=SBUF; /*接收一個數據*/
check_sum+=dat[i];/*求校驗和*/
}
while(RI= =0);RI=0; /*接收A機校驗和*/
if(SBUF^check_sum)= =0){/*比較校驗和*/
SBUF=0x00;breadk;} /*校驗和相同發“00”*/
else{
SBUF=0xff; /*出錯發“FF”,重新接收*/
While(TI= =0);TI=0;
}
}
}
void main(void){
InitSerialPort();
if(TR= =0){
SetMSM7512B(0); /*設置為發送狀態*/
SendData(buff);
}
else{
SetMSM7512B(1); /*設置為接收狀態*/
ReceiveData(buff);
}
}
評論