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字节,高字节在前。

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


相关推荐
易板6 个月前
USB2.0高速转接芯片CH347应用开发手册
stm32·单片机·嵌入式硬件·usb转spi·usb转i2c