是否可以在STM32 MCUS中通过USB接收数据的超时



我想知道是否可以在STM32微控制器中通过USB接口接收数据的超时。例如,在UART连接中可以使用这种方法(请参阅AN3109,第2节。接收DMA超时(。

我找不到与USB接口相似的类似的东西。而且,据说只有在真正必要的情况下才能启用USB的DMA,因为数据传输应与32位单词保持一致。

您在.... if.c文件中有接收回电函数(如果使用hal(。复制重新的字符到缓冲区。在那里实现超时。

在UART的情况下,您所指的是DMA接收超时,或者(不使用DMA时(闲置中断。我不知道为USB CDC即将"开箱即用"的事情 - 您必须自己实施此超时,这不太难。每次收到数据时,都可以重新触发计时器(软件硬件(。将其期间设置为您选择的超时值,并在超时途中进行协议解析。

如果我不得不添加任何东西 - 通常在协议级别解决此类问题(不知道要接收多少个字节(。假设二进制协议,实现这一目标的一种方法是具有框架启动和结束字节,这些字节在数据中永远不会发生(如果它们这样做 - 您逃脱了(,在这种情况下,您会在" start otter byte"之后从"启动字节"开始收到一切。另一种方法是具有"启动字节"和一个字段,指示要接收多少个字节。当然,所有这些都应该以某种方式进行检查。

说,如果您可以选择更改协议,那么您确实应该这样做。依靠交流中的时间安排,尤其是在如此低级别的情况下,从长远来看只会引起问题和头痛。您在协议层和接口层之间引入紧密的耦合。每次您决定使用其他界面时,这都会适得其反,因为您必须再次重新发明同一件事。更不用说当您决定以所有伟大的伟大搬到TCP/IP时会多么痛苦 - 网络抖动,掉落的数据包等。

相关内容

  • 没有找到相关文章

最新更新