labview的RS232驱动程序

news/2024/11/14 13:05:41/

CSDN话题挑战赛第2期
参赛话题:学习笔记

学习之路,长路漫漫,写学习笔记的过程就是把知识讲给自己听的过程。这个过程中,我们去记录思考的过程,便于日后复习,梳理自己的思路。学习之乐,独乐乐,不如众乐乐,把知识讲给更多的人听,何乐而不为呢?

  • 项目中解决的问题

STM32大容量芯片最多可以提供多达5路UART,其中前3路(UART1~UART3)还支持同步传输,并且可以配置成LIN通信模式,因此,STM32官方手册称其为USART1~USART3;剩余两路为UART4和UART5。为了叙述方便,这里统一称为COM1~COM5串行接口。
RS232底层协议是比较复杂的,在学习FPGA的过程中,经常会用到Verilog编写的串口程序,状态机切换还是比较多的。其实NI也提供了LabVIEW下的FPGA串口IP核,就是利用LabVIEW的状态机架构来实现整个RS232通信协议的,感兴趣的用户可以从NI官网下载相关程序学习一下。好在STM32内部已经帮我们实现了最底层的串口收发过程,用户只需要从收发缓冲区中读取或者写入字节数据就可以了,非常简单。
另外,对于刚刚接触LabVIEW的新用户来说,经常会把VISA函数当成串口函数,实际上NI-VISA驱动包本质上是将整个仪器行业的通信协议(RS232、GPIB、USB、Ethernet等)封装在一起,供不同行业的工程师使用,这样可以简化仪器通信。其实,这里的VISA函数是一种运行在上位机、高度封装的多态VI。
本节介绍的是我们专门针对STM32芯片设计和优化过的串口函数,一共有5路COM口,并且每路之间都相互独立,默认情况下,都开辟了1KB大小的接收缓冲区。因此,对于那些需要多路串口并行工作的应用来说,使用我们提供的串口VI将会非常方便。

  • 做题思路

通常情况下,串口只需要6个基本操作函数就可以满足绝大多数的应用,STM32也不例外,如图在这里插入图片描述

(1)串口初始化
为了保证串口初始化后的波特率是正确的,需要先利用Sys子面板中的STM32_Clock_Init.vi函数对STM32系统时钟进行倍频操作,然后再执行串口初始化。
串口初始化函数的输入端参数比较多,除了基本的VISA资源名(COM1~COM5)、波特率(4800~115200)、数据位(8~9位)、校验(无、奇偶校验)、停止位(1.0、1.5、2.0位)之外,还有两个比较重要的参数:读取终止符和是否启用终止符。
其中,VISA资源名里面提供了5路COM口,每路COM口对应STM32实际的物理引脚,可以打开该VI的前面板进行查看;波特率最大可以设置为115200bps,即115.2Kbps;数据位一般选择默认的8位就可以了;COM4与COM5不支持半位停止位,故只能选择1.0或2.0位,而COM1~COM3支持全部;终止符默认为换行符“\n”即0x0A,常用的终止符还有回车符0x0D;一旦启用终止符,那么串口在读取数据时,遇到事先设置的终止符,就会立刻停止,将终止符之前的数据全部读取出来;如果没有遇到终止符,则会按照预设的字节数进行读取。以上这些配置过程均由UART子面板中的VISA Configure Serial Port.vi函数来完成,如图在这里插入图片描述
(2)串口接收缓冲区字节数
一般情况下,在读取串口缓冲区中的数据之前,需要指定读取字节的数量。为了能够将缓冲区中所有数据一次性读取出来,我们可以先利用UART子面板中的VISA Serial Port Byte.vi函数来获取当前接收缓冲区中的字节数量,然后再赋给串口读函数即可,如图在这里插入图片描述(3)串口写入
为了简化STM32中的串口数据发送流程,用户直接将字符串或者字节数组放到STM32串口发送缓冲区就可以了,底层的UART控制器会自动执行发送操作。串口写入发送可以利用UART子面板中的VISA Serial Write.vi函数来实现,如图在这里插入图片描述
(4)串口读取
如果在串口初始化的时候没有开启终止符,并且要求读取的字节数小于接收缓冲区现有的字节数,那么返回的字符串长度就会等于指定读取的字节数长度,反之UART控制器会将缓冲区中所有的数据全部返回;当然,如果开启了终止符,那么只会读取终止符之前这些数据,与读取字节数无关。当然,更多情况下,可以先获取缓冲区中的字节数,然后赋给读函数即可。串口读数据可以使用UART子面板中的VISA Serial Read.vi函数实现,如图
在这里插入图片描述
(5)清除串口缓冲区
如果接收缓冲区有历史残留的数据,用户在读取之前可以利用UART子面板中的VISA Clear Port.vi函数先清空一下,如图

(6)串口关闭
当STM32进入待机或者休眠模式时,为了减少系统的功耗,需要将串口临时关闭,禁止串口时钟。该功能可以利用UART子面板中的VISA Clear Serial Port.vi函数来完成,如图


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

相关文章

总结:记一次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.…

无线网卡芯片rtl8821CU-linux驱动解决方案

最近想在笔记本上kali上使用无线网络,但是vmware的kali虚拟机是无法使用笔记本自带的无线网卡的,于是在淘宝上买了个usb外置无线网卡。但是,网卡买回来了,才发现官网给的linux驱动尼玛竟然无法编译,打电话给官方客服。…