制作usb转串口固件

本文介绍了使用CH552芯片制作USB转串口调试板时,波特率的计算与误差分析。针对定时器模式2的初值计算,讨论了波特率设置对通信准确性的影响,以及如何在USB通信中将主机端的波特率需求传递给CH552。同时,阐述了FTDI驱动中设置波特率的USB非标准请求编码和处理divisor的方法,确保在不支持浮点波特率的条件下实现准确的串口通信。
摘要由CSDN通过智能技术生成

定时器相关

最近在用 ch552 芯片做 usb 转串口的调试板

串口需要设置波特率,在 ch552 上需要给串口提供设定的波特率,这里使用定时器产生

初值计算问题

一般使用定时器的模式2,8位自动重装,使用 TL 计数,使用 TH 重装

波特率初值的计算公式如下

THn = TLn = 256 - fsys/12/16/波特率/2

ch552 有 1T 的模式,所以可以不用除以 12,还可以设置波特率倍频,也不用除以 2,这样的话,计算公式改为

THn = TLn = 256 - fsys/16/波特率

这里顺便提一下除以 16 的原因。在51单片机内置的串口模块中,他采取的方式是把一位信号采集16次,然后把第7、8、9次取出来,如果这三次中其中有两次是高电平的话,就认定这一位数据是1,如果两次数据是低电平,就认为是0。这样可以提高通信的容错率。【参考来源】
(PS:STC12C5A60S2 的 datasheet 8.2.2 节有更详细的介绍)

波特率误差问题

异步串口有起始和停止位,再加校验位,8位字节最多可有12位。51单片机的串口模块通常在位中间采样,如此12位偏差50%就可能采样错误造成通信失败,对应通信双方波特率偏差约50%/12=4%。

串口通信误码率与通信双方波特率高低无关,不过波特率和通信距离的乘积有上限。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值