OpenEdv-开源电子网

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

NRF24L01与WM8978问题求救!

[复制链接]

2

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2017-8-3
在线时间
20 小时
发表于 2017-9-27 22:12:17 | 显示全部楼层 |阅读模式
5金钱
我现在是想把录音机实验与NRF24L01无线实验结合,利用NRF24L01发送音频信息。我把I2SRX_DMA的RX DMA 数组大小定义为512个字节,然后继续利用原子哥的程序,在中断服务函数里在写入程序到SD卡后发送音频。程序如下,分为16次发送。
void rec_i2s_dma_rx_callback(void)
{  
  u16 i,j;
  u8 temp[33]={0};
        u16 bw;
        u8 res;
  NRF24L01_TX_Mode();
        if(rec_sta==0X80)//录音模式  已经开启录音
        {  
                if(DMA1_Stream3->CR&(1<<19))
                {
                        res=f_write(f_rec,i2srecbuf1,I2S_RX_DMA_BUF_SIZE,(UINT*)&bw);//写入文件
       for(i=0;i<16;i++)
      {
           for(j=32*i;j<32*(i+1);j++)
                {   
                        temp[j-32*i] = i2srecbuf1[j];
                  NRF24L01_TxPacket(temp);
                  while(NRF24L01_TxPacket(temp)!=TX_OK);//传输512个字节
                }
      
      
      }
                        if(res)
                        {
                                printf("write error:%d\r\n",res);
                        }
                       
                }else
                {
                        res=f_write(f_rec,i2srecbuf2,I2S_RX_DMA_BUF_SIZE,(UINT*)&bw);//写入文件
       for(i=0;i<16;i++)
      {
           for(j=32*i;j<32*(i+1);j++)
                {   
                        temp[j-32*i] = i2srecbuf2[j];
                  NRF24L01_TxPacket(temp);
                  while(NRF24L01_TxPacket(temp)!=TX_OK);//传输512个字节
                }
      
      
      }
                        if(res)
                        {
                                printf("write error:%d\r\n",res);
                        }
                }
                wavsize+=I2S_RX_DMA_BUF_SIZE;
        }
}

然后现在问题是程序会卡在发送音频这里然后不动。是NRF24L01无法连续发送音频大数据吗?还是我的SPI设置问题或者NRF24L01设置问题?
求助原子哥啊或者其他大神!!

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2017-9-28 00:42:59 | 显示全部楼层
你计算过数据量没有?
回复

使用道具 举报

37

主题

204

帖子

0

精华

高级会员

Rank: 4

积分
717
金钱
717
注册时间
2016-6-10
在线时间
191 小时
发表于 2017-9-28 08:51:35 | 显示全部楼层
NRF确实很头疼的一个玩意,调试有点烦,尤其是在发大量的数据的时候,你也可以用蓝牙,或者大功率NRF试试
回复

使用道具 举报

2

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2017-8-3
在线时间
20 小时
 楼主| 发表于 2017-9-28 10:44:21 | 显示全部楼层
正点原子 发表于 2017-9-28 00:42
你计算过数据量没有?

原子哥,你说的数据量指的是哪一个?是指传输的512个字节么?
回复

使用道具 举报

2

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2017-8-3
在线时间
20 小时
 楼主| 发表于 2017-9-28 10:47:23 | 显示全部楼层
周亚龙 发表于 2017-9-28 08:51
NRF确实很头疼的一个玩意,调试有点烦,尤其是在发大量的数据的时候,你也可以用蓝牙,或者大功率NRF试试

我看过之前论坛里的一个帖子,他用VS1053和NRF24L01可以做实时通信呀,他也是每次发送512个字节,,虽然他说通话断断续续。我这边是程序一运行就卡住……而且我试了,每次发生32字节,也会卡住……
回复

使用道具 举报

2

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
75
金钱
75
注册时间
2017-8-3
在线时间
20 小时
 楼主| 发表于 2017-9-28 11:15:07 | 显示全部楼层
正点原子 发表于 2017-9-28 00:42
你计算过数据量没有?

原子哥,W25Q128会严重影响到NRF24L01无法发送数据么?


                                                                                                         
//初始化SPI FLASH的IO口
void W25QXX_Init(void)
{
  GPIO_InitTypeDef  GPIO_InitStructure;

  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);//使能GPIOB时钟
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOG, ENABLE);//使能GPIOG时钟

          //GPIOB14
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;//PB14
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//输出
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉
  GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;//PG7
  GPIO_Init(GPIOG, &GPIO_InitStructure);//初始化

        GPIO_SetBits(GPIOG,GPIO_Pin_7);//PG7输出1,防止NRF干扰SPI FLASH的通信
        W25QXX_CS=1;                        //SPI FLASH不选中
        SPI1_Init();                                           //初始化SPI
        SPI1_SetSpeed(SPI_BaudRatePrescaler_2);                //设置为42M时钟,高速模式
        W25QXX_TYPE=W25QXX_ReadID();        //读取FLASH ID.
}
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2017-9-29 01:24:24 | 显示全部楼层
dami 发表于 2017-9-28 11:15
原子哥,W25Q128会严重影响到NRF24L01无法发送数据么?

不会
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

0

主题

8

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2019-12-11
在线时间
4 小时
发表于 2019-12-20 18:49:19 | 显示全部楼层
亲能不能把程序发我参考一下我现在也碰到和你一样的问题谢谢啦 1393533623@qq.com
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 22:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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