创建驱动CH340的USB HOST 设备

6 篇文章 11 订阅

创建驱动CH340的USB HOST 设备

  usb转串口芯片如今使用十分广泛,最常用的方式是ch340转串口的从设备与电脑的usb主机进行连接。但我们可能也会遇到另一端不是电脑,而是自己的一台设备usb主机接口的情况。这里以stm32平台+stm32CubeMX工具为例总结介绍一下如何让自己的usb 主机具有和ch340芯片通信的功能。

使用sm32CubeMX配置一个usb cdc类的主机代码

  usb有主从机之分,ch340转串口芯片在这里是从机,ch340是转串口芯片,提到串口我们很容易想到usb 里的cdc虚拟串口类,实际上ch340就是一种特殊的虚拟串口 usb cdc,需要对一些厂家自定义的配置进行更改达到识别ch340的效果。

  生成部分参考 https://blog.csdn.net/nyp_1988/article/details/100735858
  更改部分根据实践整理及补充大致分为这几步:

设备描述符更改为ch340厂家自定义的0xff并注册类

在这里插入图片描述
在这里插入图片描述

接口初始化代码修改

在这里插入图片描述
在这里插入图片描述

波特率配置

  此时已经可以与ch340的从设备进行通信,但是只支持默认波特率9600的串口。我们知道usb cdc虚拟串口是没有波特率的概念的,而ch340的另一端是串口,所以接下来要做的就是配置此usb 主机驱动,使得它在初始化时配置成从机串口一样的波特率。
在这里插入图片描述

  这里最关键的是d8[0],d8[1]这两个变量,就是通过给这两个变量赋值来设置波特率的,通过参考博客题主向ch340官方沟通获取的115200的值3 和 0xcc和他最后的代码
在这里插入图片描述
在这里插入图片描述

  可以推测d8[1]赋值就是对应的波特率的两个值的组合,那么我们怎么得到任意波特率对应的参数呢

这里我参阅了github上一个ch340 linux版驱动代码https://github.com/DecaturMakers/CH340_drivers-Linux-Mac-Windows,找到了这个函数:

在这里插入图片描述

  经过分析、计算、实践可得921600波特率对应的是d8[2] = 0x0000f307,将115200代入此函数,得a=204,即十六进制0xcc,b=3,也就是对应上文的115200波特率对应配置

在这里插入图片描述

  通过这个函数可将自己的目标波特率代入band_rade,得出对应的a、b值,在SetLineCoding函数中给d8[]1]赋值时注意是十六进制哦。

  参考 https://blog.csdn.net/nyp_1988/article/details/100735858

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值