tzz1983 发表于 2024-12-12 13:00:48

<p>USB_CDC , 例程中,上位机改变MCU串口波特率的过程:</p>
<p>-&gt;上位机发送一次控制传输(其中的OUT包中包含有要设置的波特率信息)</p>
<p>-&gt;MCU的USB硬件在收到OUT包后根据包数据判断是否需要改变波特率。</p>
<p><img src="data/attachment/forum/202412/12/125504ycrndqdc2kddr4rd.png" alt="image.png" title="image.png" /></p>
<p>-&gt; 如果需要改变波特率,则调用usb_uart_settings();usb_uart_settings()又调用了uart_set_baud();</p>
<p>uart_set_baud()位于文档uart.c,它才是真正改变波特率的函数。</p>
<p>调用uart_set_baud()时没有看到参数传递,这是因为波特率信息是通过全局变量(结构体LineCoding)来传递数据的</p>

pursuing 发表于 2024-12-28 21:59:22

既然CDC是按固定12M通信的,为什么CDC例程中说明“波特率最高可支持460800,且支持自定义波特率”,460800还不够12M啊。只是说明后面如果需要用到串口时,最高到460800?

xxkj2010 发表于 2024-12-29 08:07:51

pursuing 发表于 2024-12-28 21:59
既然CDC是按固定12M通信的,为什么CDC例程中说明“波特率最高可支持460800,且支持自定义波特率”,460800 ...

CDC通讯速率其实是USB通讯速率,而串口波特率通讯是单片机内部处理串口数据的通讯速率,单片机从USB获取数据后还需要进行分析、处理,才能获取到正确的串口数据,这个过程需要一定的时间,所以是无法与USB通讯速率的12M同步。

神农鼎 发表于 2024-12-29 10:08:07

USB-FS, CDC, HID, 通信时是 12Mbps !
后面大家用不是USB的 串口转发 给 第三方,
才用得到 用多快的波特率 转发出去
===《= 12Mbps, 目前我们做的是 《=10Mbps



pursuing 发表于 2024-12-29 19:43:37

我用AIapp-ISP-v6.95软件中的USB驱动安装,
成功在win7下安装了STC 的USB CDC驱动,谢谢!
我这里想请教一下,这种USB CDC驱动是通用的吗?
比如我还有其他USB CDC的设备,
也能用STC安装的这个CDC驱动吗?

xxkj2010 发表于 2024-12-30 07:11:45

pursuing 发表于 2024-12-29 19:43
我用AIapp-ISP-v6.95软件中的USB驱动安装,成功在win7下安装了STC 的USB CDC驱动,谢谢!我这里想请教一下 ...

应该是不通用的

神农鼎 发表于 2024-12-30 11:09:18

pursuing 发表于 2024-12-29 19:43
我用AIapp-ISP-v6.95软件中的USB驱动安装,
成功在win7下安装了STC 的USB CDC驱动,谢谢!
我这里想请教一 ...

应该可以

小白爱上51 发表于 2024-12-30 11:52:20

cdc不就是串口吗

xxkj2010 发表于 2024-12-30 11:56:29

小白爱上51 发表于 2024-12-30 11:52
cdc不就是串口吗

是的,只不过是虚拟串口而已,与硬件串口可能有差别吧
页: 1 [2]
查看完整版本: CDC范例中,怎样实现波特率自适应的?