Use TB6612 motor driver module to drive dual-channel motors.
MSPM0G3507 and TB6612 pin connection
A motor:
MSPM0G3507 | TB6612 |
---|---|
PA8 | PWMA |
PA14 | AIN1 |
PA15 | AIN2 |
B motor:
MSPM0G3507 | TB6612 |
---|---|
PA9 | PWMB |
PA16 | BIN1 |
PA17 | BIN2 |
TB6612 motor driver module pin description.
x#ifndef __BSP_TB6612_H_
#define __BSP_TB6612_H_
#include "ti_msp_dl_config.h"
//A电机
#define AIN1_OUT(X) ( (X) ? (DL_GPIO_setPins(GPIO_1_PORT,GPIO_1_AIN1_PIN)) : (DL_GPIO_clearPins(GPIO_1_PORT,GPIO_1_AIN1_PIN)) )
#define AIN2_OUT(X) ( (X) ? (DL_GPIO_setPins(GPIO_2_PORT,GPIO_2_AIN2_PIN)) : (DL_GPIO_clearPins(GPIO_2_PORT,GPIO_2_AIN2_PIN)) )
//B电机
#define BIN1_OUT(X) ( (X) ? (DL_GPIO_setPins(GPIO_3_PORT,GPIO_3_BIN1_PIN)) : (DL_GPIO_clearPins(GPIO_3_PORT,GPIO_3_BIN1_PIN)) )
#define BIN2_OUT(X) ( (X) ? (DL_GPIO_setPins(GPIO_4_PORT,GPIO_4_BIN4_PIN)) : (DL_GPIO_clearPins(GPIO_4_PORT,GPIO_4_BIN4_PIN)) )
void A_control(uint16_t motor_speed,uint8_t dir);
void B_control(uint16_t motor_speed,uint8_t dir);
#endif
The macro definition part defines how to control the direction of the motor. TB6612 controls the direction of the motor through two pins. When one pin is high and the other is low, the motor rotates in one direction; otherwise, it rotates in the opposite direction.
AIN1_OUT and AIN2_OUT control the direction of motor A.
BIN1_OUT and BIN2_OUT control the direction of motor B.
A_control(uint16_t motor_speed, uint8_t dir): This function is used to control motor A and accepts motor speed (motor_speed) and direction (dir) as parameters.
B_control(uint16_t motor_speed, uint8_t dir): This function is used to control motor B and has similar functions to A_control.
xxxxxxxxxx
void A_control(uint16_t motor_speed,uint8_t dir)
{
if(dir)
{
AIN1_OUT(0);
AIN2_OUT(1);
}
else
{
AIN1_OUT(1);
AIN2_OUT(0);
}
DL_TimerA_setCaptureCompareValue(PWM_1_INST, motor_speed, DL_TIMER_CC_0_INDEX);
}
void B_control(uint16_t motor_speed,uint8_t dir)
{
if(dir)
{
BIN1_OUT(0);
BIN2_OUT(1);
}
else
{
BIN1_OUT(1);
BIN2_OUT(0);
}
DL_TimerA_setCaptureCompareValue(PWM_1_INST, motor_speed, DL_TIMER_CC_1_INDEX);
}
Function A_control(uint16_t motor_speed, uint8_t dir) and function B_control(uint16_t motor_speed, uint8_t dir) control motor A and B respectively, determine the rotation direction of the motor according to the dir parameter, and use the motor_speed parameter to set the motor speed.
Note: The project source code must be placed in the SDK path for compilation,
For example, the path: D:\TI\M0_SDK\mspm0_sdk_1_30_00_03\TB6612