找回密码
 立即注册
查看: 251|回复: 3

STC的usb设备怎么向主机回数据

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:268
  • 最近打卡:2025-05-03 10:01:00

13

主题

109

回帖

346

积分

中级会员

积分
346
发表于 2024-4-16 12:12:11 来自手机 | 显示全部楼层 |阅读模式
就像uart一样,把数据放SBUF里,等完成标志就行了。usb设备回数据怎么回
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:436
  • 最近打卡:2025-05-03 09:53:06
已绑定手机

229

主题

328

回帖

1479

积分

金牌会员

积分
1479
发表于 2024-4-16 13:31:05 | 显示全部楼层
USB从设备是无法给主设备主动发送数据的
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6845

积分

论坛元老

积分
6845
发表于 2024-4-16 13:32:34 | 显示全部楼层
USB发送没这么简单,不过通过开源例子可以逐步反推发送过程。

像“HID(Human Interface Device)协议范例”,在"usb_out_ep1"函数里面使用"usb_bulk_intr_in"进行发送:
  1. void usb_out_ep1()
  2. {
  3.     BYTE csr;
  4.     usb_write_reg(INDEX, 1);
  5.     csr = usb_read_reg(OUTCSR1);
  6.     if (csr & OUTSTSTL)
  7.     {
  8.         usb_write_reg(OUTCSR1, OUTCLRDT);
  9.     }
  10.     if (csr & OUTOPRDY)
  11.     {
  12.         usb_bulk_intr_in(UsbBuffer, usb_bulk_intr_out(UsbBuffer, 1), 1);    //功能测试,原路返回
  13.     }
  14. }
复制代码
"usb_bulk_intr_in"函数调用"usb_write_fifo":
  1. void usb_bulk_intr_in(BYTE *pData, BYTE bSize, BYTE ep)
  2. {
  3.     usb_write_fifo((BYTE)(FIFO0 + ep), pData, bSize);
  4.     usb_write_reg(INCSR1, INIPRDY);
  5. }
复制代码
"usb_write_fifo"函数调用"usb_write_reg":
  1. void usb_write_fifo(BYTE fifo, BYTE *pdat, BYTE cnt)
  2. {
  3.     while (cnt--)
  4.     {
  5.         usb_write_reg(fifo, *pdat++);
  6.     }
  7. }
复制代码
"usb_write_reg"函数原型如下:
  1. void usb_write_reg(BYTE addr, BYTE dat)
  2. {
  3.         while (USBADR & 0x80);
  4.         USBADR = addr & 0x7f;
  5.         USBDAT = dat;
  6. }
复制代码
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:268
  • 最近打卡:2025-05-03 10:01:00

13

主题

109

回帖

346

积分

中级会员

积分
346
发表于 2024-4-16 16:52:46 来自手机 | 显示全部楼层
QQ624353765 发表于 2024-4-16 13:31
USB从设备是无法给主设备主动发送数据的

我说的是被动发送数据
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-3 22:18 , Processed in 0.114947 second(s), 69 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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