×

ESP32上的自定义UART协议开源

消耗积分:2 | 格式:zip | 大小:0.50 MB | 2023-02-13

马占云

分享资料个

描述

描述

OSCUP是一种开源 UART 协议,专为与 ESP32 ARM 处理器配合使用而设计。详细记录的代码有助于弄清楚如何在 UART 端口上实现自定义协议。使用此协议,您可以传输和接收由固定前导码跟踪的数据。它为每个发送的数据包实现 ACK 和 NACK,以管理错误或丢失的数据包。

怎么运行的

它依赖于 Espressiff 提供的原始库,例如 /device/uart.h 用于连接低级硬件和功能。该协议提供两个功能writeread用于发送和接收数据。当您创建一个新的 Oscup 对象时,您需要向它传递一个 ID,该 ID 用于跟踪发送数据包的设备。可选地,Oscup 对象可以被实例化,指定 UART 端口和相关的 UART TX 引脚和 UART RX 引脚。默认情况下,通信发生在 UART 0,或者更确切地说是 USB 端口。

事实上,可以使用 OSCUP 进行计算机和 ESP32 之间或两个 ESP32 之间的通信。

命令

每次协议在 UART 上写入数据时,它都会在数据包中插入一条命令。该命令是强制性的,否则您可能会问自己为什么要使用协议(只需使用 arduino Serial)。显然,在接收方,您必须区分接收到的命令。有可用的 4 个主要命令:

  • SHARE:此命令表示发送方只想与接收方共享此数据(出于次要原因)。如果您只想在其他设备上打印数据,则可以使用它。
  • CONFIRM:此命令表示将发送的数据是操作的结果(例如,我们按下设备 1 上的按钮,我们将数据发送到设备 2,我们希望设备 2 不仅打印此数据,而且存储它们).
  • ACK: 用于告诉发送方,接收方已经收到数据包
  • NACK: 用于告诉发送方,接收方还没有收到数据包;发件人将尝试再次发送 显然,您可以配置您喜欢执行每个命令的操作。我们建议不要使用 ACK 和 NACK,至于其他两个,前面的指示只是我们为使用这两个命令定义的指南。另外,你可以在arduino上配置新命令(command = uint8_t),直接在write函数中发送

公共职能

  • begin: 初始化 UART 参数并将其转发给控制硬件。必须在 void setup() 中调用它。它以波特率作为唯一的输入参数,它将决定通信波特率。
  • write:写函数接受一个命令“用户定义”,有效负载的长度和有效负载,其长度固定为 40 字节。此函数将此数据写入 UART 并返回错误代码。
  • read:它读取传入的数据并将它们插入 packet_t 结构中,该结构在 .h 文件中定义。如果一切正常,它返回读取缓冲区的长度,否则返回负错误。
  • get_timer: 返回定时器的计数器
  • get_APB_clk: 返回 APB 的频率。通常 APB 用于设置嵌入式处理器上的外设频率。

贡献

我们是 Daniel 和 Riccardo,都是大学的 AI 学生。我们开发了这个协议来从 ESP32 获取数据来做 AI 的事情(在我们的 Git Repo 上查看 FiremanSam)。

 

 


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !