已经查明原因,自己来解答一下
首先,.Acquisition Buffer Size设置为512是没有问题的,因为代码里确实使用的是一个512的整形数组;
其次,Display Data Size也设置为512,是依据Help中的“If your program processes an entire frame at one time (more than one sample) and you are only interested in that frame, enter the same value in the Acquisition Buffer Size and the Display Data Size fields. ” 这项设置也没有问题
我的初衷是希望看到连续的正弦波,即在异步调制下,timer中断周期为5K(200us),每近一次中断,就更新一个数组值,进512次 及200us*512 = 0.1024S完成全部数组的更新,所以采样频率设置为5000也是没有问题的,即参照help中的公式时间轴显示从0到512(display buffer size)/5000 = 0.1024s
问题关键是大家可以看到 一个完整的周期近似为0.0398秒,并不是我希望看到的0.1024秒,
造成这个问题其实是我的代码里设置的同步磁场旋转转速不对,我之前的设定为750rpm
而按照我希望的0.1024S更新完512个数组值即电机电角度转过360度,我的两极电机转速应该设置为(0.5/0.1024)* 60 = 292.96875rpm 约为293rpm,
这样才能看到0.1024秒完整的角波
又做了测试 如下图 调整后的波形 之前的graph设置没有变
与示波器波形对比 一致:
我的硬件上和2812的SPI口连接了一颗4通道输出的DA 当初设计时是为了用这个DA实时观测程序里的变量变化,为调试提供一定的参考
这个波形是我把index的数值发到DA用示波器测量的
可以看到 示波器观测即硬件观测的结果和CCS软件观测的结果是一致的
出现之前的断续或波形不连续,是因为获取数据的buffer和显示的buffer速度不匹配造成的
已经查明原因,自己来解答一下
首先,.Acquisition Buffer Size设置为512是没有问题的,因为代码里确实使用的是一个512的整形数组;
其次,Display Data Size也设置为512,是依据Help中的“If your program processes an entire frame at one time (more than one sample) and you are only interested in that frame, enter the same value in the Acquisition Buffer Size and the Display Data Size fields. ” 这项设置也没有问题
我的初衷是希望看到连续的正弦波,即在异步调制下,timer中断周期为5K(200us),每近一次中断,就更新一个数组值,进512次 及200us*512 = 0.1024S完成全部数组的更新,所以采样频率设置为5000也是没有问题的,即参照help中的公式时间轴显示从0到512(display buffer size)/5000 = 0.1024s
问题关键是大家可以看到 一个完整的周期近似为0.0398秒,并不是我希望看到的0.1024秒,
造成这个问题其实是我的代码里设置的同步磁场旋转转速不对,我之前的设定为750rpm
而按照我希望的0.1024S更新完512个数组值即电机电角度转过360度,我的两极电机转速应该设置为(0.5/0.1024)* 60 = 292.96875rpm 约为293rpm,
这样才能看到0.1024秒完整的角波
又做了测试 如下图 调整后的波形 之前的graph设置没有变
与示波器波形对比 一致:
我的硬件上和2812的SPI口连接了一颗4通道输出的DA 当初设计时是为了用这个DA实时观测程序里的变量变化,为调试提供一定的参考
这个波形是我把index的数值发到DA用示波器测量的
可以看到 示波器观测即硬件观测的结果和CCS软件观测的结果是一致的
出现之前的断续或波形不连续,是因为获取数据的buffer和显示的buffer速度不匹配造成的
举报