如题。
手册显示,USB OUT4有256字节的FIFO,应该能够接收并产生中断。用这个端点作为USB-CDC Bulk out,描述符写MaxPacketSize <= 0x80时正常,大于0x80就无法触发中断。
部分代码如下:
- void usb_out_ep4() using 1
- {
- BYTE csr;
- BYTE cnt;
- u8 i = 0;
-
- usb_write_reg(INDEX, 4);
- csr = usb_read_reg(OUTCSR1);
- if (csr & OUTSTSTL) {
- usb_write_reg(OUTCSR1, OUTCLRDT);
- }
- if (csr & OUTOPRDY) {
- LED = ~LED; // 进中断应该看到LED亮起/熄灭
- cnt = usb_read_reg(OUTCOUNT1);
- if (Uart3TxBufSel) { // previous using buffer1
- while (i < cnt) {
- Uart3TxBuffer2[i++] = usb_read_reg(FIFO4);
- }
- //cnt = usb_bulk_intr_out(Uart3TxBuffer2,4);
- UART3_DMA_Transmit(Uart3TxBuffer2, cnt);
- } else {
- while (i < cnt) {
- Uart3TxBuffer[i++] = usb_read_reg(FIFO4);
- }
- //cnt = usb_bulk_intr_out(Uart3TxBuffer,4);
- UART3_DMA_Transmit(Uart3TxBuffer, cnt);
- }
- Uart3TxBufSel = ~Uart3TxBufSel;
- Ep4OutBusy = 1;
- }
- }
复制代码
到底是什么问题?项目需要一次性发送>128字节的才可能正常工作。
|