|
两个组合模块:51单片机+nRF905模块,一个为发送方32个字节数据,接收方接收32个字节数据,并将接收到的数据送至PC显示。
结果是,发送和接收两者之间的通信不成功。
已经验证过接收方的MCU和PC机之间的串口通信是正常的;
也验证单片机和905之间的SPI通信时正常的;
示波器观察发送发905的DR引脚,有跳变,说明发送方是正常的;
示波器观察接收方905的DR引脚,DR信号很微弱,被50Hz的正弦波信号淹没,可知,问题出在接收方。
有坛友提出,是905的寄存器配置问题,这程序里,发送方和接收方的寄存器配置是相同的,10个字节的配置如下
{
0x4c, //配置频段为430MHz,
0x0c, //输出功率为10dBm,正常接收模式,不自动重发
0x44, //接收、发送的地址宽度为4字节
0x20,0x20, //接收、发送有效数据宽度为32字节
0xcc,0xcc,0xcc,0xcc, //接收地址的4个字节为0xcc,0xcc,0xcc,0xcc
0x58 , //CRC校验允许,8位CRC校验,外部时钟信号不使能,16M晶振
}
配置寄存器的字节5,6,7,8分别是RX地址的0字节,1字节,2字节,和3字节。
发送方和接收方的RX地址的字节配置都是0xcc,0xcc,0xcc,0xcc,
在发送方通过将TRX_CE置高来启动发送之前,通过SpiWrite(WTA)写入了TX地址,且为0xcc,0xcc,0xcc,0xcc。
保证发送方和接收方地址匹配来建立通信。
所以,目前还不知道问题出在哪里?
|
|