Part Number:TMS320F28388DOther Parts Discussed in Thread:TMDXIDDK379D, C2000WARE
你好,
我在调试F28388_IPC通讯时,遇到几个问题,请求帮忙解答下
1、datasheet上说有两块 MSGRAM_CM_TO_CPU 和 MSGRAM_CPU_TO_CM的RAM区(2k byte),无论任何配置,就能用来实现C28核与CM核的数据交换,那么实现2k的数据交换,大概会有多久的延时?
2、官方提供了两个IPC的通讯的例程,分别用了IPC_sendCommand、IPC_sendMessageToQueue函数,这两个的区别是什么?还有就是程序内把readdata定义在MSGRAM_CPU_TO_CM 的RAM区中,就算不调用这函数,在memory brower中也是能数据变化。我的理解:IPC_sendCommand/IPC_sendMessageToQueue用于大数据量的传输,比如GSx_RAM中的数据?
3、调试TMDXIDDK379D时,c2000\C2000Ware_MotorControl_SDK_3_03_00_00\solutions\tmdxiddk379d\f2838x里提供了带EtherCAT的例程(仅仅包括PDO过程数据),对象字典的建立需要在原有的ti_cia402.XML添加对象字典库,然后更改object.h的对象字典,过程繁琐而且容易出错,有没有更加简洁的办法,提供标准的CIA402_xlxs文档,然后执行添加对象字典,生成cia402appl.c.h文件。
Cherry Zhou:
您好,我们已收到您的问题并升级到英文论坛寻求帮助,如有答复将尽快回复您。谢谢!
,
Cherry Zhou:
强 zeng 说: 1、datasheet上说有两块 MSGRAM_CM_TO_CPU 和 MSGRAM_CPU_TO_CM的RAM区(2k byte),无论任何配置,就能用来实现C28核与CM核的数据交换,那么实现2k的数据交换,大概会有多久的延时?
您好,RAM 本质上是共享 RAM ,访问时间与其他 RAM 相同。 您可以声明变量和缓冲区,并像其他一样正常地放置在RAM 中。 延迟是取决于软件怎样将数据写入 RAM。 此外请注意,RAM 也可由 DMA 访问,因此如果在需要传输大量数据时 CPU 干扰极少,您也可以考虑这个选项。
强 zeng 说: 2、官方提供了两个IPC的通讯的例程,分别用了IPC_sendCommand、IPC_sendMessageToQueue函数,这两个的区别是什么?还有就是程序内把readdata定义在MSGRAM_CPU_TO_CM 的RAM区中,就算不调用这函数,在memory brower中也是能数据变化。我的理解:IPC_sendCommand/IPC_sendMessageToQueue用于大数据量的传输,比如GSx_RAM中的数据?
队列函数会创建和管理消息对象的循环缓冲区。 顾名思义,如果在另一端有机会读之前,发送了多个消息,那么队列函数将会给这些消息排队。 IPC_sendCommand 函数并没有集成此队列,由调用 IPC 函数的应用程序在发送另一个之前检查确认 / 响应。
IPC 函数仅仅是为发送命令和消息排队提供一个软件框架。 使用该函数完全是可用可不用的。 如果您只想声明、写入RAM 中已知位置的阵列,并直接写入 IPC 标志来通知另一个内核数据已就绪,但甚至都不用调用 IPC 函数的话,您可以执行此操作。
强 zeng 说:调试TMDXIDDK379D时,c2000\C2000Ware_MotorControl_SDK_3_03_00_00\solutions\tmdxiddk379d\f2838x里提供了带EtherCAT的例程(仅仅包括PDO过程数据),对象字典的建立需要在原有的ti_cia402.XML添加对象字典库,然后更改object.h的对象字典,过程繁琐而且容易出错,有没有更加简洁的办法,提供标准的CIA402_xlxs文档,然后执行添加对象字典,生成cia402appl.c.h文件。
如果您想要在 F2838x EtherCAT 上评估 CiA402,我们在 C2000WARE 安装中提供了一个示例。 Beckhoff 也提供了同一个 CiA402 示例解决方案的文档:
C:\ti\c2000\C2000Ware_4_01_00_00\libraries\communications\Ethercat\f2838x\examples\f2838x_cm_cia402_solution
C:\ti\c2000\C2000Ware_4_01_00_00\libraries\communications\Ethercat\f2838x\docs
希望以上回复对您有所帮助!
,
强 zeng:
你好,Cherry ZHOU,收到你的回答,还有以下几点疑问
1、两块 MSGRAM_CM_TO_CPU 和 MSGRAM_CPU_TO_CM的RAM区,如果映射的结构体都是Uint32的,CPU核跟CM读写的数据都正常,如果改为Uint16/int类型,CPU发送给CM核的数据就会出现地址偏移,CM核无法正确读到数据,同时CPU核也不能读取到cm发送的数据
2、F2838X的EtherCAT的例程我都评估了,也测试了f2838x_cm_cia402_solution,就是添加修改对象字典,增加SDO参数读写,TI这边有什么指导文件吗?
,
Cherry Zhou:
好的已经帮您跟进给工程师了,有新的答复尽快给到您哈。
,
强 zeng:
你好,地址偏移的问题已经解决,是c28x核跟cm定义的MSGRAM数组地址没对应起来,cm核的各个数组首尾地址是连在一起,c28x定义的几个数组地址是有间隔的。
,
Cherry Zhou:
好的感谢您的反馈。
强 zeng 说:、F2838X的EtherCAT的例程我都评估了,也测试了f2838x_cm_cia402_solution,就是添加修改对象字典,增加SDO参数读写,TI这边有什么指导文件吗?
您好,您可以参考下 Beckhoff 在应用手册 ET9300 第 10 节 "CiA402 drive profile"" 的内容,具体应该可以在以下Slave Stack Code下载中找到:
https://www.ethercat.org/en/products/54FA3235E29643BC805BDD807DF199DE.htm
以及您可以参阅下该链接的section 7.
,
强 zeng:
收到,感谢你的回答