DSP与PC通信的问题

[复制链接]
1912|16
 楼主| Levenburg 发表于 2017-3-19 10:14 | 显示全部楼层 |阅读模式
在电机控制中,想把采样数据发到电脑上看。
采样数据为浮点数。
但SCI的寄存器只有8位,我把浮点数转换成ASCII码发送,时间太长影响了电机控制性能。
所以想问一下,有没有更快的办法。
Thorald 发表于 2017-3-19 10:34 | 显示全部楼层
若要更快,就别让电脑处理了,既然用了DSP,就让DSP来处理它
Bjorn 发表于 2017-3-19 10:45 | 显示全部楼层
UNION FLOATTOBYTE{
CHAR BDATA[4];
FLOAT FDATA;
} DATA;
DATA.FDATA=浮点数;
DATA.BYTE[0]=1 OF 4;
DATA.BYTE[1]=2 OF 4;
DATA.BYTE[2]=3 OF 4;
DATA.BYTE[3]=4 OF 4;
下位机 用来发送;
计算机在反相组装
Rollo 发表于 2017-3-19 10:56 | 显示全部楼层
好办法,DSP里的char是16位的吧?
Rangar 发表于 2017-3-19 11:10 | 显示全部楼层
UNION FLOATTOBYTE{
STRUCT {
  Uint16      BYTE3:8;     // 31:24
   Uint16      BYTE2:8;     // 23:16
   Uint16      BYTE1:8;     // 15:8
   Uint16      BYTE0:8;     // 7:0        
}BDATA;
FLOAT FDATA;//FLOAT 是32位的前提下
} DATA;
Stannis 发表于 2017-3-19 11:20 | 显示全部楼层
对于浮点型数据,比如说电流采样结果,一般都上传的是IQ格式的数据,一个IQ格式的数据为32位,共四个字节,那就拆分为四个字节按照一个字节一个字节传输,这样在上位机再将IQ格式的数据合成并转换为实际电流值即可,需要说明的是一般来讲RS485传输数据本身速度不会很快,如果作为一般控制和数据显示没有问题的
1988020566 发表于 2017-3-19 15:02 | 显示全部楼层
使用usb传输数据比较快一些。
1988020566 发表于 2017-3-19 15:03 | 显示全部楼层
浮如果需要保存所有数据,可以设置内部的SD卡保存。
smilingangel 发表于 2017-3-19 19:31 | 显示全部楼层
这个分开执行的啦。。电机控制的怎么影响的呢?
zxq6 发表于 2017-3-19 20:49 来自手机 | 显示全部楼层
没有dma?
angerbird 发表于 2017-3-19 21:20 | 显示全部楼层
Stannis 发表于 2017-3-19 11:20
对于浮点型数据,比如说电流采样结果,一般都上传的是IQ格式的数据,一个IQ格式的数据为32位,共四个字节, ...

这个涉及到浮点数的处理就不是很好办了
cauhorse 发表于 2017-3-19 22:07 | 显示全部楼层
先把FIFO用上,与PC通讯接口可以用正品FT232之类的VCP器件,波特率高些,一般跑250000以上没大问题,921600也基本正常,因为只是看数据,不涉及关键操作;
浮点数用Q格式,或者自定义格式;数据量太大,但不要求实时同步显示的,可以缓冲到外部存储器中,跑完一段集中上传,一些伺服驱动的电机模型自动辨识过程就是这么搞的。
comeon201208 发表于 2017-3-19 22:33 | 显示全部楼层
这个一涉及到浮点数的我就蒙圈的。
firstblood 发表于 2017-3-19 22:48 | 显示全部楼层
这一块的还是蛮重要的,,浮点运算的虽是难点,也还必须掌握的。
xmar 发表于 2017-3-20 08:34 | 显示全部楼层
可否改变一下解决整个系统问题的方式?从电机控制算法入手,而不是数据通信。至少也需要双管齐下呀。
ghuca 发表于 2017-3-20 13:13 | 显示全部楼层
串口数据的发送不会占用太多的时间。
ghuca 发表于 2017-3-20 13:14 | 显示全部楼层
最好直接转换为数组,不要程序ascII
您需要登录后才可以回帖 登录 | 注册

本版积分规则

46

主题

180

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部