XUbuntu24.04之ch9344(usb转串口芯片)安装驱动(二百四十五)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!

优质专栏:Audio工程师进阶系列原创干货持续更新中……】🚀
优质专栏:多媒体系统工程师系列原创干货持续更新中……】🚀
优质视频课程:AAOS车载系统+AOSP14系统攻城狮入门实战课原创干货持续更新中……】🚀

人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.

更多原创,欢迎关注:Android系统攻城狮

欢迎关注Android系统攻城狮

🍉🍉🍉文章目录🍉🍉🍉

    • 🌻1.前言
    • 🌻2.ch9344按usb转串口芯片介绍
    • 🌻3.解决方案
      • 🐓3.1 官网下载驱动代码
      • 🐓3.2 解压、修改代码
        • <1>.解压
        • <2>.修改代码
      • 🐓3.3 编译与安装
      • 🐓3.4 遗留问题

🌻1.前言

本篇目的:XUbuntu24.04之ch9344按usb转串口driver

🌻2.ch9344按usb转串口芯片介绍

  • CH9344是一款USB转串口芯片,由南京沁恒微电子股份有限公司研发。该芯片将USB接口转换为串口,具有高度集成、稳定性强、兼容性好等特点,广泛应用于工业控制、数据采集、通信设备等领域。
  • CH9344芯片的主要特点如下:
  1. 高度集成:CH9344内置了USB收发器、串口收发器、电压转换器等模块,只需外接几个元件即可实现USB转串口的功能。这大大简化了电路设计,降低了系统成本。
  2. 兼容性好:CH9344支持USB 1.1协议,能与各种操作系统和USB设备兼容。在Windows、Linux、Mac OS等系统中,无需安装驱动程序即可识别和使用。
  3. 串口参数可编程:CH9344支持通过软件设置串口的波特率、数据位、停止位、校验位等参数,以满足不同应用场景的需求。
  4. 丰富的串口功能:CH9344支持硬件流控制(RTS/CTS)、软件流控制(XON/XOFF)、发送/接收缓冲区等串口功能,保证了数据传输的稳定性和可靠性。
  5. 灵活的供电方式:CH9344支持从USB接口和外部电源两种方式供电,方便用户在不同场景下使用。
  6. 小型化封装:CH9344采用QFN封装,体积小巧,便于在空间受限的场合中使用。
  7. 工作温度范围宽:CH9344的工作温度范围为-40℃至+85℃,能满足各种恶劣环境下的使用需求。
  8. 低功耗:CH9344在正常工作状态下的功耗仅为120mW,待机功耗小于1mW,有利于降低整体系统的能耗。
  9. 抗干扰性能强:CH9344具备良好的抗电磁干扰能力,能在复杂的电磁环境下稳定工作。
  10. 完善的售后服务:南京沁恒微电子提供完善的售后服务,包括技术支持、样品申请、产品维修等,确保用户无后顾之忧。
  • CH9344是一款性能优异、应用广泛的USB转串口芯片,能为用户提供稳定、可靠的串口通信解决方案。随着物联网、工业互联网等领域的不断发展,CH9344的市场需求将持续增长,成为串口通信领域的重要选择。

🌻3.解决方案

🐓3.1 官网下载驱动代码

9344芯片驱动代码下载:
https://www.wch.cn/downloads/file/386.html?time=2024-06-09%2014:48:19&code=tPIw19Z80Kn3RhVD1I1X2qrYLxv7xVeOFDFqQT7h

🐓3.2 解压、修改代码

<1>.解压
# unzip CH9344SER_LINUX.ZIP
# cd LINUX/driver
<2>.修改代码
  • 1.修改一
# cd LINUX/driver
# emacs cd LINUX/driver
+ #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 14, 0))
+ static ssize_t ch9344_tty_write(struct tty_struct *tty, const unsigned char *buf, size_t count);
+ #else
+ static int ch9344_tty_write(struct tty_struct *tty, const unsigned char *buf, int count);
+ #endif
  • 2.修改二:
+ #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 14, 0))
+ static ssize_t ch9344_tty_write(struct tty_struct *tty, const unsigned char *buf, size_t count)
+ #else
+ static int ch9344_tty_write(struct tty_struct *tty, const unsigned char *buf, int count)
+ #endif
{struct ch9344 *ch9344 = tty->driver_data;int stat;unsigned long flags;int wbn;struct ch9344_wb *wb;int portnum = ch9344_get_portnum(tty->index);int timeout;int maxep = ch9344->writesize / 20;int packnum, maxpacknum;int packlen, total_len, sendlen;
}

🐓3.3 编译与安装

1.编译
# make 2.安装到/lib/modules/$(uname -r)/kernel/drivers/usb/serial目录下
# sudo make install3.查看是否安装到指定目录
# ls /lib/modules/$(uname -r)/kernel/drivers/usb/serial/ch9344.ko
/lib/modules/6.8.0-35-generic/kernel/drivers/usb/serial/ch9344.ko
已经安装到指定目录4.查看ch9344.ko是否已经加载到系统
# lsmod |grep -i ch9344
ch9344     61440  05.查看串口设备
# ls /dev/ttyCHxxxUSB注意:
可以看到有dev/ttyCHxxxUSBx四个usb转串口设备,一般使用第一个tyCHxxxUSB0就行.

🐓3.4 遗留问题

  • 开机重启后,发现/lib/modules/$(uname -r)/kernel/drivers/usb/serial/ch9344.ko驱动没有自动加载,我们下一篇再说。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/344948.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何将本地项目上传到GitHub

在软件开发过程中&#xff0c;将本地项目上传到GitHub是一个非常重要的步骤。它不仅可以帮助你备份代码&#xff0c;还可以让你与团队成员共享和协作开发。本文将详细介绍如何将本地项目上传到GitHub。 前提条件 已安装Git。如果还没有安装&#xff0c;请参考Git官网进行下载…

【linux】信号(三)

本章节将会围绕信号处理进行展开讲解 目录 回顾一下&#xff1a;历史问题&#xff1a;地址空间&#xff1a;键盘的输出如何被检测到&#xff1a;持续更新... 回顾一下&#xff1a; 信号处理也就是信号递达 我们说过递达时一种有3种行为 默认行为忽略行为自定义行为 历史问…

JVM之【字节码/Class文件/ClassFile 内容解析】

说在前面的话 字节码/Class文件/ClassFile 均为同一概念 Java语言:跨平台的语言(write once,run anywhere) 当Java源代码成功编译成字节码后&#xff0c;如果想在不同的平台上面运行&#xff0c;则无须再次编译这个优势不再那么吸引人了。Python、PHP、Perl、Ruby、Lisp等有…

28-LINUX--I/O复用-epoll

一.epoll概述 epoll 是 Linux 特有的 I/O 复用函数。它在实现和使用上与 select、poll 有很大差异。首 先&#xff0c;epoll 使用一组函数来完成任务&#xff0c;而不是单个函数。其次&#xff0c;epoll 把用户关心的文件描述 符上的事件放在内核里的一个事件表中。从而无需像…

xshell远程无法链接上VM的centos7

1、现象如下&#xff0c; 2.解决办法&#xff1a;查证后发现这个默认的设置为vmnet0 3.参考文章&#xff1a;Xshell连接不上虚拟机centos7_centos7的nat模式可以ping通网络,但是用xshell连不上是什么原因-CSDN博客

QT C++(QT控件 QPushButton,QRadioButton,QCheckBox)

文章目录 1. QPushButton 普通按钮2. QRadioButton 单选按钮3. QCheckBox 复选按钮 1. QPushButton 普通按钮 QPushButton中的重要属性 text&#xff1a;按钮中的文本icon&#xff1a;按钮的图标iconSize&#xff1a;按钮中图标的尺寸shortCut&#xff1a;按钮对应的快捷键&a…

STM32编程:实现LED灯闪烁(基于手写SDK的方式)

项目结构 stm32f10x.h 文件 //寄存器的值常常是芯片外设自动更改的&#xff0c;即使CPU没有执行程序&#xff0c;也有可能发生变化 //编译器有可能会对没有执行程序的变量进行优化//volatile表示易变的变量&#xff0c;防止编译器优化&#xff0c; #define __IO volati…

53.ReentrantLock原理

ReentrantLock使用 ReentrantLock 实现了Lock接口&#xff0c; 内置了Sync同步器继承了AbstractQueuedSynchronizer。 Sync是抽象类&#xff0c;有两个实现NonfairSync非公平&#xff0c;FairSync公平。 所以ReentrantLock有公平锁和非公平锁。默认是非公平锁。 public sta…

我的编程语言学习记录:一段不断探索的旅程

目录 我的编程语言学习记录&#xff1a;一段不断探索的旅程 1.引言 2.我的编程之旅开始 第一站&#xff1a;Python — 简洁之美 第二站&#xff1a;JavaScript — 网页的魔法 第三站&#xff1a;Java — 企业级的力量 3.学习过程中的挑战与克服 1.理解概念 3.记忆语法…

读书笔记:左耳听风

程序员如何用技术变现 我完全没有必要通过打工听人安排而活着&#xff0c;而是反过来通过在公司工作提高自己的技能&#xff0c;让自己可以更为独立和自由地生活。 因而&#xff0c;在工作当中&#xff0c;对于那些没什么技术含量的工作&#xff0c;我基本上就像是在学生时代那…

Java 的循环

Java 有三种循环&#xff1a;for&#xff0c;while&#xff0c;do while。 for 基本语法&#xff1a; for (循环变量初始化; 循环条件; 循环变量迭代){循环语句; }程序示例&#xff1a; public static void main(String[] args) {for (int i 0, j 0; i < 3; i, j--) {…

即时设计工具对决:Figma、Sketch与XD的优劣比较

最近几年&#xff0c;UI 设计工具出现了许多后起之秀&#xff0c;其中有四款更具代表性的UI设计软件&#xff1a;Sketch、Adobe XD、Figma 和 即时设计&#xff0c;这四个设计软件都有自己的优势。如果合作对您的UI设计过程至关重要&#xff0c;那么Figma 和 即时设计 它应该是…

FJSP:烟花算法(FWA)求解柔性作业车间调度问题(FJSP),提供MATLAB代码

一、烟花算法介绍 参考文献&#xff1a; Tan, Y. and Y. Zhu. Fireworks Algorithm for Optimization. in Advances in Swarm Intelligence. 2010. Berlin, Heidelberg: Springer Berlin Heidelberg. 二、烟花算法求解FJSP 2.1FJSP模型介绍 柔性作业车间调度问题(Flexible …

SpringBoot: 可执行jar的特殊逻辑

这一篇我们来看看Java代码怎么操作zip文件(jar文件)&#xff0c;然后SpringBoot的特殊处理&#xff0c;文章分为2部分 Zip API解释&#xff0c;看看我们工具箱里有哪些工具能用SpringBoot的特殊处理&#xff0c;看看SpringBoot Jar和普通Jar的不同 1. Zip API解释 1. ZipFil…

Burp Suite Professional 2024.5 (macOS, Linux, Windows) - Web 应用安全、测试和扫描

Burp Suite Professional 2024.5 (macOS, Linux, Windows) - Web 应用安全、测试和扫描 Burp Suite Professional, Test, find, and exploit vulnerabilities. 请访问原文链接&#xff1a;Burp Suite Professional 2024.5 (macOS, Linux, Windows) - Web 应用安全、测试和扫描…

将字符串str1复制为字符串str2

定义两个字符数组str1和str2&#xff0c;再设两个指针变量p1和p2&#xff0c;分别指向两个字符数组中的有关字符&#xff0c;通过改变指针变量的值使它们指向字符串中的不同的字符&#xff0c;以实现字符的复制。编写程序&#xff1a; 运行程序&#xff1a; 程序分析&#xff1…

数据库(28)——联合查询

对于union查询&#xff0c;就是把多次查询的结果合并起来&#xff0c;形成一个新的查询结果集。 语法 SELECT 字段列表 FROM 表A... UNION [ALL] SELECT 字段列表 FROM 表B...; 演示 select * from user where age > 22 union all select * from user where age < 50; u…

MyBatisPlus插件生成代码

文章目录 概要安装插件使用插件 概要 MyBatis-Plus 是 MyBatis 的增强工具&#xff0c;旨在简化 MyBatis 的开发。MyBatis-Plus 代码生成器插件可以自动生成项目中常见的代码&#xff0c;如实体类、Mapper 接口、Service 接口和实现类、Controller 等&#xff0c;从而减少手动…

优化家庭网络,路由器无线中继配置全攻略(中兴E1600无线中继设置/如何解决没有预埋有线网络接口的问题/使用闲置路由实现WIFI扩展)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 网络优化 📒📒 操作步骤 📒💡适用场景🚨 常见问题及解决方案⚓️ 相关链接 ⚓️📖 介绍 📖 在现代家庭生活中,WiFi已经渗透到我们生活的每一个角落,成为了日常生活中不可或缺的一部分。然而,不少用户常常遇到W…