Linux RS232驱动实验

news/2024/11/13 10:32:49/

目录

一、硬件分析

1、 RS232 原理图​编辑

2、RS485 原理图

3、GPS 原理图

二、设备树中添加设备节点

2、添加 uart3 节点

​编辑

三、移植 minicom

 1、移植 ncurses

2、移植 minicom

3、验证

 4、minicom配置

四、测试

RS232 收发测试


串口是很常用的一个外设,在 Linux 下通常通过串口和其他设备或传感器进行通信,根据电平的不同,串口分为 TTL 和 RS232。不管是什么样的接口电平,其驱动程序都是一样的,通过外接 RS485 这样的芯片就可以将串口转换为 RS485 信号,GPS也是一样,串口驱动NXP 官方已经编写好了

一、硬件分析

开发板上 RS232、 RS485 和 GPS这三个接口都连接到了 UART3 上,依次来看一下这三个模块的原理图

1、 RS232 原理图

 RS232 电平通过 SP3232 这个芯片来实现, RS232 连接到了 I.MX6U的 UART3 接口上,但是要通过 JP1 这个跳线帽设置。把 JP1 的 1-3 和 2-4 连接起来后 SP3232就和 UART3 连接到一起

2、RS485 原理图

 RS485 采用 SP3485 这颗芯片来实现, RO 为数据输出端, DI 为数据输入端, RE 是接收使能信号(低电平有效), DE 是发送使能信号(高电平有效)。RE 和 DE 经过一系列的电路,最终通过 RS485_RX 来控制,这样可以省掉一个 RS485 收发控制 IO,将 RS485完全当作一个串口来使用

3、GPS 原理图

 GPS 模块用的也是 UART3,因此 UART3 驱动成功以后就可以直接读取 GPS 模块数据了

需要注意的是,使用GPS的时候需要把跳线帽取下,否则可能会受干扰

二、设备树中添加设备节点

1、 UART3 IO 节点创建

UART3 用到了 UART3_TXD 和 UART3_RXD 这两个 IO,因此要先在 iomuxc 中创建 UART3对应的 pinctrl 子节点

检查一下 UART3_TX 和 UART3_RX 这两个引脚有没有被用作其他功能,如果有的话要将其屏蔽掉,如下

2、添加 uart3 节点

默认情况下 imx6ull的.dts 中只有 uart1 和 uart2 两个节点,在下面加上 UART3 对应的 uart3

如果设备树修改成功,系统启动以后就会生成一个名为“/dev/ttymxc2”的设备文件, ttymxc2 就是 UART3 对应的设备文件,应用程序可以通过访问 ttymxc2 来实现对 UART3 的操作。

成功的启动信息如下

 0x21ec000就是uart3的地址,在官方设备树中如下

查看设备

三、移植 minicom

 minicom 类似我们常用的串口调试助手,是 Linux 下很常用的一个串口工具,将 minicom移植到我们的开发板中,这样我们就可以借助 minicom 对串口进行读写操作。minicom 需要用到 ncurses,依次需要先移植 ncurses

 1、移植 ncurses

这里在ubantu创建一个文件夹ncurses,将 ncurses-6.0.tar.gz 拷贝到文件夹中,然后进行解压,解压命令如下:

tar -vxzf ncurses-6.0.tar.gz

 解压完成以后就会生成一个名为“ncurses-6.0”的文件夹,此文件夹就是 ncurese 的源码文件夹。在ncurses 目录下新建名为“ncurses”目录,用于保存 ncurses 编译结果

进入到 ncureses 源码目录下,也就是刚刚解压出来的 ncurses-6.0 目录中,首先是配置 ncureses,输入如下命令:

 ./configure --prefix=/home/ubantu22/ncurses/ncurses --host=arm-linux-gnueabihf                --target=arm-linux-gnueabihf --with-shared --without-profile --disable-stripping --without-progs --with-manpages --without-tests 

configure 就是配置脚本, --prefix 用于指定编译结果的保存目录,这里将编译结果保存到前面创建的“ncurses”目录中。 --host 用于指定编译器前缀,这里设置为 “arm-linuxgnueabihf”, -target 用于指定目标,这里也设置为“arm-linux-gnueabihf”。配置命令写好以后点击回车键,等待配置完成

输入“make”进行编译

如果输入命令提示“configure: error: invalid package name: tests” 或者如下报错

./ncurses/./base/lib_screen.c: In function ‘putwin’:
../ncurses/./base/lib_screen.c:781:21: warning: ‘fputs’ argument missing terminating nul [-Wstringop-overread]
                           ^~~~~~
make[1]: *** [Makefile:357:../obj_s/cursesf.o] 错误 1
make: *** [Makefile:120:all] 错误 2
 

可能是上面配置./configure打错了,建议重新配置,应该是哪里输入错了,建议重新输入,最好手动输入,复制可能出错

编译成功如下

输入“make install”命令安装,将编译出来的结果拷贝到--pfefix 指定的目录里面去

查看一下前面创建的“ncurses”文件夹,会发现里面多了一些东西 

 

include、 lib 和 share 这三个目录中存放的文件分别拷贝到开发板根文件系统中的/usr/include、 /usr/lib 和/usr/share 这三个目录中,如果哪个目录不存在的话请自行创建,命令如下:

sudo cp lib/* /home/ubantu22/nfs/rootfs/usr/lib/ -rfa

sudo cp share/* /home/ubantu22/nfs/rootfs/usr/share/ -rfa
sudo cp include/* /home/ubantu22/nfs/rootfs/usr/include/ -rfa

然后在开发板根目录的/etc/profile(没有的话自己创建一个)文件中添加如下所示内容:

#!/bin/sh
LD_LIBRARY_PATH=/lib:/usr/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH

export TERM=vt100
export TERMINFO=/usr/share/terminfo

2、移植 minicom

新建一个名为“minicom”的文件夹及其子目录,用于存放 minicom 编译结果
解压 minicom,命令如下

tar -vxzf minicom-2.7.1.tar.gz

 解压完成以后会生成一个叫做 minicom-2.7.1 的文件夹,这个就是 minicom 的源码,进入到
此目录中,然后配置 minicom,配置命令如下

./configure CC=arm-linux-gnueabihf-gcc --prefix=/home/ubantu22/minicom/minicom --host=arm-linux-gnueabihf CPPFLAGS=-I/home/ubantu22/ncurses/ncurses/include LDFLAGS=-L/home/ubantu22/ncurses/ncurses/lib -enable-cfg-dir=/etc/minicom

CC 表示要使用的 gcc 交叉编译器, --prefix 指定编译出来的文件存放目录,肯定要存放到我们前面创建的 minicom 字目录中。 --host 指定交叉编译器前缀, CPPFLAGS 指定 ncurses 的头文件路径, LDFLAGS 指定 ncurses 的库路径,配置完成如下

输入“ make ”编译

 输入“make install”安装

 将 minicom 目录中 bin 子目录下的所有文件拷贝到开发板根目录中的/usr/bin 目录下,命令如下:

sudo cp bin/* /home/ubantu22/nfs/rootfs/usr/bin/ 

3、验证

完成以后在开发板中输入“minicom -v”来查看 minicom 工作是否正常

 此时 minicom 版本号为 2.7.1, minicom 版本号查看正常。

开发板新建/etc/passwd 文件,然后在 passwd 文件里面输入如下所示内容:

root:x:0:0:root:/root:/bin/sh

保存重启开发板

重启以后再执行“minicom -s”命令,此时 minicom 配置界面就可以打开了,如下

 4、minicom配置

选中“Serial port setup”

 选中“Serial port setup”以后点击回车,进入设置菜单

 UART3 的串口文件为/dev/ttymxc2,因此串口设置要设置为/dev/ttymxc2。设置方法就是按下键盘上的‘A’,就会跳到设置A后面的内容,然后输入“/dev/ttymxc2”即可

 设置完以后按下回车键确认,确认完以后就可以设置其他的配置项,E 设置波特率,设置为115200、数据位和停止位的、 F 设置硬件流控等,按F关闭硬件流控

按下回车键确认并退出,再按两下ESC 键退出所示的配置界面

按下 CTRLA,然后再按下 Z 就可以打开 minicom 帮助信息界面,如下

 minicom 有很多快捷键,本实验我们打开 minicom 的回显功能,回显功能配置项为“local Echo on/off..E”,因此按下 E 即可打开/关闭回显功能

四、测试

RS232 收发测试

首先设置 JP1 跳线帽,跳线帽设置好以后使用 RS232 线将开发板与电脑连接起来,通过窗口工具连接RS232使用的串口

发送和接收如下

 相当于开发板通过 UART3 向电脑发送“AAAA”,对应的串口接收到“AAAA”

 同理,用电脑给开发板发送也是一样,RS485 和 GPS 测试也是一样的

要退出 minicom 的话,在 minicom 通信界面按下 CRTL+A,然后按下 X 来关闭 minicom。


http://www.ppmy.cn/news/293683.html

相关文章

labview的RS232驱动程序

CSDN话题挑战赛第2期 参赛话题:学习笔记 学习之路,长路漫漫,写学习笔记的过程就是把知识讲给自己听的过程。这个过程中,我们去记录思考的过程,便于日后复习,梳理自己的思路。学习之乐,独乐乐&a…

总结:记一次docker调试镜像的问题

一、背景 同事让帮忙部署一个应用到QKE,给了我镜像地址与配置文件。 由于要将配置文件映射到容器中,我创建了configmap,然后应用中将configmap中key对应的内容映射到了容器中的配置文件中。 但是我遇到了一个问题: 容器频繁快…

嵌入式USB转RS232九针串口线驱动,及串口软件secureCRT的使用

一、串口驱动 一般而言,嵌入式开发板使用串口来就监控后台。可以使用串口线连接开发板和电脑,对于没有串口的电脑来说就需要一根USB转串口线。(有条件的这里个人推荐绿联的比较稳定,当然其他的也可以,根据自身条件选择…

陪诊小程序怎么做

陪诊小程序是一种基于移动互联网的应用程序,可以帮助用户在医院陪伴家人或朋友就医,提供就医指引、医院导航、排队叫号等服务。下面我们来介绍陪诊小程序的好处和优点。 一、提供便利的就医指引 陪诊小程序可以提供医院的就医指引,包括医院…

2023 年前端 Web 发展趋势

虽然就个人观点,我觉得 Web 开发在最近几年都没什么进展(2016 年至 2021 年),但在刚刚过去的 2022 年中确实又出现了一些新的技术。在本文中,我想跟大家聊聊自己看到的最新 Web 开发的发展趋势。相信这波浪潮会继续激发…

力扣算法系统刷题详细题解记录二(字符串、双指针法、栈与队列)

力扣算法系统刷题题解记录二(字符串、双指针法、栈与队列) 前言 参考顺序和资料:《代码随想录》 二刷要认真做笔记啦,加油! 笔记模板: #### 解题思路#### 示意图#### 代码四、字符串 344.字符串反转 编…

mt7628/7688 PWM驱动

MT7628/MT7688中的pwm,datasheet写的很糟糕,不像三星,还给你来个编程的流程图,配置哪个寄存器都会告诉你,一坨寄存器丢给你.. 它的PWM分为两种模式,OLD和new,这里我们用简单的OLD模式,NEW模式没…

Servlet运行原理及常见API

文章目录 一. Servlet运行原理二. Servlet常用API1. HttpServlet1.1. Servlet的生命周期1.2. Post请求的构造 2. HttpServletRequest2.1. 获取请求信息2.2. 前端给后端传输数据的三种方式2.2.1. 发送Get请求通过query string传输数据2.2.2. 发送Post请求通过form提交数据2.2.3.…