短距离ISM频段无线数据传输的应用设计 |
2008-5-4 9:11:00 郑辉 谢海棠 供稿 |
| 摘 要: 给出ATA5428在ISM频段短距离双向无线数据通信中的应用。 关键词: ATA5428;ISM;433MHz短距离双向无线通信 引 言 系统电路设计 ![]() 图1 ATA5428应用电路 图1中L4与C1的作用是补偿输入阻抗成为50Ω,同样L2与C8的作用是用于补偿使输出阻抗为50Ω,同时L2还起到高频扼流的作用。C9,L1,C10组成一个三阶低通滤波电路,3dBm的截止频率约为500MHz左右,低通滤波电路一方面可以抑制发射的高次谐波,另一方面可以衰减输入噪音。必须注意,为了降低输入输出网络的互相影响,在ATA5428 的内部增加了一个天线开关,在发射状态时开关闭合,输入网络前的20mm×0.4mm传输线由于长度远远小于1/4波长,所以等效与一个电容接地,而在接收时,等效一个电感,这部分的设计必须注意的是分布参数影响。另外高频部分的走线尽量的短粗,元器件参数要根据线路板的实际情况作出适当的调节,以抵消分布参数的影响。 ATA5428的灵敏度已经相当理想,当有些特殊场合需较远的通信距离的应用时,如双向汽车遥控器等,可以在ATA5428的RF输入端加一级低噪声放大器LNA(见图2),以进一步提高ATA5428的接收灵敏度。放大电路的输入和输出都采用了LC匹配网络。放大器的实际增益高达近20dB,可以提高4dB到6dB的灵敏度,相当于增加30%~80%的距离。 ![]() 图2 LNA应用电路 软件设计 ![]() 图3 ATA5428接收示意图 ATA5428有2种接收工作模式,普通模式和透明模式。我们这个应用采用的是普通模式。在普通模式下,接收的过程是当检测到前导码和同步头后,激活收发数据缓冲控制逻辑,并且把数据写入收发数据缓冲区,如图3所示。这里需注意的是ATA5428只有16字节的缓冲区。如果数据队列长度超过16个字节,那么会发生缓冲溢出,所以数据的及时读入非常重要,这样可以避免数据的溢出。ATA5428有一个显示接收数据的计数器,当计数器的值到达了某一个值后,可以通过中断的方式与MCU进行通信。 ATA5428在工作之前需要对其初始化,下面仅给出在普通接收模式下的初始化函数与发送的初始化函数。 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口送出2-3字节的01010…前导码,由于设置的是Manchester,发送几个0XFF即可,后面的格式可以参照图3的数据的传输格式。 void transfer_data() { SETBIT(PORTD,CS_5428);//CS_5428 ___/———— spi(write_TRX_buffer);//write writing buffer command spi(0xFF);//send 0xFF ,for bit check spi(0xFF);//send 0xFF ,for bit check spi(0x55); //for SYNCWORD spi(‘T‘);//send ‘T‘ . . ID FIELD和DATA FIELD CRC16 . . CLRBIT(PORTD,CS_5428);//CS_5428 ——- -\____ SETBIT(PORTD,CS_5428);//CS_5428 ___/———— spi(write_ctr_reg|0);//0x00 -> ctr1 spi(0x00);//go to IDLE mode CLRBIT(PORTD,CS_5428);//CS_5428 ——- -\____ } ATA5428收到数据后,主动发出中断请求,MCU响应中断,并且调用接收函数,接收过程首先是判断同步码是否正确,然后将数据域和CRC效验接收下来,若效验通过则输出到UART口。 结 语 参考文献: |



