当前位置: 首页 > news >正文

【linux开发-驱动】-RS232/485相关

前言:

根据电平的不同,串口分为TTL和RS232。不管什么样的接口电平,其驱动程序都是一样的,通过外接RS485这样的芯片就可以将串口转换为RS485信号。

先了解一下linux下UART驱动框架:

1、uart_driver注册与注销

uart_driver 结构体表示 UART 驱动,uart_driver 定义在 include/linux/serial_core.h 文件中

每一个串口驱动都需要定义一个uart_driver,加载驱动的时候通过 uart_register_driver 函数向
系统注册这个 uart_driver,

int uart_register_driver(struct uart_driver *uart)
uart:要注册的 uart_driver。
返回值:0,成功;负值,失败

注销驱动的时候也需要注销掉前面注册的 uart_driver,需要用到 uart_unregister_driver 函数

void uart_unregister_driver(struct uart_driver *uart)
函数参数和返回值含义如下:
uart:要注销的 uart_driver。
返回值:无。

2、uart_port

uart_port 定义在 include/linux/serial_core.h 文件,表示一个具体的port。

每个 UART 都有一个 uart_port,通过uart_add_one_port 函数与uart_driver 结合

int uart_add_one_port(struct uart_driver *reg,struct uart_port*port)
函数参数和返回值含义如下:
reg:此 port 对应的 uart_driver。
port:要添加到 uart_driver 中的 port。
返回值:0,成功;负值,失败。

卸载 UART 驱动的时候也需要将 uart_port 从相应的 uart_driver 中移除,需要用到
uart_remove_one_port 函数

int uart_remove_one_port(struct uart_driver *reg, struct uart_port *port)
函数参数和返回值含义如下:
reg:要卸载的 port 所对应的 uart_driver。
port:要卸载的 uart_port。
返回值:0,成功;负值,失败。

3、uart_ops

ops是uart_port中的结构体指针变量,ops 包含了针对 UART 具体的驱动函数,Linux 系统收发数据最终调用的都是 ops 中的函数。uart_ops 定义在 include/linux/serial_core.h 文件中

编写驱动一般就要写uart_ops,因为 uart_ops 是最底层的 UART 驱动接口,是实实在在的和 UART 寄存器打交道的。

一、RS232驱动相关

1、一般UART驱动ST已经编写好了,我们需要在设备树中添加 串口 对应的设备节点即可

2、移植minicom,类似于串口调试助手,移植到开发板上,一般重新配置一下buildroot,使能minicom就可以了。

打开buildroot图形配置界面:

→ Target packages
        → Hardware handling
                        [*] minicom

 注意RS232连接时,对应的公头和母头。设置好开发板上的跳线帽。

最后使用minicom调试数据。

二、RS485

RS232的窗口驱动程序写好了就不需要编写其他的驱动程序了,直接使用minicom来测试就行

1、修改开发板上的跳线帽

2、使用转换器的RS485与开发板上的RS485相连

3、串口转换器通过 USB 线连接到电脑上

4、配置好minicom就可以收发数据了

参考:正点原子视频资料


http://www.mrgr.cn/news/61136.html

相关文章:

  • LabVIEW与WPS文件格式的兼容性
  • Windows 11 开启 WSL(Windows Subsystem for Linux)完整指南
  • 非PHP开源内容管理系统(CMS)一览
  • HTML中meta的用法
  • Github Copilot学习笔记
  • 【动手学电机驱动】STM32-MBD(5)Simulink 模型开发之 PWM 输出
  • 基于Python的PostgreSQL数据库操作示例(二)
  • Vue3 学习笔记(十一)Vue生命周期
  • linux命令小总结
  • H5底部输入框点击弹起来的时候被软键盘遮挡bug
  • Windows 修改用户名
  • yt-dlp 和 ffmpeg 下载和处理视频的基本命令
  • Zookeeper 和 Eureka 做注册中心有什么区别?
  • 开源智能语音转写系统:助力高效会议记录,精确还原访谈内容
  • 将机器人六轴坐标转为4*4矩阵(Opencv/C++)
  • QTestLib框架
  • SAP-成本要素
  • MoonNet网络库文档
  • svg 初识+了解 + 应用 + 动画
  • 【算法题】树状数组
  • <项目代码>YOLOv8 猫狗识别<目标检测>
  • 【传知代码】KAN卷积:医学图像分割新前沿
  • 豆豆吐槽的“客服”问题,我想骂腾讯十八代祖宗
  • 【信号发生器(二)】
  • 2024 WebStorm 免费版使用教程与WebStorm启动报错解决
  • 天锐绿盾加密软件与 Ping32,文件加密与管控功能的深度较量