居然有这么好用的调试工具
- 基本收发
- 虚拟示波器
- GPIO操作
- PWM输出
- AD-DA
- IIC操作
- SPI操作
- GPS显示
- 模块设置
基本收发
软件具备最常用的串口收发功能,可以在需要发送的数据最后选择添加一些常用的附加数据:
支持2通道COM口同时接收,目前自己最常用的场景是在调试AT指令模组时监控串口收发情况,完整流程一目了然。
搭配这种USB转多通道串口板体验更佳:
串口数据基本收发这个功能并不是这款软件最想做的,所以也没做过多开发,网上有一些串口调试助手已经特别优秀,辅助功能也比较好用,后续会借鉴集成进来,例如消息自动应答、快捷指令列表等。
虚拟示波器
支持波形的保存与打开,方便数据分析,在显示波形的同时还可以点击右侧发送按钮下发一些参数,在做类似PID调试时还是比较方便,这个界面早在几年前就已经实现,当时就是为了方便学生调试智能车,直到最近才整合进这个软件。使用的协议文件可以通过右上角的按钮获取:
接口如下:
typedef struct
{
void (*Init)(void (*sendFun)(uint8_t *data, uint8_t len));
void (*Parse)(uint8_t *data, uint16_t len);
bool (*SendCmd)(uint8_t type, uint8_t *buf, uint8_t len);
void (*SendWaveInt8)(int8_t data1, int8_t data2, int8_t data3, int8_t data4);
void (*SendWaveInt16)(int16_t data1, int16_t data2, int16_t data3, int16_t data4);
void (*SendWaveInt32)(int32_t data1, int32_t data2, int32_t data3, int32_t data4);
void (*SendWaveUint8)(uint8_t data1, uint8_t data2, uint8_t data3, uint8_t data4);
void (*SendWaveUint16)(uint16_t data1, uint16_t data2, uint16_t data3, uint16_t data4);
void (*SendWaveUint32)(uint32_t data1, uint32_t data2, uint32_t data3, uint32_t data4);
void (*SendWaveFloat1)(float data1);
void (*SendWaveFloat2)(float data1, float data2);
void (*SendWaveFloat3)(float data1, float data2, float data3);
void (*SendWaveFloat4)(float data1, float data2, float data3, float data4);
void (*SendStaticWave)(uint8_t *mData, int len);
void (*SendDataFloat3)(float a, float b, float c);
void (*SetModeCallBack)(void (*callBack)(uint8_t mode));
void (*SetUrgentCallBack)(void (*callBack)(uint8_t urgent));
void (*SetThreeCallBack)(void (*callBack)(float data1, float data2, float data3));
void (*SetFloat1CallBack)(void (*callBack)(float data));
void (*SetFloat2CallBack)(void (*callBack)(float data));
void (*SetFloat3CallBack)(void (*callBack)(float data));
void (*SetFloat4CallBack)(void (*callBack)(float data));
void (*SetShort1CallBack)(void (*callBack)(short data));
void (*SetShort2CallBack)(void (*callBack)(short data));
void (*SetShort3CallBack)(void (*callBack)(short data));
}TLM_T;
集到自己的单片机工程中也比较简单,步骤如下:
- 将telemetry.c,telemetry.h加入工程,包含头文件 telemetry.h
- 初始化自己使用的串口
- st_tlm.Init(串口输出方法)
- st_tlm.Parse() // 在串口接收数据处调用,将收到的数据传入
鼠标右键如下区域,可以自定义曲线名称:
GPIO操作
接下来提到的几个功能需要搭配如下这么一个小板子使用:
通过USB接到电脑,打开GPIO选项卡,可以选择板子上的这几个引脚作为通用IO口使用,输出模式时可以点击对应的灯控制输出高低电平,输入模式时红灯表示检测到高点平,灰色表示低电平:
PWM输出
板子支持2路PWM同时输出(PWM1、PWM2引脚),目前只支持2路配置频率参数一致,但可以单独控制每路占空比:
AD-DA
板子上有一个ADC通道,一个DAC通道,下方可以直接设置DAC输出电压,将ADC与DAC短接时ADC显示实时DAC输出电压,能做一些简单的ADC数据观察。
点击曲线可以查看光标位置详情:
IIC操作
IIC操作界面中支持寄存器参数写入,寄存器值获取,右侧可选择指定寄存器持续读取,读取结果点击波形显示按钮查看曲线,例如我们常用的MPU6050这一类的传感器可以直接实现0代码的数据获取并观察数据曲线。所有读写操作可已保存,便于以后重复使用。
SPI操作
与IIC操作类似,只是SPI会多一个极性和相位的选择:
GPS显示
显示GPS实时信息,可以选择是否显示左侧数栏,支持定位信息保存,轨迹展示。
模块设置
支持对串口参数进行配置和小板子的固件升级:
由于软件主要功能需要配套一个单片机板子,资料整理完后会一起附上链接,有兴趣可以留名关注,如果大家有好的点子可以留言来完善,现有功能如果有感觉使用上有不协调的也希望大家给点意见,谢谢。