兄弟们帮忙看下V307怎么IN数据?OUT可以了,IN没反应!

帖子在:ch320v307代码有bug吗,高速给的是全速的描述符? - 沁恒微电子社区 (wch.cn)


目前bulk传输的例子,3 5 是 out,4 6 是in,1是in 和 out。

现在用bus hound可以测到 1 3 的out都没问题。然后再点1 in 或者 4 in就挂住了!

请问这样测试有没问题,为啥会挂住呢?

GIF:

https://www.wch.cn/uploads/file/20230331/1680235437155104.rar

我找到原因了,用的是HSI,并且初始化时:

void USBHS_RCC_Init( void )
{
    // 选择48m时钟来源,用的是 PHY, bit31 = USBHS SRC
    RCC_USBCLK48MConfig( RCC_USBCLK48MCLKSource_USBPHY );

    // bit27 PLL SRC = PLL参考源为 HSI
    RCC_USBHSPLLCLKConfig( RCC_HSBHSPLLCLKSource_HSE /* 改为hsi 就不行,为什么? */ );

    // bit24 HSDIV, PLL参考源分频,因为参考源是 HSI=8MHz,所以 PLL = 8/2=4MHz
    RCC_USBHSConfig( RCC_USBPLL_Div2 );

    // bit28~29 那么参考源时钟就是 4MHz
    RCC_USBHSPLLCKREFCLKConfig( RCC_USBHSPLLCKREFCLK_4M );
    RCC_USBHSPHYPLLALIVEcmd( ENABLE );
    RCC_AHBPeriphClockCmd( RCC_AHBPeriph_USBHS, ENABLE );
}
把 RCC_HSBHSPLLCLKSource_HSE 改成 RCC_HSBHSPLLCLKSource_HSI 就不行,为什么?

我时钟已经是HSI 144MHz,而且都能out,为啥in不行???


没人回复,是否可以确认,HSI不能用于USB通信了?


你好,随着数据长度的增加,对时钟精度的要求越高,正常条件下,64字节的长度用HSI是可以的,修改HSI校准值等操作,可以提高到两三百字节,但是USB建议使用HSE做参考源,更稳定


使用USB高速时,USB时钟只能用HSE。

image.png



附CH32V307寄存器手册:https://www.wch.cn/downloads/CH32FV2x_V3xRM_PDF.html


只有登录才能回复,可以选择微信账号登录