FOC系列(四)----重新绘制DRV8301驱动板

声明:本人水平有限,博客可能存在部分错误的地方,请广大读者谅解并向本人反馈错误。

一、前言

由于之前DRV8301的驱动板出现了问题,而且在结构上也出现了部分问题,所以最近又重新绘制了一版,不过还是存在一些小问题,后面我还会重新绘制一版,并且修改控制板和驱动板"上-下"的结构,采用平行线的结构进行连接,修改后的DRV8301原理图如下:

   PCB如下:


  实物如下:

  由于改版还不是最后一版,所以有些地方使用了比较便宜的元器件,不过测试都正常:
  GVDD:12V
  AVDD:6.8V
  DVDD:3.3V
  下图是C相上下两个MOS管栅极的信号(蓝色为上管的栅极驱动信号为24V;黄色为下管的栅极驱动信号,为12V):

  DRV8301代码:

c 复制代码
#include "DRV8301.h"
#include "spi.h"
#include "math.h"

uint16_t tx, rx=10;
static uint8_t tx_buff[14];

// uint8_t status[10] = {100,100,100,100,100,100,100,100,100,100};
uint8_t addr,dat;


uint8_t MCT8316_read_buffer(uint8_t const regAddr, uint8_t *pData, uint8_t len)
{
  CS_LOW;
  tx = regAddr | 0x80;
  tx_buff[0] = tx;
  HAL_SPI_TransmitReceive(&hspi1, (uint8_t *)&tx, (uint8_t *)&rx, 1, 55);
  HAL_SPI_TransmitReceive(&hspi1, tx_buff, pData, len, 55);
  CS_HIGH;
  return 0;
}
 
 
uint16_t DRV8301_read_reg(uint8_t *pData, uint8_t len)
{
	CS_LOW;
	HAL_SPI_Receive(&hspi1, pData, len,55);
	CS_HIGH;//源代码发送的是ff
	
	return rx&0xFFFF;
}

uint8_t MCT8316_write_reg(uint16_t reg)
{
	CS_LOW;
  HAL_SPI_Transmit(&hspi1, (uint8_t *)&reg, 1,55);
	CS_HIGH;
 
	return 0;
}

uint8_t MCT8316_read(uint16_t reg)
{
	uint8_t result;
	MCT8316_write_reg(READ | reg << 11);
	DRV8301_read_reg((uint8_t *)&result,1);
	return  result;
}

void DRV8301_Init(void)
{
	uint8_t dat1,dat2;
	dat1 = 0x03; // B10~B8
	dat2 = 0xF1; // B7~B0
	tx = WRITE | Control_Register_1<<11 | ((dat1<<6| dat2)&0x07FF);
//	tx = 0x13F1;
	MCT8316_write_reg(tx);
	HAL_Delay(10);
	
	dat1 = 0x00;
	dat2 = 0x0F;
	tx = WRITE | (Control_Register_2<<11)|((dat1<<6|dat2)&0x07FF);
//	tx = 0x180F;
	MCT8316_write_reg(tx);
	HAL_Delay(10);
}

二、下版需要修改之处

  1. 修改MR30和XT60尺寸
  2. DRV8301的封装需要注意一下
  3. 驱动板、控制板修改连接线
  4. 使用STM32F405RGT6重新绘制控制板

三、往期回顾

FOC系列(一)----DRV8301芯片的学习
FOC系列(二)----继续学习DRV8301芯片
FOC系列(三)----AS5600磁编码器

相关推荐
jdhfusk2 天前
foc进阶篇3——对比PLL测速,为M法加低通正名
foc·低通滤波·速度环·m法测速·pll锁相环
Wallace Zhang5 天前
SimpleFOC源码学习02(v2.3.2) - 低通滤波器lowpass_filter.cpp与lowpass_filter.h
foc
Wallace Zhang5 天前
SimpleFOC源码学习04(v2.3.2) - 数学基础层foc_utils.cpp与foc_utils.h
foc
Wallace Zhang5 天前
SimpleFOC源码学习00(v2.3.2) - 源码版本说明
foc
Wallace Zhang5 天前
SimpleFOC源码学习01(v2.3.2) - PID控制器PID.cpp与PID.h
foc
jdhfusk16 天前
foc进阶篇1——可能比强拖更好的磁编非线性校准
foc·无刷电机控制
沉沙丶24 天前
关于matlab分析电流THD的一些探究和记录
开发语言·matlab·电机控制·foc·永磁同步电机·模型预测·预测控制
沉沙丶1 个月前
模型预测控制专题(十二)—— 基于高阶扩展状态观测器HESO的MPFCC
simulink·电机控制·foc·永磁同步电机·pmsm·无模型预测·电流预测控制
沉沙丶1 个月前
模型预测控制专题(十一)—— 基于改进型扩张状态观测器MESO的MPFCC
电机控制·foc·永磁同步电机·模型预测·预测控制·pmsm·无模型预测
沉沙丶1 个月前
模型预测控制专题(十)—— 现有观测器限制分析
电机控制·foc·永磁同步电机·模型预测·预测控制·pmsm·无模型预测