- 博客(91)
- 资源 (4)
- 收藏
- 关注
原创 永磁同步电机模型第三篇之两相电机坐标变换
本文主要介绍两相永磁电机模型的坐标变化极其推导过程。本文主要参考资料:R.Krishnan.永磁无刷电机及其驱动技术.机械工程出版社根据上一篇博客<永磁同步电机模型第二篇之两相电机实时模型>,可以得到如下两相永磁同步电机的在静止坐标系下的模型:电压方程为:[VaVb]=[R00R][iaib]+ddt[λaλb] \begin{bmatrix} %该矩阵一共3列,每一列都居中放置 V_a\\ %第一行元素 V_b\\ %第二行元素 \end{bmatrix}= \begi
2025-03-21 21:54:55
862
原创 永磁同步电机模型第二篇之两相电机实时模型
本文主要介绍两相永磁电机模型的坐标变化极其推导过程。R.Krishnan.永磁无刷电机及其驱动技术.机械工程出版社定子绕组加以对称正弦分布的磁动势电感随着转子位置正弦变化饱和及参数变化忽略不计。
2025-03-18 23:55:38
994
原创 F28335第十六篇——内部Flash操作
本文主要介绍如何对DSP28335进行Flash操作。本文主要参考资料:DSP的Flash操作需要借助官方提供API。官方提供的API主要完成Flash的擦除,编写,校验三种功能。Flash编写,只能将数据位由1变成0,而无法由0变成1。所以,在每次需要刷新程序时,需要对Flash进行先擦除,再编写。最后防止出现错误,还需要进行校验。而DSP的Flash擦除操作中,其最小的擦除单位为扇区。而编写的最小单位为字(16位)。编写操作不会改变之前已经编写过的数据位。例如,在Flash中,可以不需要擦除的情况下,将
2022-12-27 15:14:19
9530
12
原创 永磁同步电机模型第一篇之坐标变换
文章目录前言旋转磁场clark变换和park变换永磁同步电机模型变换前言本文主要介绍永磁电机模型的坐标变化极其推导过程。本文主要参考资料:哈肯.工业运动控制——电机选择、驱动器和控制器应用.机械工业出版社永磁同步电机常见形式状态方程推导 传送门陈伯时.自动控制系统——电力拖动控制.中央广播电视大学出版社付兴贺,陈 锐.电机中ABC 到dq0 坐标变换的梳理与辨析旋转磁场可以将电机定子模型简化为下图:clark变换和park变换永磁同步电机模型变换...
2022-05-17 20:49:20
3387
原创 阻抗、电阻、电抗
文章目录主要概念本文主要介绍阻抗的概念,以及简单的计算方法。本文主要参考资料:黄锦安.电路.机械工业出版社主要概念在交流电路中,令U˙=U∠(ψu)\dot U=U \angle( \psi_u)U˙=U∠(ψu),令I˙=I∠(ψi)\dot I=I \angle( \psi_i)I˙=I∠(ψi),则可以定义阻抗为:Z=U˙I˙=U∠(ψu)I∠(ψi)=UI∠(ψu−ψi)=∣Z∣∠(ψz)=R+jXZ=\frac{\dot U}{\dot I}=\frac{U \angle(
2022-03-24 16:21:17
5785
原创 正弦信号的相位图
文章目录前言基础概念前言本文主要参考文章为:第3章-正弦交流电路-3.2正弦交流量的相量表示法。基础概念表示正弦量的复数成为相量,复数的模即为正弦量的幅值。按照各个正弦量的大小与相位关系画出的同频率若干个相量的图形,成为相量图。相量可以表示正弦量,但不等于正弦量。在同一个旋转平面内,表示两个相同频率的正弦量,对应的有向线段的相对位置式不变的。则这两个正弦量的相加值,可以由两个有向线段的相加表示。...
2022-03-17 19:53:31
6808
原创 STM32F429第二十八篇之ADC
前言STM32F429的ADC为12位逐次逼近的模数转换器。该ADC具有19个复用通道,其中16个通道用于外部测量,两个内部源和VBAT通道。AD转换的结果存在一个16位的数据寄存器中,可以选择为左对齐或者右对齐。...
2021-12-02 17:49:05
6352
原创 通信协议之IIC总线
文章目录前言物理层协议层基本读写过程起始信号和停止信号数据有效性地址及数据方向响应前言IIC通信协议是Philips公司开发的,由于其引脚少,硬件简单,无须收发设备,因此应用广泛。本文主要简单介绍一下IIC协议。本文主要参考一下资料:刘火良, 杨森. STM32库开发实战指南——基于STM32F4.机械工业出版社物理层IIC的物理层有以下几个特点:支持多个设备 。在同一个IIC总线中,可以挂载多个主机和从机。每个连接到总线的设备都有单独的地址,主机可以通过不同的地址来访问不同的从机。
2021-06-17 14:29:37
2183
1
原创 C语言之溢出
源代码/** ********************************************************************* * @file overflow.c * @author Zhen Haiyang * @version 1.0 * @date 2021-06-02 23:37:15 * @brief 验证溢出问题 ********************************************************
2021-06-04 23:09:19
887
1
原创 芯片简介之PCF8574
文章目录前言管脚定义设备地址IO设置前言PCF8574 是 NXP公司生产的一款芯片。该芯片可以通过IIC协议进行IO口扩展。每个IO口可以单独的分配为输入或者输出。例如,作为输入时,可以用于监控中断或者键盘。作为输出时,可以用于点亮发光二极管。系统控制器可以通过单独的寄存器读取输入端口状态或者配置输出端口状态。因为该芯片具有三个地址管脚,也就是最多可以同时分配8个地址。所以,在同一个系统中,最多可以通过16个管脚拓展出128个IO口。此外,该芯片还提供一个中断管脚(低电平有效)。当任何一个输入管脚和
2021-06-04 15:48:46
20735
原创 C语言之多文件声明
/** ********************************************************************* * @file extern.c * @author Zhen Haiyang * @version 1.0 * @date 2021-05-30 00:04:28 * @brief 连接属性探究 **************************************************************
2021-05-30 00:22:37
351
原创 STM32CubeMX第八篇之DMA
前言本文主要讲解自己实现DMA串口实验。本实验主要实现以下功能:按键0按下,则8000Byte数据通过由DMA控制的串口发出去在LCD屏幕上显示数据发送的进度。LED0每1s闪烁一次,证明程序正确运行本实验使用的HAL库的版本为:STM32Cube_FW_F4_V1.25.0本实验使用的STM32CubeMX版本为:6.1.1该工程的下载地址为:keil版本:https://github.com/zhenhaiyang/keilCube版本:https://github.com/z
2021-05-28 09:41:28
760
1
原创 STM32F429第二十七篇之DMA实验详解
文章目录前言结构体Instance(实例)Init(初始化结构体)Lock(锁)State(状态)XferCpltCallback(传输完成回调函数)XferHalfCpltCallback(传输完成一半回调函数)XferM1CpltCallback(内存1传输完成回调函数)XferM1HalfCpltCallback(内存1传输一半回调函数)XferErrorCallback(错误回调函数)XferAbortCallback(中止回调函数)ErrorCode(错误代码)StreamBaseAddress(
2021-05-25 20:35:41
5630
8
原创 C++之cin.get()用法
/** ********************************************************************* * @file cin_get.cpp * @author Zhen Haiyang * @version 1.0 * @date 2021-05-25 00:18:07 * @brief cin.get()使用方法 ****************************************************
2021-05-25 00:41:30
1879
原创 STM32F429第二十七篇之DMA
文章目录前言基本流程通道选择优先级传输模式前言DMA(Direct memory access)用于内存与内存之间或者内存与外设之间的高度数据传输。而且使用DMA进行数据传输不占用CPU任何资源,从而解放CPU去做别的操作。F429中共有两个DMA控制器,每个控制器用户8个数据流。基本流程DMA的事务处理就是一系列一定数量的数据传送。传送的数据宽度可以通过编程改变。每个DMA传送都包含以下几个步骤:从外设寄存器或者内存中加载数据,该外设或者内存的地址存储在寄存器DMA_SxPAR 或者 DMA_
2021-05-24 10:48:51
1794
2
原创 基础硬件——按键处理
文章目录前言主函数按键处理程序前言本文主要介绍按键的的处理方法。按键通常分成边沿检测和电平检测。本文提供一种简单的按键处理方法,优点在于减少判断语句的使用。本文的主要参考资料为:巧妙的按键扫描程序,核心算法只有三行本文的实验平台:正点原子的阿波罗F429开发板本文工程下载地址:Cube版本:https://github.com/zhenhaiyang/STM32CUBE主函数本文不再详细粘贴所有的代码,仅介绍核心代码部分: while (1) {
2021-05-19 16:44:00
923
原创 STM32F429第二十六篇之编码器功能
文章目录前言编码器功能框图功能前言编码器功能是F429的定时器重要的功能之一,在项目中经常要用到。本章主要介绍F429的编码器功能。主要参考文献:RM0090参考文档编码器编码器通常可以分成以下两类:增量式编码器:输出编码器的旋转量绝对式编码器:直接输出编码器的位置下面简单介绍一下需要用到F429编码器模块的增量式编码器。如上图所示,增量式编码器一般输出通道A和通道B两组信号。这两组信号之间有90度的相位差(即四分之一的相位差),通过判断脉冲的频率即可得到编码器的旋转速度,而通
2021-05-18 20:01:09
1822
1
原创 STM32CubeMX第七篇之MCU屏
文章目录前言主程序配置模式A配置时序应用前言本文主要讲解自己实现MCU控制程序。本程序具有以下功能:能够输出汉字能够输出ASCII字符串能够输出整数本文使用的HAL库的版本为:STM32Cube_FW_F4_V1.25.0本文使用的STM32CubeMX版本为:6.1.1该工程的下载地址为:keil版本:https://github.com/zhenhaiyang/keilCube版本:https://github.com/zhenhaiyang/STM32CUBE关于MCU
2021-05-18 19:57:39
1366
原创 STM32F429第二十五篇之MCU屏实验详解
文章目录前言软件结构体程序主程序配置程序前言软件结构体程序主程序int main(void){ /* 1.定义变量 */ u8 x = 0; u8 lcd_id[12]; /* 2.硬件初始化 */ HAL_Init(); //初始化HAL库 Stm32_Clock_Init(360, 25, 2, 8); //设置时钟,180Mhz delay_init(180);
2021-05-11 16:18:41
3886
2
原创 硬件介绍之NT35510(80系列并口使用)
文章目录前言管脚时序前言本文介绍的NT33510是以正点原子出品4.3寸屏(ATK-4.3’ TFTLCD模块 )为基础的。该屏幕的分辨率为800*480,16位真彩显示。本文重点从以下几个方面介绍该芯片:管脚时序指令本文主要参考资料:联咏科技.NT35510 数据手册正点原子.ATK-4.3’ TFTLCD 模块用户手册_V1.2管脚NT33510 自身的管脚很多,而本文只介绍通过8080总线驱动方式相关的管脚。官方推荐与MCU的连接方式如下图:而在正点原子推出的集成显示
2021-05-11 10:35:20
10114
2
原创 STM32F429第二十三篇之电容按键
文章目录前言硬件分析原理源程序主函数TpadInitGetTimeUntochedGetTimeChargeTpadScan前言本文主要介绍电容按键的原理与使用方法,主要使用的ARM资源为捕获模块,并不涉及新的模块。所以本文内容不涉及新的HAL库内容的介绍。关于捕获模块部分,可以参考以下三篇博客:STM32F429第二十二篇之高级定时器——捕获功能原理STM32F429第二十三篇之捕获实验详解STM32CubeMX第六篇之捕获实验本文主要参考资料:刘火良,杨森.STM32库开发实战指南
2021-04-26 21:34:48
2946
10
原创 STM32CubeMX第六篇之捕获实验
文章目录前言结构体SlaveMode(从模式)InputTrigger(触发源)TriggerPolarity(触发极性)TriggerPrescaler(外部触发预分频)TriggerFilter(外部触发滤波器)程序初始化从模式设置前言本文主要讲解自己实现的捕获程序。本文程序借鉴了正点原子的例程。关于正点原子的程序详解,可以参考博客<STM32F429第二十三篇之捕获实验详解>。本文介绍的程序的不同主要如下:通过高级时钟TIM8实现捕获功能。通过通道1和通道2分别捕获PC6管脚上
2021-04-20 10:01:55
5845
1
原创 STM32F429第二十二篇之高级定时器——捕获功能原理
文章目录前言结构体TIM_OC_InitTypeDef源程序主程序配置TIM5_CH1_Cap_InitHAL_TIM_IC_InitHAL_TIM_IC_MspInitTIM_Base_SetConfig前言结构体TIM_OC_InitTypeDef/** * @brief TIM Input Capture Configuration Structure definition */typedef struct{ uint32_t ICPolarity; /*!< S
2021-04-07 16:09:17
2936
3
原创 STM32F429第二十三篇之捕获实验详解
结构体TIM_OC_InitTypeDef/** * @brief TIM Input Capture Configuration Structure definition */typedef struct{ uint32_t ICPolarity; /*!< Specifies the active edge of the input signal. This parameter can be a value o
2021-04-07 12:31:56
4455
3
原创 C++之数组与指针
在C++中,数组与指针是很相似的,很多时候可以将指针与数组名混用。本文主要讨论其不同的部分,代码如下:#include <iostream>using namespace std;int main(){ //指针的指针 int x = 10; int *px = &x; int **ppx = &px; cout << ppx << ": " << *ppx << ": " <
2021-03-09 00:09:34
467
原创 C++之无符号整型减法
源代码/** ****************************************************************************** * @file uint.cpp * @author zhy * @version 1.0 * @date 2021-03-05 * @brief 无符号整形减法验证 **************************************************************
2021-03-05 11:46:57
1060
2
原创 STM32CubeMX第五篇之PWM
文章目录前言结构体TIM_BreakDeadTimeConfigTypeDefOffStateRunMode(运行模式关闭状态)OffStateIDLEMode(空闲状态关闭)LockLevel(上锁等级)DeadTime(死区时间)BreakState(断路状态)BreakPolarity(断路极性)BreakFilter(断路滤波器)AutomaticOutput(自动输出使能)HAL解析前言本文主要讲解自己实现的PWM程序。借鉴了正点原子程序的实现方法。关于正点原子的程序详细讲解,可以参考博客&l
2021-02-24 20:44:42
3598
原创 STM32F429第二十一篇之PWM波实现详解
文章目录前言结构体TIM_OC_InitTypeDefOCMode(输出通道模式)Pulse(脉冲值)OCPolarity(输出极性)OCNPolarity(互补输出通道极性)OCFastMode(输出通道快速模式)OCIdleState(输出通道闲置状态)OCNIdleState(互补输出通道闲置状态)源代码主函数配置TIM3_PWM_InitHAL_TIM_PWM_InitHAL_TIM_PWM_MspInitTIM_Base_SetConfigHAL_TIM_PWM_ConfigChannelTIM_
2021-02-22 19:01:05
9553
2
原创 STM32F429第二十篇之高级定时器——PWM(OSSI,OSSR)
文章目录前言前言从本文开始,介绍F429的高级时钟特性。本文主要介绍高级时钟的PWM功能的应用。关于PWM,本文重点介绍实现带有断路功能的双通道互补无延时的PWM波的实现方式。
2021-02-22 18:59:49
6225
1
原创 STM32CubeMX第四篇之基本定时器
文章目录前言keil主函数时钟配置中断响应CUBE主函数配置函数中断响应前言本文主要介绍使用keil和STM32CubeMX两种工具实现基本定时器功能。与正点原子的代码相比,本文的代码实现有以下几个特点:在中断响应中,不再使用回调函数处理,而是直接使用响应函数,且在响应函数中直接操作寄存器,以提高代码的效率。使用的时钟为基本时钟TIM6。与通用时钟相比,该时钟具有简单易用的特点。关于基本时钟的更多内容,可以参考博客<STM32F429第十八篇之基本定时器>。关于正点原子的代码详
2021-02-06 15:58:41
1374
1
原创 STM32F429第十九篇之基本定时器实验详解
前言本次博客更新了HAL库的版本。以后的博客都会采用此HAL库版本。HAL库版本:STM32Cube_FW_F4_V1.25.0本篇博客主要介绍基本定时器中的源码解析,会涉及以下三个部分:以整点原子定时器中断实验的程序为蓝本的程序解析重点的结构体介绍个人根据解析结果,最后分享自己的写的源代码需要注意的是:本文介绍的源代码使用的并非基本定时器TIM6或者TIM7,而是通用定时器TIM3。但是,他们程序上是兼容的,只需将TIM3当做基本定时器即可。在最后的自我分享代码中,会严格的使用TI
2021-02-03 20:54:38
4014
原创 STM32F429第十八篇之基本定时器
文章目录前言定时器基本定时器1.时钟源2.控制器3.预分频寄存器4.计数器5.中断与UEV事件前言STM32的时钟比较复杂。在F429中共有14个定时器,大致可以分成以下三类:高级定时器——2个通用定时器——10个基本定时器——2个本文主要介绍基本定时器.本文主要参考内容:刘火良, 杨森.STM32库开发指南——基于STM32F4.机械工业出版社ST.RM0090 Reference manual定时器在F429中,定时器可以汇总为下表:定时器类型定时器名称计数器
2021-02-02 19:41:51
4927
原创 STM32F429第十六篇之外部中断
文章目录前言中断使用优先级外部中断前言本文主要介绍与外部中断相关的内容。本文主要参考文献为:ST.STM32 Cortex®-M4 MCUs and MPUs programming manualST.RM0090 Reference manual刘火良.STM32库开发实战指南——基于STM32F4.机械工业出版社正点原子.STM32F429开发指南-HAL库版本_V1.1Joesph Yiu.ARM cortex-M3与cortex-M4权威指南(第三版).清华大学出版社中断本文
2021-01-28 19:04:14
1004
原创 STM32CubeMX第三篇之串口实验
文章目录前言STM32CUBE配置配置串口生成代码HAL初始化MX_USART1_UART_InitUSART1_IRQHandler前言本文主要介绍 串口实验 的通过STM32CUBE形式和直接编程模式的不同。本文可以参考博客<STM32F429第十四篇之串口实验详解>。两种方式实验的效果完全相同:在程序启动时,会发送信息 hello,zhy!在程序运行时,LED等闪烁。向串口1 发送数据,其会返回相同的数据。该实验源代码下载https://github.com/zhenh
2021-01-27 19:12:36
1228
原创 STM32F429第十五篇之串口实验详解二
文章目录前言主函数system文件夹sysdelayQUEUEUART前言通过上篇博客<STM32F429第十四篇之串口实验详解>,已经详细梳理了串口在HAL库中的工作过程。但是,整个过程比较繁琐,实时性很差。本文通过构建一个新的工程,简化串口工作的流程。另外,本文对于正点原子原有的system文件夹中的程序已经简化。完整的工程文件见GitHub:https://github.com/zhenhaiyang/keil主函数/** **************************
2021-01-27 15:55:12
972
原创 STM32F429第十四篇之串口实验详解
文章目录摘要硬件部分软件部分HAL_UART_Init摘要本文主要以正点原子串口通信实验为基础,讲解其中涉及的HAL库函数的具体实现原理。本文主要参考文献:正点原子.STM32F429 开发指南(HAL 库版)硬件部分这是正点原子开发板关于串口部分硬件原理图。该原理图中TXD与RXD分别与PA10和PA9管脚向量。其电平为TTL电平。所以,该原理图就比较容易理解了。通过CH340芯片,将USB转换为TTL电平的串口。这样就可以实现电脑中串口助手与ARM串口之间的通信了.软件部分HAL
2021-01-22 11:57:07
4691
1
原创 STM32F429第十三篇之stm32f4xx_hal_uart
文章目录前言综述用法前言本篇文章主要介绍STM32F429的HAL库中USART的用法。主要参考资料为:Description of STM32F4 HAL and low-layer drivers综述用法声明一个USART_HandleTypeDef句柄结构体(USART_HandleTypeDef husart)。通过重定义函数HAL_USART_MspInit()初始化USART底层资源。使能 USARTx接口时钟。USART管脚配置使能对应GPIO的时钟。配置USA
2021-01-18 14:14:45
4322
Ecap_pwm.rar
2019-11-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人