完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
对于USB2.0高速总线,480Mb/s比特率允许高达大约52Mb/s。但是我测试了,如果使用一个单一的端点,只得到大约13Mb/s(当调用USB读/写API函数端点时,我也使用了数据缓冲区,并在扩展中设置AppIdRead BuffelyStand到32 K)。因此,我想通过使用多个散装端点来获得最大的USB速度带宽。不幸的是,我找不到任何帮助文件或示例源代码,关于在Orthic的DOC DeiReCuto中使用多个散装端点。因此,我自己测试。添加EP2 EP3和接收到的DaveDuffDeDaveDeffuff3无效的APPY任务(空隙),如果(UBS.Deice)EndoPosithEngEnter(AppDATA UBDeV句柄,AppDATA,EndoPoTrx)=false){/*启用读端点*/UBSDEVICEX可终结(AppDATA UBDeV句柄,0,AppDATA EndoPrTrx,UbjTrimeType Type Boad,EndoPosisiz)} //添加EnbALE OTEP2(如果(UBS.Deice)EndoPosithEngEdEnter(AppDATA UBDVDead句柄,OutuEP2)=false){/*启用读端点*/UBS.DeVice可终结(AppDATA UBDeV句柄,0,OutuEP2,UBSLyType Type Bulk,EndoPosithStand);} //添加EnbALE OutTeP3(AbbdDeice){ /*启用读端点*/UbjDeVice可终结(AppDATA.UBDeV句柄,0,OutuEP3,UbjTyrPyType Type Bulk,EndoPosithStand);}(UbjDeVielyEndoPosithEngRead(AppDATA UBDeV句柄,AppDATa.EndoPotox)= FALSE){/*启用写端点*/UBSI DEVICEY可终结AppDATA.UBDeV句柄,0,AppDATA EndoPotox,UbjTrimeType Type Bug,EndoPositSead;} /*表示我们正在等待Read */AppDATA EpDATARADADPENTURNET= TRUE;/*放置一个新的读取请求。*/UbjDeFielyEngPosiTrad(AppDATA UBDeV句柄,和AppDATA RealTrrFor句柄,AppDATA EndoPosiTrx,和Access数据库DeffuffER(0),SIZEOF(收件人DATABUFER));/*放置EP2读取请求。*/UbjDeFielyEngPosiTrad(AppDATA UBDeV句柄,和AppDATA,RealTrrFrad句柄,OutuEP2,and Access VDATUFFER 2(0),SIZEOF(收件人DATABUFEFR2));*/UbjDeFielyEngPosiTrad(AppDATA UBDeV句柄,and AppDATA,RealTrrFrad句柄,OutoEP3,and Access VBuffuffr3(0),SIZEOF(收件人DATABUFEFR3));/*设备准备运行主任务*/AppDATA状态=APPYSTATEYMIN任务,但有一些问题可以帮助我:1。如何在AppUsBeDeice EvEnthand()中处理事件UbjDeVice?EngEndoEntPoToRead?是由哪些端点(EP1/EP2/EP3)组成的UbjDeVice?EngEngEndotToRead完成事件集?2。如何处理AppDATA数据中的EpDATABRADEPDATE和EPDATAWRADEPEND。
以上来自于百度翻译 以下为原文 For a USB2.0 HS speed bus, the 480Mbits/s bit rate allows ,about up to 52MBytes/second . but I tested ,if using a single bulk endpoint .Only get about 13MBytes/second (I also use large data buffers when calling the USB read/write API functions endpoints,and set APP_READ_BUFFER_SIZE to 32K In expample vender device ). So I want to obtain maximize USB speed bandwidth through using multiple bulk endpoints.unfortunately I can not find any helpfiles or example source code about using multiple bulk endpoints in hARMony's DOC deirectory. So I test it myself. add EP2 EP3 and receivedDataBuffer2 receivedDataBuffer3 void APP_Tasks (void ) if (USB_DEVICE_EndpointIsEnabled(appData.u***DevHandle, appData.endpointRx) == false ) { /* Enable Read Endpoint */ USB_DEVICE_EndpointEnable(appData.u***DevHandle, 0, appData.endpointRx, USB_TRANSFER_TYPE_BULK, endpointSize); } //add enbale OUTEP2 if (USB_DEVICE_EndpointIsEnabled(appData.u***DevHandle, OUT_EP2) == false ) { /* Enable Read Endpoint */ USB_DEVICE_EndpointEnable(appData.u***DevHandle, 0, OUT_EP2, USB_TRANSFER_TYPE_BULK, endpointSize); } //add enbale OUTEP3 if (USB_DEVICE_EndpointIsEnabled(appData.u***DevHandle, OUT_EP3) == false ) { /* Enable Read Endpoint */ USB_DEVICE_EndpointEnable(appData.u***DevHandle, 0, OUT_EP3, USB_TRANSFER_TYPE_BULK, endpointSize); } if (USB_DEVICE_EndpointIsEnabled(appData.u***DevHandle, appData.endpointTx) == false ) { /* Enable Write Endpoint */ USB_DEVICE_EndpointEnable(appData.u***DevHandle, 0, appData.endpointTx, USB_TRANSFER_TYPE_BULK, endpointSize); } /* Indicate that we are waiting for read */ appData.epDataReadPending = true; /* Place a new read request. */ USB_DEVICE_EndpointRead(appData.u***DevHandle, &appData.readTranferHandle, appData.endpointRx, &receivedDataBuffer[0], sizeof(receivedDataBuffer) ); /* Place a EP2 read request. */ USB_DEVICE_EndpointRead(appData.u***DevHandle, &appData.readTranferHandle, OUT_EP2, &receivedDataBuffer2[0], sizeof(receivedDataBuffer2) ); /* Place a EP3 read request. */ USB_DEVICE_EndpointRead(appData.u***DevHandle, &appData.readTranferHandle, OUT_EP3, &receivedDataBuffer3[0], sizeof(receivedDataBuffer3) ); /* Device is ready to run the main task */ appData.state = APP_STATE_MAIN_TASK; But there are some questions who can help me: 1. how to process event USB_DEVICE_EVENT_ENDPOINT_READ_COMPLETE in APP_USBDeviceEventHandler()? Is USB_DEVICE_EVENT_ENDPOINT_READ_COMPLETE event set by which endpoints (EP1/EP2/EP3) ? 2. how to process epDataReadPending and epDataWritePending in APP_DATA. |
|
相关推荐
1个回答
|
|
我有一个使用大量散列端点的项目。使用和声2.05。所有的东西都在正确地枚举,但是在我正确设置之前,不能发送数据:{定义DrviU***sHthEndoStSnUnBysSytSyOrth.Cyf.Hi相信数字应该是使用端点的数目,不包括控件。1)读写完整事件提供指向结构的指针。该结构的一个元素是一个句柄,它指示哪个端点导致事件。2)EpDATARADADPEND和EPDATAWRADEPENTRON…每个端点应该有一个标志。类似EpDATARADIPIGN EP2和EPDATARADIPIN EP3。U***BeDeCysEngEngEndotToRead完成事件应清除正确端点的挂起标志。然后应该读取数据包(我在轮询循环中这样做)。我不确定它是否能在事件中工作。)需要再次调用NuSbBeDeice的EndoPosiTad函数以允许另一个包被读取,并且挂起的标志应该被再次设置。希望这有帮助。
以上来自于百度翻译 以下为原文 I have a project that uses serveral bulk endpoints. Using harmony 2.05. Everything was enumerating properly, but could not send data until I properly set: #define DRV_USBHS_ENDPOINTS_NUMBER in system_config.h I believe the number should be the number of endpoints to use, excluding control. 1) The read and write complete events provide a pointer to a structure. Once of elements of that structure is a handle indicating which endpoint caused the event. 2) epDataReadPending and epDataWritePending... there should be a flag for each endpoint. Something like epDataReadPending_EP2 and epDataReadPending_EP3. The USB_DEVICE_EVENT_ENDPOINT_READ_COMPLETE event should clear the pending flag for the proper endpoint. The packet should then be read (I do this in a polling loop. I am not sure if it will work in the event.) Then USB_DEVICE_EndpointRead function needs to be called again to allow another packet to be read, and the pending flag should be set again. Hope this helps. |
|
|
|
只有小组成员才能发言,加入小组>>
5079 浏览 9 评论
1954 浏览 8 评论
1888 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3115 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2186 浏览 5 评论
633浏览 1评论
506浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
370浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
535浏览 0评论
440浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-29 05:12 , Processed in 1.086326 second(s), Total 78, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号