金牌会员
 
- 积分
- 1243
- 金钱
- 1243
- 注册时间
- 2016-1-23
- 在线时间
- 487 小时
|

楼主 |
发表于 2016-3-9 21:57:24
|
显示全部楼层
SPI查询方式,整个 si446x_GET_MODEM_STATUS函数能读出的只有cmd[0]和cmd[3],其它的都是0,cmd[0]读出始终是255。
/*!
* 获取调制解调器状态标志。可选择清除它们。
*
* @参数 MODEM_CLR_PEND 标志清除。
*/
void si446x_GET_MODEM_STATUS(u8 MODEM_CLR_PEND )
{
u8 cmd[9];
cmd[0] = GET_MODEM_STATUS;
cmd[1] = MODEM_CLR_PEND;
SI446X_CMD(cmd,2);
SI446X_READ_RESPONSE(cmd, 9);//读取命令响应的数组
LATCH_RSSI = cmd[3];
若在这里显示cmd[3],最大为234,RSSI(indBm)=(RSSI_value/2)–130得出 -13dBm(两天线靠在一起的),
把功率调小
发送方功率设置: SI446X_SET_POWER(0x01);
接收方功率设置: SI446X_SET_POWER(0x00);
在2GFSK 30Kbps 频偏20K,距离大概只有25CM。远了收不到,在 cmd[3]读出115以下接收到的包是乱码,以cmd[3]=116算出为-72dBm
同样的功率换 1Kbps,距离大概到2米,远了收不到,cmd[3]读出最小时44,若换算出来是 -108dBm
在读取cmd[3]的值时一直在跳动,不稳定,无论读出多大都会出现很小的值:155; 107; 4 ; 96不稳定
现在的问题是在主函数显示cmd[3]的值时始终是4,在 void si446x_GET_MODEM_STATUS(u8 MODEM_CLR_PEND ) 函数的 SI446X_READ_RESPONSE(cmd, 9);// 后面加上 delay_ms(10); 时能读出cmd[3]的值
那位用过SI4463的来分享下,没有就当做笔记吧 |
|