欢迎来到天天文库
浏览记录
ID:1779827
大小:28.00 KB
页数:2页
时间:2017-11-13
《fsk解码原理及实现方法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、FSK解码原理及实现方法1.解码数学原理条件: FSK的频率为:1200/2200-->1/0; wc=1700,即(1200+2200)/2,设delta=+500/-500; T是采样周期 则: 1200可表示为cos((wc-delta)*t); 2200可表示为cos((wc+delta)*t);设第n次采样值为cos((wc+/-delta)*(t-T)),第n+1采样值为cos((wc+/-delta)*t).有:value(n)*value(n+1)=cos((wc+/
2、-delta)*t)*cos((wc+/-delta)*(t-T)) =[cos((wc+/-delta)*t+(wc+/-delta)*(t-T))+cos((wc+/-delta)*t-(wc+/-delta)*(t-T))]/2=[cos(2*(wc+/-delta)*t-(wc+/-delta)*T)+cos((wc+/-delta)*T)]/2 (1) (H) (L)将(1)式通过一个低通滤波器,则(1)式的(H)项即2位频率被滤掉,只剩下(L)项:(1
3、)--->Lowpassfilter--->cos((wc+/-delta)*T)再看: cos((wc+/-delta)*T)=cos(wc*T+/-delta*T) (2) IF: wc*T=PI/2 则cos(wc*T+/-delta*T)=cos(PI/2+/-delta*T) =-/+sin(delta*T) (3)(3)式则是FSK的值,2.滤波器. 对于来电显示,下面这段程序可以达到解码的要求 定义: #define FS
4、KBUF4 byte g_cADCResult;//A/D的采样值 int currentx,currenty,lastx,last_sample; int g_iFSKBuf[FSKBUF]; int g_iFSKAvg; int g_iFSKBuf1[FSKBUF]; int g_iFSKAvg1; int g_iFSKBuf2[FSKBUF]; int g_iFSKAvg2; byte g_cFSKBufPoint; //在滤波之前将变量初化
5、为0 程序实现:(每次采样要做以下工作,注意采样频率和CID的波特率不是倍数关系 currentx=g_cADCResult; currenty=last_sample; last_sample=currentx; //lastsampleincurrenty,nowsampleincurrenx; currenty *=currentx;//cos(t)*cos(t-T)=-/+sin(delta*T); //------avg--lowpassfilter; g_iFSKAvg-=g_i
6、FSKBuf[g_cFSKBufPoint]; g_iFSKBuf[g_cFSKBufPoint]=currenty; g_iFSKAvg+=currenty; currenty=g_iFSKAvg; //---------endfilter; g_iFSKAvg1-=g_iFSKBuf1[g_cFSKBufPoint]; g_iFSKBuf1[g_cFSKBufPoint]=currenty; g_iFSKAvg1+=currenty; currenty=g_iFSKAvg1; //s
7、econdfilterover g_iFSKAvg2-=g_iFSKBuf2[g_cFSKBufPoint]; g_iFSKBuf2[g_cFSKBufPoint]=currenty; g_iFSKAvg2+=currenty; currenty=g_iFSKAvg2; //thirdfilterover g_cFSKBufPoint++; g_cFSKBufPoint%=FSKBUF; if(currenty>0) { //接收到bit1 } else {
8、 //接收到bit0 }
此文档下载收益归作者所有