火龙果(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

相关文章

Spring Boot中的路径变量示例详解

《SpringBoot中的路径变量示例详解》SpringBoot中PathVariable通过@PathVariable注解实现URL参数与方法参数绑定,支持多参数接收、类型转换、可选参数、默认值及... 目录一. 基本用法与参数映射1.路径定义2.参数绑定&nhttp://www.chinasem.cnbs

MySql基本查询之表的增删查改+聚合函数案例详解

《MySql基本查询之表的增删查改+聚合函数案例详解》本文详解SQL的CURD操作INSERT用于数据插入(单行/多行及冲突处理),SELECT实现数据检索(列选择、条件过滤、排序分页),UPDATE... 目录一、Create1.1 单行数据 + 全列插入1.2 多行数据 + 指定列插入1.3 插入否则更

Redis中Stream详解及应用小结

《Redis中Stream详解及应用小结》RedisStreams是Redis5.0引入的新功能,提供了一种类似于传统消息队列的机制,但具有更高的灵活性和可扩展性,本文给大家介绍Redis中Strea... 目录1. Redis Stream 概述2. Redis Stream 的基本操作2.1. XADD

Spring StateMachine实现状态机使用示例详解

《SpringStateMachine实现状态机使用示例详解》本文介绍SpringStateMachine实现状态机的步骤,包括依赖导入、枚举定义、状态转移规则配置、上下文管理及服务调用示例,重点解... 目录什么是状态机使用示例什么是状态机状态机是计算机科学中的​​核心建模工具​​,用于描述对象在其生命

Java JDK1.8 安装和环境配置教程详解

《JavaJDK1.8安装和环境配置教程详解》文章简要介绍了JDK1.8的安装流程,包括官网下载对应系统版本、安装时选择非系统盘路径、配置JAVA_HOME、CLASSPATH和Path环境变量,... 目录1.下载JDK2.安装JDK3.配置环境变量4.检验JDK官网下载地址:Java Downloads

PostgreSQL中rank()窗口函数实用指南与示例

《PostgreSQL中rank()窗口函数实用指南与示例》在数据分析和数据库管理中,经常需要对数据进行排名操作,PostgreSQL提供了强大的窗口函数rank(),可以方便地对结果集中的行进行排名... 目录一、rank()函数简介二、基础示例:部门内员工薪资排名示例数据排名查询三、高级应用示例1. 每

使用Python删除Excel中的行列和单元格示例详解

《使用Python删除Excel中的行列和单元格示例详解》在处理Excel数据时,删除不需要的行、列或单元格是一项常见且必要的操作,本文将使用Python脚本实现对Excel表格的高效自动化处理,感兴... 目录开发环境准备使用 python 删除 Excphpel 表格中的行删除特定行删除空白行删除含指定

SpringBoot结合Docker进行容器化处理指南

《SpringBoot结合Docker进行容器化处理指南》在当今快速发展的软件工程领域,SpringBoot和Docker已经成为现代Java开发者的必备工具,本文将深入讲解如何将一个SpringBo... 目录前言一、为什么选择 Spring Bootjavascript + docker1. 快速部署与

深入理解Go语言中二维切片的使用

《深入理解Go语言中二维切片的使用》本文深入讲解了Go语言中二维切片的概念与应用,用于表示矩阵、表格等二维数据结构,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录引言二维切片的基本概念定义创建二维切片二维切片的操作访问元素修改元素遍历二维切片二维切片的动态调整追加行动态

MySQL中的LENGTH()函数用法详解与实例分析

《MySQL中的LENGTH()函数用法详解与实例分析》MySQLLENGTH()函数用于计算字符串的字节长度,区别于CHAR_LENGTH()的字符长度,适用于多字节字符集(如UTF-8)的数据验证... 目录1. LENGTH()函数的基本语法2. LENGTH()函数的返回值2.1 示例1:计算字符串