微波EDA网,见证研发工程师的成长!
首页 > 射频和无线通信 > 射频无线通信文库 > 短距离ISM频段无线数据传输的应用设计

短距离ISM频段无线数据传输的应用设计

时间:04-30 来源:电子产品世界 点击:

据的溢出。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 interface
   send.sum_value = 0;
 }

发送的过程首先是初始化,然后从SPI口送出2-3字节的01010…前导码,由于设置的是Manchester,发送几个0XFF即可,后面的格式可以参照图4的数据的传输格式。发送函数如下。
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口。

结语

实验表明本设计具有成本低,功耗小,通信距离远等特点,经过实际的运行测量,开阔地通信距离超过500m。特别在应用环境较为复杂,数据信号容易受到各种噪声干扰的情况下,该方案的可靠性明显优于超再生的数据传输方案。

参考文献:

1.  ATA 5428 datasheet, ATMEL公司

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top