simulink代码生成(九)—— 串口显示数据(纸飞机联合调试)

纸飞机里面的协议是固定的,必须按照协议配置;

(1)使用EasyHEX协议,测试int16数据类型

测试串口发出的数据是否符合?

串口接收数据为:

打开纸飞机绘图侧:

(1)打开数据可视化,选择协议为EasyHEX;

(2)设置数据类型,选择数据类型为int16;

可以看到示波器上看到了数据的更新;一根线条是显示为1,一根线条显示为-3;

(2)使用FLOAT协议,测试 float 数据类型

FLOAT的数据类型标记是 0XFFFFFFFF

这个 0XFFFFFFFF 在matlab里面是多少呢?

由于

float f = 0xFFFFFFFF;

这一句完全是错误的用法,它不会使f变量内存变为4个0xFF,因为0xFFFFFFFF根本就不是有效的float数值,编译器无从处理,如果用printf('%x')打印f的值,结果一定不是0xFFFFFFFF。

所以没办法直接输入一个值使得串口输出0xFFFFFFFF,最好还是输入FLOAT协议的 0X7F800000

复制代码
X = uint8([00 00 128 127])
Y = typecast(X,'single')

得到Y值位inf,尝试一下;

那么输入多个single值的数据,是否能够显示在示波器中;

尝试一下搭建代码生成模块;

然后连上纸飞机观察波形;满足设计要求;

(3)使用FLOAT协议,显示ia波形

这个就是最终用途了;

坑(1):float数据放在中断里面发送,发现中断100us执行不完,电机直接失控;

坑(2):将输出放置在串口接收中断中,2ms发一次数据,收一次数据,仍然失控,仅有10ms好使;

如下图所示,后续需要尝试更加优化的解决措施;目前先就这么用着吧。

(4)使用EasyHEX协议,显示ia波形

假如传输single数据占用的时间较多,那么是否能够尝试使用int16数据进行传输呢?

测试一:相同在串口中断中执行,10ms发送一次数据,是否能够采集?(可以采集;)

测试二:相同在串口中断中执行,5ms发送一次数据,是否能够采集?(可以采集;)

测试三:相同在串口中断中执行,2ms发送一次数据,是否能够采集?(可以采集;)

测试四:串口发送放置在ADC中断中执行,查看是否电机失控?(无法采集;)有待继续探索其他观测方案;

相关推荐
郑州光合科技余经理5 小时前
代驾系统架构拆解:订单链路、权限组织与私有化源码交付
开发语言·后端·算法·架构·系统架构·uni-app·php
码哥DFS8 小时前
二叉树的直径
开发语言·javascript·算法
paopaokaka_luck8 小时前
基于springboot3+vue3的企业考勤管理系统(部门树递归、Echarts图形化分析)
开发语言·spring boot·学习·echarts·mybatis·需求分析·代码规范
梦雨生生9 小时前
java开发工具(学习第一天)
java·开发语言·学习
隔窗听雨眠10 小时前
AI重塑数据分析:从SQL执行者到智能基础设施构建者
人工智能·sql·数据分析
啊啊啊啊啊!!!!11 小时前
【c++】stack和queue的接口使用以及底层实现
开发语言·c++
松仔log12 小时前
Java中级——组合和继承
android·java·开发语言
(Charon)13 小时前
【C++】锁与原子操作(四):自旋锁的完整实现与性能优化
c语言·开发语言·c++
雨田言炎14 小时前
五、Qt控件使用说明大全
开发语言·qt
数模竞赛Paid answer14 小时前
2025年深圳杯数学建模B题LED显示屏颜色转换设计与校正解题全过程文档及程序
数学建模·数据分析·深圳杯