短距離ISM頻段無線數(shù)據(jù)傳輸?shù)膽?yīng)用設(shè)計
ATA5428的靈敏度已經(jīng)相當理想,當有些特殊場合需較遠的通信距離的應(yīng)用時,如雙向汽車遙控器等,可以在ATA5428的RF輸入端加一級低噪聲放大器LNA(見圖2),以進一步提高ATA5428的接收靈敏度。放大電路的輸入和輸出都采用了LC匹配網(wǎng)絡(luò)。放大器的實際增益高達近20dB,可以提高4dB到6dB的靈敏度,相當于增加30%~80%的距離。
圖2 LNA應(yīng)用電路
軟件設(shè)計
眾所周知,一般無線數(shù)字接收機在接收有效數(shù)據(jù)之前,必須要識別數(shù)據(jù)開始的標志信息及前導(dǎo)碼PREAMBLE和同步頭SYNCWORD(見圖3)。前導(dǎo)碼是由若干01010…數(shù)據(jù)組成主要是用于恢復(fù)與同步無線接收機的時鐘,同步頭可以是若干特定的數(shù)據(jù),它標志著數(shù)據(jù)的開始,ID FIELD是個可選項,用于識別接收機的地址。 數(shù)據(jù)域DATA FIELD是真正的數(shù)據(jù)區(qū),數(shù)據(jù)的長度通常是可變的,CRC是對ID FIELD和DATA FIELD的效驗,可以選擇CRC16或CRC32。ATA5428推薦用Manchester 編碼以區(qū)別與其他同類IC,ATA5428檢測前導(dǎo)碼采用比較每個比特的脈沖寬度,并有一個可設(shè)置比特數(shù)據(jù)的長度的范圍窗口,其他同類IC則采用識別是否有01010…數(shù)據(jù)來識別前導(dǎo)碼,ATA5428這種比較前導(dǎo)碼的方式,顯然具有明顯的優(yōu)點,抗干擾能力大大增強。
圖4 ATA5428接收示意圖
ATA5428有2種接收工作模式,普通模式和透明模式。我們這個應(yīng)用采用的是普通模式。在普通模式下,接收的過程是當檢測到前導(dǎo)碼和同步頭后,激活收發(fā)數(shù)據(jù)緩沖控制邏輯,并且把數(shù)據(jù)寫入收發(fā)數(shù)據(jù)緩沖區(qū),如圖4所示。這里需注意的是ATA5428只有16字節(jié)的緩沖區(qū)。如果數(shù)據(jù)隊列長度超過16個字節(jié),那么會發(fā)生緩沖溢出,所以數(shù)據(jù)的及時讀入非常重要,這樣可以避免數(shù)據(jù)的溢出。ATA5428有一個顯示接收數(shù)據(jù)的計數(shù)器,當計數(shù)器的值到達了某一個值后,可以通過中斷的方式與MCU進行通信。
ATA5428在工作之前需要對其初始化,下面僅給出在普通接收模式下的初始化函數(shù)與發(fā)送的初始化函數(shù)。
void receive_init()
{
__disable_interrupt(); //disable all
interrupts
SETBIT(PORTD,CS_5428); //CS___/----
spi(write_ctr_reg|5); //0xa5--->ctr6
spi(write_ctr_reg|4); //0x50--->ctr5
spi(0x90); //6 bits check, lim_min:
16,4b
spi(write_ctr_reg|3); //0x80--->ctr4
spi(0x00);
//FREQ = (frf/fxto-32.5)*16384-20.5,3928
spi(write_ctr_reg|2); //0x7b--->ctr3
spi(0x7b); //vsout on, clock out on
spi(write_ctr_reg|1); //0xb0--->ctr2
spi(0xb1); //manchester modulator on
spi(write_ctr_reg|0); //0x42--->ctr1
spi(0x26); //tx mode.send 1data
every time
CLRBIT(PORTD,CS_5428);//close 5428
spi interface
SETBIT(PORTD,CS_5428);
spi(cancel_IRQ);
CLRBIT(PORTD,CS_5428);//close 5428
spi interface
send.sum_value = 0;
}
評論