官方例程里,内存缓冲区都用指定地址的方式划分了区域,而且保留区域为64或128字节。我在数据手册里没有找到设定缓冲区大小的寄存器,相信使用64字节肯定不会溢出。
现在我希望尝试用CH551来跑程序,但是端点比较多,全保留64字节空间的话内存不够。如果在描述符里,端点大小只有8,那么只为端点缓冲区保留8字节是否安全?是否有溢出风险?
谢谢
官方例程里,内存缓冲区都用指定地址的方式划分了区域,而且保留区域为64或128字节。我在数据手册里没有找到设定缓冲区大小的寄存器,相信使用64字节肯定不会溢出。
现在我希望尝试用CH551来跑程序,但是端点比较多,全保留64字节空间的话内存不够。如果在描述符里,端点大小只有8,那么只为端点缓冲区保留8字节是否安全?是否有溢出风险?
谢谢
可以将端点缓冲区设置成8字节,只是相对于一包64字节来说速度会慢一点,之前一包可以传完的数据现在需要八包来传
谢谢,根据我目前的理解,如果正确的话,CH552的硬件会将USB数据包的内容送至UEPn_DMA地址处的内存缓冲区,在触发USB中断处理。数据手册里在有一句:
注:接收数据的缓冲区的长度 >= min(可能接收到的最大数据包长度 + 2 字节,64 字节)
我现在犹豫的地方是,没有硬件设定缓冲区长度的机制,那么如果主机出错或者干扰,导致接收USB数据包超过了缓冲区大小,是否会造成溢出?还是这种情况及其罕见,我多虑了?
其实建议你可以将IN令牌包的缓冲区大小设置成你想要的大小,因为上传的数据量你是可以控制的。但是OUT包还是使用默认的64字节比较好,因为主机下发的数据量你是没法控制的