STM32配置TMC5160的stallguard堵转检测

2024-03-14 17:10

本文主要是介绍STM32配置TMC5160的stallguard堵转检测,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • STM32配置
    • TMC5160关键寄存器
      • 1.基础寄存器配置:
      • 2.stallguard相关寄存器配置
    • Stallguard灵敏度调节
    • 相关代码
    • 小结

STM32配置

是用STM32CUBEMX配置HAL库

TMC5160可以是用单线UART或者全双工的SPI进行通信,为了便于观察和代码copy,我选择是用spi通信,以下是stm32的配置:
在这里插入图片描述
可以不用选择USART1和USART2,这里配置主要是为了是用单线UART通信,不是本文重点。

关于时钟树的配置可以按照自己的开发版进行配置。
在这里插入图片描述
我是用CLION进行开发,具体配置可以参考稚晖君的教程:https://zhuanlan.zhihu.com/p/145801160

TMC5160关键寄存器

关键:多读数据手册

1.基础寄存器配置:

  • GCONF寄存器配置基本的运动模式和方向:个人配置0x000000E4在这里插入图片描述
    在这里插入图片描述

  • CHOPCONF寄存器斩波器配置,个人配置0x000000E4
    在这里插入图片描述
    在这里插入图片描述

  • IHOLE_IRUN寄存器配置运行电流和保持电流:个人配置0x00060100。此寄存器与stallguard的灵敏度有关。
    在这里插入图片描述

2.stallguard相关寄存器配置

  • TCOOLTHRS寄存器,使能CoolStep和StallGuard2功能的下限速度,到达此值电机停止并保持。个人配置0x00000FEC
    在这里插入图片描述
  • SW_MODE寄存器的第十位sg_stop启用STALLGUARD 2功能。0x00000400在这里插入图片描述* COOLCONF的16bit-22bit 用于设置灵敏度。在这里插入图片描述
  • DRV_STATUS寄存器的SG_RESULT:StallGuard2值和用于监测电机所剩的扭力。
    在这里插入图片描述
  • 速度相关寄存器:RAMPMODE用于选择位置/速度模式,以及速度和加速度相关的寄存器功能如折线图所示。
    在这里插入图片描述
    在这里插入图片描述

Stallguard灵敏度调节

要根据自己的电机做改动

相关寄存器:

  • IHOLD_IRUN:IRUN的电流大小也和灵敏度相关,为正相关。
  • COOLCONF:sgt0到sgt6是有符号位的灵敏度控制器,通过调整寄存器大小改变灵敏度
  • TSTEP:监测此寄存器,如果读取值为0则说明灵敏度过小。

相关代码

  tmc5160_writeInt(&tmc5160, TMC5160_GCONF, 0x000000E4);tmc5160_writeInt(&tmc5160, TMC5160_CHOPCONF, 0x000000E4);tmc5160_writeInt(&tmc5160, TMC5160_IHOLD_IRUN, 0x00060100);tmc5160_writeInt(&tmc5160, TMC5160_AMAX, 0x0001FFFF);tmc5160_writeInt(&tmc5160, TMC5160_VMAX, 0x004FF00);tmc5160_writeInt(&tmc5160, TMC5160_SWMODE, 0x00000400);tmc5160_writeInt(&tmc5160, TMC5160_COOLCONF, 0x00900000);tmc5160_writeInt(&tmc5160, TMC5160_TCOOLTHRS, 0x00000FEC);tmc5160_writeInt(&tmc5160, TMC5160_RAMPMODE,0x00000001);while (1){tmc5160_readInt(&tmc5160, TMC5160_TSTEP);HAL_Delay(200);}
// Write an integer to the given address
void tmc5160_writeInt(TMC5160TypeDef *tmc5160, uint8_t address, int32_t value)
{tmc5160_writeDatagram(tmc5160, address, BYTE(value, 3), BYTE(value, 2), BYTE(value, 1), BYTE(value, 0));
}
// Writes (x1 << 24) | (x2 << 16) | (x3 << 8) | x4 to the given address
void tmc5160_writeDatagram(TMC5160TypeDef *tmc5160, uint8_t address, uint8_t x1, uint8_t x2, uint8_t x3, uint8_t x4)
{uint8_t data[5] = { address | TMC5160_WRITE_BIT, x1, x2, x3, x4 };uint8_t receive[5];tmc5160_readWriteArray(data, receive, 5, 1);int32_t value = ((uint32_t)x1 << 24) | ((uint32_t)x2 << 16) | (x3 << 8) | x4;// Write to the shadow register and mark the register dirtyaddress = TMC_ADDRESS(address);tmc5160->config->shadowRegister[address] = value;tmc5160->registerAccess[address] |= TMC_ACCESS_DIRTY;
}
HAL_StatusTypeDef tmc5160_readWriteArray(uint8_t *transmit, uint8_t *receive, size_t size, uint8_t timeout)
{// Declare the status variableHAL_StatusTypeDef status;// Select the TMC5160 channel (if using multiple devices)// This usually involves setting a GPIO pin to select the correct device.HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7, GPIO_PIN_RESET); // Select device// Transmit and receive data via SPIstatus = HAL_SPI_TransmitReceive(&hspi1, transmit, receive, size, timeout);// Deselect the TMC5160 channelHAL_GPIO_WritePin(GPIOB, GPIO_PIN_7, GPIO_PIN_SET); // Deselect devicereturn status;
}

实际上就是套了好几层函数,底层还是是用HAL库的SPI收发函数实现。

小结

!!!!!!!!仔细读数据手册真的很重要!!!!!!!!!

完整的代码在github仓库:https://github.com/Tianli-Wang/TMC5160-Stallguard

这篇关于STM32配置TMC5160的stallguard堵转检测的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/809102

相关文章

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

CentOS7安装配置mysql5.7 tar免安装版

一、CentOS7.4系统自带mariadb # 查看系统自带的Mariadb[root@localhost~]# rpm -qa|grep mariadbmariadb-libs-5.5.44-2.el7.centos.x86_64# 卸载系统自带的Mariadb[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.44-2.el7

hadoop开启回收站配置

开启回收站功能,可以将删除的文件在不超时的情况下,恢复原数据,起到防止误删除、备份等作用。 开启回收站功能参数说明 (1)默认值fs.trash.interval = 0,0表示禁用回收站;其他值表示设置文件的存活时间。 (2)默认值fs.trash.checkpoint.interval = 0,检查回收站的间隔时间。如果该值为0,则该值设置和fs.trash.interval的参数值相等。

NameNode内存生产配置

Hadoop2.x 系列,配置 NameNode 内存 NameNode 内存默认 2000m ,如果服务器内存 4G , NameNode 内存可以配置 3g 。在 hadoop-env.sh 文件中配置如下。 HADOOP_NAMENODE_OPTS=-Xmx3072m Hadoop3.x 系列,配置 Nam

wolfSSL参数设置或配置项解释

1. wolfCrypt Only 解释:wolfCrypt是一个开源的、轻量级的、可移植的加密库,支持多种加密算法和协议。选择“wolfCrypt Only”意味着系统或应用将仅使用wolfCrypt库进行加密操作,而不依赖其他加密库。 2. DTLS Support 解释:DTLS(Datagram Transport Layer Security)是一种基于UDP的安全协议,提供类似于

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

烟火目标检测数据集 7800张 烟火检测 带标注 voc yolo

一个包含7800张带标注图像的数据集,专门用于烟火目标检测,是一个非常有价值的资源,尤其对于那些致力于公共安全、事件管理和烟花表演监控等领域的人士而言。下面是对此数据集的一个详细介绍: 数据集名称:烟火目标检测数据集 数据集规模: 图片数量:7800张类别:主要包含烟火类目标,可能还包括其他相关类别,如烟火发射装置、背景等。格式:图像文件通常为JPEG或PNG格式;标注文件可能为X

【STM32】SPI通信-软件与硬件读写SPI

SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介2、硬件电路3、W25Q64框图4、Flash操作注意事项软件SPI读写W2

基于 YOLOv5 的积水检测系统:打造高效智能的智慧城市应用

在城市发展中,积水问题日益严重,特别是在大雨过后,积水往往会影响交通甚至威胁人们的安全。通过现代计算机视觉技术,我们能够智能化地检测和识别积水区域,减少潜在危险。本文将介绍如何使用 YOLOv5 和 PyQt5 搭建一个积水检测系统,结合深度学习和直观的图形界面,为用户提供高效的解决方案。 源码地址: PyQt5+YoloV5 实现积水检测系统 预览: 项目背景