OpenEdv-开源电子网

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

STM32F767 USB传输数据丢失?

[复制链接]

17

主题

587

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4467
金钱
4467
注册时间
2013-6-27
在线时间
565 小时
发表于 2019-11-9 13:28:19 | 显示全部楼层 |阅读模式
单片机代码每次传输长度1024字节   
        for(i=1024;i<=num*2;i+=1024){
                while(CDC_Transmit_FS((uint8_t*)&Ad7606Dat[ch]+(i-1024),1024)== USBD_BUSY);
                IWDGFree();
传输数据时会出现数据少了
使用USB分析软件发现数据接收不足
望大神赐教

QQ拼音截图20191109132151.png
让我们的思维驾驭在电的速度之上!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

17

主题

587

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4467
金钱
4467
注册时间
2013-6-27
在线时间
565 小时
 楼主| 发表于 2019-11-9 20:12:19 | 显示全部楼层
本帖最后由 DongInker 于 2019-11-11 08:17 编辑

            for(i=1024;i<=num*2;i+=1024){
                OverTime = 0;
                while(CDC_Transmit_FS((uint8_t*)&Ad7606Dat[ch]+(i-1024),1024)== USBD_BUSY){
                    // 添加一定延时 可以保证数据接收正常 不然老是出现包少数据现象???
                    IWDGFree();
                    Delay1mS(2);
                    OverTime ++;
                    if(OverTime >= 3000)
                        return ;
                }
            }
发送数据包之间添加延时进入 接收6MB数据可以正常
让我们的思维驾驭在电的速度之上!
回复 支持 1 反对 0

使用道具 举报

17

主题

587

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4467
金钱
4467
注册时间
2013-6-27
在线时间
565 小时
 楼主| 发表于 2019-12-20 14:47:51 | 显示全部楼层
调试发现由SDRAM直接给USB发送,导致之前容易发送丢失数据
改为
发送前先将SDRAM数据拷贝到单片机ram,再将ram传给USB进行发送

目前连续传输20MB数据,最大平均速度可达到927kB/S (速度与USB线长度及前后USB接口有一定关系)
偶尔还是会发送超时失败

速度与代码

速度与代码
让我们的思维驾驭在电的速度之上!
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-21 10:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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