by cyril.desmoort » 20 Jun 2012, 16:20
Bonjour,
Nous n'utilisons pas les entrer INA et INB, ANN est connecter au VDD.
Nous utilison sur contrôlleur moteur sur une carte que nous avons développer en interne. nous avons réussi a les faires fonctionner au debut.
Voici notre code:
/***********************************************************************
Function: Init428()
Puspose: Reset and initialize TMC428 for one motor.
************************************************************************/
void Init428(void)
{
unsigned int i;
OpenSPI();
for(i=128; i<256; i+=2)
Write428(i, 0, TMC428Config[i-127], TMC428Config[i-128]);
//SMGP initialization for one motor. Change last byte e.g. to 0x02 for three motors.
Write428(IDX_SMGP, 0x01, 0x07, 0x02);
Write428Zero(IDX_AGTAT_ALEAT|MOTOR1);
Write428(IDX_PULSEDIV_RAMPDIV|MOTOR1, 0x00, 0x37, 0x02); //pulsdiv/rampdiv/µStep
Write428(IDX_REFCONF_RM|MOTOR1, 0, 0x0E, RM_RAMP);
Write428(IDX_AGTAT_ALEAT|MOTOR1,0x0,0x00,0x00);
Write428Zero(IDX_AGTAT_ALEAT|MOTOR2);
Write428(IDX_PULSEDIV_RAMPDIV|MOTOR2, 0x00, 0x37, 0x0f); //pulsdiv/rampdiv/µStep
Write428(IDX_REFCONF_RM|MOTOR2, 0, 0x0E, RM_RAMP);
Write428(IDX_AGTAT_ALEAT|MOTOR2,0x00,0x00,0x00);
Write428Zero(IDX_AGTAT_ALEAT|MOTOR0);
Write428(IDX_PULSEDIV_RAMPDIV|MOTOR0, 0x00, 0x67, 0x00); //pulsdiv/rampdiv/µStep
Write428(IDX_REFCONF_RM|MOTOR0, 0, 0x0E, RM_RAMP);
Write428(IDX_AGTAT_ALEAT|MOTOR0,0x00,0x00,0x00);
Write428Zero(IDX_VTARGET|MOTOR1);
Write428Zero(IDX_VACTUAL|MOTOR1);
Write428(IDX_XTARGET|MOTOR1, 0, 0, 0);
Write428(IDX_XACTUAL|MOTOR1, 0, 0, 0);
Write428Zero(IDX_VTARGET|MOTOR0);
Write428Zero(IDX_VACTUAL|MOTOR0);
Write428(IDX_XTARGET|MOTOR0, 0, 0, 0);
Write428(IDX_XACTUAL|MOTOR0, 0, 0, 0);
Write428Zero(IDX_VTARGET|MOTOR2);
Write428Zero(IDX_VACTUAL|MOTOR2);
Write428(IDX_XTARGET|MOTOR2, 0, 0, 0);
Write428(IDX_XACTUAL|MOTOR2, 0, 0, 0);
}
cordialement,