短距離ISM頻段無(wú)線(xiàn)數據傳輸的應用設計
ATA5428的靈敏度已經(jīng)相當理想,當有些特殊場(chǎng)合需較遠的通信距離的應用時(shí),如雙向汽車(chē)遙控器等,可以在A(yíng)TA5428的RF輸入端加一級低噪聲放大器LNA(見(jiàn)圖2),以進(jìn)一步提高ATA5428的接收靈敏度。放大電路的輸入和輸出都采用了LC匹配網(wǎng)絡(luò )。放大器的實(shí)際增益高達近20dB,可以提高4dB到6dB的靈敏度,相當于增加30%~80%的距離。
圖2 LNA應用電路
軟件設計
眾所周知,一般無(wú)線(xiàn)數字接收機在接收有效數據之前,必須要識別數據開(kāi)始的標志信息及前導碼PREAMBLE和同步頭SYNCWORD(見(jiàn)圖3)。前導碼是由若干01010…數據組成主要是用于恢復與同步無(wú)線(xiàn)接收機的時(shí)鐘,同步頭可以是若干特定的數據,它標志著(zhù)數據的開(kāi)始,ID FIELD是個(gè)可選項,用于識別接收機的地址。 數據域DATA FIELD是真正的數據區,數據的長(cháng)度通常是可變的,CRC是對ID FIELD和DATA FIELD的效驗,可以選擇CRC16或CRC32。ATA5428推薦用Manchester 編碼以區別與其他同類(lèi)IC,ATA5428檢測前導碼采用比較每個(gè)比特的脈沖寬度,并有一個(gè)可設置比特數據的長(cháng)度的范圍窗口,其他同類(lèi)IC則采用識別是否有01010…數據來(lái)識別前導碼,ATA5428這種比較前導碼的方式,顯然具有明顯的優(yōu)點(diǎn),抗干擾能力大大增強。
圖4 ATA5428接收示意圖
ATA5428有2種接收工作模式,普通模式和透明模式。我們這個(gè)應用采用的是普通模式。在普通模式下,接收的過(guò)程是當檢測到前導碼和同步頭后,激活收發(fā)數據緩沖控制邏輯,并且把數據寫(xiě)入收發(fā)數據緩沖區,如圖4所示。這里需注意的是ATA5428只有16字節的緩沖區。如果數據隊列長(cháng)度超過(guò)16個(gè)字節,那么會(huì )發(fā)生緩沖溢出,所以數據的及時(shí)讀入非常重要,這樣可以避免數據的溢出。ATA5428有一個(gè)顯示接收數據的計數器,當計數器的值到達了某一個(gè)值后,可以通過(guò)中斷的方式與MCU進(jìn)行通信。
ATA5428在工作之前需要對其初始化,下面僅給出在普通接收模式下的初始化函數與發(fā)送的初始化函數。
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;
}
評論