【DRV8323】电机驱动芯片寄存器配置指南,通过STM32F407的SPI通信配置

这篇具有很好参考价值的文章主要介绍了【DRV8323】电机驱动芯片寄存器配置指南,通过STM32F407的SPI通信配置。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

😶‍🌫️说在最前面

笔者计划使用一块使用到STM32F407控制芯片与DRV8323s驱动芯片的板子,驱动BLDC。了解到需要使用SPI通信来配置DRV8323s驱动芯片,配置过程中涉及DRV8323数据手册中提及的几个寄存器,故写此文做个记录。 另外,DRV8323芯片和DRV8302、DRV8303、DRV8353都有极大的相似之处,可以相互参考借鉴。
研究学习过程中,感觉能找到的资料不多,这里首先感谢一位大佬的帖👉CSDN文章:STM32G4系列通过SPI配置DRV8353S驱动芯片,给了我很大帮助!

🕶 概述

本文主要记录分析各个寄存器 各Bit 的功能含义。
关于寄存器的配置,详见数据手册英文版👉P58 –【8.6.2 Control Registers】👈(中文版PDF位置基本相同)。本文关于寄存器的表格截图均来源于此。
附TI官网数据手册下载链接: drv832x-Eng、drv832x-中文版。

对寄存器操作的基本数据格式:
SPI 输入数据 (SDI) 字有 16-bit,其中 5-bit 命令和 11-bit 数据。 命令位中:读操作(B15) W0 = 1,写操作(B15) W0 = 0;(B14~B11) A3~A0是地址位。
SPI 输出数据 (SDO) 字有 16-bit,其中前 5-bit 是无关位,后 11-bit 是寄存器数据。
drv8323,# STM32电机驱动,stm32,单片机,嵌入式硬件,驱动开发
地址0x00和0x01为只读寄存器,指示故障状态,此处略。对照表格看即可。
接下来对照表格,梳理一下从地址0x02到0x06寄存器的情况。

drv8323,# STM32电机驱动,stm32,单片机,嵌入式硬件,驱动开发

🕶 (address = 0x02) Driver Control Register 驱动控制寄存器 8.6.2.1

寄存器类型:R/W,读或写。
drv8323,# STM32电机驱动,stm32,单片机,嵌入式硬件,驱动开发
drv8323,# STM32电机驱动,stm32,单片机,嵌入式硬件,驱动开发

🌌 Add02 - Bit10 - Reserved

保留位,必须按要求来。
Bit10 - Reserved = 0b。

🌌 Add02 - Bit9 - DIS_CPUV

设置充电荷泵UVLO故障是否开启。
这里选择默认值Bit9 - DIS_CPUV = 0b,开启。

🌌 Add02 - Bit8 - DIS_GDF

设置栅极驱动故障是否开启。
这里选择默认值Bit8 - DIS_GDF = 0b,开启。

🌌 Add02 - Bit7 - OTW_REP

设置nFAULT或FAULT位上是否报告OTW热警告。
这里选择默认值Bit7 - OTW_REP = 0b,不报告。

🌌 Add02 - Bit6+Bit5 - PWM_MODE

设置PWM控制模式。详见👉P30 -【8.3.1.1 PWM Control Modes】👈。
drv8323,# STM32电机驱动,stm32,单片机,嵌入式硬件,驱动开发
这里选择默认值Bit6+Bit5 - PWM_MODE = 00b,采用6x PWM Mode。

🌌 Add02 - Bit4 - 1PWM_COM

选择1x PWM模式时是同步整流还是异步整流。
因为没选1x PWM mode,所以就先保留默认值Bit4 - 1PWM_COM = 0b。

🌌 Add02 - Bit3 - 1PWM_DIR

在1x PWM模式下,此位与INHC(DIR)输入进行“或”运算。
因为没选1x PWM mode,所以就先保留默认值Bit3 - 1PWM_DIR = 0b。

🌌 Add02 - Bit2 - COAST

向该位写入1,使所有MOSFET处于Hi-Z状态(high-impedance,高阻抗状态)。
选择默认值Bit2 - COAST = 0b,不进入高阻抗状态。

🌌 Add02 - Bit1 - BRAKE

以在1x PWM模式下,将1写入该位,导通所有三个低侧MOSFET。该位与INLC(BRAKE)输入进行“或”运算。
选择默认值Bit1 - BRAKE = 0b。

🌌 Add02 - Bit0 - CLR_FLT

将1写入该位以清除锁存的故障位。此位在写入后自动复位。
要用到时再写1清除吧,初始时Bit0 - CLR_FLT = 0b。

🕶 (address = 0x03) Gate Drive HS Register 高桥臂栅极控制寄存器 8.6.2.2

寄存器类型:R/W,读或写。
drv8323,# STM32电机驱动,stm32,单片机,嵌入式硬件,驱动开发
drv8323,# STM32电机驱动,stm32,单片机,嵌入式硬件,驱动开发

🌌 Add03 - Bit10+Bit9+Bit8 - LOCK

写入110b以通过忽略除0x02地址Bit0-2之外的后续寄存器写入来锁定设置。写入110b以外的任何序列在解锁时都没有效果。
将011b写入该寄存器以解锁所有寄存器。写入011b以外的任何序列在锁定时都没有效果。
选择默认值Bit10+Bit9+Bit8 - LOCK = 011b,解锁所有寄存器,因为可能我们还是想在后续寄存器中进行默认以外的配置(我的理解)。

🌌 Add03 - Bit7+Bit6+Bit5+Bit4 - IDRIVEP_HS (IDRIVE-P-HS)

栅极驱动电流IDRIVE-P的选值是基于外部MOSFET的栅极到漏极电荷以及输出端的目标上升和下降时间来选择的。需要结合自己板子上MOSFET管的数据手册中的参数,计算决定。详见👉P65 -【9.2.1.2.2 IDRIVE Configuration】👈。
P对应rise time,N对应fall time。HS对应高侧,LS对应低侧。
drv8323,# STM32电机驱动,stm32,单片机,嵌入式硬件,驱动开发
结合求解,这里选择默认值Bit7+Bit6+Bit5+Bit4 - IDRIVEP_HS = 1111b,IDRIVE-P-HS = 1000 mA。

🌌 Add03 - Bit3+Bit2+Bit1+Bit0 - IDRIVEN_HS (IDRIVE-N-HS)

同前,详见👉P65 -【9.2.1.2.2 IDRIVE Configuration】👈。
P对应rise time,N对应fall time。HS对应高侧,LS对应低侧。
结合求解,这里选择默认值Bit3+Bit2+Bit1+Bit0 - IDRIVEN_HS = 1111b,IDRIVE-N-HS = 2000 mA。

🕶 (address = 0x04) Gate Drive LS Register 低桥臂栅极控制寄存器8.6.2.3

寄存器类型:R/W,读或写。
drv8323,# STM32电机驱动,stm32,单片机,嵌入式硬件,驱动开发
drv8323,# STM32电机驱动,stm32,单片机,嵌入式硬件,驱动开发

🌌 Add04 - Bit10 - CBC

逐周期运行。在重试OCP_MODE中,对于VDS_OCP和SEN_OCP,当给出PWM输入时,故障会自动清除。
参考默认值,Bit10 - CBC = 1b。

🌌 Add04 - Bit9+Bit8 - TDRIVE (Gate Driver Fault, GDF)

详见👉P49 -【8.3.6.5 Gate Diver Fault (GDF)】👈。
如果tDRIVE 时间后外部MOSFET栅极上的电压没有进行相应的增减变化,则会视为栅极驱动器故障。(个人推测这个没有变化的意思可能是和控制信号结合起来来看的,否则单纯的tDRIVE 时间内不变就故障对PWM的频率要求得太高了点。)
参考默认值,Bit9+Bit8 - TDRIVE = 11b,tDRIVE = 4000ns。

🌌 Add04 - Bit7+Bit6+Bit5+Bit4 - IDRIVEP_LS (IDRIVE-P-LS)

同前一地址寄存器Gate Drive HS说明,详见👉P65 -【9.2.1.2.2 IDRIVE Configuration】👈。
P对应rise time,N对应fall time。HS对应高侧,LS对应低侧。

结合求解,这里选择默认值Bit7+Bit6+Bit5+Bit4 - IDRIVEP_LS = 1111b,IDRIVE-P-LS = 1000 mA。

🌌 Add04 - Bit3+Bit2+Bit1+Bit0 - IDRIVEN_LS (IDRIVE-N-LS)

同前,详见👉P65 -【9.2.1.2.2 IDRIVE Configuration】👈。
P对应rise time,N对应fall time。HS对应高侧,LS对应低侧。
结合求解,这里选择默认值Bit3+Bit2+Bit1+Bit0 - IDRIVEN_LS = 1111b,IDRIVE-N-HS = 2000 mA。

🕶 (address = 0x05) OCP Control Register 过流保护控制寄存器 8.6.2.4

寄存器类型:R/W,读或写。有关于MOS管VDS 过流保护的功能。👉对应数据手册:P48 -【8.3.6.3 MOSFET V_DS Overcurrent Protection (VDS_OCP)】👈。

drv8323,# STM32电机驱动,stm32,单片机,嵌入式硬件,驱动开发
drv8323,# STM32电机驱动,stm32,单片机,嵌入式硬件,驱动开发

🌌 Add05 - Bit10 - TRETRY

设置overcurrent retry time过流保护重试时间,经过tRETRY 时间后自动重试。👉对应数据手册:P48 -【8.3.6.3.2 V_DS Automatic Retry】& P49 -【8.3.6.4.2 V_SENSE Automatic Retry】👈。
具体是VDS还是VSENSE模式,取决了下一part地址0x06的CSA控制寄存器中,Bit 10-CSA_FET和8-LS_REF的设置。

这里参考默认值,Bit10 - TRETRY = 0b,使 tRETRY = 4 ms。

🌌 Add05 - Bit9+Bit8 - DEAD_TIME

详见👉 P36 -【8.3.1.4.2】👈。死区时间是外部高侧MOSFET和低侧MOSFET切换之间的一段时间,以确保它们不会交叉导通并导致击穿。
需要结合自己板子上选用的MOSFET管开通和关断的 tdelay-on、tdelay-off、trise、tfall 具体值来选定。
我这里选择 Bit9+Bit8 - DEAD_TIME = 10b,使 tdead = 200 ns。

🌌 Add05 - Bit7+Bit6 - OCP_MODE

详见👉 P48 -【8.3.6.3 MOSFET VDS Overcurrent Protection】 & P49 -【8.3.6.4 VSENSE Overcurrent Protection】👈。选择VSENSE过流保护的几种工作模式。OCP_MODE位可以在四种不同模式下操作:VDS锁存关闭、VDS自动重试、仅VDS报告和VDS禁用。
这里选择默认值,Bit7+Bit6 - OCP_MODE = 01b,自动重试的模式。

🌌 Add05 - Bit5+Bit4 - OCP_DEG

详见👉P48 -【8.3.6.3 MOSFET VDS Overcurrent Protection】 & P49 -【8.3.6.4 VSENSE Overcurrent Protection】👈。设定VDS或VSENSE过流保护的deglitch time 去阈值时间 tOCP_DEG
栅极驱动器实现可调VDS电压监测器,以检测外部功率MOSFET上的过电流或短路情况。当监测到的电压大于VDS跳闸点(VVDS_OCP)的时间超过去阈值时间(tOCP)时,检测到过电流情况,并根据设备VDS故障模式采取行动。
这里选择默认值,Bit5+Bit4 - OCP_DEG = 01b, tOCP_DEG = 4us。

🌌 Add05 - Bit3+Bit2+Bit1+Bit0 - VDS_LVL (VVDS_OCP)

内容与下一小节,Bit1+Bit0 - SEN_LVL 的设定类似。详见👉P48 -【8.3.6.3 MOSFET VDS Overcurrent Protection】👈和👉P16 - 表格中的VDS overcurrent trip voltage (VDS 过流跳闸电压) 项👈。在SPI设备上,通过VDS_LVL设置VDS过流保护触发电压阈值VDS_OCP
如果启用的MOSFET两端的电压超过VVDS_OCP阈值的时间长于tOCP_DEG去阈值时间,则识别VDS_OCP事件,并根据OCP_MODE位执行操作。
这里选择默认值,Bit3+Bit2+Bit1+Bit0 - VDS_LVL = 1001b, VVDS_OCP = 0.75V。

🕶 (address = 0x06) CSA Control Register 电流检测放大器控制寄存器8.6.2.5

drv8323,# STM32电机驱动,stm32,单片机,嵌入式硬件,驱动开发
drv8323,# STM32电机驱动,stm32,单片机,嵌入式硬件,驱动开发
有关于低侧MOSFET管处电流检测放大器的功能与设置。详见👉P41 -【8.3.4 Low-Side Current Sense Amplifiers】👈。(此处暂留个小小的疑问:为什么是在低侧桥臂测,而不是高侧处?)

🌌 Add06 - Bit10 - CSA_FET (Current Sense Amplifier)

CSA电流检测放大器的模式设置,测流经电阻RSENSE的电流,或测VDS的电流。详见👉P44 -【8.3.4.4 MOSFET VDS Sense Mode】👈。这里截图中对于此Bit 的说明和中文版略有区别,但应该表达意思不变。Bit10 与 Bit8关联。
CSA_FET = 1b,LS = 1b,采用VDS测量模式,如右图所示。
CSA_FET = 0b,LS = 0b,采用RSENSE测量模式,如左图所示。
drv8323,# STM32电机驱动,stm32,单片机,嵌入式硬件,驱动开发
这里我选择Bit10 - CSA_FET = 0b,Bit8 - LS = 0b,采用RSENSE测量模式。

🌌 Add06 - Bit9 - VREF_DIV

关于是否加入偏执电压VREF / 2的选择。即是说,选择对于Bit10里的RSENSE测量模式,是进行双向电流检测操作,还是进行单向电流检测操作,具体详见👉P41 -【8.3.4.1 Bidirectional Current Sense Operation】&【8.3.4.2 Unidirectional Current Sense Operation】👈。两者区别在电路图左下角。
VREF_DIV = 1b,采用双向电流检测模式。可以测量反向电流。
drv8323,# STM32电机驱动,stm32,单片机,嵌入式硬件,驱动开发
VREF_DIV = 0b,采用单向电流检测模式。只能测量正向电流。
drv8323,# STM32电机驱动,stm32,单片机,嵌入式硬件,驱动开发
这里我选择Bit9 - VREF_DIV = 1b,采用双向电流检测模式。

🌌 Add06 - Bit8 - LS_REF

分析同前Bit10 处。

🌌 Add06 - Bit7+Bit6 - CSA_GAIN

选择current sense amplifier gain电流检测放大器增益。前述👉P41 -【8.3.4.1 Bidirectional Current Sense Operation】&【8.3.4.2 Unidirectional Current Sense Operation】👈中,公式里的GCSA的设定。
这里选择默认值Bit7+Bit6 - CSA_GAIN = 10b。

🌌 Add06 - Bit5 - DIS_SEN

感应电流故障是否启用。
这里选择默认值Bit5 - DIS_SEN = 0b,启用感应电流故障。

🌌 Add06 - Bit4 - CSA_CAL_A (Current Sense Amplifier A_Calibration)

选择是否开启自动偏移校准功能,详见👉P44 -【8.3.4.3 Auto Offset Calibration】👈。
为了最大限度地减少DC偏移,DRV8323和DRV8323R设备可以通过SPI寄存器(CSA_CAL_X)或CAL引脚执行自动偏移校准。启用校准后,放大器的输入短路,负载断开,放大器的增益(GCSA)更改为40 V/V设置。然后,放大器执行自动微调程序,以使输入偏移最小化。 启用校准后,自动微调程序需要100µs才能完成。 在此时间之后,如果需要由外部控制器进行进一步的偏移校准,则放大器的输入保持短路,负载保持断开,并且增益保持在40V/V。要完成偏移校准,应将CSA_CAL_X寄存器或CAL引脚调回到低位。
根据描述,想要在程序一开始完成A、B、C引脚的校准,因此先设为1b,至少等100µs校准结束后,再设0b。这里手册里似乎没有明说能不能三个脚同时校准,保险起见可以先后来一波100b、010b、001b、000b来完成,讲道理三个放大器独立,应该可以直接111b、000b一起校准。
如果不用校准,直接选择默认值Bit4 - CSA_CAL_A = 0b,不开自动偏移校准即可。

🌌 Add06 - Bit3 - CSA_CAL_B (Current Sense Amplifier B_Calibration)

同上。如果不用校准,直接选择默认值Bit3 - CSA_CAL_B = 0b。

🌌 Add06 - Bit2 - CSA_CAL_C (Current Sense Amplifier C_Calibration)

同上。如果不用校准,直接选择默认值Bit2 - CSA_CAL_C = 0b。

🌌 Add06 - Bit1+Bit0 - SEN_LVL

在SPI设备上,通过SEN_LVL设置VSENSE过流保护触发电压阈值VSEN_OCP,具体如表所示。VSENSE过流保护详见👉P49 -【8.3.6.4 VSENSE Overcurrent Protection】👈。
drv8323,# STM32电机驱动,stm32,单片机,嵌入式硬件,驱动开发
这里选择默认值Bit1+Bit0 - SEN_LVL = 11b,VSEN_OCP = 1V。文章来源地址https://www.toymoban.com/news/detail-783219.html

到了这里,关于【DRV8323】电机驱动芯片寄存器配置指南,通过STM32F407的SPI通信配置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 荔枝派zero驱动开发04:GPIO操作(寄存器方式)

    参考:https://wiki.sipeed.com/soft/Lichee/zh/Zero-Doc/Drive/GPIO_mmap.html 上一篇:荔枝派zero驱动开发03:设备树基础 下一篇:荔枝派zero驱动开发05:GPIO操作(使用GPIO子系统) :ioremap/iounmap,copy_from_user/copy_to_user,readl/writel 设备树修改: 本文不涉及设备树操作,但由于默认设备树

    2024年01月20日
    浏览(22)
  • 【正点原子STM32】RTC实时时钟(RTC方案、BCD码、时间戳、RTC相关寄存器和HAL库驱动、RTC基本配置步骤、RTC基本驱动步骤、时间设置和读取、RTC闹钟配置和RTC周期性自动唤醒配置)

    一、RTC简介 二、STM32 RTC框图介绍 2.1、STM32 F1 RTC结构框图 2.2、STM32 F4 / F7 / H7 RTC结构框图 三、RTC相关寄存器介绍 3.1、RTC基本配置步骤 3.2、RTC相关寄存器(F1) 3.3、RTC相关寄存器(F4 / F7 / H7) 四、RTC相关HAL库驱动介绍 4.1、RTC相关HAL库驱动(F1) 4.2、RTC相关HAL库驱动(F4 / F7 /

    2024年03月27日
    浏览(34)
  • 【FPGA零基础学习之旅#12】三线制数码管驱动(74HC595)串行移位寄存器驱动

    🎉欢迎来到FPGA专栏~三线制数码管驱动 ☆* o(≧▽≦)o *☆ 嗨 ~我是 小夏与酒 🍹 ✨ 博客主页: 小夏与酒的博客 🎈该系列 文章专栏: FPGA学习之旅 文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏 📜 欢迎大家关注! ❤️ 🥝 ISSP调试演示: 程序配置完成:

    2024年02月09日
    浏览(12)
  • 【Linux 设备驱动系列 4 -- 设备树 64bit 寄存器 reg 属性描述 】

    address-cells:address要用多少个32位数来表示; size-cells:size 要用多少个32位数来表示。 32bit 寄存器 reg 属性描述 在 Linux 设备树(Device Tree)语法中,\\\" reg \\\"和\\\" reg-names \\\"属性是用于描述设备资源的主要属性。 \\\" reg \\\"属性用于描述设备的物理地址和大小。它是一个32位或64位的整数数

    2024年02月16日
    浏览(22)
  • STM32 寄存器配置笔记——GPIO配置输出

           本文主要介绍GPIO 作为输出时的寄存器配置。包括时钟配置,输出模式配置。以STM32F10xxx系列为例,配置PA8、PD2端口作为输出,输出高/低电平。         1)GPIO外设时钟          通过查找STM32F10xxx中文参考手册得知,GPIO PORT口的时钟配置在RCC_APB2ENR寄存器的第2~6位,

    2024年01月24日
    浏览(28)
  • Linux音频问题——codec寄存器配置

    起初,在1992年推出了OSS框架,用于在Unix操作系统中处理音频信号。直至于1998年Gravis Ultrasound所开发的ALSA驱动,ALSA此时一直作为一个单独的软件包开发,LINUX内核一直使用的OSS框架。直到2002年开始,Linux内核2.5版本引进,2.6版本成为Linux内核中默认的标准音频驱动程序集,O

    2024年01月20日
    浏览(17)
  • FPGA的配置状态字寄存器Status Register

    目录 简介 状态字定义       Unknown Device/Many Unknow Devices 解决办法 一般原因  Xilinx的FPGA有多种配置接口,如SPI,BPI,SeletMAP,Serial,JTAG等;如果从时钟发送者的角度分,还可以分为主动Master(即由FPGA自己发送配置时钟信号CCLK)和被动Slave(即由外部器件提供配置所需要的时

    2024年04月25日
    浏览(16)
  • STM32 寄存器配置笔记——USART配置中断接收乒乓缓存处理

           本文主要介绍如何配置USART接收中断,使用乒乓缓存的设计接收数据并将其回显在PC 串口工具上。以stm32f10为例,配置USART1 9600波特率。具体配置参考上一章节STM32 寄存器配置笔记——USART配置 打印。         乒乓缓存的设计应用场景:当后面的处理单元在工作期间,

    2024年02月20日
    浏览(27)
  • PAJ7620U2手势识别——配置手势数据寄存器(6)

      我们已经把所有操作寄存器配置好了,接下来就可以读取手势数据了。本章教程会带领各位读者完成对手势数据寄存器的配置,内容比较简单。   结合官方数据手册:   我们读取0x43或者0x44寄存器内的数据,挥手动作将会被这两个寄存器捕捉到,捕捉完成后读取即可

    2024年02月10日
    浏览(19)
  • 【STM32学习】定时器寄存器配置、功能工作过程详解

    STM32-定时器详解 STM32个人笔记-定时器 本文针对STM32F103系列单片机的定时器进行介绍。 主要是其常用功能的工作流程、以及寄存器的对应配置。 该图清晰的表明了各种定时器的参数与功能。其中,基础定时器基本上就只有最简单的计数到了然后触发中断的功能;通用和高级定

    2024年02月15日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包