TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320F28388D: 设计CiA402框架下的TMS320F28388D CPU1内核与CM4内核进程间通讯

Part Number:TMS320F28388D

相关例程:

f2838x_cpu1_allocate_ecat_to_cm

f2838x_cm_cia402_solution

图1. 以TMS320F28388D为从站的EtherCAT系统设计

如图1所示,f2838x_cpu1_allocate_ecat_to_cm例程完成左侧CPU1主线相关的工作,初始化相关的资源,并将ESC的控制权交给CM4内核。

CPU1内核与CM4内核之间以消息队列的形式传递数据。

图2. CPU1侧初始化消息队列

在图2所示的CPU1侧初始化消息队列代码中,使用FLAG31作为CPU1内核与CM4内核之间同步的标志位,即CPU1内核调用语句:IPC_sync(IPC_CPU1_L_CM_R, IPC_FLAG31);向CM4内核发起同步请求。在CM4内核没有响应该请求前(如CPU1内核的代码先运行,CM4内核的代码未下载或已下载但未运行),CPU1内核的代码执行会被阻塞在IPC_sync(IPC_CPU1_L_CM_R, IPC_FLAG31)语句处。因此,在初始化CPU1内核相关的片上资源时,需要注意这点,以免导致其他外设初始化异常。

考虑到C2000系列处理器的中断机制以及不希望电机控制算法处理时间被占用,因此在CPU1侧使用阻塞方式接收来自主站的指令:

图3. CPU1侧以阻塞方式接收主站指令

从站运行后,默认为Free Run模式,0x1C32.1 = 0,0x1C33.1 = 0:

图4. 从站默认为Free Run模式

从站的同步方式由主站设定,激活从站后,主站默认设定的从站同步方式为0x1C32 = 0x1,0x1C33 = 0x22,即SyncManager2同步:

图5. 主站默认设定从站为SM2同步

例程提供3种模式,Slots:CSP(Cyclic Synchronous Position Mode)、CSV(Cyclic Synchronous Velocity Mode)、CSP/CSV(CSP、CSV切换模式)、对于CSP模式或者CSV模式,主站与从站之间预先了解彼此的工作模式,因此在RxPDO通道数据中针对没有0x6060h(Mode of operation)对象。而对于CSP/CSV(CSP、CSV切换模式)由于涉及模式切换,所以在RxPDO通道数据中有0x6060h对象,后续开发过程中,我可能会使用该模式。

图6. CiA402对象字典

图7. 模式选择及加载

注意,在图7中的TwinCAT操作界面选择好需要的Slot后,界面中的PDO通道数据也会随之切换,但此时从站的模式并没有改变,需要在Device上点击右键使当前配置加载到从站中。

主站下发的数据,首先到达ESC子系统的双口RAM中,随后CM4内核通过PDI接口将数据加载到其本地RAM中,该RAM存储区为CM4内核的专属内存区,只可供CM4内核访问。主站下发的数据,一般是运动控制系统的控制指令,这些数据是作为电机控制器的C28控制系统的CPU1内核需要的数据,因此还需要将这些数据由CM4内核传递给C28控制系统的CPU1内核,即实现进程间通讯。

图8. TMS320F28388D控制器内部结构

对于C28 CPU1内核与CM4内核间进程通讯,我的做法是以消息队列的形式实现。在CM4内核完成将主站下发的数据从ESC子系统的双口RAM复制到CM4内核的本地RAM后,启动CM4内核与C28 CPU1内核间的进程间通讯,这部分代码我添加到了PDO_OutputMapping函数中:

图9. 处理主站下发数据的进程间通讯设计

图10. 主站下发——从站接收数据过程

对于从站向主站上传数据,一般为电机控制状态数据或传感器数据,也是采用消息队列的形式,CM4内核以中断方式接收C28 CPU1内核发送的数据,并将这些数据赋值给相应的对象:

图11. 处理C28 CPU1内核进程间通讯的CM4内核中断程序设计

图12. 从站上传——主站接收数据过程

图13. 主站以2mS(500 Frame/sec)周期与从站进行通讯

IPC单元有一个64位的计数器,其计数周期为系统时钟周期,即5nS(C28控制系统主频为200MHz),可以用来做时间标识。使用这个计数器,我们也可以估算出主站的通讯周期,设计代码如下:

图14. 在C28 CPU1侧估算通讯周期

由于是在main函数的loop中进行计算,所以不会特别准确,但是也有一定的参考价值。

图15. 通讯周期测试

在图15的通讯周期测试中,可以看到IPC计数器的差值基本为400000左右,即400000 x 5nS = 2mS。 

Yale Li:

非常感谢您的分享!

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F28388D: 设计CiA402框架下的TMS320F28388D CPU1内核与CM4内核进程间通讯
分享到: 更多 (0)