测试串口发出的数据是否符合?
串口接收数据为:
打开纸飞机绘图侧:
(1)打开数据可视化,选择协议为EasyHEX;
(2)设置数据类型,选择数据类型为int16;
可以看到示波器上看到了数据的更新;一根线条是显示为1,一根线条显示为-3;
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值的数据,是否能够显示在示波器中;
尝试一下搭建代码生成模块;
然后连上纸飞机观察波形;满足设计要求;
这个就是最终用途了;
坑(1):float数据放在中断里面发送,发现中断100us执行不完,电机直接失控;
坑(2):将输出放置在串口接收中断中,2ms发一次数据,收一次数据,仍然失控,仅有10ms好使;
如下图所示,后续需要尝试更加优化的解决措施;目前先就这么用着吧。
假如传输single数据占用的时间较多,那么是否能够尝试使用int16数据进行传输呢?
测试一:相同在串口中断中执行,10ms发送一次数据,是否能够采集?(可以采集;)
测试二:相同在串口中断中执行,5ms发送一次数据,是否能够采集?(可以采集;)
测试三:相同在串口中断中执行,2ms发送一次数据,是否能够采集?(可以采集;)
测试四:串口发送放置在ADC中断中执行,查看是否电机失控?(无法采集;)有待继续探索其他观测方案;