
STM32
文章平均质量分 87
江湖上都叫我秋博
这个作者很懒,什么都没留下…
展开
-
STM32_FOC_4_如何获得Park变换中的θ角-即电机的电角度_Plus
STM32_FOC_2_如何获得Park变换中的θ角-即电机的电角度_heqiunong的博客-CSDN博客前面我们谈到,寻找零电角度对应的编码器偏置量,然后用这个零电角度的编码器偏置量和编码器读数来实时的计算电角度。这个方法有两个缺点,第一:当系统已经安装了负载,零电角度定位不准确。第二:多极对电机存在多个电角度周期,存在多个零电角度的位置。因此通过和CSDN的伺服驱动大佬讨论,得到了另一个方案。就是找到编码器”零位“对应的电角度,利用编码器”零位“的电角度的偏置量,和编码器读数,来实时计算电角度。具体的原创 2022-06-01 09:20:51 · 5304 阅读 · 24 评论 -
STM32_FOC_3_标定零电角度对应的编码器读数
1. 整体流程1、令iq = 0, id = 合适值,假设电角度θ = 02、park逆变换求得iα和iβ3、确定扇区4、计算中间变量 X Y Z5、根据扇区和中间变量得到 t_1st 和 t_2nd6、当t_1st + t_2nd > Ts 进行 过调制处理。7、根据扇区和t_1st 和 t_2st,得到Tcm1 Tcm2 Tcm38、根据Tcm1 Tcm2 Tcm3设置PWM对应三个通道的比较值说白了,就是要实现电流环的固定输入的开环控制。2.STM32C.原创 2022-05-30 09:48:32 · 4993 阅读 · 4 评论 -
STM32_FOC_2_如何获得Park变换中的θ角-即电机的电角度
永磁同步电机一般都会安装编码器测量电机的机械角度。我们一般通过编码器测量的机械角度来计算电机的电角度。第一步:如何获得电机在电角度为0°时,编码器读数令,iq = 0, id = 一个合适值(比如1),假设电角度θ = 0,通过park逆变换求得iα和iβ,通过后续操作,最终能够控制电机,使得电机能够稳定到某一个角度,此时记录编码器的值,对应的就是零电角度偏置值,EncoderOffset。更直白一点,A相给高电平,B C给低电平。前辈讲的:对于大型的电机而言,上述的方法是可行的,id给一个额定原创 2022-05-30 09:34:22 · 7949 阅读 · 15 评论 -
STM32_FOC_1_Clarke变换计算iα和iβ为何仅用ia ib两相电流
Clarke变换是abc三相静止坐标系转换到αβ两相静止坐标系。如上图所示,利用投影的方法,很容易得到abc坐标系 和 αβ坐标系的【几何关系】但如果要得到 abc坐标系 和 αβ坐标系 【电流/电压的关系】, 还需要乘一个系数,为什么要成这个系数呢?就是为了保证 在abc坐标系下三相电流/电压合成的矢量的幅值 与 αβ坐标系两相电流/电压合成的矢量的幅值 相等, 需要乘一个系数 2/3,这样的Clarke变换叫做 等幅值变换/恒幅值变换。// Mark ,此部分理解并不深刻。参考:Cla.原创 2022-05-30 09:25:47 · 2318 阅读 · 0 评论 -
STM32_ADC模块及针对芯片MAX40056FAUA/V+的使用
1 STM32CubeMx配置1.1 整体配置1.2 补充图1.3 通道排序以及设置采样周期我的理解是每个ADC模块,同一时刻只能转换一个通道的模拟电压为数字电压。那么如果我用来ADC模块16个通道其中的3个,或者更多。 那么我们不能同一时刻把3个通道的模拟电压都转换了。 而是一个一个的转换,这就涉及到一个排序和采样周期。 电机的三相电流没有说非要固定的顺序什么的,我们就根据通道由小到大来排序,即Channel 0,Channel 2, Channel 3. (那有人就会想为..原创 2022-05-20 11:08:29 · 764 阅读 · 0 评论 -
STM32_iC-MHM磁编码器使用
看代码直接到最后的第六章,前面都是流水账笔记1、前言讲道理,iC-MHM这个是型号,我当时误以为硬件组的同事偷懒了,因为这个型号不带任何数字什么的,看着不像是一个芯片的型号。 结果我拿着这个型号去搜索,还真搜索到了。iC-Haus Homepage - product: iC-MHM (ichaus.de)老规矩,拿到datasheet,先看看功能介绍,特性等。然后拉通看看根据原理图可知, STM32主芯片与iC-MHM芯片的通信采用的是 SPI通信接口,所以主要关注SPI接口。..原创 2022-05-19 10:30:55 · 3598 阅读 · 8 评论 -
STM32_SPI通信_与传感器芯片通信的SPI优化之路
先讲个题外话,仅用于笔记,可跳过,问题:系统断电复位,方位轴ICM-26090芯片的数据常出现无法读取传感器数据或读取到的传感器数据错误异常的情况。乱试找到了一个解决办法:在初始化拉高片选信号线的时候,HAL_Delay(500); 这个解决办法都很片面,应该并不是本质的办法是。下面的操作我猜测才是从本质上解决问题的,即通过芯片的电源管理,先把加速度计和陀螺disable,然后开始配置好,再enable。(传感器芯片上没有讲这样用,有点坑) SPI_E_WRITE(PWR_MGMT_2_ADDR_W,原创 2022-05-11 11:35:36 · 4090 阅读 · 1 评论 -
STM32_SPI通信_不用中断不用DMA
为啥不用中断不用DMA,其实我觉得没必要,因为一般来讲SPI通信操作某些功能芯片,比如DAC芯片啊,传感器芯片啊,每次通信数据量都不大,就2~4个字节。所以就用最简单的阻塞式代码就可以了(HAL_SPI_Transmit & HAL_SPI_Receive)。我认为SPI通信中最重要的一点是对于收发数据同步特性的理解。在下面这篇博客中写了详细讲解了SPI通信的原理【STM32】HAL库 STM32CubeMX教程十四---SPI_Z小旋的博客-CSDN博客_hal库spi下面摘抄一段原创 2022-04-28 11:41:39 · 2493 阅读 · 3 评论 -
STM32_空闲中断+DMA_实现不定长数据的串口接收(2)
上一篇博客我们讲到空闲中断+DMA实现串口的定长接收。STM32空闲中断+DMA实现定长数据的串口接收(1)_heqiunong的博客-CSDN博客本篇文章主要探索一下,不定长数据发过来的时候,会发生什么。这个实验说明什么? 说明上一篇博客文末的总结是对的。那种断断续续地的数据应该如何处理呢?不废话,看代码就行了,简单的一匹。老规矩,重点看 // ▲部分stm32f4xx_it.c#include "AngelaSTM32/AngelaDecode.h"...void.原创 2022-04-24 15:29:09 · 625 阅读 · 0 评论 -
STM32_空闲中断+DMA_实现定长数据的串口接收(1)
本文主要阐述, STM32芯片使用HAL库,如何用DMA的方式,来实现串口接收功能。(接收的数据长度是固定的)STM32CubeMX的配置这里就不赘述了。上俩图吧代码分为两处:第一处:main.c (主要注意 “// ▲”注释)#include "usermain.h"#include "AngelaSTM32/AngelaDecode.h" // ▲ 我们串口接收用到的变量,函数,都在这里面...void main(){ MX_GPIO_Init(); .原创 2022-04-24 14:02:58 · 4880 阅读 · 4 评论 -
STM32_串口接收中断_实现定长数据接收(2)
本篇是上一篇的一个plus,也是个人对串口中断接收的一个探索。STM32_串口中断接收定长数据(1)_heqiunong的博客-CSDN博客上一篇讲到,用串口接收中断来实现串口接收的功能,其中有个要点,就是它是一个字节一个字节的接收的。而本篇尝试 16个字节 16个字节的接收。用的是同样的方法,代码只需稍微的修改。同样,还是修改两处代码。第一处:main.c /* Initialize all configured peripherals */ MX_GPIO_Init();原创 2022-04-24 10:41:09 · 1931 阅读 · 0 评论 -
STM32_memcpy使用有个坑
在各类通信中,常使用memcpy将接收到的字节数组(如:unsigned char buffer[100]),直接复制到结构体当中,无须解码,直接使用结构体中的变量就完事了。但,使用MDK5作为IDE, 对STM32芯片进行编程完成类似操作时,确并不如意。相关代码如下:// 如果有一些似曾相识的感觉,那应该是上一篇讲STM32用中断实现串口通信的文章#include "usermain.h"#include "usart.h"#include "Angela.h"#include "A原创 2022-04-22 16:16:26 · 6450 阅读 · 5 评论 -
STM32_编程入门
1. STM32需要了解的基础知识STM32系列专为要求高性能、低成本、低功耗的嵌入式应用设计的ARM Cortex®-M0,M0+,M3, M4和M7内核,按内核架构分为不同产品:主流产品(STM32F0、STM32F1、STM32F3)、超低功耗产品(STM32L0、STM32L1、STM32L4、STM32L4+)、高性能产品(STM32F2、STM32F4、STM32F7、STM32H7)。内核是ARM公司统一设计的于ARMv7架构的Cortex系列由ARM公司在2006年推出,Co原创 2022-04-22 15:13:01 · 2011 阅读 · 0 评论 -
STM32_如何添加DSP库
为了添加这个DSP库,并正确使用上,来来回回还是折腾了1个小时的。下面从0开始添加一下这个DSP库试试。CSDN上讲了用STM32CubeMX添加的方法,可能针对他当时、以及他使用的STM32芯片是没问题的。但在现在(2022-04-20)、我使用的STM32F405RGT6芯片上使用问题的。STM32 DSP库的快速添加 基于cubemx 调用,使用DSP库四臂西瓜的博客-CSDN博客stm32dsp库因此,下面总结我的方法我们仍然是使用STM32CubeMX来生成项目文件。其原创 2022-04-22 15:01:11 · 8686 阅读 · 12 评论 -
STM32_arm_sin_f32和sin的区别
FOC控制中会用到三角函数调试通信的时候,也会用三角函数产生一个测试波形优化三角函数的运行时间是一个不可避免的事情,而幸运的是,前人已经把树种上了。用专用的浮点运算单元FPU来做浮点运算,比用STM32本身来做浮点运算要快。要使用STM32,ST公司提供了标准外设库、HAL库等。而要使用FPU,ARM/ST公司提供的库叫做 DSP库STM32 HAL库 CUBEMX FPU 和 DSP库朽木白露的博客-CSDN博客hal库dsp 这篇博客可以好好看看。FPU简介 FPU 即原创 2022-04-22 14:56:26 · 7168 阅读 · 0 评论 -
STM32_上位机高效通信技术
STM32 上位机高效通信技术原创 2022-04-22 14:51:18 · 843 阅读 · 2 评论 -
STM32_串口接收中断_实现定长数据接收_调试记录(1)
STM32_串口中断接收定长数据原创 2022-04-22 14:46:49 · 2775 阅读 · 2 评论 -
STM32_串口发送_DMA
STM32 使用DMA实现串口高效发送原创 2022-04-22 14:40:30 · 1107 阅读 · 0 评论 -
STM32_使用定时器实现<获取代码块运算时间>的功能
STM32_使用定时器实现的功能原创 2022-04-22 14:29:16 · 1793 阅读 · 0 评论