STM32F4发现板USB CDC FS

时间:2016-03-07 19:18:43

标签: stm32f4discovery

我尝试在STM的发现板上实现USB CDC FS。但这真的令人沮丧。

我通过Cube MX使用HAL库创建了一个项目。最后,我希望数据速率接近500 kByte / s。直到现在我可以在设备管理器中看到我的设备,但实际上我经常无法在Hterm中打开com端口。 Hterm只是没有回应。

func applyFilter() {        
    let inputImage = CIImage(image: tempImageView.image!)        
    let randomColor = [kCIInputAngleKey: (Double(arc4random_uniform(314)) / 100)]                
    let filteredImage = inputImage!.imageByApplyingFilter("CIHueAdjust", withInputParameters: randomColor)           
    let renderedImage = context.createCGImage(filteredImage, fromRect: filteredImage.extent)           
    tempImageView.image = UIImage(CGImage: renderedImage)      
}

我正确地初始化时钟。也许虚拟COM端口驱动程序无法缓冲它们来自MCU的大量数据?! 如果我在while循环中增加延迟时间,有时我可以打开com端口并获取数据。我得到的最高数据速率约为70 kByte / s。太少了:(

软件中是否存在任何已知错误?我已经增加了堆和堆栈大小,但它没有解决问题。

感谢您的帮助,

1 个答案:

答案 0 :(得分:0)

  1. 检查以下两点,

    1)设置" wMaxPacketSize"从USB CDC中的2(或任何值)到64 端点IN描述符的设备配置描述符 usbd_cdc.c文件。全速的最大端点大小 usb是64字节。

    2)增加HCLK,您应该看到更高的数据速率。

    CDC速度取决于许多因素,与您拥有的HID不同 保证数据速率。当且仅当公共汽车是免费的时,CDC是最快的 理论速度为1.5 MB / s。我用过STM32F7迪斯科板 并设法达到500+ KB / s的数据速率,HCLK 120MHz只需a 一周前。

    注意:请检查USB时钟频率是否设置为48MHz 很难让它发挥作用。

  2. 祝你好运。

    问候,

    Jagadeep。