基于S32K144驱动NSD8381 文章目录1.前言2.芯片介绍2.1 芯片简介2.2 硬件特性2.3 软件特性3.测试环境3.1 工具3.2 架构4.软件驱动4.1 SPI4.2 CTRL引脚4.3 寄存器4.4 双极性步进电机驱动流程5.测试情况6.参考资料1.前言最近有些做电磁阀和调光大灯的客户需要寻找国产的双极性步进电机驱动笔者给客户推荐了纳芯微的NSD8381。由于是第一次接触这类芯片笔者找原厂申请了NSD8381开发板搭配淘宝买的电机以及S32K144EVB简单进行了软件调试便于更好的了解该芯片。2.芯片介绍2.1 芯片简介NSD8381是纳芯微主推的双极性步进电机驱动目标应用有汽车调光电机HUD角度调整电机驱动器、电磁阀等。该芯片最高支持1/32微步的双极性步进电机驱动让电机更平滑的运动。最大驱动电流1.35A。此外该设备还具备SPI接口用于控制输出电流以及设置堵转保护并提供诊断信息。2.2 硬件特性可以根据需要配置为双极性步进驱动模式或双H桥模式或四半桥模式以支持不同的负载。4.5V至36V的宽工作电压范围,支持最大1.35A的可编程电流。逻辑输入引脚 (CTRL1/2/3/4): 可编程用于步进模式的STEP/DIR/HOLD输入或直接半桥控制。故障指示输出 (DOUT1/DOUT2): 根据SPI设置可用作故障指示或内部PWM信号输出。支持过温过流保护以及开路堵转检测。提供VQFN40和VQFN32两种封装。2.3 软件特性SPI接口24bit/帧、4MHz的SPI接口进行配置和通信。寄存器配置具有丰富的寄存器配置选项包括电流设定、步进模式选择、输出阶段配置等。故障诊断可以通过SPI读取和清除故障状态包括过流、过温等。电流调节内置PWM控制器和电流控制环实现精确的电流调节。步进模式支持全步、半步、1/4步、1/8微步、1/16微步和1/32微步等多种步进模式。3.测试环境3.1 工具测试需要的工具为NSD8381官方demo板S32K144EVB-Q100三拓Nema14混合式35HS步进电机3.2 架构整个测试电路的架构和NSD8381的推荐电路图一致如下所示NSD8381官方demo板有两种封装和S32K144EVB以及步进电机的引脚连接如下图所示4.软件驱动4.1 SPINSD8381的SPI接口要求如下图NSD8381通过SPI接收的一帧数据为24bit组成部分如下MCU发给NSD8381的帧结构注意最低bit是奇数校验用来确保一帧SPI数据中值为1的数量为奇数。具体计算方式为计算SPI一帧中bit23到bit1的值为1的数量如果总数为偶数bit0赋值为1.否则赋值为0。官方驱动提供的奇位校验代码如下voidParity_check(uint8_t(*num)){uint8_ti,j,k;//uint32_t result;k0;for(j0;j3;j){for(i0;i8;i){k(uint8_t)(((uint8_t)(*(numj)i))0x01);}}if((k0x01)0){*(num2)*(num2)1;}}NSD8381返回给MCU的帧结构其中Global status byte的详细说明如下表S32K144的SPI外设配置如下这里选择8bits/frames是因为S32K144的RTD3.0不支持24bits/frame,填写24bits/frame会导致SPI数据发不出来。勾选pcs连续是因为NSD8381数据手册要求PCS的高电平持续时间最小为6us。如果不勾选会导致发送的三个字节数据之间的pcs有拉高操作NSD8381会回复SPI ERR。SPI发送函数定义如下使用3个元素的8bit数组存放数据4.2 CTRL引脚NSD8381的CTRL引脚的功能如下使用双极性步进电机驱动模式时推荐CTRL1用作步进输入CTRL2用作方向控制详细说明参考NSD8381数据手册。对CTR1引脚进行PWM输入的配置如下:这里PWM初始化时设置的MOD值为4000后续更改PWM频率时要确定CNT值大于4000否则会导致PWM引脚一直输出高电平。4.3 寄存器上图为NSD8381的寄存器主要有如下几种状态寄存器 (Status Registers)STA_1 (0x01): 包含电源、过温、开路负载、过流和堵转等状态标志。例如OC位(D3)表示过流状态STALL位(D2)表示堵转状态。STA_2 (0x02): 包含各半桥臂的过流状态、开路负载状态、BEMF电压转换超出上限和下限的状态标志。控制寄存器 (Control Registers)CONFIG_1 (0x03): 控制充电泵和电流调节的PWM频率以及模拟输出选择。例如CP_SS位(D15)控制充电泵频率是否固定PWM_SS位(D14)控制电流调节PWM频率是否固定。CONFIG_2 (0x04): 配置DOUT1和DOUT2的功能选择。例如DOUT1_SEL[1:0]位(D11-D10)选择DOUT1引脚的功能。CONFIG_3 (0x05): 控制驱动使能、HOLD模式、步进模式和方向控制。例如DRV_EN位(D15)控制输出阶段是否使能。CONFIG_4 (0x06): 设置PWM频率、滤波时间、斜率选择和衰减模式。例如PWM_FREQ_SEL[1:0]位(D15-D14)选择电流调节PWM的频率。CONFIG_5 (0x07): 控制BEMF电压转换功能、延迟时间和堵转检测。例如CV_EN位(D15)使能BEMF电压转换功能。CONFIG_6 (0x08): 设置正常运行模式和HOLD模式下的全尺寸电流。例如IFSH[3:0]位(D15-D12)设置HOLD模式下的全尺寸电流。CONFIG_7 (0x10): 控制半桥的HIZ状态、版本信息、设备ID和UTWARN标志。例如OUTA1_HIZ位(D15)控制半桥OUTA1是否置为高阻态。CONFIG_8 (0x11): 控制充电泵频率、HOLD模式功能、过流保护滤波时间等。例如CP_SS_CONFIG位(D15)选择充电泵的频谱扩展调制频率。CONFIG_9 (0x12): 提供CONFIG_8寄存器的锁定/解锁控制。例如UNLOCK位(D1)用于解锁CONFIG_8寄存器的特定位允许写入操作。BEMF电压转换寄存器 (BEMF Voltage Conversion Registers)CVA, CVB, CVC, CVD (0x09 to 0x0C): 存储在不同相位计数器位置下的BEMF电压转换的数字值。这些寄存器的值用于堵转检测和电机性能分析。低限和高限寄存器 (Low and High Limit Registers)CVLLB (0x0D): 设置BEMF电压低限B阈值。CVLLA (0x0E): 设置BEMF电压低限A阈值。CVUL (0x0F): 设置BEMF电压高限阈值。寄存器地址对应的代码如下voidNSD8381drv_Init(void){uint8_ti;for(i0U;i3U;i){STA1Reg[i]0U;STA2Reg[i]0U;CONFIG1Reg[i]0U;CONFIG2Reg[i]0U;CONFIG3Reg[i]0U;CONFIG4Reg[i]0U;CONFIG5Reg[i]0U;CONFIG6Reg[i]0U;CONFIG7Reg[i]0U;CONFIG8Reg[i]0U;CONFIG9Reg[i]0U;MCVAReg[i]0U;MCVBReg[i]0U;MCVCReg[i]0U;MCVDReg[i]0U;MCVReg[i]0u;MCVLLBReg[i]0U;MCVLLAReg[i]0U;MCVULReg[i]0U;CtrlReg_Result[i]0U;StatReg_Result[i]0U;CtrlallReg[i]0U;ClearAllSReg[i]0U;ClearSTA1Reg[i]0U;ClearSTA2Reg[i]0U;}// register addressSTA1Reg[0](uint8_t)(0x01U);STA2Reg[0](uint8_t)(0x02U);CONFIG1Reg[0](uint8_t)(0x03U);CONFIG2Reg[0](uint8_t)(0x04U);CONFIG3Reg[0](uint8_t)(0x05U);CONFIG4Reg[0](uint8_t)(0x06U);CONFIG5Reg[0](uint8_t)(0x07U);CONFIG6Reg[0](uint8_t)(0x08U);MCVAReg[0](uint8_t)(0x09U);MCVBReg[0](uint8_t)(0x0AU);MCVCReg[0](uint8_t)(0x0BU);MCVDReg[0](uint8_t)(0x0CU);MCVLLBReg[0](uint8_t)(0x0DU);MCVLLAReg[0](uint8_t)(0x0EU);MCVULReg[0](uint8_t)(0x0FU);CONFIG7Reg[0](uint8_t)(0x10U);CONFIG8Reg[0](uint8_t)(0x11U);CONFIG9Reg[0](uint8_t)(0x12U);}4.4 双极性步进电机驱动流程NSD8381用作双极性步进电机驱动时的驱动流程图如下这部分的流程代码如下未包含堵转检测功能如果想使用堵转检测功能请查看文末的参考资料。5.测试情况最终完整的工程功能为按键按键SW2执行NSD8381初始化流程并且CTRL1输入的PWM频率为250Hz。按下按键SW3改变CTRL2输入的PWM波频率每次增加250Hz如果超过1000Hz恢复到250Hz。SPI发送的数据波形如下图其中黄色为CLK波形紫色为数据波形蓝色为片选波形。测试时的串口打印信息如下测试的视频如下NSD8381工程已放到百度网盘链接如下链接: https://pan.baidu.com/s/1K2bTEg-X7n8COv5maCWSlQ提取码: vg2w6.参考资料数据手册https://www.novosns.com/Public/Uploads/uploadfile/files/20240618/NSD8381Datasheet_version_Rev1.0.pdf步进电机驱动NSD8381调试指南https://www.novosns.com/technical-articles-385