查看: 2732|回复: 14

[求助] KL27的USB HID发送数据间隔时间超过5秒就发送不了

[复制链接]
  • TA的每日心情
    奋斗
    2019-12-20 08:43
  • 签到天数: 1 天

    [LV.1]初来乍到

    1

    主题

    7

    帖子

    0

    注册会员

    Rank: 2

    积分
    53
    最后登录
    2020-3-24
    发表于 2019-12-20 08:48:13 | 显示全部楼层 |阅读模式
        使用SDK_2.6.0_MKL27Z64中的usb_device_hid_generic示例代码,当下图中时间间隔大于5左右时就发不出数据,求指导下,谢谢~

    BUS Hound抓的数据

    BUS Hound抓的数据
    我知道答案 目前已有14人回答
    WWAWW!
    回复

    使用道具 举报

    该用户从未签到

    656

    主题

    6312

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    19934
    最后登录
    2024-4-19
    发表于 2019-12-20 16:12:41 | 显示全部楼层
    楼主你好!
    你这个间隔2S是怎么控制的,请把具体复现步骤说下。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2019-12-20 08:43
  • 签到天数: 1 天

    [LV.1]初来乍到

    1

    主题

    7

    帖子

    0

    注册会员

    Rank: 2

    积分
    53
    最后登录
    2020-3-24
     楼主| 发表于 2019-12-20 17:07:58 | 显示全部楼层
    小恩GG 发表于 2019-12-20 16:12
    楼主你好!
    你这个间隔2S是怎么控制的,请把具体复现步骤说下。

    您好,下面是我的代码,当把 i<1000 改为 i<5000(时间大概5秒),就发不出数据了。

    uint16_t i ,j;
    uint8_t send_test[64]={"123abc21"};
    while(1)
    {
            for(i=0;i<1000;i++)//控制时间
            {
                    for(j=0;j<8000;j++);                               
            }
            send_test[0]++;
            if(send_test[0]==100)
                    send_test[0]=0;
                           
            if (g_UsbDeviceHidGeneric.attach)
            {       
                    printf("Time1\r\n");                                 
                    USB_DeviceHidSend(g_UsbDeviceHidGeneric.hidHandle,                         USB_HID_GENERIC_ENDPOINT_IN,send_test , 64);
            }
    }
    WWAWW!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    656

    主题

    6312

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    19934
    最后登录
    2024-4-19
    发表于 2019-12-23 15:00:09 | 显示全部楼层
    feiyingweia 发表于 2019-12-20 17:07
    您好,下面是我的代码,当把 i

    你有没有直接用官方的工程代码跑?
    我看了下官方的代码是接收到数据之后再发回去HID的。
    那么,你那边可以控制下上位机,发送时间拉长到5S之后,是否会出现你的发不出现象?
    如果官方代码不能复现你的问题,你这边应该还是你自己写的代码有问题。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2019-12-20 08:43
  • 签到天数: 1 天

    [LV.1]初来乍到

    1

    主题

    7

    帖子

    0

    注册会员

    Rank: 2

    积分
    53
    最后登录
    2020-3-24
     楼主| 发表于 2019-12-23 16:38:18 | 显示全部楼层
    小恩GG 发表于 2019-12-23 15:00
    你有没有直接用官方的工程代码跑?
    我看了下官方的代码是接收到数据之后再发回去HID的。
    那么,你那边可 ...

    您好,我用官方usb_device_hid_generic示例代码,不做任何修改,用BUS Hound写数据,当时间间隔大于5秒时,就写不进数据。
    KL25-3.png

    注:若用上位机来读写数据,不管间隔多久都可以写,但我的使用是向安卓发数据,不能使用上位机。
    WWAWW!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    656

    主题

    6312

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    19934
    最后登录
    2024-4-19
    发表于 2019-12-27 10:39:51 | 显示全部楼层
    feiyingweia 发表于 2019-12-23 16:38
    您好,我用官方usb_device_hid_generic示例代码,不做任何修改,用BUS Hound写数据,当时间间隔大于5秒时 ...

    楼主你好!
    不好意思,迟回复你了,前两天参加培训,没有回复。
    我这边会找时间复现下,还请你耐心等待!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    63

    主题

    263

    帖子

    0

    高级会员

    Rank: 4

    积分
    921
    最后登录
    2021-2-23
    发表于 2019-12-30 11:16:57 | 显示全部楼层
    这个是BUSHOUND的问题,BUSHOUND应该是5s内没有收到从机应答的话这次通信应该就会被停止,主从间无法再通信了,用USB分析仪抓一下就知道,5s后BUSHOUND的这边根本OUT指令和数据都没有发出去,当然从机收不到,IN指令也不会再发,所以也读不到从机数据,很明显是通信被BUSHOUND这边停了。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2019-12-20 08:43
  • 签到天数: 1 天

    [LV.1]初来乍到

    1

    主题

    7

    帖子

    0

    注册会员

    Rank: 2

    积分
    53
    最后登录
    2020-3-24
     楼主| 发表于 2019-12-30 16:32:49 | 显示全部楼层
    huiyao 发表于 2019-12-30 11:16
    这个是BUSHOUND的问题,BUSHOUND应该是5s内没有收到从机应答的话这次通信应该就会被停止,主从间无法再通信 ...

    你好,请问如何处理5s后数据发不出去问题,是一定要配合上位机使用嘛
    WWAWW!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    63

    主题

    263

    帖子

    0

    高级会员

    Rank: 4

    积分
    921
    最后登录
    2021-2-23
    发表于 2019-12-30 18:53:19 | 显示全部楼层
    本帖最后由 huiyao 于 2019-12-31 09:01 编辑
    feiyingweia 发表于 2019-12-30 16:32
    你好,请问如何处理5s后数据发不出去问题,是一定要配合上位机使用嘛

    你现在发不出是指哪边发不出?你bushound点out这个是指主机,也就是你PC这边作为host来发数据发到device那边,如果是这个那你只能换一款上位机软件来配合,比如SDK例子readme里面有提到一个上位机测试软件,那个就不像bushound的那样5s就会切断通信。总之如果是host往device发,就要发OUT指令和数据,从机收到指令后才能接收。
    你的MCU是作为USB device,相当于是被动器件,要听从主机指挥才能有行动。同理,device向host发(或者说是host向device要数据)必须host给他发IN指令,device应答之后才会送数据过来。只要你硬件连接没问题,MCU这边不进睡眠之类的,主机那边发命令过来,从机接收到了肯定就能响应,你这个问题就是bushound的问题导致的,也就是主机host端的问题,和MCU及其SDK无关, 你的USB主机端必须确保命令和数据都发出来了才行。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2019-12-20 08:43
  • 签到天数: 1 天

    [LV.1]初来乍到

    1

    主题

    7

    帖子

    0

    注册会员

    Rank: 2

    积分
    53
    最后登录
    2020-3-24
     楼主| 发表于 2019-12-31 09:16:20 | 显示全部楼层
    huiyao 发表于 2019-12-30 18:53
    你现在发不出是指哪边发不出?你bushound点out这个是指主机,也就是你PC这边作为host来发数据发到device那 ...

    我是指MCU向Windows系统发不出数据,而BUSHOUND仅是一个监测工具,现在只有打开上位机,才能发出数据,而不打开上位机,5S后就发不出数据,这能不能说明 MCU只有配合上位机使用。
    WWAWW!
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2024-4-19 20:04 , Processed in 0.163580 second(s), 31 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

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