MPQ6533驱动
驱动芯片主要有驱动作用,将输入的弱电信号放大成足够强,用于外部设备的强电信号。需要安培级的驱动电流一般是驱动电机或者电力电子设备等,根据用户产品具体用途才可能选择具体的芯片,比如耐压,稳态/暂态性能等等要求。
MPQ6533 是一款专为汽车直流电机驱动器应用设计的栅极驱动器 IC。它可以驱动6个 N 沟道功率 MOSFET,以驱动直流电机或其他负载。在电机控制中,MPQ6533用作预驱芯片与主芯片连接。
MPQ的管脚功能如图:
其中:
- 电源部分掠过;
- ENA-ENC为输入信号使能;
- INA-INC为输入信号;
- 7-17的管脚为输出;
- CSO电流采样
- SDO-nSCS为SPI的四个管脚
- nFAULT为故障检测,故障时拉低
- nSLEEP为休眠,拉低休眠,上拉使能
要完成MPQ的驱动函数编写,需要明白这块芯片的作用机理:
- 该芯片与主芯片之间通过SPI进行通信,也正是通过SPI,对该预驱芯片进行初始化
- MPQ6533作为驱动芯片,接收来自MCU的PWM信号,输出驱动信号
初始化部分:
初始化参数主要为:
OUT 地址为 0x00
CTRLA 地址为0x01
CTRLB 地址为0x02
CTRLC 地址为0x03
CTRLD 地址为0x04
对应的实际参数为:
有了这些参数和参数的寄存器地址,我们就可以编写初始化函数框架如下:
#define DATA_LEVEL_1 (0)
/*
....
*/
#define DATA_LEVEL_N (0)
enum data
{
data_level1 = 0,
datalevel2,
/*
......
*/
}
typedef struct
{
union
{
uint16 OUT;
struct
{
uint16 BENA : 1;
uint16 BINA : 1;
uint16 BENB : 1;
uint16 BINB : 1;
uint16 BENC : 1;
uint16 BINC : 1;
uint16 OLS : 3;
uint16 OUT : 3;
}OUT_S;
};
union
{
uint16 CTRLA;
struct
{
uint16 ASR : 2;
uint16 ADT : 3;
uint16 ABT : 3;
uint16 AGN : 3;
uint16 ENSC :1;
}CTRLA_S;
/*
.......
*/
};
}config_type;
void predriver(void)
{
config_type prefriver_conf;
prefriver_conf.OUT_S.OUT = DATA_LEVEL_1;
enum data pre_data = data_level1;
prefriver_conf.OUT_S.OLS = pre_data;
/*
......
*/
void PreDrive_Hw_Init(PreDrive_Config);
}
void PreDrive_Hw_Init(config_type config)
{
SPI_WRITE(0x00,config.OUT);//SPI_WRITE
/*
......
*/
}
要正常使用起来,还需要将nSLEEP拉高
Dio_WriteChannel(nSLEEP,STD_HIGH);
输入信号的各使能脚拉高
Dio_WriteChannel(ENC,STD_HIGH);
Dio_WriteChannel(ENB,STD_HIGH);
Dio_WriteChannel(ENA,STD_HIGH);
nFAULT处理
当死区时间不足,电桥导通时,nFAULT输出低,我们需要及时关闭mos管,不然很可能烧毁mos,关闭mos的动作必须迅速,这只脚连接到主芯片的ICU通道,下降沿检测,使能中断,即nFAULT拉低时,马上进入中断,在中断里关闭mos。