STC的usb设备怎么向主机回数据
就像uart一样,把数据放SBUF里,等完成标志就行了。usb设备回数据怎么回 USB从设备是无法给主设备主动发送数据的 USB发送没这么简单,不过通过开源例子可以逐步反推发送过程。像“HID(Human Interface Device)协议范例”,在"usb_out_ep1"函数里面使用"usb_bulk_intr_in"进行发送:
void usb_out_ep1()
{
BYTE csr;
usb_write_reg(INDEX, 1);
csr = usb_read_reg(OUTCSR1);
if (csr & OUTSTSTL)
{
usb_write_reg(OUTCSR1, OUTCLRDT);
}
if (csr & OUTOPRDY)
{
usb_bulk_intr_in(UsbBuffer, usb_bulk_intr_out(UsbBuffer, 1), 1); //功能测试,原路返回
}
}"usb_bulk_intr_in"函数调用"usb_write_fifo":
void usb_bulk_intr_in(BYTE *pData, BYTE bSize, BYTE ep)
{
usb_write_fifo((BYTE)(FIFO0 + ep), pData, bSize);
usb_write_reg(INCSR1, INIPRDY);
}"usb_write_fifo"函数调用"usb_write_reg":
void usb_write_fifo(BYTE fifo, BYTE *pdat, BYTE cnt)
{
while (cnt--)
{
usb_write_reg(fifo, *pdat++);
}
}"usb_write_reg"函数原型如下:
void usb_write_reg(BYTE addr, BYTE dat)
{
while (USBADR & 0x80);
USBADR = addr & 0x7f;
USBDAT = dat;
}
QQ624353765 发表于 2024-4-16 13:31
USB从设备是无法给主设备主动发送数据的
我说的是被动发送数据
页:
[1]