短距离ISM频段无线数据传输的应用设计
发送的过程首先是初始化,然后从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公司
评论