我尝试在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。太少了:(
软件中是否存在任何已知错误?我已经增加了堆和堆栈大小,但它没有解决问题。
感谢您的帮助,
答案 0 :(得分:0)
检查以下两点,
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 很难让它发挥作用。
问候,
Jagadeep。