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

TMS320F28388D: 关于f2838x_cm_cia402_solution例程aPdOutputData数组数据处理的疑问

Part Number:TMS320F28388D

aPdOutputData数组用来存储主站下发的数据,EtherCAT的数据是小端模式的:

以我现在使用的CSV/CSP模式为例,RxPDO通道绑定关系为:

index6040是状态字对象索引,数据位宽16bit;index607A是TargetPosition对象索引,数据位宽32bit;index60FF是TargetVelocity对象索引,数据位宽32bit;index6060是模式对象索引,数据位宽8bit

按照小端模式,接收到的数据在内存中的顺序应该为:

Byte1   状态字【0】

Byte2   状态字【1】

Byte3   TargetPosition【0】

Byte4   TargetPosition【1】

Byte5   TargetPosition【2】

Byte6   TargetPosition【3】

Byte7   TargetPosition【0】

Byte8   TargetPosition【1】

Byte9   TargetPosition【2】

Byte10 TargetPosition【3】

Byte11  模式 【0】

APPL_OutputMapping函数处理数据时也确实调用了SWAPWORD、SWAPDWORD函数:

SWAPWORD:(函数定义是从网上找的)

SWAPDWORD:(函数定义是从网上找的)

经过SWAP函数的处理,相应的对象可以得到正确的数值。

但是在调试过程中,我看到了如下所示的现象:

我设定的TargetPosition数值是500000,即0x0007 A120

问题1.发现在调用SWAPDWORD函数前,TargetPosition在内存中的顺序已经被排好,这是为什么;

问题2.这个调试界面里,没有使用SWAPDWORD函数,发现TargetPosition对象也能得到500000,即0x0007 A120数值,这是为什么呢?

我理解的经过swap函数处理后,数据在内存中的顺序应该为:

Byte1   状态字【1】

Byte2   状态字【0】

Byte3   TargetPosition【3】

Byte4   TargetPosition【2】

Byte5   TargetPosition【1】

Byte6   TargetPosition【0】

Byte7   TargetPosition【3】

Byte8   TargetPosition【2】

Byte9   TargetPosition【1】

Byte10 TargetPosition【0】

Byte11  模式 【0】

如果将这些数据以Uint16的形式通过进程间通讯传递给C28,我理解的顺序是这样的:

Word1   状态字【1】状态字【0】 

Word2   TargetPosition【3】TargetPosition【2】—–> 0x0007

Word3   TargetPosition【1】TargetPosition【0】—–> 0xA120

Word4   TargetPosition【3】TargetPosition【2】

Word5   TargetPosition【1】TargetPosition【0】

但是从调试结果看,C28侧却是这样的数据顺序:

Word2   TargetPosition【3】TargetPosition【2】—–> 0xA120

Word3   TargetPosition【1】TargetPosition【0】—–> 0x0007

问题3. 请问这是为什么

Susan Ren:

感谢您对TI产品的关注!为更加有效地解决您的问题,由于问题比较复杂,我需要询问更了解这款芯片的TI资深工程师,再为您解答,一旦得到回复会立即回复给您。

,

user78960159:

好 谢谢

,

Susan Ren:

我不能很清楚地查看您的图片,所以我不能理解所有的细节。我认为以下的一些事情会让事情明了化。

请标记SWAPWORD宏在ecatslv.h这个文件里只是为了返回同样的值。它实际上似乎并没有做任何事情,见下文:

#ifndef SWAPWORD#defineSWAPWORD(x)(x) /**< \brief Macro to swap a WORD*/
#endif

我不能确定这个代码以这种方式被写入。记住这个SW桩和样例代码是由Beckhoff被写入的,不是TI,所以你可以去问他们如果你想进一步了解的话。

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F28388D: 关于f2838x_cm_cia402_solution例程aPdOutputData数组数据处理的疑问
分享到: 更多 (0)