SOEM 源码解析 ecx_eeprom2pdi

/* Set eeprom control to PDI. Only if set to master.
 * 设置eeprom控制为PDI。只有当设置为master时
 * @param[in]  context        = context struct
 *                              上下文结构体
 * @param[in] slave     = Slave number
 *                       从站编号
 * @return >0 if OK
 *         如果成功,返回值>0
 */
int ecx_eeprom2pdi(ecx_contextt *context, uint16 slave)
{
   int wkc = 1,/* 工作计数器 */
       cnt = 0;/* 试行次数:最大三回 */
   uint16 configadr;/* 配置地址 */
   uint8 eepctl;/* Reg0x0500 EEPROM Configuration:EEPROM配置 */

   if ( !context->slavelist/* 从站列表 */[slave/* 从站编号 */].eep_pdi/* EEPROM控制:0 = master,1 = PDI */ )
   {
      configadr/* 配置地址 */
          = context->slavelist/* 从站列表 */[slave/* 从站编号 */].configadr/* 配置地址 */;
      eepctl = 1;/* Reg0x0500 EEPROM Configuration:EEPROM配置 1 = PDI */
      do
      {
         wkc = /* 工作计数器 */
             ecx_FPWR(// 配置的地址物理写(FPWR)  Configured address physical write
                 context->port,/* 端口(port) */
                 configadr,/* 配置地址 */
                 ECT_REG_EEPCFG,// EEPROM Configuration:EEPROM配置=0x0500
                 sizeof(eepctl), /* Reg0x0500 EEPROM Configuration:EEPROM配置 1 = PDI */
                 &eepctl ,/* Reg0x0500 EEPROM Configuration:EEPROM配置 1 = PDI */
                 EC_TIMEOUTRET/* 发送帧(tx frame)返回到接收(rx)的超时时间[单位:us(微秒)]=2000 */
             ); /* set Eeprom to PDI *//* 设置eeprom控制为PDI */
      }
      while ((wkc/* 工作计数器 */ <= 0) 
          && (cnt++ < EC_DEFAULTRETRIES));/* 默认重试次数,如果 WKC <= 0 */
      context->slavelist/* 从站列表 */[slave/* 从站编号 */].eep_pdi = 1;/* EEPROM控制:0 = master,1 = PDI */
   }

   return wkc;/* 工作计数器 */
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

淘汰猫とても

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值