SI4432收发转换问题以及收发效率问题请教
本帖最后由 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发射中断后,为什么要延时才能通信正常,一般应延时多少呢?还是我的处理过程不正确?
第三件事:
想做无线数据的实时传输,串口接收一字节数据就在无线端发送一字节数据,这个想法可行吗?或者说如何把做这个延时时间做到最短呢?
现在是不是用SI4432的人已经很少了,大家现在都转到什么IC了? 你好,请问你的SI4432程序用的中断还是查询啊? roman99190@sina 发表于 2012-8-6 09:31 static/image/common/back.gif
你好,请问你的SI4432程序用的中断还是查询啊?
中断方式 能指导我下嘛,我的程序一直调不通。。。我QQ1585612009 我也在学si4432,我遇到一些问题。模块的寄存器,怎么也写不了数据,求交流。QQ1532460434. 老鼠爱上猫 发表于 2012-8-14 00:42 static/image/common/back.gif
我也在学si4432,我遇到一些问题。模块的寄存器,怎么也写不了数据,求交流。QQ1532460434. ...
SPI没通,先用软件模拟SPI 调通后在尝试硬件SPI,就会有一个方向。 最近我在调试SI4432的无线模块 现在发现双向通信丢失数据很严重
我测试时 是一个si4432发送数据另外一个接受数据后 再转发回来
发现 在600组数据中 接受部分只丢了几组
但是 转发回来后就丢失很严重 距离10米的时候 返回的数据 600组只收到100组都不到
当距离在一米以内的时候返回数据又好多了 功率都是17mdb
请问大侠要修改什么地方可以解决
wanchun311 发表于 2012-8-18 20:31 static/image/common/back.gif
功率都是17mdb
请问大侠要修改什么地方可以解决
接收的时候读取下26H,手册上有输入功率与RSSI的对比表,你参考下,感觉你射频的输出功率不够,所以才100m就丢的那么严重。 MiniCat 发表于 2012-8-17 10:49 static/image/common/back.gif
SPI没通,先用软件模拟SPI 调通后在尝试硬件SPI,就会有一个方向。
软件模拟spi,用的是spi的00模式还是什么模式?我看的时序上,应该是00模式,但是我模拟的话,就是控制不了 roman99190@sina 发表于 2012-8-6 09:31 static/image/common/back.gif
你好,请问你的SI4432程序用的中断还是查询啊?
4432用的中断模式 模块厂商都给的查询模式。都是简单的傻瓜式示范程序,实际应用肯定是用中断模式了。
大家都习惯用什么模式FIFO还是PH呢?我的数据包大了100个字节左右,上的FIFO模式。 如果需要实现232的透明传输的话,如LZ所说“想做无线数据的实时传输,串口接收一字节数据就在无线端发送一字节数据”这样的效果。用FIFO这种有缓存区的数字调制方式,可以吗?我自己感觉这样不容易实现,应该用直接模式,,
哈,看了楼主这么多帖,也跟了很多,不知道楼主的透传模块做得如何了。大概与你同一时期我也在做透传模块,当然现在已经完成了。目前能在19200速率下传输任意大小数据。用FIFO和直接模式都是可以的,只是限于单片机,用FIFO模式可以达到的速率会高点,用直接模式需要用IO口读BIT数据,同时需要判断引导码,同步字,CRC等,能达到的速率会低点。 rf_smart 发表于 2013-3-31 11:02 static/image/common/back.gif
哈,看了楼主这么多帖,也跟了很多,不知道楼主的透传模块做得如何了。大概与你同一时期我也在做透传模块, ...
去年7月份就开始出货了,一直在去年年底一直功能上陆陆续续的升级。今年准备换频段,硬件软件上改动比较大,所以又是个麻烦事,这东西搞起来头疼死了。 rf_smart 发表于 2013-3-31 11:02 static/image/common/back.gif
哈,看了楼主这么多帖,也跟了很多,不知道楼主的透传模块做得如何了。大概与你同一时期我也在做透传模块, ...
我那个是做透传抄表的,波特率要求1200 2400 4800 9600 19200自识别那种,字节数也不多,最大包也就200多字节吧。 第二件事:
当查询到0x03地址的0x04中断后,要延时一段才能置接收模式,不然发送数据就不正常。
RFSetIdleMode();
Delay_1ms();
RFSetRxMode();
我是先置成IDLEmode,再置成接收模式,中间延时1ms
我要问的就是收发转化这里,当收到04发射中断后,为什么要延时才能通信正常,一般应延时多少呢?还是我的处理过程不正确?
-----------------------------------------------------------
你好,请问这个问题能不能给点提示呢?
我在调试接收时也碰到类似情况。
进入 【包有效中断】0x02 ,收取数据,重新设置为 XTON |RX (0x05模式)。
但是经常就停止接收了。
后来在主循环里,一直轮询这个模式寄存器,发现中断设置成0x05后(设置后读取一直是0x05正常的),在主循环里轮询会发现有一半几率会从0x05变回0x01。
看手册里是只有【包有效中断】才会变回0x01。
页:
[1]