OpenEdv-开源电子网

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

急急急!战舰板LWIP发送音频数据,无法正确读取vs1053寄存器的值

[复制链接]

3

主题

6

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2018-1-10
在线时间
13 小时
发表于 2018-12-1 14:04:43 | 显示全部楼层 |阅读模式
5金钱
我在LWIP TCP 服务端的情况下与电脑的服务器建立连接,希望能通过TCP发送VS1053采集的音频数据,但是发送出的数据高八位一直像地址一样的在增加,不是音频数据,但我不太清楚是什么。比如:23 01 8F 01 7E 01 6C 01 2A 02 12 02 6C 02 7B 03 9A 03 FF 03 ,监测发现通过w=VS_RD_Reg(SPI_HDAT1);        语句读出的值就是这样了,不知道是哪儿和这个读的语句冲突了吗?
建立连接和发送的程序就是下面这样,除此之外我还改了一个LWIP轮询时间为50ms,其他的就没改动,只是把LWIP RAW TCP CLIENT实验和录音机实验综合在一起了。
求做过的人帮忙看看,新手调了几天了一直都不行,确实找不出解决办法了
[mw_shl_code=c,true]void tcp_client_test(void)
{
        struct tcp_pcb *tcppcb;         
        struct ip_addr rmtipaddr;  
        u8 *tbuf;
        u8 key;
        u8 res=0;               
        u16 t=0;
       
        /////////////////////the recorder definitions///////
        u8 rval=0;
        u8 *recbuf;
        u16 w;
        u16 idx=0;
        u16 send_cnt=0;
        u8 rec_sta=0;               
        u8 timecnt=0;  
        u32 recsec=0;               
        u8 recagc=7;               
                int m=0;
        u8 connect_flag=0;
        ////////////////////////////////////////////////////
        printf("ip OK\r\n");
        recbuf=mymalloc(SRAMIN,512);        
        if(recbuf==NULL){rval=1;         printf("rval failed");}
       
        tcppcb=tcp_new();       
        if(tcppcb)               
        {
                IP4_ADDR(&rmtipaddr,lwipdev.remoteip[0],lwipdev.remoteip[1],lwipdev.remoteip[2],lwipdev.remoteip[3]);//
                tcp_connect(tcppcb,&rmtipaddr,TCP_CLIENT_PORT,tcp_client_connected);  
        }else res=1;       
        while(res==0)
        {
                lwip_periodic_handle();
                lwip_pkt_handle();
                delay_ms(2);
                t++;       
                if(t==200)
                {       
                        if((tcp_client_flag&1<<5)==0)                        {
                                connect_flag=0;
                                tcp_client_connection_close(tcppcb,0);
                                tcppcb=tcp_new();       
                                if(tcppcb)                       
                                {
                                        tcp_connect(tcppcb,&rmtipaddr,TCP_CLIENT_PORT,tcp_client_connected);
                                }
                        }else connect_flag=1;
                        t=0;
                        printf("rval=%d and flag=%d\r\n",rval,tcp_client_flag&1<<5);
                        LED0=!LED0;
                 }       
               
                if((rval==0)&&(connect_flag==1))                       
         {                       
                printf("record\r\n");
                recoder_enter_rec_mode(1024*recagc);                       
                while(VS_RD_Reg(SPI_HDAT1)>>8);               
                while(rval==0)               
                {
                        lwip_periodic_handle();
                        lwip_pkt_handle();
                        t++;
                        if(t==1000)
                        {
                                printf("t=%d\r\n",t);
                                if((tcp_client_flag&1<<5)==0)
                                {
                                        connect_flag=0;
                                        tcp_client_connection_close(tcppcb,0);
                                        tcppcb=tcp_new();       
                                        if(tcppcb)               
                                        {
                                                tcp_connect(tcppcb,&rmtipaddr,TCP_CLIENT_PORT,tcp_client_connected);
                                        }
                                }else connect_flag=1;
                                t=0;
                                //printf("rval=%d and flag=%d\r\n",rval,tcp_client_flag&1<<5);
                                LED0=!LED0;
                        }       
                        LED0=!LED0;
                        rec_sta|=0X80;        //开始录音                               
                        if(rec_sta==0X80)
                        {
                                w=VS_RD_Reg(SPI_HDAT1);       
                                if((w>=256)&&(w<896))
                                {               
                                        idx=0;                               
                                        while(idx<512)        
                                        {         
                                                w=VS_RD_Reg(SPI_HDAT0);                                               
                                                tcp_client_sendbuf[send_cnt++]=w&0XFF;
                                                tcp_client_sendbuf[send_cnt++]=w>>8;       
                                                idx+=2;                                       
                                        }
                                        if(send_cnt==1024)
                                        {
                                                send_cnt=0;
                                                //tcp_client_flag|=1<<7;       
                                                tcp_write(tcppcb,tcp_client_sendbuf,1024,1);
                                                tcp_output(tcppcb);
                                                printf("%s",tcp_client_sendbuf);                                       
                                        }         
                                }
                         }
                 }
          }         
  }
          tcp_client_connection_close(tcppcb,0);
          myfree(SRAMIN,recbuf);       
         
} [/mw_shl_code]

最佳答案

查看完整内容[请看2#楼]

我调好啦,上面这样写是没问题的,是我之前上位机程序写错了。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

6

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2018-1-10
在线时间
13 小时
 楼主| 发表于 2018-12-1 14:04:44 | 显示全部楼层
我调好啦,上面这样写是没问题的,是我之前上位机程序写错了。
回复

使用道具 举报

2

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2018-12-23
在线时间
18 小时
发表于 2018-12-25 18:16:51 | 显示全部楼层
grin 发表于 2018-12-1 14:04
我调好啦,上面这样写是没问题的,是我之前上位机程序写错了。

录音的时候,耳机会播放吗?
回复

使用道具 举报

5

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
116
金钱
116
注册时间
2019-12-2
在线时间
36 小时
发表于 2020-1-19 02:00:03 来自手机 | 显示全部楼层
学习一下,想用udp发送,一直没成功
回复

使用道具 举报

0

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2017-5-23
在线时间
26 小时
发表于 2021-3-12 11:20:45 | 显示全部楼层
楼主可以分享下源码吗?最近也想做录音然后通过网口进行数据发送,想参考下
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-24 16:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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