????????一款支持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字节)。协议都是针对上位机到下位机的数据。
数据头 | 长度 | 操作功能 | 效验位 | 数据(二级包) |
0xFACEFACE | 0x0004 | 0x00:OTA 0x01:GPIO 0x02:I2C 0x03:SPI 0x04:PWM 0x05:ADC | crc8 | data[10340] |
数据头??? :固定0xFACEFACE,四字节。
长度?????? :除去数据头,所有数据的长度。高字节在前,固定2字节。
操作功能:确定包的功能,固定1字节。
效验位??? :自身为0时,除去数据头所有数据的效验和,固定1字节。
数据?????? :二级数据包数据,根据操作功能有不同的协议。最大10340字节。
引脚号 | 状态设置 |
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(低电平)
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%)
通道号 |
0x00:ADC0 0x01:ADC1 0x02:ADC2 0x03:ADC3 |
应答
浮点型数据 | 操作成功 |
例:FA CE FA CE 00 05 05 0C 02
数据头??? : FACEFACE
长度?????? : 00 05
操作功能: 05
效验位??? : 0C
数据?????? : 02(ADC2)
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字节长度)
基本配置(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字节,高字节在前。
数据?????? :用来存放需要写入的数据,读取的时候用不到。