火龙果(redpitaya)开发板常用接口C语言开发指南(十一)——串口通信详解(持续更新中)

本文主要是介绍火龙果(redpitaya)开发板常用接口C语言开发指南(十一)——串口通信详解(持续更新中),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

火龙果(redpitaya)开发板常用接口C语言开发指南(十一)——串口通信详解(持续更新中)

  • 串口通信
    • 串口及使用模块简介
    • red pitaya串口收发红外译码数据

——本人为《火龙果实战指南——搭建基于Zynq处理器的测量仪器与创新实践平台》一书的作者之一,为了便于各位快速上手火龙果开发板,现提供部分实战指南,包含环境配置、源码、效果等,供大家学习交流使用。

Red pitaya开发板设计的初衷是用较低的成本,打造一个开发人员、学生和创客用于测量和控制的工具,以替代数台高价的实验设备。此开发板搭载双核心ARM® Cortex® A9 MCU和FPGA MCU,支持I2C、串口和SPI等数据总线的传输。接下来两节主要介绍如何使用red pitaya开发板板的通信接口进行相关的开发工作。

串口通信

red pitaya开发板实物如下图1所示,其中红色箭头所标注的E2接口为板子带有串口、IIC、SPI的拓展接口。
在这里插入图片描述
图1 red pitaya开发板实物

串口及使用模块简介

串行口是计算机中一种常用的接口,具有连接线少,通讯简单的特点,得到广泛的使用。常用的串口接口是 RS-232-C (又称 EIA RS-232-C),它是在 1970 年由美国电子工业协会(EIA)联合贝尔系统、 调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。此标准的全名是"数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准"该标准规定采用一个 25 个脚的 DB25 连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。传输距离在码元畸变小于4% 的情况下,传输电缆长度应为50 英尺。
计算机可以每次传送一个或者多个位(bit)的数据。“串行”指的是每次只传输一位(1bit)数据。当需要通过串行通讯传输一个字(word)的数据时,只能以每次一位的方式接收或者发送。每个位可能是on(1)或者off(0)。很多技术文档中经常用mark表示on,而space表示off。
串行数据的速度通常用每秒传输的字节数bits-per-second(bps)或者波特率(baud)表示。这个值表示的是每秒钟被送出的0和1 的个数。很久以前,300bps就是很快的速度了,而随着科技进步,现在的电脑可以处理高达430,800的RS-232速率。表示波特率的单位还有kpbs和 Mbps,他们之间的关系为1kps=1000bps,1Mbps=1000kbps。一般提到串行设备的时候,通常说可能是某种数据通讯设备-DCE(Data Communications Equipment)或者数据终端设备-DTE(Data Terminal Equipment)。如果需要将两个DTE或者DCE设备连接起来的话,需要适配器或者交叉线缆将信号对交换。
模块结构图如图2所示。首先使用此模块对发射的红外(比如空调遥控器按下开关键)进行解码,解码时不需要发送任何指令,只需要拿起遥控对准模块的接收头按下,这时模块的串口就输出该红外编码。通过程序控制将此解码数据传输到red pitaya开发板。
与此同时,可以将red pitaya开发板收到的编码数据根据一定格式发送出去来远程控制空调的开关,即通过red pitaya开发板发送5个字节的指令,当空调开关按下,red pitaya开发板接收到的数据为(01 03 00),此时调用linux下的串口发射函数发射NEC信号编码为(01 03 00),即:由red pitaya开发板通过串口发射到红外模块的为:{A1,F1,0103,00}。
在这里插入图片描述
图 2 串口收发模块结构图

red pitaya串口收发红外译码数据

在这里插入图片描述
图3 red pitaya扩展接口示意图

如图3所示,red pitaya开发板的E2上的第7脚和第8脚分别对应ARM Cortex A9的uart Tx和uart Rx。由于板子底层搭建的是纯linux,通过linux下c编程可以控制串口的收发。在这个基础上,配合红外译码模块,可以将译码模块串口输出的红外编码显示在linux系统终端上,并且存储在板子EEPROM中。与此同时,可以根据配合本例程所需的红外译码模块的发射红外功能,通过编程远程遥控家用电器。
要完成此项例程,主要需要保证red pitaya开发板的串口收发功能正常工作:首先使用USB转TTL接口模块,实现red pitaya开发板与电脑的连接。通过串口助手显示red pitaya开发板发送给电脑的数据,并且也可以通过串口助手发送数据至red pitaya开发板。
连接开发板并在项目文件夹redpitaya下创建UART-Pitaya.c文件,写入如下代码:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>    //文件控制定义
#

这篇关于火龙果(redpitaya)开发板常用接口C语言开发指南(十一)——串口通信详解(持续更新中)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/286650

相关文章

JDK21对虚拟线程的几种用法实践指南

《JDK21对虚拟线程的几种用法实践指南》虚拟线程是Java中的一种轻量级线程,由JVM管理,特别适合于I/O密集型任务,:本文主要介绍JDK21对虚拟线程的几种用法,文中通过代码介绍的非常详细,... 目录一、参考官方文档二、什么是虚拟线程三、几种用法1、Thread.ofVirtual().start(

详解SpringBoot+Ehcache使用示例

《详解SpringBoot+Ehcache使用示例》本文介绍了SpringBoot中配置Ehcache、自定义get/set方式,并实际使用缓存的过程,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录摘要概念内存与磁盘持久化存储:配置灵活性:编码示例引入依赖:配置ehcache.XML文件:配置

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

k8s按需创建PV和使用PVC详解

《k8s按需创建PV和使用PVC详解》Kubernetes中,PV和PVC用于管理持久存储,StorageClass实现动态PV分配,PVC声明存储需求并绑定PV,通过kubectl验证状态,注意回收... 目录1.按需创建 PV(使用 StorageClass)创建 StorageClass2.创建 PV

Python版本信息获取方法详解与实战

《Python版本信息获取方法详解与实战》在Python开发中,获取Python版本号是调试、兼容性检查和版本控制的重要基础操作,本文详细介绍了如何使用sys和platform模块获取Python的主... 目录1. python版本号获取基础2. 使用sys模块获取版本信息2.1 sys模块概述2.1.1

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

Redis 基本数据类型和使用详解

《Redis基本数据类型和使用详解》String是Redis最基本的数据类型,一个键对应一个值,它的功能十分强大,可以存储字符串、整数、浮点数等多种数据格式,本文给大家介绍Redis基本数据类型和... 目录一、Redis 入门介绍二、Redis 的五大基本数据类型2.1 String 类型2.2 Hash

Java中的.close()举例详解

《Java中的.close()举例详解》.close()方法只适用于通过window.open()打开的弹出窗口,对于浏览器的主窗口,如果没有得到用户允许是不能关闭的,:本文主要介绍Java中的.... 目录当你遇到以下三种情况时,一定要记得使用 .close():用法作用举例如何判断代码中的 input

Linux创建服务使用systemctl管理详解

《Linux创建服务使用systemctl管理详解》文章指导在Linux中创建systemd服务,设置文件权限为所有者读写、其他只读,重新加载配置,启动服务并检查状态,确保服务正常运行,关键步骤包括权... 目录创建服务 /usr/lib/systemd/system/设置服务文件权限:所有者读写js,其他

Linux下利用select实现串口数据读取过程

《Linux下利用select实现串口数据读取过程》文章介绍Linux中使用select、poll或epoll实现串口数据读取,通过I/O多路复用机制在数据到达时触发读取,避免持续轮询,示例代码展示设... 目录示例代码(使用select实现)代码解释总结在 linux 系统里,我们可以借助 select、