我在第二篇文章中,已经跟大家讲解了LIB版例程的解码流程,还没看的可以先了解一下,链接如下:
TMS320F28379D之CLB解码多摩川编码器2——LIB版例程讲解(原创)
我的第一篇文章,讲的入手小知识,链接如下:
TMS320F28379D之CLB解码多摩川编码器1——入手小知识(原创)
接下来,跟大家分享一下具体到工程中该如何开发和应用。
实际在工程中,我们需要认清以下几点:
- 波特率为2.5M,是固定的,不可修改,一个bit相当于400ns;
- 位置解码,获得的位置信息用于伺服电机的机械角和电角度计算,DATAID0只读单圈值,接收6个字节,总共60个bit,耗时短,DATAID3读单圈值+多圈值,接收11个字节,总共110个bit,耗时长,可根据自身的实际情况来确定使用那个CF;
- LIB版的例程,解码+发送是要耗费20个us的执行时间的,大家可以自己测一下,而且是封库的,你优化不了,但是通过抓包和了解协议,解码函数还是可以自己写一个的,大概2us那样就解码好了,发送就不行,涉及到一点点CLB;
- 若工程中还存在其他中断,比如发波的EPWM中断,这个中断的优先级肯定要大于SPIBRXINT,则可采取在EPWM中断中轮询SPIBRXINT的标志位,来判断数据是否已经接收完成,毕竟一个发波中断计算一次电角度,一收一发即可,如果用FPGA解码也是这样的,只是FPGA可以并行处理,如果使用379D,也可以单独一个核电流环+解码,第二个核做位置和速度,也可以达到并行处理的目的,当然单核效果也是可以的。
- 控制字DATAID6和DATAIDD的使用,即读写编码器EEPROM用的,读EEPROM的时候,接收到的byte,记得做蝶式交换。
以上讲的几点,包括前面的两篇文章,基本上可以让你少走很多弯路,这个解码也不是什么机密了,例程都有,实际应用工程的代码,我就不PO了,例程还是第二篇文章提到的例程,大家可以自己尝试一下,自己开发,毕竟千人千版本,这里我只提供思路。
这篇应用我会在知乎做同步更新,下篇应该是跟大家分享源码版的解码程序。