OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4013|回复: 4

有没有大神用过24l01实现arm和pc之间的通讯??

[复制链接]

2

主题

7

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2014-6-19
在线时间
0 小时
发表于 2014-6-29 10:20:38 | 显示全部楼层 |阅读模式
5金钱
用的是基于f103rb的最小系统板,借用了mini战舰开发板无线通信实验的模版,但怎么修改pc上总是收不到也发不出数据,有没有大神知道应该怎么修改,或者提供下您的源程序供参考,谢谢

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

38

主题

2061

帖子

6

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3273
金钱
3273
注册时间
2012-1-16
在线时间
37 小时
发表于 2014-6-29 19:05:01 | 显示全部楼层
站在巨人的肩膀上不断的前进。。。
回复

使用道具 举报

2

主题

7

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2014-6-19
在线时间
0 小时
 楼主| 发表于 2014-7-4 16:24:41 | 显示全部楼层
回复【2楼】xiaoyan:
<br>---------------------------------
<br>arm上看现象应该是能正常收发了,不会卡在发送成功的中断检测那里
<br>但是pc上的串口调试小助手没有任何反应
回复

使用道具 举报

38

主题

2061

帖子

6

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3273
金钱
3273
注册时间
2012-1-16
在线时间
37 小时
发表于 2014-7-4 19:13:40 | 显示全部楼层
回复【3楼】leilei4908:
<br>---------------------------------
<br>可能的原因:
<br>1.串口没有正确配置
<br>2.你的代码逻辑有问题。
<br>。。。
站在巨人的肩膀上不断的前进。。。
回复

使用道具 举报

2

主题

7

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2014-6-19
在线时间
0 小时
 楼主| 发表于 2014-7-4 19:32:45 | 显示全部楼层
<div   style="background-color:#E8E8E8;">
[mw_shl_code=c,true]u8 NRF24L01_TxPacket(u8 *txbuf)
{
&nbsp;&nbsp;&nbsp;&nbsp;u8 sta;
&nbsp;&nbsp;&nbsp;&nbsp;SPI1_SetSpeed(SPI_BaudRatePrescaler_8);//spi速度为9Mhz(24L01的最大SPI时钟为10Mhz)   
&nbsp;&nbsp;&nbsp;&nbsp;Clr_NRF24L01_CE;
&nbsp;&nbsp;&nbsp;&nbsp;NRF24L01_Write_Buf(NRF24L01_WR_TX_PLOAD,txbuf,TX_PLOAD_WIDTH);//写数据到TX BUF  32个字节
&nbsp;&nbsp;&nbsp;&nbsp;Set_NRF24L01_CE;//启动发送          
&nbsp;&nbsp;&nbsp;&nbsp;while(NRF24L01_IRQ!=0);//等待发送完成
&nbsp;&nbsp;&nbsp;&nbsp;sta=NRF24L01_Read_Reg(STATUS);  //读取状态寄存器的值          
&nbsp;&nbsp;&nbsp;&nbsp;NRF24L01_Write_Reg(NRF24L01_WRITE_REG+STATUS,sta); //清除TX_DS或MAX_RT中断标志
&nbsp;&nbsp;&nbsp;&nbsp;if(sta&amp;MAX_TX)//达到最大重发次数
&nbsp;&nbsp;&nbsp;&nbsp;{
        NRF24L01_Write_Reg(NRF24L01_FLUSH_TX,0xff);//清除TX FIFO寄存器
        return MAX_TX;
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;if(sta&amp;TX_OK)//发送完成
&nbsp;&nbsp;&nbsp;&nbsp;{
        return TX_OK;
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;return 0xff;//其他原因发送失败
}[/mw_shl_code]
</div>
<p style="text-indent:2em;">
        自检是能通过的,随便对换两个管脚后就通不过了,也就说明自检程序是有效的,管脚没有插错<br />
在 &nbsp; &nbsp;Set_NRF24L01_CE; &nbsp; &nbsp;这一行执行后IRQ确实从高电平变成了低电平<br />
这个是说明由串口发送到直接相连的24l01成功还是发送到另外一块24l01成功???<br />
现在我就是pc上的24l01接收不到任何数据,不知道是不是哪里没有配置正确<br />
收发地址都是一模一样的,这是pc无线串口的配置:波特率9600,通信频率2.400G,16位CRC校验,空中速率2Mbps<br />
</p>
<div   style="background-color:#E8E8E8;">
[mw_shl_code=c,true]void TX_Mode(void)
        {                                                                                                                 
        Clr_NRF24L01_CE;            
        NRF24L01_Write_Buf(NRF24L01_WRITE_REG+TX_ADDR,(u8*)TX_ADDRESS,TX_ADR_WIDTH);//写TX节点地址
        NRF24L01_Write_Buf(NRF24L01_WRITE_REG+RX_ADDR_P0,(u8*)RX_ADDRESS,RX_ADR_WIDTH); //设置TX节点地址,主要为了使能ACK          
       
        NRF24L01_Write_Reg(NRF24L01_WRITE_REG+EN_AA,0x00);     //使能通道0的自动应答   
        NRF24L01_Write_Reg(NRF24L01_WRITE_REG+EN_RXADDR,0x00); //使能通道0的接收地址  
        NRF24L01_Write_Reg(NRF24L01_WRITE_REG+SETUP_RETR,0x1a);//设置自动重发间隔时间:500us + 86us;最大自动重发次数:10次
        NRF24L01_Write_Reg(NRF24L01_WRITE_REG+RF_CH,0);       //设置RF通道为0
        NRF24L01_Write_Reg(NRF24L01_WRITE_REG+RF_SETUP,0x0f);  //设置TX发射参数,0db增益,2Mbps,低噪声增益开启   
        NRF24L01_Write_Reg(NRF24L01_WRITE_REG+CONFIG,0x0e);    //配置基本工作模式的参数WR_UP,EN_CRC,16BIT_CRC,接收模式,开启所有中断
        if(NRF24L01_IRQ==0)NRF24L01_Write_Reg(NRF24L01_WRITE_REG+STATUS,0x70);
        Set_NRF24L01_CE;//CE为高,10us后启动发送
        }[/mw_shl_code]
</div>
<br />
这里的PWR_UP连接哪个管脚,需要和24l01相连么??我直接用3.3v供电的<br />
我这里还有什么地方配置不正确的么???
<p>
        <br />
</p>
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 15:43

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表