USB转SPI USB转IIC 串口转SPI串口转IIC SPI I2C模块

        一款支持USB转SPI、USB转I2C、USB转GPIO、USB转PWM、USB转ADC的模块。提供上位机工具,开发协议。

资料下载,链接:https://pan.baidu.com/s/1sw3RCMwjhrMO4qzUBq9bjA     提取码:qzjp

  • 概述

        串口转多协议模组为了客户调试一些功能简单化,目前有串口转GPIO、串口转PWM、串口转ADC、串口转I2C、串口转SPI等功能。未来会根据客户反馈需求做升级。提供简易的上位机开发测试,帮助客户快速使用然后实现自己开发。提供协议文档,客户可以根据协议实现自己控制,并将模块融入自己的设备中。

串口采用固定的921600波特率、8位数据格式、1停止位、无奇偶效验位的配置。模组采用DMA接收结合串口空闲中断方式接收数据包,所以不要多包控制指令一起发出,包之间发送间隔大于10us延时。

  • 硬件接口

功能

数量

UART转GPIO

8

UART转PWM

2

UART转ADC

4

UART转I2C

1

UART转SPI

1

  • 协议组成

协议总体分成两个包,一级包和二级包,二级数据包是以及数据包的子包。一级数据包分为:数据头(4字节)、长度(2字节)、操作功能(1字节)、效验位(1字节)、data包(二级包,最大10340字节)。协议都是针对上位机到下位机的数据。

1.一级协议包,十六进制格式

数据头

长度

操作功能

效验位

数据(二级包)

0xFACEFACE

0x0004

0x00:OTA

0x01:GPIO

0x02:I2C

0x03:SPI

0x04:PWM

0x05:ADC

crc8

data[10340]

数据头    :固定0xFACEFACE,四字节。

长度       :除去数据头,所有数据的长度。高字节在前,固定2字节。

操作功能:确定包的功能,固定1字节。

效验位    :自身为0时,除去数据头所有数据的效验和,固定1字节。

数据       :二级数据包数据,根据操作功能有不同的协议。最大10340字节。

2.二级数据包,十六进制格式

2.1    GPIO协议,2字节

引脚号

状态设置

0x00:GPIO_0

0x01:GPIO_1

0x02:GPIO_2

0x03:GPIO_3

0x04:GPIO_4

0x05:GPIO_4

0x06:GPIO_4

0x07:GPIO_4

0xFF:所有引脚

0x00:低电平

0x01:高电平

0x02:电平反转

应答

ok

操作成功

例:FA CE FA CE 00 06 01 09 02 00

数据头    : FACEFACE

长度       : 00 06

操作功能: 01

效验位    : 09

数据       : 02(GPIO_2) 00(低电平)

2.2    PWM协议,3字节

PWM为20KHZ,占空比参数为0~1000

通道号

占空比

0x00:PWM0

0x01:PWM1

0x0000:高电平占比0%

0x03E8:高电平占比100%

应答

ok

操作成功

例:FA CE FA CE 00 07 04 00 00 01 F4

数据头    : FACEFACE

长度       : 00 07

操作功能: 04

效验位    : 00

数据       : 00(PWM0) 01F4(高电平占比50%)

 2.3    ADC协议,1字节

通道号

0x00:ADC0

0x01:ADC1

0x02:ADC2

0x03:ADC3

应答

浮点型数据

操作成功

例:FA CE FA CE 00 05 05 0C 02

数据头    : FACEFACE

长度       : 00 05

操作功能: 05

效验位    : 0C

数据       : 02(ADC2)

2.4    I2C协议

I2C速率

设备地址

寄存器地址

读/写

数据长度

数据

0x00:10K

0x01:20K

0x02:50K

0x03:100K

0x00:400K

7位地址

1字节寄存器

0x00:写数据

0x01:读数据

0x02:寻地址

2字节长度

最大10240字节

应答

读取数据时,如果读取正常则直接返回读取到的数据。

寻址时会直接返回扫描到的设备地址,期间大概耗时2秒。

I2C速率         :固定1字节,用来控制I2C速率。

设备地址       :固定1字节,设备的7位地址。

寄存器地址    :固定1字节,适用8位寄存器地址的设备。

读写              :固定1字节,读写操作,额外增加寻找总线上从设备地址功能。

数据长度       :固定2字节,高字节在前。

数据              :写数据时,存放的数据。

例:FA CE FA CE 00 0A 02 EB 00 68 75 01 00 01

数据头    : FACEFACE

长度       : 00 0A

操作功能: 02

效验位    : EB

数据       : 00(10K) 68(设备地址) 75(寄存器地址) 01(读) 00 01(1字节长度)

2.5    SPI协议

基本配置(1字节)

速率

读写

数据长度

数据

片选

片选

极性

SCK空闲电平

采样边沿

数据宽

数据顺序

000:通道0

001:预留

010:预留

011:预留

0:低有效

1:高有效

0:低

1:高

0:第一个

1:第二个

0:8位

1:预留

0:MSB

1:LSB

00:60M

01:30M

02:15M

03:7.5M

04:

05:

06:

07 :

00:写

01:读

02:写读

高字节在前

存放需要写入的数据

3bit

1bit

1bit

1bit

1bit

1bit

1字节

1字节

(2字节)

最大10240字节

应答

读取数据时,如果读取正常则直接返回读取到的数据。

基本配置:占用1字节,可以配置片选、片选极性、SCK空闲电平、采样边沿、数据宽度、

数据顺序功能,配置是通过位来实现。例:0x0A (0000 1100):000(通道0)

0(片选低有效)1(SCK空闲高)1(第二个跳变沿采样)0(8位)0(MSB)。

速率       :固定1字节,用来控制SPI的速率。

读写       :固定1字节,用来控制读写功能。

数据长度:固定2字节,高字节在前。

数据       :用来存放需要写入的数据,读取的时候用不到。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/630792.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PICO Developer Center 创建和调试 ADB 命令

PICO 开发者中心概览 ADB 是一个轻量级的 Android 调试桥(Android Debug Bridge,简称 ADB),用于与 Android 设备进行通信和调试。ADB提供了许多有用的功能,使开发人员能够轻松地管理和调试设备上的应用程序。 你可以使用 PDC 工具来调试系统…

阿里云服务器4核8G配置收费标准及新老用户优惠价格整理

阿里云服务器4核8g配置云服务器u1价格是955.58元一年,4核8G配置还可以选择ECS计算型c7实例、计算型c8i实例、计算平衡增强型c6e、ECS经济型e实例、AMD计算型c8a等机型等ECS实例规格,规格不同性能不同,价格也不同,阿里云服务器网al…

使用 vsCode创建GO项目

最近回顾了一下go的使用:具体操作看下面的参考连接,下面只描述一些踩过的坑: 1. go安装配置 安装go->配置go环境变量 推荐官网下载,速度很快; 这里需要配置五个参数:GOPATH/GOROOT/Path、GO111MODULE/…

如何快速打造属于自己的接口自动化测试框架

1 接口测试 接口测试是对系统或组件之间的接口进行测试,主要是校验数据的交换,传递和控制管理过程,以及相互逻辑依赖关系。 接口自动化相对于UI自动化来说,属于更底层的测试,这样带来的好处就是测试收益更大&#xff…

WordPress设置回收站自动清理天数的插件Change Empty Trash Time

前面boke112百科跟大家分享的『WordPress回收站自动清空时间?如何关闭回收站或设置自动清理天数?』一文,就介绍了可以添加一行代码实现关闭或设置回收站自动清理时间,也可以通过安装Change Empty Trash Time插件来实现。 今天bok…

【论文阅读】One For All: Toward Training One Graph Model for All Classification Tasks

目录 0、基本信息1、研究动机2、创新点——One For All :unique features3、准备4、具体实现4.1、用TAGs统一来自不同领域的图数据4.2、用NOI(NODES-OF-INTEREST)统一不同图任务4.2.1、NOI子图4.2.2、NOI提示结点 4.3、用于图的上下文学习&am…

java大数据hadoop2.9.2 Java编写Hadoop分析平均成绩

1、准备文件&#xff0c;例如score.txt&#xff0c;内容如下&#xff1a; zs k1 88 ls k1 98 ww k1 78 zs k2 88 ls k2 98 ww k2 78 zs k3 88 ls k3 98 ww k3 78 2、创建maven项目 <!-- https://mvnrepository.com/artifact/org.apache.hadoop/hadoop-common --><d…

【XTuner 大模型单卡低成本微调实战】学习笔记

参考学习教程【XTuner 大模型单卡低成本微调实战】 理论 Finetune简介 大语言模型 微调模式 增量预训练 指令跟随微调 LoRA和QLoRA Xtuner介绍 实战 自定义微调 用 Medication QA 数据集进行微调 将数据转为 XTuner 的数据格式 目标格式&#xff1a;(.jsonL) 写提示词请C…

ChatGPT 商业提示词攻略书

原文&#xff1a;ChatGPT Business Prompt Playbook 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 一、书系介绍 人工智能发展迅速。非常迅速。 所以我希望你做两件事&#xff1a; (1) 在 Twitter 上关注我&#xff1a;iamkylebalmer (2) 订阅我的免费电子邮件通…

SpringMVC JSON数据处理见解6

6.JSON数据处理 6.1.添加json依赖 springmvc 默认使用jackson作为json类库,不需要修改applicationContext-servlet.xml任何配置&#xff0c;只需引入以下类库springmvc就可以处理json数据&#xff1a; <!--spring-json依赖--> <dependency><groupId>com.f…

MySQL窗口函数(MySQL Window Functions)

1、窗口函数基本概念 官网地址&#xff1a;https://dev.mysql.com/doc/refman/8.0/en/window-functions.html 窗口可以理解为 记录集合&#xff0c;窗口函数就是在满足某种条件的记录集合上执行的特殊函数。 即&#xff1a;每条记录都要在此窗口内执行函数。 静态窗口&#x…

springboot集成shiro+前端vue,前后端分离项目遇到跨域以及sessionid拿不到等问题

近期在写前后端分离的项目&#xff0c;由于前后端分离导致原来使用的shiro配置无法满足现有系统要求。同时在前后端分离项目中存在的一些问题。例如&#xff0c;一些用户信息需要存储在后端方便进行安全性判断&#xff0c;但这些存储在后端的session前端却获取不到&#xff08;…

Docker本地私有仓库搭建配置指导

一、说明 因内网主机需要拉取镜像进行Docker应用&#xff0c;因此需要一台带外主机作为内网私有仓库来提供内外其他docker业务主机使用。参考架构如下&#xff1a; 相关资源&#xff1a;加密、Distribution registry、Create and Configure Docker Registry、Registry部署、D…

K8s-架构

一、K8s节点划分 K8s集群包含Master(控制节点)和Node(工作节点)&#xff0c;应用部署在Node节点上。 集群架构图&#xff1a; 二、Master节点 Master节点分成四个组件&#xff1a;scheduler、ApiServer、Controller Manager、ETCD。类似三层结构&#xff0c;controller&#…

2024年外贸新兴市场有哪些 | 箱讯科技国际贸易平台

当前欧美市场经济增速放缓&#xff0c;通胀持续高位导致物价普遍上涨&#xff0c;进一步引发消费疲软。此外&#xff0c;受原材料价格、劳动力、土地等经营成本上升影响&#xff0c;外贸出口企业利润被进一步压缩。 困顿之中&#xff0c;新兴市场成为破局关键&#xff0c;巨大的…

Mysql流程控制函数

1概述 Mysql中的流程控制函数非常重要&#xff0c;可以根据不同的条件&#xff0c;执行不同的流程转换&#xff0c;可以在SQL语句中实现不同的条件选择。MySQL中的流程处理函数主要包括IF()、IFNULL()和CASE()函数。 1.1 IF函数 SELECT IF(1 > 0, 正确, 错误);1.2 IFNULL…

rabbitmq基础教程(ui,java,springamqp)

概述&#xff1a;安装看我上篇文章Docker安装rabbitmq-CSDN博客 任务一 创建一个队列 这样创建两个队列 在amq.fanout交换机里面发送数据 模拟发送数据 发送消息&#xff0c;发现一下信息&#xff1a; 所以得出理论&#xff0c;消息发送是先到交换机&#xff0c;然后由交换机…

如何手写一个RPC?

在学习 RPC 框架之前&#xff0c;我们先来手写一个RPC。 我们在学习的过程中&#xff0c;一定要做到知其然&#xff0c;还要知其所以然。 架构演进 单体架构 要知道&#xff0c;在以前单体架构的时候&#xff0c;会将所有的应用功能都集中在一个服务当中。 单体架构初始开发…

新版K8s:v1.28拉取Harbor仓库镜像以及本地镜像(docker弃用改用containerd,纯纯踩坑)

目录 一、项目概述二、环境三、项目样式Harborkuboard运行样式 四、核心点Harbor安装config.toml文件修改(containerd)ctr、nerdctl相关命令kuboard工作负载 五、总结 一、项目概述 使用Kuboard作为k8s集群的管理平台&#xff0c;Harbor作为镜像仓库&#xff0c;拉取Harbor镜像…

HttpServletRequest getServerPort()、getLocalPort() 、getRemotePort() 区别

getRemotePort() 、getServerPort()、getLocalPort() request.getServerPort()、request.getLocalPort() 和 request.getRemotePort() 这三个方法都是获取与HTTP请求相关的端口信息的 客户端(如浏览器)通过某个随机分配的网络连接端口(7070) 向服务器发送HTTP请求( http://exam…