Thread 中讨论的其他器件:SYSBIOS
工具/软件:TI-RTOS
你好。 我正在尝试让 USB 设备与我们的设备进行通信。 现在、我们只是在寻找通过 USB 电缆发送字符的器件。 从长远看、我们希望这也是更新我们板的一种方法、但现在、我们的目标是使板正常通信。 一切都是正常运行的、只是通信无法正常工作。 我从 usbserialdevice_EK_TM4C129XL_TI 示例借用了代码、以使项目脱离实际。 那么、这里是我对 USB 和 ISR 的初始化
void Init_USB0 (void) { USBRingBufInit (&RingBuffer3、Rx3Buffer、1024); session3.pRingBuffer =&RingBuffer3; session3.pfnUSBSend =&USB0_Send; USBCDCDCD_INIT (); USBIntDisableControl (USB0_BASE、USB_INTCTRL_RESET | USB_INTCTRL_DISCONNECT | USB_INTCTRL_RESUME | USB_INTCTRL_SUSPEND | USB_INTCTRL_SOF); USBIntDisableINT (USB0_BASE、USB_INTEP_ALL); USBInt0 (USBIntDisable)端点0 (USBIntINTCTRL_SOT);USBIntDisable (USBInt0) USBIntEnableEndpoint (USB0_BASE、USB_EP_1); USBIntRegister (USB0_BASE、USB0_ISR); }
USBCDCDCD_init()转至示例代码,没有任何更改。 我禁用了控制器和端点中断、因为我只需要在线路上有东西时才需要中断。
void USB0_ISR (void) { uint32_t ui32Status; ui32Status = USBEndpointStatus (USB0_BASE、USB_EP_1); if (ui32Status = USB_DEV_TX_TXPKTRDY) { USBRingBufWriteOne (&RingBuffer3、USBpoint_Data1、USBEP_size )、USB_read_data (USB0_size)、USB_read_data) USBDevEndpointDataAck (USB0_BASE、USB_EP_1、TRUE); USBDevEndpointStatusClear (USB0_BASE、USB_EP_1、ui32Status); USB0DeviceIntHandler (); }
顺便说一下、我们在环形缓冲器中处理所有字节。 这就是现有代码的编写方式、最容易遵循该方法。 以下是 READ_DATA 和 DATA_SIZE 的声明
uint8_t read_data[1024];
uint32_t * data_size;
最后、我的代码的发送部分:
void USB0_Send (const uint8_t * pui8Buffer、uint32_t ui32Count) { unsigned int buffsize; while (ui32Count--) { Available Size = USBBufferAvailable Available Available (&txBuff); while (&txbuSize = 0){ &txbuffer = USBBufferAvailable (&buffle+ );* WriteBufferBuseBuffable (&t+)+);while (&txBufferWrite+)+、USB8+缓冲区缓冲区(&buffleep)+) }
目前、我的代码甚至还没有达到这一点、因此我没有努力使该器件变得更好。 请告诉我是否还有其他我忘记提到的东西。