jinguoju 发表于 2011-10-12 10:44:12

Si4432无法改变传输速率

各位大侠,
我在调试SI4432时,原来使用40Kbps传输速率,想修改成9.6Kbps,使用EXCEL计算出R6E=4E、R6F=A5、R70=2E的值后修改这三个寄存器值(在发送端和接收端进行了同样的修改)。结果发送可以正常发送,接收不能正确接收(接收标志位始终为0)。
希望大侠们给分析一下原因。附上接收函数
u8 RF4432_RxPacket(void)
{
Clr_PAC;
RF4432_WriteReg(INTERRUPT_ENABLE_1, 0x02);
RF4432_WriteReg(OPERATING_FUNCTION_CONTROL_1,0x05);//接收
if(READ_RF4432_IRQ==RESET)
{
if(RF4432_ReadReg(INTERRUPT_STATUS_1)&0X02)
{
    if(RF4432_ReadReg(INTERRUPT_STATUS_1)&0x01)return 2;
       return 1;
}
}
return 0;
}

jinguoju 发表于 2011-10-12 15:40:30

回复【楼主位】jinguoju
-----------------------------------------------------------------------

有没有哪位修改过发射速率呀?帮帮忙呀~~~~

jinguoju 发表于 2011-10-13 14:21:13

回复【楼主位】jinguoju
-----------------------------------------------------------------------

看来只能自己顶了

各位都没有修改过传输速率吗?能不能替我试一下你们的行不行。是只修改那三个寄存器吗?

40560335 发表于 2011-10-16 02:02:59

买过个开发板,可惜没有程序,带个液晶屏可是调频率、速率啥的,我的程序现在还有点问题,收发必须用一个程序才行,只接收直接收不到,郁闷。

jinguoju 发表于 2011-10-19 17:09:55

回复【3楼】40560335 柏拉图的永恒
-----------------------------------------------------------------------

你的主芯片是什么?

3944656 发表于 2011-10-20 18:34:27

回复【4楼】jinguoju
-----------------------------------------------------------------------

还必须修改0x1c 0x20 0x21 0x22 0x23 0x24 0x25寄存器

adamj 发表于 2011-10-24 10:08:00

同意楼上

wendan 发表于 2011-10-28 11:31:04

楼上正解,不只是修改波特率的3个寄存器,应该有10多寄存器要修改,你对照那个表格一一检查一遍

zplmcu 发表于 2011-11-8 01:40:33

回复【7楼】wendan
-----------------------------------------------------------------------

si4432稍微修改一次 一大推的寄存器会变动 比较麻烦,不过用熟悉了还是一样的,

跟个问题啊 如果我需要一对多通讯的话 如何设置ID

难道是使用FIFO载荷包拿几个BYTES出来当地址ID使用???没看到有ID地址设置。。。。。。。

同步字节可以可以自己写,收发一样的,但那也只是一对一通讯,多机的话只能是使用数据包做ID来区分??????求解

wendan 发表于 2011-11-8 14:30:17

回复【8楼】zplmcu
-----------------------------------------------------------------------

之前我做的东西确实是在载荷中加ID来区分的,对于一对多通信是没有问题的

zplmcu 发表于 2011-11-11 18:13:39

回复【9楼】wendan
-----------------------------------------------------------------------
to wendan
楼上你好 ,在调试SI4432的时候 也遇到楼主的问题 ,

但是我相关连的寄存器都有设置
#define TRX_FREQUENCY         (433000000L)      //载波
#define TRX_CHANNEL_SPACING   (0)               //跳频
#define TRX_DEVIATION         (20000L)             // 偏频
#define TRX_DATA_RATE         (60000L)             //速率
#define RX_BANDWIDTH          (100000L)           //IF滤波器带宽


phyWrite(EZRADIOPRO_AFC_LOOP_GEARSHIFT_OVERRIDE, DEFAULT_AFC_LOOP_GEARSHIFT_OVERRIDE);   // 0x1D       //使能AFC频率校正
   phyWrite(EZRADIOPRO_CLOCK_RECOVERY_OVERSAMPLING_RATIO, CALC_CLOCK_RECOVERY_OVERSAMPLING_RATIO(RX_DWN3_BYP,RX_NDEC_EXP,TRX_DATA_RATE)); // 0x20.//时钟恢复过抽样率
   phyWrite(EZRADIOPRO_CLOCK_RECOVERY_OFFSET_2,CALC_CLOCK_RECOVERY_OFFSET_2(RX_DWN3_BYP,RX_NDEC_EXP,TRX_DATA_RATE));                   // 0x21
   phyWrite(EZRADIOPRO_CLOCK_RECOVERY_OFFSET_1, CALC_CLOCK_RECOVERY_OFFSET_1(RX_DWN3_BYP,RX_NDEC_EXP,TRX_DATA_RATE));                  // 0x22
   phyWrite(EZRADIOPRO_CLOCK_RECOVERY_OFFSET_0, CALC_CLOCK_RECOVERY_OFFSET_0(RX_DWN3_BYP,RX_NDEC_EXP,TRX_DATA_RATE));                  // 0x23
   phyWrite(EZRADIOPRO_CLOCK_RECOVERY_TIMING_LOOP_GAIN_1, CALC_CLOCK_RECOVERY_TIMING_LOOP_GAIN_1(TRX_DATA_RATE,RX_DWN3_BYP,RX_NDEC_EXP,TRX_DEVIATION)); // 0x24
   phyWrite(EZRADIOPRO_CLOCK_RECOVERY_TIMING_LOOP_GAIN_0,CALC_CLOCK_RECOVERY_TIMING_LOOP_GAIN_0(TRX_DATA_RATE,RX_DWN3_BYP,RX_NDEC_EXP,TRX_DEVIATION));// 0x25
   phyWrite(EZRADIOPRO_AFC_LIMITER,AFC_LIMIT );                    // 0x2A


相关的寄存器已经修改 ,通过仿真确实数据是没问题的
#define TRX_DEVIATION         (20000L)             // 偏频
#define TRX_DATA_RATE         (60000L)             //速率
#define RX_BANDWIDTH          (100000L)           //IF滤波器带宽
这三个 是按着那个来算的   BANDWIDTH=TRX_DATA_RATE+2*TRX_DEVIATION   符合这个规律
上面给的这个值是可以通讯的 ,但是稍微修改其中一个变量, 可能能通讯可能不能通讯 ,速率低于30K根本无法通讯,大于100也通讯不了,
这三者是不是有相应的要求,没看到datasheet 有介绍三者的联系,程序中关联寄存器会自动修改的,启动了AFC

wendan 发表于 2011-11-14 13:54:47

回复【10楼】zplmcu
-----------------------------------------------------------------------
偏频各个速率下参考值不同,9.6k波特率建议 45KHz,57.6K速率建议30KHz,当然也可以设置更低,前提是晶体中心频率够准,不能通信会不会是晶体的频率偏的比较大,另外带宽应该是计算的3db带宽,用excel表格输入参数会显示BW值,通过 1C,20~25寄存器来设置,另外excel表格要确认是否是对应的版本,si4432应该有V2 、B1等几个版本,版本不同某些寄存器的设置也是不同的

zplmcu 发表于 2011-11-22 01:20:01

回复【12楼】wendan
-----------------------------------------------------------------------

谢谢提醒,现在是根据BI版本的excel表格来计算的,测试了下 几个速率都可以通讯。。。。。。
查看了相关文档,对于各个波段,速率 带宽 都相互影响着,这个配置比较灵活,

wendan 发表于 2011-11-22 09:01:57

回复【13楼】zplmcu
-----------------------------------------------------------------------

不用客气,速率和偏频这两个参数对通信距离有很大影响,同一个波特率下,如果晶振够准,中心频率偏差较小,那么你的偏频可以设置小,这样带宽会窄,接收灵敏度会高些,偏频大些,那么接收更可靠(因为不能保证中心频率不偏),excel表格上可以看出,当你改变偏频值,理论接收灵敏度值在变化,这样可以有个参考。我也有一段时间没接触了,以前做的东西也不是很稳定。

jinguoju 发表于 2011-12-5 22:28:10

回复【14楼】wendan
-----------------------------------------------------------------------

感谢wendan的详细解答,这个问题我很早解决了。wendan说得很详细,也是我的问题所在,可惜的是没能帮上我,希望这个正解能帮助到更多的人。

glm541 发表于 2012-2-1 17:00:36

我也正在做,距离短,怎么办呢?
页: [1]
查看完整版本: Si4432无法改变传输速率