Forum

Notifications
Clear all

CAN Bus Communication for Servo**D Series Closed Loop Stepper Driver - STM32 Blue Pill

2 Posts
1 Users
0 Reactions
2 Views
T Zhao
Posts: 6
Admin
Topic starter
Member
Joined: 1 week ago
[#83]

Servo42D/57D supports position mode and Speed mode. On Position Mode, the Position Mode includes absolute position and relative position. 

The code below shows the Relative Position motion baccording to pulse number (page 78 on CAN User Manual)

#define SERVO42D_SPEED_MODE 0xF6

void Servo42D_RunPosition(void)
{
  TxHeader.StdId=SERVO42D_ID;
  TxHeader.ExtId=0;
  TxHeader.IDE=CAN_ID_STD;
  TxHeader.RTR=CAN_RTR_DATA;
  TxHeader.DLC=8;
  TxHeader.TransmitGlobalTime=DISABLE;

  TxData[0]=SERVO42D_POSITION_MODE1;
  TxData[1]=0x00;
  TxData[2]=0x3C;
  TxData[3]=0x02;
  TxData[4]=0x00;
  TxData[5]=0x00;
  TxData[6]=0x64;
  TxData[7]=(SERVO42D_ID+TxData[0]+TxData[1]+TxData[2]+TxData[3]+TxData[4]+TxData[5]+TxData[6])&0xFF;


  if(HAL_CAN_AddTxMessage(&hcan,&TxHeader,TxData,&TxMailbox)!=HAL_OK)
  {
    Error_Handler();
  }
}

 


1 Reply
T Zhao
Posts: 6
Admin
Topic starter
Member
Joined: 1 week ago

Speed mode:

#define SERVO42D_SPEED_MODE 0xF6

void Servo42D_RunSpeed(void)

{

TxHeader.StdId=SERVO42D_ID;

TxHeader.ExtId=0;

TxHeader.IDE=CAN_ID_STD;

TxHeader.RTR=CAN_RTR_DATA;

TxHeader.DLC=5;

TxHeader.TransmitGlobalTime=DISABLE;

// Speed Mode

TxData[0]=SERVO42D_SPEED_MODE;

TxData[1]=0x01;

TxData[2]=0x40;

TxData[3]=0x02;

TxData[4]=(SERVO42D_ID+TxData[0]+TxData[1]+TxData[2]+TxData[3])&0xFF;

if(HAL_CAN_AddTxMessage(&hcan,&TxHeader,TxData,&TxMailbox)!=HAL_OK)

{

Error_Handler();

}

}

 


Reply
Share: