初级会员
- 积分
- 75
- 金钱
- 75
- 注册时间
- 2017-8-3
- 在线时间
- 20 小时
|
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设置问题?
求助原子哥啊或者其他大神!!
|
|