- 博客(35)
- 收藏
- 关注
原创 BLDC驱动
为什么d轴要减去一个we*Lq*iq,而q轴要加上这一项?因为我们知道在电感中,电流会滞后电压90°,这个地方的90°是以电角度来看的v。它的物理意义是:定子端电压 = 电阻压降 + 电感压降 + 感应电动势。把三相绕组的模型投影到随转子磁场旋转的坐标系下。,直接描述三相电机绕组电压和电流的关系。
2025-10-07 16:59:39
231
原创 江协科技 CAN总线入门课程(错误处理)
每个设备初始都为主动错误状态,主动错误状态发出主动错误帧,可以破坏别的设备的数据,权力是比较大的;当这些发送单元或者接收单元检测到对应的错误时,它们就会紧跟着主动出击,发出错误帧,破坏当前总线上的数据,发出错误帧的行为就叫做错误通知,意思是不管你们其他设备有没有检测到这个错误,反正我现在检测到了错误,我要破坏这帧数据,大家都别收了,错误帧一旦产生,这帧数据就作废了,数据传输也会终止,等错误帧结束后,总线就回归空闲,大家谁想发数据,谁再开始一个新的帧。设备处于主动错误状态,发送标准数据帧,正常传输。
2025-09-30 15:54:54
274
原创 江协科技 CAN总线入门课程(仲裁)
其中,单元1第一位SOF是显性0,单元2第一位SOF也是显性0,两个单元同时张开总线,根据线与特性,总线呈现显性0。直到红色的这一位,在这一位时单元1的ID号是1,所以单元1发1,释放总线;这说明,有别的设备,正在和单元1抢总线,并且在这一位,我发1,它发了0,所以才会呈现出我发1但是读回却是0的现象。在此时刻单元1感知到了别的设备的存在并且单元1发出的数据1,被别的设备的数据0破坏了,所以单元1仲裁失利。接下来,我们再看两个细节问题,一个是数据帧和遥控帧的优先级,另一个是标准格式和扩展格式的优先级。
2025-09-29 16:04:21
354
原创 江协科技 CAN总线入门课程(位同步)
若有个波形的数据跳变沿正好在同步段,又因为定义的位时序正好是一位的时间,所以下次数据如果再跳变,它肯定在下一个位时序的同步段。通过之前的章节我们了解到:挂载在CAN总线上的所有设备初始都默认为接收方,当某一个设备想要广播自己的数据时,它就会主动出击,变成发送方,拉开或释放总线,使总线产生一段波形波形的编码遵守上一章帧格式的规定。如果PBS2给长点,PBS1给短点,采样点就会靠前。在实际情况中,每个设备的秒表可能都有误差,经过一次初始的对表之后,秒表转啊转,时间久了,难免就又会出现秒表旋转不同步的情况。
2025-09-29 11:35:58
756
原创 江协科技 CAN总线入门课程(帧格式)
在发送数据帧之前,总线必须处于空闲状态,空闲状态时,总线是隐性电平;目前我们了解到,CAN总线的数据主要靠发送方自觉广播出来,一般发送方会定一个周期,定时广播自己的数据,但如果发送方没有及时发出数据,或者这个数据的使用频率太低了,这样我们就可以规定,发送方就不要主动广播这个数据了,而是如果有设备需要的话,首先接收方发出一个遥控帧,遥控帧包含报文ID,其实遥控帧也是广播出来的,每个设备都能收到遥控帧,然后如果其中某个设备有这个ID的数据,它就会再通过数据帧,广播出来,这样接收方就能及时获取这个数据了。
2025-09-29 10:39:29
622
原创 江协科技 CAN总线入门课程(CAN简介&硬件电路)
所以当某个设备想发送0时,它就会操作总线,把总线“拉开”,使其呈现0状态,当设备想要发送1时,就不去碰总线,总线在终端电阻的收缩下自动归位默认状态1;这些就是高速CAN的电平标准定义,之后继续是低速CAN的电平规定,电压差为-1.5时表示逻辑1(隐性电平),电压差为3V时表示逻辑0(显性电平),在规定上其实和高速CAN差不多,但是低速CAN传输距离更远,考虑到线路会有压降,所以把1和0电平电压的差距加大了,也就是1和0变化的行程更长了,这样即使有一些压降,也能明显地区分出1和0的电平差异。
2025-09-28 21:14:29
1128
原创 智慧耳项目总结
首先看原理图,第一个是双路麦克风音频采集与模拟信号调理电路图,其核心功能是将 MEMS 麦克风采集的声音信号,通过滤波、放大、电平转换后,送入 MCU 的 ADC 通道(ADC1/ADC2)。电路分为最终输出ADC1和ADC2连接到 MCU,实现双声道音频数据采集。
2025-09-02 17:06:18
997
原创 FOC算法第四节 帕克变换
对电机的正弦驱动三项曲线降维至两轴坐标问题并且得到正转换关系和逆转换关系是不够的,我们还需要将这个理论和旋转的电机对应起来,也就是建立电机的旋转时候的数学模型,我们需要能够使电机旋转的I_α和I_β电流输入规律,如果我们可以知道这一规律,我们就可以通过克拉克逆变换把这个旋转情况下的I_α和I_β逆变换为i_a,i_b,i_c三相电流波形,并且将这个电流波形作为控制指令输入到电子电路中进行控制。而我们今天要讲解的帕克变换正是一种能够把电机旋转的物理状态转化为变化的I_α和I_β的一种数学转换方法。
2025-08-27 21:14:39
310
原创 FOC算法第三节 等幅值变换与克拉克逆变换
这样我们就可以得到化简之后的克拉克等幅值变换形式,由于基尔霍夫电流定理的存在,实际上在整个克拉克变换等幅值形式的变换里面,我们是可以消去ic的,在消去i_c后,Iα和Iβ我们只需要用a,b相的电流就可以算出来了,我们并不需要知道所有的三相电流,只要知道其中的两相:ia和ib就可以了。总结一下,实际上这个所谓的等幅值形式,其实就是想建立出一种i_α=i_a 这样一种简化的运算环境,为了达到这一点,它给式子乘上了2/3。
2025-08-27 20:43:14
207
原创 FOC算法第二节 克拉克变换
交替开关的MOS管可以实现电机转动,而这些开关的MOS管是以极快的速度在周期性进行的,把这些周期性开启关断的过程联系起来,并且对其各个相进行单独的观察,就可以得到三个相A、B、C相的电流随时间变化的曲线,三相曲线存在120°相位差。其思路为:第一步把三相随时间变化的相位差为120°的电流波形抽象化为三个间隔为120°的矢量,第二部就是利用三角函数对这个矢量进行降维,降维到两个坐标轴上,从此复杂的三相问题就降解为了α、β坐标轴上的数值变化问题。
2025-08-27 20:15:41
201
原创 FreeRTOS 入门1 工程创建和第一个多任务程序
之后就要去FreeRTOS官网下载资源文件,下载完成后进入下图所示的路径,将include文件夹中的所有文件复制进工程项目的inc文件夹中;这样之后,文件移植就结束了,接下来是Keil中的一些相关配置,与江协科技中所讲的相似,需要注意的是:port组中只需要导入heap_4.c和port.c这两个文件。为了将原来的裸机工程移植为FreeRTOS工程,以江协科技STM32教学中所创建的工程项目为例,下面是移植的具体方法。再打开portable文件夹,将以下路径文件夹中的图中文件放到port文件夹中;
2025-08-08 15:13:13
211
原创 江协科技STM32 15-1 FLASH闪存
本节我们学习的内容是STM32的FLASH,闪存。当然闪存是一个通用的名词,表示的是一种非易失性,也就是掉电不丢失的存储器。我们之前学习SPI协议的时候用的W25Q64就是一种闪存存储器芯片。而本节我们所说的闪存则特指STM32的内部闪存,也就是我们下载程序的时候,这个程序所存储的地方。我们下载的程序掉电后不会消失,说明程序存储在了一个非易失性的存储器中,这个存储器,也是一种闪存。本节我们来学习一下如何利用程序,来读写存储程序的这个存储器。STM32F1系列的FLASH包含程序存储器、系统存储器和选项字节三
2025-08-06 21:00:15
1070
原创 江协科技STM32 14-1 WDG看门狗
这一节我们要学习的内容是STM32中的看门狗,STM32内置两个看门狗,分别是独立看门狗(IWDG)和窗口看门狗(WWDG),两者的作用基本相同,只是侧重点不一样。看门狗简单来说就是程序运行的一个保障措施,我们得在程序中定期地喂狗,如果程序出问题卡死了,没有在规定的时间里喂狗,那么看门狗硬件电路就会自动帮我们复位一下,防止程序长时间卡死。就像是我们写了个程序,然后突然没动静了,我们就会习惯性地去按一下复位,或者说手机电脑,卡死不动了,我们也会习惯性地重启来解决。看门狗就是完成这样一个操作的硬件电路,在程序卡
2025-08-03 21:14:39
921
原创 江协科技STM32 13-1 PWR电源控制
PWR(Power Control),意思是电源控制。PWR的作用就是负责管理STM32内部的电源供电部分,可以实现可编程电压监测器和低功耗模式的功能。可编程电压监测器(PVD)可以监控VDD电源电压,当VDD下降到PVD阀值以下或上升到PVD阀值之上时,PVD会触发中断,用于执行紧急关闭任务。这个功能预想的场景应该是使用电池供电或者对安全要求比较高的设备,如果供电电压在逐渐下降,在电压过低的情况下,可能会导致内部或者外部电路发生不确定的错误,为了避免不确定的因素,在电源电压低于设定的阈值时,我们可以主动出
2025-08-02 23:46:48
1040
原创 江协科技STM32 12-2 BKP备份寄存器&RTC实时时钟
这一节我们要讲的主要内容是RTC实时时钟,实时时钟本质上是一个定时器,但是这个定时器是专门用来产生年月日时分秒,这种日期和时间信息的。所以学会了STM32的RTC就可以在STM32内部拥有一个独立运行的钟表。想要记录或读取日期和时间,就可以通过操作RTC来实现。RTC这个外设比较特殊,它和备份寄存器(BKP)、电源控制(PWR)这两章关联性比较强,因此在RTC这一章中,就把BKP和RTC放在一起讲。我们首先就先介绍备份寄存器(BKP),其实备份寄存器(BKP)和SPI章节中学过的Flash存储器类似,都是用
2025-08-01 20:23:34
756
原创 江协科技STM32 11-4 SPI通信外设
STM32内部集成了硬件SPI收发电路,可以由硬件自动执行时钟生成、数据收发等功能,减轻CPU的负担。可配置8位/16位数据帧、高位先行/低位先行,这里,我们最常用的配置就是8位数据帧,高位先行;时钟频率就是SCK波形的频率,一个SCK时钟交换一个bit,所以时钟频率一般体现的是传输速度,单位时Hz或者bit/s。这里的时钟频率是 fPCLK /分频系数 (2, 4, 8, 16, 32, 64, 128, 256)。所以可以看出,SPI的时钟其实就是由PCLK分频得来的,PCLK就是外设时钟。SPI1和S
2025-08-01 10:26:41
972
原创 江协科技STM32 11-1 SPI通信协议
本节课我们将继续学习下一个通信协议,SPI。SPI通信和我们刚刚学习过的I2C通信差不多。两个协议的设计目的都一样都是实现主控芯片和各种外挂芯片之间的数据交流,有了数据交流的能力,我们的主控芯片就可以挂载并操纵各式各样的外部芯片,来实现一个功能更加强大的控制系统。SPI(Serial Peripheral Interface),翻译而来就是串行外设接口。是由Motorola公司开发的一种通用数据总线。我们知道,I2C可以在消耗最低硬件资源的情况下,实现最多的功能,但其存在的缺点就是由于I2C开漏外加上拉电阻
2025-07-31 16:17:18
1339
原创 江协科技 STM32 10-4 I2C通信外设
STM32内部集成了硬件I2C收发电路,可以由硬件自动执行时钟生成、起始终止条件生成、应答位收发、数据收发等功能,减轻CPU的负担。STM32的I2C外设支持多主机模型,支持7位/10位地址模式,支持不同的通讯速度,标准速度(高达100 kHz),快速(高达400 kHz),支持DMA,兼容SMBus协议。STM32F103C8T6 硬件I2C资源有I2C1、I2C2两个独立的I2C外设。我们来看一下I2C外设的框图,首先,左侧是外设的通信引脚SDA和SCL,SMBALERT是SMBus使用的。像这种外设模
2025-07-30 16:13:46
585
原创 江协科技 STM32 10-1 I2C通信协议
在学I2C之前,我们已经学习了串口通信。串口通信就是从TX引脚向RX引脚发送数据流,数据流以字节为单位,我们可以组合多个字节,变成多字节的数据包传输。另外串口通信的设计是一条发送线、一条接收线,没有时钟线的异步全双工的协议。那现在,假如一个公司开发出了一款芯片,可以干比如AD转换、温湿度测量、姿态测量等很多事情,像单片机一样,这个芯片里的众多外设,也都是通过读写寄存器来控制运行的。这个芯片所有的寄存器也都是被分配到了一个线性的存储空间,如果我们想要读写寄存器来控制硬件电路,我们就至少需要定义两个字节数据,一
2025-07-30 09:41:15
624
原创 江协科技 STM32 9-4 USART串口数据包
首先,数据包的作用是把一个一个单独的数据打包起来,方便我们进行多字节的数据通信。我们之前学习了串口的代码,发送一个字节、接收一个字节都没问题,但在实际应用中,我们可能需要把多个字节打包为一个整体进行发送。比如说,我们有个陀螺仪传感器,需要用串口发送数据到STM32。陀螺仪的数据是X轴一个字节、Y轴一个字节、Z轴一个字节,总共三个数据,需要连续不断地发送,这样就会出现一个问题,就是接收方不知道这些数据哪个对应X,哪个对应Y、哪个对应Z,因为接收方可能会从任意位置开始接收,所以会出现数据错位的现象。这时候,我们
2025-07-27 16:21:58
905
原创 江协科技 STM32 9-1 USART串口通讯
在STM32中,集成了很多用于通信的外设模块,比如表中的USART、I2C、SPI、CAN和USB我们本节课先学习USART。首先要明确我们为什么需要通信,通信的目的是将一个设备的数据传送到另一个设备,扩展硬件系统。比如对于STM32芯片,它里面集成了很多功能模块,什么定时器计数、PWM输出、AD采集等等,这些都是单片机内部的电路,这些电路的配置寄存器、数据寄存器都在芯片里面,操作这些寄存器非常简单,直接读写就行,但是也有一些功能是STM32没有的,比如我们想要蓝牙无线遥控的功能、想要陀螺仪加速度计测量姿态
2025-07-27 10:35:39
646
原创 江协科技STM32 8-1 DMA直接存储器存取
上述的框图只是一个笼统的结构图,对于DMA内部的执行细节具体看下图,在图中可以看到,DMA的数据转运,可以是从外设到存储器,也可以是从存储器到外设,具体是向左还是向右有一个方向的参数可以进行控制,另外还有一种转运方式就是存储器到存储器,比如Flash到SRAM或者SRAM到SRAM这两种方式,由于Flash是只读的,所以DMA不可以进行SRAM到Flash,或者Flash到Flash的转运操作。如果要进行存储器到存储器的数据转运,那就需要把其中一个存储器的地址,放在外设的这个站点。最后就是开关控制了。
2025-07-26 11:17:38
943
原创 江协科技STM32 7-1 ADC模数转换器
ADC,英文全称Analog-Digital Converter,意为模拟-数字转换器,简称模数转换器,或者AD转换器,ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁。STM32的ADC是12位逐次逼近型ADC,1us转换时间,逐次逼近型是这个ADC的工作模式,等会再细说,12位和1us涉及到ADC的两个关键参数,第一个是分辨率,一般用多少位来表示,12位AD值,它的表示范围就是0-2^12-1,就是量化结果的范围是0-4095,位数越高,量化结果就越精细,对应
2025-07-24 22:37:48
211
原创 江协科技 STM32 6-7 TIM编码器接口
下图为编码器接口的基本结构,输入捕获的前两个通道,通过GPIO口接入编码器的A、B相,然后通过滤波器和边沿检测极性选择产生TI1FP1、TI2FP2通向编码器接口,编码器接口通过预分频器控制CNT计数器的时钟,同时,编码器接口还根据编码器的旋转方向,控制CNT的计数方向。电路初始化完成后,CNT就会随着编码器旋转而自增自减,如果想要测量编码器的位置,那直接读出CNT的值就行了,如果想测量编码器的速度和方向,那就需要每隔一段固定的闸门时间,取出一次CNT,然后再把CNT清零,这样就是测频法测量速度了。
2025-07-24 09:42:15
778
原创 江协科技 STM32 6-5 TIM 输入捕获
IC(input Capture),直译就是输入捕获的意思,对应前面定时器整体结构图中的左下角区域,四个输入捕获和输出比较通道共用4个CCR寄存器,另外它们的CH1到CH4,四个通道的引脚也是共用的,所以对于一个定时器内的同一个通道,输入捕获和输出比较只能使用其中一个,不能同时使用。输入捕获模式下,当通道输入引脚出现指定电平跳变时(上升沿或下降沿),当前CNT的值将被锁存到CCR中,可用于测量PWM波形的频率、占空比、脉冲间隔、电平持续时间等参数。对应定时器的结构图就是输入引脚处的信号一旦有边沿出现,那其右
2025-07-23 15:35:50
674
原创 江协科技 STM32 6-3 TIM输出比较
最后还有一个参数就是分辨率,也就是占空比变化的步距从图中可以看出,CCR的值应该设置在0到ARR+1这个范围里,CCR=ARR+1时,占空比正好是100%,如果CCR再大一些,那占空比就始终为100%,没有意义了,所以CCR的变化范围取决于ARR的值,ARR越大,CCR的范围就越大,对应的分辨率就越大。经过观察可以发现,它的大小比较关系和模式1是一样的,区别就是输出的高低电平反过来了,所以PWM模式2实际上就是PWM模式1输出的取反,改变PWM模式1和PWM模式2,就只改变了ref电平的极性而已。
2025-07-22 18:33:35
1039
原创 江协科技STM32 6-1 TIM定时中断
TIM是英文Timer的缩写,意思是定时器。定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断,这是定时器最基本的功能,就是定时触发中断。同时可以看出来,定时器就是一个计数器。当这个计数器的输入是一个准确可靠的基准时钟的时候,它在对这个基准时钟进行计数的过程,实际上就是计时的过程。比如在STM32中,定时器的基准时钟一般都是主频72MHz,如果我对72MHz计72个数,那就是1MHz也就是1us的时间,如果计72000个数,那就是1KHz也就是1ms的时间。 STM32的定时器拥有16位计数器、
2025-07-21 17:01:58
867
原创 铁头山羊8.1 时钟树 学习笔记
这三根总线就对应着时钟树上的三根树枝。在HSI和HSE构成的树根上方,就是树干,树干从树根获取时钟,然后对时钟信号进行加工,最终会产生一个叫做SYSCLK的信号,SYSCLK其实就是system clock的缩写,所以其中文叫做系统时钟。那么单片机里面的时钟系统就可以比作血液循环系统,产生的心跳会随主动脉一级一级地分叉最终输送给单片机上的每一个片上外设,这种分叉的结构就特别类似一棵树,因此我们就可以把单片机的时钟系统画成数的形式,就是我们所说的时钟树,如下图所示,其分为中间的一棵大树和右下角的一棵小树。
2025-07-17 14:14:06
488
原创 江协科技STM32 5-1 EXTI外部中断
表的右边还有中断的地址,由于程序中的中断函数的地址是由编译器来分配的,是不固定的,但由于硬件的限制,中断只能跳转到固定的地址执行程序,所以为了能让硬件跳转到一个不固定的中断函数里,就需要在内存中定义一个地址的列表,这个列表地址是固定的,中断发生后,就跳到这个固定位置,然后在这个固定位置,由编译器,再加上一条跳转到中断函数的代码,这样中断就可以跳转到任意位置了。在中断函数里,最好不要执行耗时过长的代码,因为中断是处理突发的事情,如果为了一个突发的事情呆在中断里不出来了,那么主程序就会收到严重的阻塞。
2025-07-16 11:34:39
903
原创 江协科技STM32入门教程 3-1 GPIO输出
在推挽输出模式下,P-MOS和N-MOS均有效,输出数据寄存器为1时,上管导通,下管断开,输出直接接到VDD,就是输出高电平,输出数据寄存器为0时,上管断开,下管导通,输出直接接到VSS,就是输出低电平,这种模式下,高低电平均有较强的驱动能力,所以推挽输出模式也可以叫强推输出模式。开漏模式可以作为通信协议的驱动方式,比如I2C通信的引脚,就是使用的开漏模式,在多机通信的情况下,这个模式可以避免各个设备的相互干扰,另外开漏模式还可用于输出5V的电平信号;输出模式下可控制端口输出高低电平,用以驱动。
2025-07-15 20:06:43
409
原创 江协STM32 2-2 新建工程
使用库函数对最小开发板中自带的LED灯进行电量操作,其所接IO口位于GPIO3中的第13个引脚,步骤如下:首先使能APB2总线下GPIOC的时钟,函数如下:RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);该函数的第二个参数需要传入一个指向GPIO_InitTypeDef类型结构体的指针,因此用了取地址符号&,而GPIO_InitStructure是我们通过GPIO_InitTypeDef GPIO_InitStructure;
2025-07-10 21:06:54
231
原创 江协STM32入门教程1-2笔记
ICode用来加载程序指令;因为AHB和APB的总线协议、总线速度、还有数据传送格式的差异,所以中间需要加两个桥接,来完成数据的传唤和缓存。左下角DMA可以当作内核CPU的小秘书,当需要完成一些大量数据搬运任务时,让CPU来干太浪费时间,而DMA通过DMA总线连接到总线矩阵上,可以拥有和CPU一样的总线控制权,用于访问外设,当需要DMA搬运数据时,外设就会通过请求线发送DMA请求,然后DMA就会获得总线控制权,访问并转运数据,整个过程不需要CPU的参与,省下了CPU的时间用来干其他的事情。
2025-07-09 16:16:40
295
原创 10月30日 stm32助教准备
图中,位 16 至位 31 保留,必须保持复位值,OTy 代表端口 x 的配置位(x 为端口号 A~I,y 为引脚号 0~15),这些位通过软件写入,用于配置 GPIO 端口 的输出类型。其中,OSPEEDR为输出速度寄存器,用于定义输出模式下,GPIO 引脚可输出脉冲的速度,也就 是在不出现错误的情况下,高低电平最高的切换速度,输出速度寄存器如图所示。图中,PUPDRy[1:0]代表端口x的配置位(x为端口号A~I,y为引脚号0~15), 这些位通过软件写入,用于配置 GPIO 端口的上拉或下拉功能。
2023-10-30 20:31:07
435
1
原创 9月22日
今天是确定方向后第一天,我自然地被安排到了电网优化方向。今天打算看完微电网两阶鲁棒优化经济调度这篇文章,然后全力学习最优化这门课,我必须赶快接触到鲁棒优化和随机优化这些优化方法。现在我觉得课题还是很虚无缥缈,我想在网上找到复现代码自己实践一下,可能可以更深切感受到自己要做什么。微电网和配电网的区别在于其控制策略和功能。微电网通常是一个小型的自给自足的电力系统,其主要目的是为了提供可靠的电力供应。配电网是一个更大的电力系统,主要用于将电力从输电网传输到用户,包括变电站、配电设备和输电线路等。
2023-09-23 10:40:13
101
1
原创 9月20日
三维空间中,一个平面是二维的,它把空间分成了两块。范数主要是对矩阵和向量的一种描述,有了描述那么“大小就可以比较了”,从字面理解一种比较构成规范的数。L-1范数:向量中所有元素的绝对值之和。例如:1比2小我们一目了然,可是(3,5,3)和(6,1,2)哪个大?矩阵范数:描述矩阵引起变化的大小,AX=B,矩阵X变化了A个量级,然后成为了B。2范数比:根号(43)比根号(41)大,因此2范数对比中(3,5,3)大。无穷范数比:5比6小,因此无穷范数对比中(6,1,2)大。向量范数:描述向量在空间中的大小。
2023-09-21 15:28:59
140
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅