|
发表于 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 |
|