找回密码
 立即注册
查看: 702|回复: 10

请问:USB-CDC可以由下位机主动向上位机发信息吗:

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:425
  • 最近打卡:2025-06-28 18:00:30

40

主题

199

回帖

789

积分

高级会员

积分
789
发表于 2024-11-25 17:29:14 | 显示全部楼层 |阅读模式
我发现示例代码中:

查询模式下:

while (1)
    {
        if (bUsbOutReady)
        {
            USB_SendData(UsbOutBuffer,OutNumber);   //发送数据缓冲区,长度(接收数据原样返回, 用于测试)
            
            usb_OUT_done();
        }
    }


这个bUsbOutReady要为真才能发信息。

在中断模式下,也要先收到数据才能向上位机应答。

现在我想在下位机复位后,主动向上位机报告下位机的当前状态,不知道怎么设置代码,请求帮助!
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:294
  • 最近打卡:2025-03-06 09:25:41

8

主题

318

回帖

1837

积分

金牌会员

积分
1837
发表于 2024-11-25 17:58:44 | 显示全部楼层
主动向上位机报告下位机的当前状态
OutNumber = sprintf(UsbOutBuffer,"Hello World");
USB_SendData(UsbOutBuffer,OutNumber);            
usb_OUT_done();
while(1)
{
//your code
}
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:480
  • 最近打卡:2025-06-28 00:00:59
已绑定手机

80

主题

5214

回帖

9305

积分

超级版主

DebugLab

积分
9305
发表于 2024-11-25 17:59:14 | 显示全部楼层
USB协议不支持
所有的传输必须是主机发起
从机只能改变总线状态用于唤醒休眠的主机
唤醒只是改变总线状态而没有数据传输阶段
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:480
  • 最近打卡:2025-06-28 00:00:59
已绑定手机

80

主题

5214

回帖

9305

积分

超级版主

DebugLab

积分
9305
发表于 2024-11-25 18:01:38 | 显示全部楼层
下位机复位后也是通过改变总线状态通知上位机有设备接入
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:576
  • 最近打卡:2025-06-28 06:11:40
已绑定手机

50

主题

1821

回帖

3188

积分

论坛元老

积分
3188
发表于 2024-11-25 20:28:01 | 显示全部楼层
下位机是被动的,不能主动发起信息
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:471
  • 最近打卡:2025-06-28 02:07:15
已绑定手机

38

主题

2244

回帖

2775

积分

荣誉版主

积分
2775
发表于 2024-11-25 21:15:05 | 显示全部楼层
单片机上电后,计算机操作系统检测到端口变化发起枚举过程,只有枚举成功后,上位机才能打开端口进行通信,我估计上位机从检测到设备到打开端口的过程会比单片机初始化慢得多,何不使用上位机主动查询?
睁开眼睛做场梦~~~
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:396
  • 最近打卡:2025-06-27 09:02:48
已绑定手机

29

主题

306

回帖

686

积分

高级会员

积分
686
发表于 2024-11-25 22:03:20 | 显示全部楼层
USB HOST 现在STC应该还不支持
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:425
  • 最近打卡:2025-06-28 18:00:30

40

主题

199

回帖

789

积分

高级会员

积分
789
发表于 2024-11-26 11:43:52 | 显示全部楼层
弄了一上午,也没有成功,lkck***先生的代码我也试了,编译不通过,我不知道sprintf()这个涵数在哪里。
谢谢各位解答。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:294
  • 最近打卡:2025-03-06 09:25:41

8

主题

318

回帖

1837

积分

金牌会员

积分
1837
发表于 2024-11-26 14:02:15 | 显示全部楼层
康辉*** 发表于 2024-11-26 11:43
弄了一上午,也没有成功,lkck***先生的代码我也试了,编译不通过,我不知道sprintf()这个涵数在哪里。
谢 ...

对不起,给错了资讯
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:425
  • 最近打卡:2025-06-28 18:00:30

40

主题

199

回帖

789

积分

高级会员

积分
789
发表于 2024-11-27 17:00:56 | 显示全部楼层
再次通过模索,在STC公司提供的一箭双雕上面,采用USB-CDC示例代码查询方式,进行简单修改,实现了“采用USB-CDC的方式,使下位机复位后主动向上位机报告当前状态”的功能。

这是代码修改情况

这是代码修改情况

这是演示结果

这是演示结果
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-6-29 09:48 , Processed in 0.263827 second(s), 107 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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