您的位置:首页 > 其它

第一篇,ethercat 硬件初始化 HW_Init(void)

2016-06-30 12:00 1871 查看
/////////////////////////////////////////////////////////////////////////////////////////

/**

\return     0 if initialization was successful

 \brief    This function initialize the EtherCAT Slave Interface.

*////////////////////////////////////////////////////////////////////////////////////////

UINT16 HW_Init(void)

{

    

    UINT32 intMask = 0;

    /*    初始化:
  1、同ESC的存储接口
  2、ESC中断
  3、ECAT看门狗时钟*/

    /*   初始化ESC DPRAM与单片机的指针ESC的物理内存的开始*/

     pEsc = MAKE_PTR_TO_ESC;

   {

    UINT16 u16PdiCtrl = 0;
/*宏定义:ESC_PDI_CONTROL_OFFSET 对应地址为0x0140;
0x0140:PDI控制寄存器 使能/终止DC单单元*/

    do

    {

        HW_EscReadWord(u16PdiCtrl,ESC_PDI_CONTROL_OFFSET);   //将u16PdiCtrl=0的值写到0x0140地址中,PDI控制寄存器

        u16PdiCtrl = SWAPWORD(u16PdiCtrl);

    } while (((u16PdiCtrl & 0xFF) < 0x8) || ((u16PdiCtrl & 0xFF) > 0xD) );

    }

    /* 初始化PDI中断源*/

    INIT_ESC_INT;

    /* initialize the AL_Event Mask Register:初始化AL_event mask寄存器 */

    /* the AL Event-Mask register is initialized with 0, so that no ESC interrupt is generated yet,

       the AL Event-Mask register will be adapted in the function StartInputHandler in ecatslv.c

        when the state transition from PREOP to SAFEOP is made */
/*宏定义:ESC_AL_EVENTMASK_OFFSET 0x0204 Al时间中断请求屏蔽

AL时间请求寄存器是否映射到PDI中断信号*IRQ(B12),位定义同AL中断请求寄存器0X0220:0x0223
0:相应的中断请求位不映射
1:相应的中断请求位映射
复位0xFF;0xFF0F*/

    HW_EscWriteDWord(intMask, ESC_AL_EVENTMASK_OFFSET); 

    /* enable the ESC-interrupt microcontroller specific,

        the macro ENABLE_ESC_INT should be defined in ecat_def.h */

    ENABLE_ESC_INT();

    return 0;

}

void HW_Release(void)

{

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: