OpenEdv-开源电子网

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

新人求助stm32读取SD卡中的wav文件发送到串口通过ESP8266发送到电脑的问题

[复制链接]

1

主题

8

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2018-7-26
在线时间
8 小时
跳转到指定楼层
楼主
发表于 2018-7-28 17:48:22 | 显示全部楼层 |只看大图 回帖奖励 |倒序浏览 |阅读模式
13金钱
我试了两种模式,一种是ESP8266作为客户端工作在透明传输模式,在这模式下小的txt文件能够正常发送,但最后会多出两个字节不知道什么东西,发送WAV文件就不行了;
另一种有应答模式,ESP8266作为服务器,这种大到几百k的txt文件可以正常发送,但是wav文件就不行,我发送完用编辑器打开后发现每次都是从第七个字节开始出错,连AT指令都发出去了,我调整每一帧的大小,不同大小的帧接受到的文件大小是不一样的,我只需要发送96k大小的wav文件而已,当我把每帧设定为20个字节而已时,接受到的文件达到了154k,每帧设定为1024个字节时,接收到的文件为20k,而且我试过每帧为七个字节,都发送失败了,接受到的文件打不开,我就想既然txt文件行,那我把SD卡中的wav文件改个后缀为txt,结果也还是不行,传送过程有试过用断点调试看memory中databuf的值,发现是正确的,所以问题应该出在传送过程中。
   使用的两种模式都是TCP模式,模块作为AP,最近这边光纤断了试不了STA模式,校园网WIFI又要认证。
  有试过每帧发300个字节,发送完用count计数,发现循环了321次,而源文件大小是96300B的,正好相等,但是就是接收到的文件一堆乱码。
  难道这个ESP8266串口模块不能传音频文件?但是为什么txt文件可以?不管什么格式的文件传送的不都是二进制字节流吗?我对速度没要求,只要传96k的音频文件而已;上淘宝买了个SPI的升级版8266,还没到不知道行不行。
求大佬指点迷津,感激不尽。

S30P4KM[TDBI%JMEZENT)MR.png (196.92 KB, 下载次数: 433)

透传模式

透传模式

FWM7)V@0CX~)98GNP3NOV20.png (169.36 KB, 下载次数: 446)

FWM7)V@0CX~)98GNP3NOV20.png

Z(F9~[{PJ$4]UM0XT{KM@V6.png (55.17 KB, 下载次数: 419)

Z(F9~[{PJ$4]UM0XT{KM@V6.png

W{I8X%%}NHJ73I_RWD`DZ[T.png (76.86 KB, 下载次数: 432)

错误情况

错误情况

最佳答案

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

自己解决了忘记消帖了,希望能给搜到这篇帖子的人一点帮助。 后来改成了一个字节一个字节发 格式为%02x,接收到的终于不是乱码了,但是文件大小变为了两倍,原来的一个十六进制数被拆成两个字符,折腾了好久,发现是库函数里的u3_printf()的问题,进去里面之后,不知为什么执行了几行之后一个字节变成两个字节了,于是我试了下直接用USART_SendData(),问题就解决了。 之后终于能传声音文件了,但是怎么弄里面都有tata的噪声 ...
回复

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2018-7-26
在线时间
8 小时
2#
 楼主| 发表于 2018-7-28 17:48:23 | 显示全部楼层
本帖最后由 革革 于 2018-8-9 12:03 编辑

自己解决了忘记消帖了,希望能给搜到这篇帖子的人一点帮助。
  后来改成了一个字节一个字节发 格式为%02x,接收到的终于不是乱码了,但是文件大小变为了两倍,原来的一个十六进制数被拆成两个字符,折腾了好久,发现是库函数里的u3_printf()的问题,进去里面之后,不知为什么执行了几行之后一个字节变成两个字节了,于是我试了下直接用USART_SendData(),问题就解决了。
  之后终于能传声音文件了,但是怎么弄里面都有tata的噪声,刚开始以为是板载咪头的问题,而且试了下把WiFi模块插进去,用音频输出口接耳机能听到差不多一样的tata的噪声,拔掉WiFi模块就听不见,试了下改vs1053初始化函数的mode设置寄存器为LIN_IN输入,还是不能禁用掉咪头,索性就把咪头直接拆了。。。。
  后来还是有噪声,偶然想到得延时下(这方法之前发不成功的时候试过,后来却没想起这方法来),每次发完一帧就延时一下,问题就解决了。
回复

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2018-7-26
在线时间
8 小时
3#
 楼主| 发表于 2018-7-28 19:02:41 | 显示全部楼层
自顶            
回复

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2018-7-26
在线时间
8 小时
4#
 楼主| 发表于 2018-7-28 20:05:37 | 显示全部楼层
回复

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2018-7-26
在线时间
8 小时
5#
 楼主| 发表于 2018-7-29 08:51:46 | 显示全部楼层
500k字节的txt整本书,也能正常发送,只有最后一一帧不是整数倍出现乱码
回复

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2018-7-26
在线时间
8 小时
6#
 楼主| 发表于 2018-7-29 08:52:20 | 显示全部楼层
回复

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2018-7-26
在线时间
8 小时
7#
 楼主| 发表于 2018-7-29 10:43:37 | 显示全部楼层
发现一个小问题,透传模式下malloc分配给databuf的内存要+1,编译器会自动添加结束符, 否则字符串最后会多一个乱码   但这仅限于解决了透传下传输短文本的问题  我的问题还是没解决
回复

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2018-7-26
在线时间
8 小时
8#
 楼主| 发表于 2018-7-29 10:49:46 | 显示全部楼层
函数说明里说u3_printf()最多只能一次发600个字节,所以我后面都没怎么试1024个字节了,不知道可不可以自己修改那个宏定义; 有试过改波特率为230400和9600
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

如发现本坛存在违规或侵权内容, 请点击这里发送邮件举报 (或致电020-38271790)。请提供侵权说明和联系方式。我们将及时审核依法处理,感谢配合。

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

GMT+8, 2026-6-20 13:45

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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