WCH沁恒单片机
直播中

王军

7年用户 1760经验值
私信 关注
[问答]

请问CH552的端点0是否可以设置为64字节?

设备描述符里面的第8个字节.bMaxPacketSize0,看了很多Demo都是设置为8字节。
CH554.h头文件里面定义的DEFAULT_ENDP0_SIZE也是8。
是否可以设置为64呢?如果设置为64字节,缓冲区要设置64字节还是64+2=66字节呢?

下面的缓冲区分配,如果要66字节就和端点1的重复了,是否需要将端点1缓冲区后移?
UINT8X Ep0Buffer[0x40] _at_ 0x0000;     // 端点0 OUT & IN缓冲区,必须是偶地址
UINT8X Ep1Buffer[0x40] _at_ 0x0040;     // 端点1 发送缓冲区


回帖(1)

刘耀清

2022-5-30 09:57:17
  
  
端点0可以配置成64字节的长度,缓冲区长度定义成64即可。
UINT8X Ep0Buffer[0x40] _at_ 0x0000;     // 端点0 OUT & IN缓冲区,必须是偶地址
UINT8X Ep1Buffer[0x40] _at_ 0x0040;     // 端点1 发送缓冲区




举例:当设计端点1的最大长度为8字节(端点0能力是64字节,根据需要可以改)的时候,缓冲区长度需要配置成8+2=10字节
        端点1根据通讯双方约定的最大包长度是32字节的时候,长度32+2=34字节

        端点1根据通讯双方约定的最大包长度是63字节的时候,63+2=65,65大于最大长度64,长度写成64字节
        端点1根据通讯双方约定的最大包长度是64字节的时候,长度直接等于64字节
举报

更多回帖

发帖
×
20
完善资料,
赚取积分