OpenEdv-开源电子网

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

USB转虚拟串口出现数据断开

[复制链接]

2

主题

57

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1092
金钱
1092
注册时间
2019-9-3
在线时间
155 小时
发表于 2021-11-4 14:27:06 | 显示全部楼层 |阅读模式
50金钱
和上位机通信,一帧数据有256字节。在连续发送数据的时候会出现256字节分成俩段发送。 QQ截图20211104140952.png
如图,蓝色的框是正常的发送。红色的是不正常的。
我试过把所有中断打开。发现不行。也试过发送每一帧数据前先延时5ms。还是会出现。
堆和栈区也改大过。一样不行。
部分代码。

#define USB_USART_TXFIFO_SIZE   1024        //USB虚拟串口发送FIFO大小               
#define USB_USART_REC_LEN                 1024                //USB串口接收缓冲区最大字节数


//定义一个USB USART FIFO结构体
typedef struct  
{                                                                                    
        u8  buffer[USB_USART_TXFIFO_SIZE];        //buffer
        vu16 writeptr;                                                //写指针
        vu16 readptr;                                                //读指针
}_usb_usart_fifo;


void SEND_Data(u8 Type,u8 cmd,u8 param,u8* buffer,u16 Data_len,u8 Index)
{
        DataInfo temp;
        temp.cType=Type;
        temp.cCmd=cmd;
        temp.cParam=param;
        temp.usLen=Data_len;
        temp.cIndex=Index;
        memcpy(temp.cData,buffer,temp.usLen);
        temp.BCC=BCC_Check(Data_len,buffer);
        FUN_DataInfo(&temp);
}

void FUN_DataInfo(DataInfo* str)
{
        u8* tp=(u8*)str;
        u16 i=0;
        for(i=0;i<sizeof(DataInfo);i++)
        {
                uu_txfifo.buffer[uu_txfifo.writeptr]=tp;
                uu_txfifo.writeptr++;
                if(uu_txfifo.writeptr==USB_USART_TXFIFO_SIZE)//超过buf大小了,归零.
                {
                        uu_txfifo.writeptr=0;
                }
        }
}

//发送一个字节数据到USB虚拟串口
void USB_USART_SendData(u8 data)
{
        uu_txfifo.buffer[uu_txfifo.writeptr]=data;
        uu_txfifo.writeptr++;
        if(uu_txfifo.writeptr==USB_USART_TXFIFO_SIZE)//超过buf大小了,归零.
        {
                uu_txfifo.writeptr=0;
        }
}

最佳答案

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

有一些上位机会出现这个问题。我自己调试上位机时也遇见过,会断包。 建议你先用XCOM串口助手看看会不会出现这种情况。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

117

帖子

0

精华

高级会员

Rank: 4

积分
559
金钱
559
注册时间
2018-10-3
在线时间
107 小时
发表于 2021-11-4 14:27:07 | 显示全部楼层
有一些上位机会出现这个问题。我自己调试上位机时也遇见过,会断包。 建议你先用XCOM串口助手看看会不会出现这种情况。
回复

使用道具 举报

2

主题

57

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1092
金钱
1092
注册时间
2019-9-3
在线时间
155 小时
 楼主| 发表于 2021-11-4 15:16:57 | 显示全部楼层
wklhwkl 发表于 2021-11-4 14:55
有一些上位机会出现这个问题。我自己调试上位机时也遇见过,会断包。 建议你先用XCOM串口助手看看会不会出 ...

是不是有可能因为上位机下发了数据导致我这边断开呢
回复

使用道具 举报

2

主题

592

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1458
金钱
1458
注册时间
2019-7-28
在线时间
137 小时
发表于 2021-11-4 16:49:26 | 显示全部楼层
帮顶                          
回复

使用道具 举报

3

主题

117

帖子

0

精华

高级会员

Rank: 4

积分
559
金钱
559
注册时间
2018-10-3
在线时间
107 小时
发表于 2021-11-4 17:31:25 | 显示全部楼层
HELLOWO 发表于 2021-11-4 15:16
是不是有可能因为上位机下发了数据导致我这边断开呢

没遇见过。先用XCOM串口助手试试吧。 如果没问题 说明上位机问题。 有问题在找原因。
回复

使用道具 举报

2

主题

57

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1092
金钱
1092
注册时间
2019-9-3
在线时间
155 小时
 楼主| 发表于 2021-11-5 11:11:09 | 显示全部楼层
wklhwkl 发表于 2021-11-4 17:31
没遇见过。先用XCOM串口助手试试吧。 如果没问题 说明上位机问题。 有问题在找原因。

嗯嗯,没有上位机干扰,数据收发是正常的,不会断。打开上位机会出现偶发性。我看了下,就是有的时候我刚发数据的时候上位机同时给我发数据
回复

使用道具 举报

13

主题

643

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2432
金钱
2432
注册时间
2019-12-28
在线时间
527 小时
发表于 2021-11-5 11:11:39 | 显示全部楼层
帮顶  
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-10 10:12

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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