nrf905

时间:2024-06-23 04:45:50编辑:分享君

Zigbee无线通信跟基于nRF24l01模块的无线通信有什么区别

无线通信可以使用某种通信协议如zigbee或者蓝牙什么的,也可以不使用这些规范的通信协议。Zigbee无线通信大多是使用集成这种协议的RF芯片实现的;基于nRF24l01模块的无线通信;由于nRF24l01射频芯片自身没有集成任何协议,所以基于nRF24l01模块的无线通信需要自定义通信协议来使用,控制的方式也有很多种。当然也可以使用nRF24l01模块,同时编程实现zigbee协议来控制它,实现一套基于nRF24l01模块的Zigbee无线通信系统。


你好,看了你的,看了你对nRF905无线模块的回答,我是一个学生,刚开始学习用单片机控制nRF905去发送和

对于刚学这个的人,无线通信已经足够难了,不建议自己琢磨,这种工程电子,完全的经验论,见得多了,就见惯不怪了。搞不大懂是因为见的不多,一天建一个就足够了,当你调试有难度的东西,你发现一天见了十个新的东西肯定吃不消。比如这个无线通信,含有spi串行通信的问题,寄存器地址的问题,相关寄存器设置的问题等等。有一丁点没有调通,那么都无法正常工作,这还不包含电路连接方面的步骤。
那么我提及一些明显的问题说下。你的程序明显是个发送程序,包含了寄存器的配置,但其中寄存器咋配置的,如果说接受和发送配置成了0x20,0x20,那么是否存在这种数据宽度,其中可选择的只有0x01,0x04,0x20;那么则默认传输字节是32字节。而在发送函数中却写着 SpiWrite(t);
这个是否能占满32字节,答案是否定的,这样导致结果可能是不能发送,即使能发送也不是真正正确的方法。真正占满32字节的如何写:void TxPacket(void)
{
unsigned int i;
// Display_Temperature();
TXEN=1;
CSN=0;
SpiWrite(0x22); //写发送地址
SpiWrite(0xE7);
SpiWrite(0xE7);
SpiWrite(0xE7);
SpiWrite(0xE7);
CSN=1;
_nop_();_nop_();
CSN=0;
SpiWrite(0x20); //写发送数据命令
for(i=0;i<32;i++)
{SpiWrite(dis_buf[i]);}

CSN=1;
_nop_();_nop_();
TRX_CE=1;
Delay(50);
TRX_CE=0;
while(!DR);
}
明显其中有个for循环32次,即使只有一个‘k’那么也请把这条函数写清楚。
主函数中提倡加一个延时函数。因为程序中,没有包含无线通信的握手,也没有接受应答的函数,所以接收机可能处理不过来,最简单的就是加延时,前提是你没有设置自动重发的前提下。
另外没有一个像样子的发送数据用的数组,所以请加上一个三十二字节的数组。只发送一个t=k没什么意义,但也请加入数组中。
TX_EN=1;TRX_CE=1;等端口可以设置905是接收状态还是发送状态,这点没什么说的,就是个高低电平。
既然你写了发送函数,那么我把接收子函数单提出来粘上。

void RxPacket(void)
{
uchar i;
i=0;
while(DR)
{
TxRxBuffer[i]=SpiRead();
i++;
}
}

void Wait_Rec_Packet(void)
{
TXEN=0;
TRX_CE=1;
while(1)
{
if(DR)
{
TRX_CE=0;
CSN=0;
SpiWrite(0x24);
RxPacket();
CSN=1;
LED2=0;
DelayMs(500);
LED2=1;
DelayMs(500);
break;
}
}
}

同样接收函数也应该有接收数组。那么还请您参看网上正确的905程序,自行调试更改实现自己的功能,虽说把一些问题讲到了,但我并不建议去认真学习此类东西,想编写出此类程序,需要有手册并且有一定c功底且运气还得好,不卡壳。除非是向开发驱动,不然会拖延很长时间。


led灯能直接连接51单片机吗?

不能

准确的说是不允许。单片机应只考虑开和关两种逻辑状态。这种LED灯是不是能接单片机的问题属于驱动能力问题。如果每次设计都要去考虑单片机管脚可以承受或者输出的电流,或者计算单片机可以带多大的负载,那你的设计工作的复杂性就会成倍的放大同时可靠性也会降低很多。

也许你使用的LED需要极小的电流就可以驱动而你的单片机带负载的能力很强。从电路的角度考虑是可以直接连。但是这种情况下依然不允许将LED直接连接单片机管脚直接进行驱动。因为这种设计思路根本就是错的,出发点都错了,分析的结论再正确也不行。

不一定非要使用三极管来驱动,虽然我们通常的做法是用三极管。可以用一些集成电路作为驱动。不过你的设计非常简单的话,用一个三极管也就可以了。不过注意加限流电阻,别把LED烧了。


上一篇:摄像头驱动在哪

下一篇:太赫兹概念股