CP2102 USB转TTL 串口分析

CP210x是Silicon Labs 公司出品的一系列USB转串口芯片。目前这一系列有:CP2101, CP2102, CP2103, CP2104, CP2105, 和CP2108。其中不同版本差别在下图可以看到【参考1】:

最近我拿到一个 CP2102 的USB转串口卡,发现Windows10可以通过Windows Update直接安装驱动无需额外下载。另外,它的官方网站提供了大量的资料和参考给人感觉很好。我的目标是使用 Arduino 来直接驱动,因此还需要进行一些额外的研究。非常遗憾,之前介绍的USBlyser抓包结果让人看起来一头雾水,最后只能使用USB逻辑分析仪抓包。一端通过 Arduino 按照 9600,8,None,1,None 模式发送。另外一端使用串口工具读取。数据是单独的 A  2秒后发送“string from www.lab-z.com” 字符串。对照网站提供的AN571可以解读全部数据。

1.打开/关闭串口

2.查询CTS/RTS等等线的状态

设备返回状态信息

3.查询 Serial Status

返回一个19Bytes的结构体

4.设置通讯参数

0x0800 : 1 Stop bit, None Parity, Data bits=8

5.设置流控制

发送一个 20Bytes 的数值,上面发送多次的原因是前两次被NAK 了,第三次才成功。

6.设置特殊控制字符(实际上我们不需要)

7.设置波特率

这个 0x01C200 是 115200 的波特率。紧接着又设置了一次,这次是 9600

8.设置 Modem 握手方式(我们没有用),这里用了 0x0200, 设置了 RTS

随后又设置用 DTS

参考:

1. https://www.silabs.com/documents/public/application-notes/an976-cp2102-3-4-9-to-cp2102n-porting-guide.pdf

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注