-
最近一年都在做这个课题,有人用STM32做过从站,我想拿DSP来做EtherCAT从站,遇到很多个难题。解决了很多,但是还是有一个问题很棘手。
-
DSP的存储机制是16位的,也就是说,在这里定义一个char类型变量,它占16位,而不是8位。这一点让人很困恼。因为从站芯片,无论是ET1100,还是AX58100,都是8位的。我尝试用XINTF接口代替STM32的FSMC接口。
do
{
intMask = 0x0093;
HW_EscWriteWord(&intMask, ESC_AL_EVENTMASK_OFFSET);
intMask = 0;
HW_EscReadWord(&intMask, ESC_AL_EVENTMASK_OFFSET);
}while(intMask != 0x0093);// PDI接口测试
- 因为XINTF只支持16位和32位,所以我用16位的模式,AX58100采样16位异步总线的模式,写一个2字节数0x0093进去,读出来的结果是0x9393。
//初始化XINTF
void InitXintf(void)
{
EALLOW;
SysCtrlRegs.PCLKCR3.bit.XINTFENCLK = 1; // XTIMCLK
XintfRegs.XINTCNF2.bit.XTIMCLK = 1;//此位等于1,则设置XTIMCLK=1/2 SYSCLKOUT
//即:XTIMCLK=150/2=75MHz
XintfRegs.XINTCNF2.bit.WRBUFF = 0;//此为“写缓冲器深度控制位”,设置为0,
//则无写缓冲器,即默认状态
XintfRegs.XINTCNF2.bit.CLKOFF = 1;//禁止XCLKOUT输出
XintfRegs.XINTCNF2.bit.CLKMODE =