【DRV8301/DRV8303芯片学习手册】


记录一下自己在学习FOC的笔记。个人拙见仅供各位参考,如有不同看法或发现错漏,欢迎随时交流指正!


DRV8301/DRV8303

  在这里不使用BUCK电路,DRV8303与DRV8301的区别是少了一个BUCK电路,所以本章内容适用与DRV8301和DRV8303 。芯片手册DRV8301

DRV8301芯片外部电路图:

在这里插入图片描述
  
在这里插入图片描述

  

1. BUCK降压电路

  Pin1:RT_CLK,input,降压稳定器的Resistor timing(定时电阻、振荡电阻)和外部时钟,为了消除噪声可能造成的潜在时钟抖动电阻应该经很短的轨迹接地。
  Pin2:COMP, output,降压误差放大器的输出和输出开关电流比较器的输入。
  Pin3:VSENSE,input,降压输出电压的反馈检测引脚。
  Pin4:PWRGD,output,开漏输出,需要外部上拉电阻,如果降压输出电压因过热关断、掉电、过压或 EN_BUCK 关断而变低,则赋值为低电平。
  Pin53.54:PVDD2,power,为buck转换器提供能量,PVDD2电容应该接地。
  Pin50.51:PH,output,接到buck转换器内部的高侧MOSFET上,外面需要电感、二极管电路来构成完整的buck电路。
  Pin52:BST_BK,power,buck转换器的自举电容。
  Pin55:EN_BUCK,input,使能buck转换器。内部上拉电流源,拉至 1.2 V 以下禁用。通过两个电阻调整输入欠压锁定。
  Pin56:SS_TR,input,Buck软启动和跟踪。连接到此引脚的外部电容设置输出上升时间。因为这个引脚上的电压覆盖内部参考,它可以用于跟踪和排序。通过电容接地。
  
在这里插入图片描述
  
在这里插入图片描述
  

2. 故障警告

  Pin5:nOCTW,output,过流、过温报警指示。开漏输出,需要外部上拉电阻。可通过SPI修改寄存器来配置输出模式
  Pin6:nFAULT,output,故障指示。开漏输出,需要外部上拉电阻
  

3. 死区时间

  Pin7:DTC,input,外接一个接地的电阻来调整死区时间

在这里插入图片描述
在这里插入图片描述

  最小死区时间为50ns,通过将DTC口接地;最大死区时间为500ns,通过接150k欧电阻。

4. SPI

  Pin8:nSCS,input,SPI芯片选择。
  Pin9:SDI,input,SPI的输入。
  Pin10:SDO,output,SPI输出。
  Pin11:SCLK,input,SPI CLK信号输入。
  Pin49:VDD_SPI,input,SPI供电,可提供3.3V或5V。与MCU用于SPI的电源相连接。

  DRV8301 SPI 作为从设备运行。
  SPI 输入 (SDI) 数据格式由一个 16 位字组成,包含 1 个读写位、4 个地址位和 11 个数据位。
  SPI 输出 (SDO) 数据格式由一个 16 位字组成,包含 1 个帧故障位、4 个地址位和 11 个数据位。
  当一个帧无效时,帧故障位将置 1,其余位移出为 0。

SDI有16个字节:
  • 1 read/write bit W [15],0表示写,1表示读。
  • 4 address bits A [14:11]
  • 11 data bits D [10:0]
在这里插入图片描述

  

SDO也有16个字节
  • 1 fault frame bit F [15]
  • 4 address bits A [14:11]
  • 11 data bits D [10:0]

  
在这里插入图片描述

  SDO 输出字(第 N 个周期)是对上一个 SDI 输入字(第 N-1 个周期)的响应。 因此,每个 SPI 查询/响应对需要两个完整的 16 位移位周期才能完成。
  

4.1 寄存器地址

在这里插入图片描述

4.2 状态寄存器

  在这里插入图片描述

  OTW:过压过温检测。
  DETHA:三相电流状态。

  

在这里插入图片描述
  GVDD:检测设备是否过压。
  Device ID:设备ID。

  

4.3 控制寄存器

在这里插入图片描述
  
在这里插入图片描述
  
  比如在这里可以设置6PWM模式或者3PWM模式。

5. 分流放大器

  Pin12:DC_CAL,input,当DC_CAL拉高时,DRV8301短路采样电流放大器的输入并断开负载。直流偏置校正可通过外部单片机实现。(在发生偏移时,拉高DC_CAL,进行复位操作)

在这里插入图片描述
  

  Pin25:SO1,output,电流放大器1的输出。
  Pin26:SO2,output,电流放大器2的输出。
在这里插入图片描述

  

  Pin33:SN1,input,电流放大器 1 的输入端(连接至放大器的负输入端)。
  Pin32:SP1,input,电流放大器 1 的输入端(连接至放大器的正输入端)。建议连接至感应电阻器的接地端,以获得最佳的共模抑制效果。
  Pin31:SN2,input,电流放大器 2 的输入端(连接至放大器的负输入端)。
  Pin30:SP2,input:电流放大器 2 的输入端(连接至放大器的正输入端)。建议连接至感应电阻器的接地端,以获得最佳的共模抑制效果。
在这里插入图片描述
  
在这里插入图片描述

  

分流放大器内部:

在这里插入图片描述
  当芯片运行时间长了之后,运算放大器输出的值可能会不准确。那么拉高DC_CAL引脚,就可以使MOS管打开,运算放大器两边接地,来复位。

分流放大器输出为:

在这里插入图片描述
  

  其中G为电压放大倍数,可通过SPI设置,可设置有10,20,40,80V/V。

  Pin24:REF,input,设置采样电流放大器的偏置电压,该偏置电压值等于本引脚上电压的一半。连接到MCU的ADC参考电压上(VREF)。

在这里插入图片描述
  

6. GVDD,PVDD功能

  Pin13:GVDD,power,内部栅极驱动器电压调节器,连接电容接地。(不要外部接用)

在这里插入图片描述
  
  Pin29:PVDD1,power,为栅极驱动、采样电流放大器和SPI通信提供能量。PVDD1与PVDD2相独立。PVDD1通过电容接地。
在这里插入图片描述

  
  Pin14:CP1,power,充电泵的引脚1,与引脚2之间连接陶瓷电容。
  Pin15:CP2,power,充电泵的引脚1,与引脚1之间连接陶瓷电容。
在这里插入图片描述

  
实际上PVDD1,和PVDD2是来自于同一个电源,输入给芯片中两个不同的模块。

  

7. 欠压保护

在这里插入图片描述
  

PVDD最小电压为6V,GVDD最小电压为8V。
不管是PVDD或是GVDD低于最小电压,DRV8301都会拉低(GH_X,GL_X),启动欠压保护。使MOS管处于高阻态。
在这里插入图片描述
  
当设备处于欠压保护时,不会对SPI命令进行响应。并且会对把SPI寄存器复位到默认状态。
  

8. 过压保护

在这里插入图片描述
  
  如果GVDD大于16V,DRV8301会关闭栅极驱动(ABC三相MOS管)和电荷泵。这种错误会锁定芯片,需要重置EN_GATE。
  Pin16:EN_GATE,input,使能栅极驱动和采样电流放大器,控制buck需要通过EN_BUCK端口。

  

9. PWM输入

  Pin17:INH_A,input,半桥A的高侧PWM输入。

  Pin18:INL_A,input,半桥A的低侧PWM输入。

  Pin19:INH_B,input,半桥B的高侧PWM输入。

  Pin20:INL_B,input,半桥B的低侧PWM输入。

  Pin21:INH_C,input,半桥C的高侧PWM输入。

  Pin22:INL_C,input,半桥C的低侧PWM输入。
在这里插入图片描述
  

  PWM模式可根据SPI调整。在6PWM模式中可以通过单片机PWM输出中设置死区时间,在3PWM模式中只能通过电阻的大小设置死区时间。

  STM32高级定时器中PWM带死区插入的互补输出。
  通过TIMx_BDTR寄存器中的DTG[7:0]位用于控制所有通道的死区生成。
  
在这里插入图片描述

  按照上表,6PWM通过设置延迟的时间就可以控制输出的死区时间。

10. DVDD和AVDD

  Pin23:DVDD,power,内部3.3V供电。DVDD 电容应连接至 AGND,此时是一个输出端,但不用于驱动外部电路。
  Pin27:AVDD,power,内部6V的供电电压,AVDD 电容应连接至 AGND,此时是一个输出端,但不用于驱动外部电路。(给分流放大器做电源)
  Pin28:AGND,power,模拟地,连接到地。
  Pin57:GND。
  

11.0 栅极驱动电路

栅极驱动电路:

在这里插入图片描述
  

  Pin48:BST_A,power,半桥A的自举电容。
  Pin47:GH_A,output,半桥A高侧MOS的栅极输出。
  Pin45:GL_A,output,半桥A低侧MOS的栅极输出。
  Pin46:SH_A,input,半桥A高侧MOS的源极。在这个引脚和PVDD1引脚可以测高侧的Vds。
  Pin44:SL_A,input,半桥A低侧MOS的源极。在这个引脚和SH_A引脚可以测低侧的Vds。

  Pin43:BST_B,power,半桥B的自举电容。
  Pin42:GH_B,output,半桥B高侧MOS的栅极输出。
  Pin40:GL_B,output,半桥B低侧MOS的栅极输出。
  Pin41:SH_B,input,半桥B高侧MOS的源极。在这个引脚和PVDD1引脚可以测高侧的Vds。
  Pin39:SL_B,input,半桥B低侧MOS的源极。在这个引脚和SH_B引脚可以测低侧的Vds。

  Pin38:BST_C,power,半桥C的自举电容。
  Pin37:GH_C,output,半桥C高侧MOS的栅极输出。
  Pin35:GL_C,output,半桥C低侧MOS的栅极输出。
  Pin36:SH_C,input,半桥C高侧MOS的源极。在这个引脚和PVDD1引脚可以测高侧的Vds。
  Pin34:SL_C,input,半桥C低侧MOS的源极。在这个引脚和SH_C引脚可以测低侧的Vds。


本文章结束,记录一下学习DRV80301芯片的过程,后续会发布DRV8301关于SPI通信的代码,并且运用这些知识组建一个FOC。
芯片手册:DRV8301
参考视频:FOC驱动芯片DRV8301/8303功能详细说明

### LVGL 移植显示放大方法 #### 使用缩放函数调整图形对象大小 为了实现在嵌入式设备上的显示放大效果,可以利用 LVGL 提供的对象属性设置来改变控件尺寸。对于图像类组件而言,通过调用 `lv_img_set_zoom()` 函数能够指定一个比例因子应用于目标图片上[^1]。 ```c // 设置图片缩放倍数为两倍 (256 表示原始大小, 故此处设为 512 即可达到双倍) lv_img_set_zoom(img_obj, 512); ``` #### 修改屏幕分辨率与映射关系 当硬件层面支持更高分辨率输出时,则可通过重新定义显示器参数的方式间接达成视觉上的放大体验。具体操作涉及修改初始化过程中传给驱动层的相关配置项,比如像素宽度/高度以及颜色深度等特性描述信息[^3]。 ```c static lv_disp_drv_t disp_drv; disp_drv.hor_res = 960; /* 将水平方向物理分辨度提高 */ disp_drv.ver_res = 640; /* 同样增大垂直维度数值 */ /* 注册更新后的显示控制器设定到框架内 */ lv_disp_drv_register(&disp_drv); ``` #### 应用自适应布局策略 考虑到不同应用场景下可能存在的多样化需求,在设计UI界面之初就应充分考虑灵活性因素。借助于`lv_cont_set_fit()` 或者其他类似的容器自动调整机制可以帮助构建响应式的用户交互环境,从而更好地应对因视窗尺度变化而带来的挑战[^2]。 ```c lv_obj_t *container = lv_cont_create(lv_scr_act(), NULL); // 让子元素根据父级空间动态伸缩排列 lv_cont_set_fit(container, LV_FIT_TIGHT); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值