FOC系列(二)----继续学习DRV8301芯片

一、 程序框图

跟随上篇博客咱们继续往下看,下面是芯片内部的程序框图:

1.1 BUCK电路

1.2 内部各电源

1.3 SPI通信、栅极驱动器和时序控制器

1.4 MOSFET驱动电路

1.5 电流采样放大电路

数据手册只是给出了这一部分框图,但是没有更加详细的介绍,不过没关系,咱继续往下看,会逐渐补齐该部分的功能。

二、 功能描述

2.1 三相栅极驱动器

每个半桥被配置为驱动两个n沟道MOSFET,一个用于高侧,一个用于低侧。半桥驱动器可以组合使用来驱动三相电机,也可以单独使用来驱动各种其他负载。
  峰值栅极驱动电流和内部死区时间可调,以适应各种外部MOSFET和应用。 峰值栅极驱动电流通过寄存器设置设置,死区时间通过DTC引脚上的外部电阻调整。将DTC引脚短接到地将提供最小死区时间(50ns)。在开关转换期间,高侧和低侧mosfet之间存在内部手抖,以防止电流穿过。
三相栅极驱动器可以提供高达30mA的平均栅极驱动电流。
  每个MOSFET栅极驱动器都有一个VDS感测电路,用于过流保护。当使能MOSFET时,感测电路测量从漏极(D)到外部MOSFET源极(S)的电压 V D S V_{DS} VDS。将 V D S V_{DS} VDS与程序设定的跳闸点进行比较,以确定是否发生过流事件。高侧感测位于PVDD1和SH_X引脚之间。低侧感测位于SH_X和SL_X引脚之间。
   DRV8301允许通过 寄存器设置进行6-PWM和3-PWM控制:

   下面是官方给出的外部MOSFET山及驱动电路各元器件的推荐值:

2.2 电流放大器

DRV8301的电流放大器有四个可编程的增益设置通过SPI寄存器。这是10,20,40,80V/V。偏置设置为参考引脚(REF)上电压的一半。为了最小化直流偏置和漂移过温,通过DC_CAL引脚或SPI寄存器提供了一种校准方法。
   电流并联放大器的输出可计算为: V O = V R E F 2 − G × ( S N X − S P X ) V_O=\frac{V_{REF}}{2}-G×(SN_X-SP_X) VO=2VREF−G×(SNX−SPX)
   • V R E F V_{REF} VREF是参考电压(REF引脚)
   •G是放大器的增益(10,20,40或80V/V)
   • S N X SN_X SNX和 S P X SP_X SPX是通道x的输入,SPX应连接到检测电阻的接地侧,以获得最佳的共模抑制。
   在此处请注意哈(这个地方我对数据手册出现了一个疑惑),一般来说,N表示 N e g a t i v e Negative Negative,P表示 P o s i t i v e Positive Positive,所以感觉上面的公式应该是 V O = V R E F 2 − G × ( S P X − S N X ) V_O=\frac{V_{REF}}{2}-G×(SP_X-SN_X) VO=2VREF−G×(SPX−SNX),但是看完数据手册发现,人家就是这样定义的,咱们把N当成正就好,当然这个问题不大:

2.3 保护功能

这一部分主要是介绍一下过流、过压保护之累的功能,我们只看一些比较关键的点即可:
   当电压超过电压阈值时触发过流保护功能。电压阈值通过SPI寄存器编程: V D S = I D S × R D S ( o n ) V_{DS} = I_{DS} × R_{DS(on)} VDS=IDS×RDS(on)
   这里需要配合寄存器那边来看:

   如果你把控制寄存器2的OC_ADJ_SET 6到10位通过SPI设置为12,根据表可以看出 V d s ( V ) = 0.250 V_{ds(V)}=0.250 Vds(V)=0.250,这时再看你选择的MOSFET的 R D S ( o n ) R_{DS(on)} RDS(on)(即导通电阻,一般很小),假设为0.25Ω,那么根据 V D S = I D S × R D S ( o n ) V_{DS} = I_{DS} × R_{DS(on)} VDS=IDS×RDS(on)式,得出 I D S = 1 A I_{DS}=1A IDS=1A。
   通过SPI寄存器可以设置四种不同的过流模式(OC_MODE):
     1. 电流限制模式在电流限制模式下, 设备在过流事件期间使用电流限制而不是设备关闭。在这种模式下,设备通过nOCTW引脚报告过流事件。nOCTW引脚将保持低电平。
   在电流限制模式下有两个电流控制设置。这些是由SPI寄存器中的一位设置的。默认模式为CBC (cycle by cycle)。
      ①CBC (Cycle by Cycle)模式:在CBC模式下, 检测到过电流的MOSFET将关闭,直到下一个PWM周期。
     ②Off-Time控制模式:在Off-Time模式下,检测到过流的MOSFET将在64µs的时间内关闭(由内部定时器设置)。如果在另一个MOSFET中检测到过流,计时器将复位另一个64µs周期,两个MOSFET将在持续时间内禁用。在此期间,可以通过相应的PWM周期恢复特定MOSFET的正常工作。
    2.OC闩锁关闭模式,当过流事件发生时,高侧和低侧mosfet将在相应的半桥中禁用。nFAULT引脚和nFAULT状态位将与检测到过电流的MOSFET的相关状态位一起断言。OC状态位将锁存,直到下一个SPI读取命令。nFAULT引脚和nFAULT状态位将锁存,直到通过GATE_RESET位或快速EN_GATE复位脉冲接收到复位。
      3和4模式分别为仅报告和禁用 ,这两个比较好理解,个人推荐限流模式的CRC模式。
   剩余的就是一些过压保护之类的,这里不再详细介绍了。

2.4 上电和关闭顺序

在上电期间,所有栅极驱动输出都保持低电平 。栅极驱动器和电流放大器的正常工作可以通过将EN_GATE从低状态切换到高状态来启动。如果没有错误,DRV8301准备接受PWM输入。只要PVDD在功能区内,即使在栅极禁用模式下,栅极驱动器也始终具有对功率场效应管的控制。
   从SDO到VDD_SPI有一个内部二极管,所以VDD_SPI需要一直被供电到与其他SPI设备相同的功率水平(如果有来自其他设备的SDO信号)。在SDO引脚上出现任何信号之前,VDD_SPI电源应首先上电,并在SDO引脚上完成所有通信后关闭电源。
   该部分还是比较重要的,本人的芯片就是目前出现了一点问题,我怀疑和这个上电顺序可能有关,或者是出现了什么错误之类的。

三、设备功能模式

3.1 EN_GATE

EN_GATE 低电平将使栅极驱动器、电荷泵、电流分流放大器和内部稳压块置于低功耗模式,以节省能源。在此状态期间不支持SPI通信,SPI寄存器将在完全EN_GATE重置后恢复到其默认设置。只要PVDD仍然存在,该器件将把MOSFET输出级置于高阻抗模式。
   当EN_GATE引脚从低到高时,它将经历一个上电序列,使能栅极驱动器、电流放大器、电荷泵、内部调节器等,并复位与栅极驱动器块相关的所有锁存故障。EN_GATE也将重置SPI表中的状态寄存器。当错误事件发生后EN_GATE被切换时,所有锁定的错误都可以被重置,除非错误仍然存在。
   当EN_GATE由高转低时,立即关断栅极驱动模块,因此栅极输出可以使外部场效应管处于高阻抗模式。然后,它将等待10µs,然后完全关闭其余块。通过切换EN_GATE引脚非常短的时间(小于10µs),可以实现快速故障复位模式。这将防止设备关闭其他功能块,如电荷泵和内部调节器,并带来更快和简单的故障恢复。
   EN_GATE引脚复位脉冲(高→低→高)不能只维持10到20µs。DRV8301具有从快速复位模式到完全复位模式的过渡区域,可以导致设备对外部输入无响应,直到满功率循环。如果期望在EN_GATE引脚上出现此周期的复位脉冲,则可以在引脚外部添加RC滤波器。
   重置所有故障的另一种方法是使用SPI命令(RESET_GATE),它只会重置门驱动程序块和所有SPI状态寄存器,而不会关闭其他功能块。

3.2 DTC

死区时间可通过DTC引脚编程。从DTC到地应接一个电阻来控制死区时间。死区时间控制范围为50ns ~ 500ns。短的DTC引脚接地将提供最小的死区时间(50ns)。电阻范围为0至150 kΩ。死区时间在此电阻范围内线性设置。

3.3 VDD_SPI

VDD_SPI是为SDO引脚供电的电源。它必须连接到MCU用于其SPI操作的相同电源(3.3 V或5 V)。
   在上电或下电瞬态过程中,VDD_SPI引脚可能在短时间内为零电压。在此期间,来自系统中任何其他设备的SDO引脚不应出现SDO信号 ,因为它会导致DRV8301中的寄生二极管从SDO传导到VDD_SPI引脚作为短路。在系统电源顺序设计中应考虑并避免这一问题。

四、SPI通信

4.1 DRV8301的SPI

DRV8301 SPI作为 S l a v e Slave Slave工作。SPI输入(SDI)数据格式由一个16位的字、1个读写位、4个地址位和11个数据位组成。SPI输出(SDO)数据格式由一个1个帧故障位、4个地址位和11个数据位组成。当帧无效时,帧故障位设为1,剩余位移出为0。
   一个有效的帧必须满足以下条件:
    •当nSCS变低时,时钟必须为低。
    •应该有16个完整时钟周期。
    •当nSCS高时,时钟必须低

4.2 数据格式

咱们废话少说,直接看数据格式:



   "对于发送给SDI的READ命令(第n个周期),SDO将在下一个周期中使用指定地址的数据进行响应。(N+1)对于发送给SDI的WRITE命令(第N个周期),SDO将在下一个周期(N+1)中响应状态寄存器1 (0x00)中的数据。"
   上面的话通俗来说,你这时候给寄存器写一个值,他会在下个周期把这个寄存器的值返回给你。
   SDI输入字(W0)的MSB位是一个读写位。当W0 = 0时,输入字为写命令。当W0 = 1时,输入字为读命令。

4.3 寄存器

下图为四个寄存器的地址:

4.3.1 状态寄存器

4.3.2 控制寄存器

注:数字上(1)的都是默认值。

   过流保护的阈值设置前面已经详细介绍过了,下面是寄存器设置的值:

   如果IC预期在6-V至8-V范围内工作,请勿使用设置28、29、30、31。

五、典型应用电路


六、往期回顾

FOC系列(一)----DRV8301芯片的学习

相关推荐
风尚云网1 小时前
风尚云网前端学习:一个简易前端新手友好的HTML5页面布局与样式设计
前端·css·学习·html·html5·风尚云网
嵌入式大圣1 小时前
单片机结合OpenCV
单片机·嵌入式硬件·opencv
EterNity_TiMe_2 小时前
【论文复现】(CLIP)文本也能和图像配对
python·学习·算法·性能优化·数据分析·clip
sanguine__2 小时前
java学习-集合
学习
lxlyhwl2 小时前
【STK学习】part2-星座-目标可见性与覆盖性分析
学习
nbsaas-boot2 小时前
如何利用ChatGPT加速开发与学习:以BPMN编辑器为例
学习·chatgpt·编辑器
日晨难再3 小时前
嵌入式:STM32的启动(Startup)文件解析
stm32·单片机·嵌入式硬件
CV学术叫叫兽3 小时前
一站式学习:害虫识别与分类图像分割
学习·分类·数据挖掘
我们的五年3 小时前
【Linux课程学习】:进程程序替换,execl,execv,execlp,execvp,execve,execle,execvpe函数
linux·c++·学习
yufengxinpian3 小时前
集成了高性能ARM Cortex-M0+处理器的一款SimpleLink 2.4 GHz无线模块-RF-BM-2340B1
单片机·嵌入式硬件·音视频·智能硬件