查看: 5763|回复: 1

[求助] K40 USB CDC模拟串口例程中关于USB_Class_CDC_Recv_Data()疑问

[复制链接]

该用户从未签到

3

主题

13

帖子

0

新手上路

Rank: 1

积分
15
最后登录
1970-1-1
发表于 2012-3-27 11:04:46 | 显示全部楼层 |阅读模式
 
USB配置#define BSPCFG_ENABLE_IUSBDCD    1
使用原CDC虚拟串口例程,枚举通过,收发正常;但做大量发送时会丢数据(已注释掉会拖慢速度的printf())。
对USB_Class_CDC_Recv_Data()做测试后发现有如下问题:
 
//CDC数据端点的Callback函数
void USB_Notif_Callback(uint_8 event_type, pointer val, pointer arg)
{
   static uint_32              k = 0;
   uint_32                       handle;
    APP_DATA_STRUCT *dp_rcv;   
    handle = *((uint_32 *)arg);
    if(start_app == TRUE)
    {
        if(event_type == USB_APP_CDC_DTE_ACTIVATED)                start_transactions = TRUE;
        else if(event_type == USB_APP_CDC_DTE_DEACTIVATED)   start_transactions = FALSE;
        else if(   (event_type == USB_APP_DATA_RECEIVED)&& (start_transactions == TRUE)  )
        {         
                    dp_rcv = (APP_DATA_STRUCT*)val;
                     k += dp_rcv->data_size;               
                    //问题1:第一次接收第一个字符时,dp_rcv->data_ptr没有指向g_recv_buf_ptr,这个应该是由于val使用了默认接收地址
                    //USB_Class_CDC_Recv_Data(handle,  DIC_BULK_OUT_ENDPOINT,g_recv_buf_ptr, DATA_BUFF_SIZE); 
                    //问题2:当逐个接收字符时,每4个byte只能留下最后1个,跟踪内存发现前3个byte有接收,但会被覆盖擦除,原因未知?
                    USB_Class_CDC_Recv_Data(  handle,  DIC_BULK_OUT_ENDPOINT, k+g_recv_buf_ptr,  DATA_BUFF_SIZE-k);
        }  
        else if(   (event_type == USB_APP_SEND_COMPLETE)&& (start_transactions == TRUE)  )
        {
            /* User: add your own code for send complete event */
        }
    }
    return;
}
 
 
 
 
 
 
我知道答案 目前已有0人回答
回复

使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2012-4-23 14:10:43 | 显示全部楼层

    RE:K40 USB CDC模拟串口例程中关于USB_Class_CDC_Recv_Data()疑问

    我认为是k += dp_rcv->data_size;  这里处理的错误,你仿真一下,看看到了这里,K的值变成了什么?
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-9-6 11:15 , Processed in 0.088034 second(s), 22 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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