CH582的USB串口最大包發(fā)送長度為什么是32


用的是官方例程usb_uart, 看代碼最大發(fā)送長度應(yīng)該是64,可以是調(diào)試發(fā)現(xiàn)超過32bytes就發(fā)不出去了。


是什么原因呢?

4個通道只用了一個有辦法設(shè)置最大長度是128嗎?


/*********************************************************************

?* @fn? ? ? DevEP2_IN_Deal

?*

?* @brief? ?端點(diǎn)2數(shù)據(jù)上傳

?*

?* @param? ?l? ?- 上傳數(shù)據(jù)長度(<64B)

?*

?* @return? none

?*/

void DevEP2_IN_Deal(uint8_t l)

{

? ? R8_UEP2_T_LEN = l;

? ? R8_UEP2_CTRL = (R8_UEP2_CTRL & ~MASK_UEP_T_RES) | UEP_T_RES_ACK;

}


void DevEP2_IN_Deal(uint8_t l)

{

? ? R8_UEP2_T_LEN = l;

? ? R8_UEP2_CTRL = (R8_UEP2_CTRL & ~MASK_UEP_T_RES) | UEP_T_RES_ACK;

}




或者難道說BLE那邊接收那邊的最大長度是32,我這邊是BLE接收數(shù)據(jù),然后通過usb_uart發(fā)送給主機(jī)


您好,您提到的usb_uart官方例程是指COM例程嗎,是要做BLE和USB之間的透傳嗎

藍(lán)牙最大包可以是244B,將MTU開啟即可:https://www.cnblogs.com/gscw/p/17896209.html

您要做128字節(jié)/包的話,USB的硬件DMA緩存是限制了64字節(jié),USB這邊有限制。USB的描述符中有限制端點(diǎn)包長的代碼,通過修改描述符、修改例程中默認(rèn)的32字節(jié)包長限制,可以改到最大64字節(jié)。


請問是該改下面的哪里呢?


#define DevEP0SIZE? 0x40

// 設(shè)備描述符

const uint8_t MyDevDescr[] = { 0x12,0x01,0x10,0x01,0xFF,0x00,0x00,DevEP0SIZE,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?0x86,0x1A,0x23,0x75,0x63,0x02,0x00,0x02,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?0x00,0x01 };

// 配置描述符

const uint8_t MyCfgDescr[] = {? ?0x09,0x02,0x27,0x00,0x01,0x01,0x00,0x80,0xf0,? ? ? ? ? ? ? //配置描述符,接口描述符,端點(diǎn)描述符

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?0x09,0x04,0x00,0x00,0x03,0xff,0x01,0x02,0x00,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?0x07,0x05,0x82,0x02,0x20,0x00,0x00,? ? ? ? ? ? ? ? ? ? ? ? //批量上傳端點(diǎn)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?0x07,0x05,0x02,0x02,0x20,0x00,0x00,? ? ? ? ? ? ? ? ? ? ? ? //批量下傳端點(diǎn)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?0x07,0x05,0x81,0x03,0x08,0x00,0x01};? ? ? ? ? ? ? ? ? ? ? ?//中斷上傳端點(diǎn)

// 語言描述符

const uint8_t MyLangDescr[] = { 0x04, 0x03, 0x09, 0x04 };

// 廠家信息

const uint8_t MyManuInfo[] = { 0x0E, 0x03, 'i', 0, 'D', 0, 'a', 0, 't', 0, 'a', 0, 'n', 0 };

// 產(chǎn)品信息

const uint8_t MyProdInfo[] = { 0x0C, 0x03, 'M', 0, 'o', 0, 'c', 0, 'a', 0, 'p', 0 };

/*產(chǎn)品描述符*/

const uint8_t StrDesc[28] =

{

? 0x1C,0x03,0x55,0x00,0x53,0x00,0x42,0x00,

? 0x32,0x00,0x2E,0x00,0x30,0x00,0x2D,0x00,

? 0x53,0x00,0x65,0x00,0x72,0x00,0x69,0x00,

? 0x61,0x00,0x6C,0x00

};


const uint8_t Return1[2] = {0x31,0x00};

const uint8_t Return2[2] = {0xC3,0x00};

const uint8_t Return3[2] = {0x9F,0xEE};



只改配置描述符,

長度超過32還是發(fā)不出去


// 配置描述符

const uint8_t MyCfgDescr[] = {? ?0x09,0x02,0x27,0x00,0x01,0x01,0x00,0x80,0xf0,? ? ? ? ? ? ? //配置描述符,接口描述符,端點(diǎn)描述符

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?0x09,0x04,0x00,0x00,0x03,0xff,0x01,0x02,0x00,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?0x07,0x05,0x82,0x02,0x40,0x00,0x00,? ? ? ? ? ? ? ? ? ? ? ? //批量上傳端點(diǎn)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?0x07,0x05,0x02,0x02,0x40,0x00,0x00,? ? ? ? ? ? ? ? ? ? ? ? //批量下傳端點(diǎn)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?0x07,0x05,0x81,0x03,0x08,0x00,0x01};? ? ? ? ? ? ? ? ? ? ? ?//中斷上傳端點(diǎn)



CH582的USB例程下,COM代碼中,USB工作模式選用USB_CDC_MODE模式,已經(jīng)支持64字節(jié)包長了。

您看一下是不是電腦端識別出的是什么設(shè)備。端點(diǎn)傳輸端點(diǎn)描述符中有限制,電腦驅(qū)動端也有限制,若識別出來CH340,還是會有32字節(jié)包長的限制;識別是CH9340的話是支持64字節(jié)包長的。

注意待傳輸字節(jié)長度是64字節(jié)的整數(shù)倍,要在數(shù)據(jù)包發(fā)完后再傳輸一包0長度包,表示批量傳輸結(jié)束。


只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频