|
本帖最后由 MiniCat 于 2012-4-30 00:01 编辑
第一件事:
目前调试SI4432的过程中遇到这样一件事情,当发射时写完发射FIFO后,打开发射中断
SpiWriteAddressData( TransmitPacketLength , len);
for(i=0;i<len;i++)
{
SpiWriteAddressData( FIFOAccess , *databuf);
databuf++;
}
TxGPIOSetting();
SpiWriteAddressData( InterruptEnable1 , 0x04); //使能包发射中断
SpiWriteAddressData( InterruptEnable2 , 0x00);
SpiWriteAddressData( OperatingFunctionControl1 , 0x0B);
做完这些之后等待发射中断发生,在9600空中波特率下,当传送7个和8个字节数据的时候等不到中断(但是数据却发送正常),其他字节数都可以等到中断。
while((Rf.ItStatus1&0x04)==0)
{
WDR();
Rf.ItStatus1 = SpiReadAddressData(InterruptStatus1);
Rf.ItStatus2 = SpiReadAddressData(InterruptStatus2);
}
这是为什么呢?
第二件事:
当查询到0x03地址的0x04中断后,要延时一段才能置接收模式,不然发送数据就不正常。
RFSetIdleMode();
Delay_1ms();
RFSetRxMode();
我是先置成IDLEmode,再置成接收模式,中间延时1ms
我要问的就是收发转化这里,当收到04发射中断后,为什么要延时才能通信正常,一般应延时多少呢?还是我的处理过程不正确?
第三件事:
想做无线数据的实时传输,串口接收一字节数据就在无线端发送一字节数据,这个想法可行吗?或者说如何把做这个延时时间做到最短呢?
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|