找回密码
 立即注册
查看: 377|回复: 1

CDC串口模块在上位机重启后通讯异常的解决办法(已解决))

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:9
  • 最近打卡:2025-04-23 15:28:46

19

主题

65

回帖

223

积分

等待验证会员

积分
223
发表于 2024-5-23 13:58:30 | 显示全部楼层 |阅读模式
本帖最后由 STC32G12K128 于 2024-5-23 17:03 编辑

最近发现我的CDC转换模块的一个问题,在USB连接线同主机USB口连接状态下机器重新启动,此时主机设备管理器能看到CDC串口,串口助手也能看到但不能工作,
打开关闭串口照旧操作,发送数据时出现串口问题然后进行“修复”。我怀疑是下位我的CDC模块没有反应,需要重新初始化。然后我拔下USB线(CDC模块断电)
再插入,恢复正常。

说明:我的CDC模块采用STC32G12K128,HUGE模式编译。CDC核心代码借鉴于STC32G12K128-LQFP64-DIP64-DEMO-CODE例程包的例程18-CDC协议范例的代码。
代码修改:删除UsbInBusy变量,增加局部变量iCount做while()循环计数器

源代码
void uart_polling()
{
    BYTE dat;
    BYTE cnt;

    if (DeviceState != DEVSTATE_CONFIGURED)  //如果USB配置没有完成,就直接退出

        return;

    if (!UsbInBusy && (TxRptr != TxWptr))
    {
        EUSB = 0;
        UsbInBusy = 1;
        usb_write_reg(INDEX, 1);
        cnt = 0;
        while (TxRptr != TxWptr)
        {
            usb_write_reg(FIFO1, TxBuffer[TxRptr++]);
            cnt++;
            if (cnt == EP1IN_SIZE) break;
        }
        usb_write_reg(INCSR1, INIPRDY);
        EUSB = 1;
    }
。。。。。。。。。。。。。


修改后代码
void CDC_polling()
{   
static BYTE cnt;   
static u16 iCount;   
if (DeviceState != DEVSTATE_CONFIGURED)      
return;    if (TxRptr != TxWptr)   
{        
EUSB = 0;
        iCount=4000;
                       
        while (usb_read_reg(INCSR1) & INIPRDY)
        {      
         if(--iCount==0)
         {
              usb_write_reg(INCSR1, INFLUSH);
              break;                //500uS左右溢出  
           }        
         }      
         if(iCount>0)
       {   
      usb_write_reg(INDEX, 1);
          cnt = 0;
         while (TxRptr != TxWptr)
         {
             usb_write_reg(FIFO1, TxBuffer[TxRptr++]);
             cnt++;
             if (cnt == EP1IN_SIZE) break;
           }
           usb_write_reg(INCSR1, INIPRDY);
        }
        EUSB = 1;
    }
。。。。。。。。。。
修改后问题解决!



回复

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:20
  • 最近打卡:2025-04-28 16:56:43

21

主题

376

回帖

2345

积分

超级版主

积分
2345
发表于 2024-5-23 17:03:54 | 显示全部楼层
感谢楼主的分享!
电话:0513-55012946 QQ:2195591714  微信:  19952583740
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 15:31 , Processed in 0.126597 second(s), 54 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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