自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 STM32H7XXX的SRAM ECC总结

如果要打开AXI SRAM的ECC Monitor单元,使得当检测到AXI SRAM的ECC错误时产生对应的中断,就需要操作AXI SRAM对应的寄存器组。其他的32位总线的SRAM,每32位数据附加7位ECC码。FDR寄存器有两个,对于64位总线的SRAM数据,FDRL寄存器保存低4字节的数据,FDRH保存高4字节的数据。在对SRAM进行写操作的时候,硬件自动计算并保存ECC的值,在对SRAM进行读操作或者非对齐的写操作(读-改-写)的时候会自动进行校验,并且出错的地址和数据可以通过寄存器读出。

2025-03-22 20:44:31 414

原创 STM32H7XX HSEM原理

每个HSEM都有一个32位的数值,它包含有3部分信息:锁标记位(bit:31),内核ID(bit:11-8),进程ID(bit:7-0),其它位为保留位。在LOCK状态时,锁标记位为1,内核ID由运行系统赋值(内核Cortex-M7为其赋值为3,内核Cortex-M4为其赋值为1),进程ID由用户赋值,其取值范围为0-255。每个HSEM支持两种的上锁方式:一种是写方式,另一种是读方式。对应于这两种方式,STM32提供了两种寄存器接口,一个是Rx,一个是RLRx,角标x是指对应的HSEM,从0到31。

2025-03-16 13:23:14 398

原创 以太网MII接口类型大全

TBI即Ten Bit Interface的意思,接口数据位宽由GMII接口的8位增加到10位,其实,TBI接口跟GMII接口的差别不是很大,多出来的2位数据主要是因为在TBI接口下,MAC芯片在将数据发给PHY芯片之前进行了8B/10B变换(8B/10B变换本是在PHY芯片中完成的,前面已经说过了),另外,RX_CLK+/-是从接收数据中恢复出来的半频时钟,频率为62.5MHz,RX_CLK+/-不是差分信号,而是两个独立的信号,两者之间有180度的相位差,在这两个时钟的上升沿都采样数据。

2025-03-16 13:17:55 630

原创 STM32H7的SRAM与Flash总结

对于上面的表格,大家可以看到,当延迟等待设置为0的时候,即无等待,单周期访问,速度可以做到70MHz。ITCM用于运行指令,也就是程序代码,DTCM用于数据存取,特点是跟内核速度一样,而片上RAM的速度基本都达不到这个速度,所以有降频处理。SRAM1:地址0x3000 0000,大小128KB,用途不限,可用于D2域中的DMA缓冲,也可以当D1域断电后用于运行程序代码。SRAM2:地址0x3002 0000,大小128KB,用途不限,可用于D2域中的DMA缓冲,也可以用于用户数据存取。

2025-03-16 12:34:06 825

原创 STM32H7XX双核芯片SMPS和LDO配置

,怀疑了NRST引脚的对地电容(也是百度的,说电容太大了,复位时不能放电,但是电容是104的,很小。一开始怀疑是Boot0(双核的只有BOOT0,没有BOOT1)引脚虚焊,后来做了一个按钮,用来上拉下拉,由于不能下载程序,那么只能上拉BOOT0,跳到默认的地址,这个是ST自带的程序,是可以下载的。甚至怀疑Vbat引脚,(之前的板子因为没有把Vat接到VDD,饮片发热,现在的板子是多加了一个Bat电池,),害得我把Bat电池的原件都拿走了。3. VCORE正常后,将使系统退出复位状态并启用HSI振荡器。

2025-03-16 12:22:21 986

原创 STM32H7XXX 测试

得益于其拥有的 L1 高速缓存和 ART 技术,在Cortex-M7 的 480 MHz主频和 Cortex-M4 的 240 MHz 主频运行条件下,实现从内部flash执行程序零等待,并获得高达 3220 CoreMark/1327 DMIPS 的性能评分。如果你对STM32H743已经有足够的了解,并能接受这款芯片的电源管理的复杂性,同时对价格不太敏感,这一系列芯片将值得一试。根据RCC寄存器的配置,可以把片内外设分配给具体的MCU,每个MCU就能像以前熟悉的样子运行了。

2025-03-16 12:14:19 650

原创 STM32H7XX的MPU和Cache总结

一、Cache1、Cache简介Cache是为提升STM32性能的一个硬件,是一种高级缓存。它在STM32F7系列(以下简称F7)、STM32H7(以下简称H7)系列等高性能芯片中存在,在STM32F1、STM32F4系列中并不存在。它主要是用于提高STM32访问内存的速度,用于将数据提前加载到Cache中,当CPU需要时,再将该数据提供给CPU。这个操作在电脑的CPU中也有对应,如图2.1所示。可以看到电脑的CPU有三级缓存L1、L2、L3。H7、M7系列的芯片属于M7内核,M7内核有一级Cache,

2025-03-16 12:05:20 880

原创 STM32H7VI电源、复位

主要看 Operating mode 部分,依次是 Power down –> Reset -> Wait Oscillator ->HW system init -> Run -> Wait ACTVOS RDY –> Run,即断电状态 -> 复位状态 -> 等待 HSI 就绪->硬件初始化 -> 运行 -> 等 ACTVOS 位就绪 -> 正式运行。当供电配置完成后,等待 ACTVOSRDY 位置 1,完成置 1 后,CPU就进入正常的运行的模式,允许读写 RAM 了。

2025-03-16 11:49:16 241

原创 STM32H7有关电源PWR学习

使用函数HAL_RTCEx_SetTimeStamp_IT()或HAL_RTCEx_SetTamper_IT()进行配置。WKUP引脚上升沿或下降沿,RTC Alarm(Alarm A和Alarm B),RTC唤醒,入侵事件,时间戳事件,NRST引脚的外部复位,IWDG复位。(3)使用RTC WakeUp事件唤醒停止模式,使用函数HAL_RTCEx_SetWakeUpTimer_IT()配置RTC WakeUp事件。(3)通过函数__HAL_PWR_PVD_EXTI_ENABLE_IT可以使能此中断。

2025-03-16 11:42:24 731

原创 STM32H7电源配置错误导致无法Jlink

在电路原理图设计中,当MCU的VDD直接由SMPS供电(若MCU内部可用此SMPS模块)时,通常需在软件代码中使用PWR_DIRECT_SMPS_SUPPLY参数来替代PWR_LDO_SUPPLY,以调用相应的函数进行配置。然而,在早期由STM32CubeMX生成的项目中,PWR_LDO_SUPPLY可能被设置为默认电源选项,这可能导致配置上的不一致。在软件代码中,关于电源模式的配置可以通过HAL库中的特定代码行完成,通常位于SystemClock_Config函数中。若连接成功,则进行批量擦除操作。

2025-03-16 11:35:17 743

原创 STM32H7配置MPU

MPU 可以配置的 16 个内存区的序号范围是 0 到 15,还有默认区 default region,也叫作背景区,序号 -1。这些优先级是固定的。MPU 可以配置保护 16 个内存区域(这 16 个内存域是独立配置的),每个区域最小要求 256 字节,每个区域还可以配置为 8 个子区域。CPU 以最高效的方式加载和存储字节、半字和字,对于这种内存区,CPU 的加载或存储不一定要按照程序列出的顺序执行。write-no-allocate:不会将要写入的数据从内存读到cache,直接将要写的数据写入内存。

2025-03-16 11:28:07 738

原创 STM32H7 USART架构图分析

PERxEN、PERxLPEN 和 PERxAMEN 是控制位用于控制时钟输出,CPU_state 是 CPU 的状态位,D3_state 是域的状态位,它们组合起来一起控制某个外设的时钟是否有效。这里我们就能看出 RCC_APB2LPENR 和 RCC_APB2ENR 的区别了,前者控制着 CPU 在睡眠模式下,后者控制这个 USART1 外设是否使能。(配置第一级输入的时钟源)我们需要根据使用的时钟配置 USARTxSEL,以 USART1 为例就是配置 USAT16SEL,选择使用的时钟;

2025-03-16 10:47:58 266

原创 STM32H7 DMAMUX使用分析

当同步信号(dmamux_syncx)达到时,输入的 dmamux_reqx 会立刻被传播到 dmamux_req_outx 作为输出信号,同时通道内部的 DMA request counter 会开启计数,初始值是设置在 DMA_CxCR 寄存器的 NBERQ 位中。当 counter 递减到零时,会触发一次 dmamux_evtx 的事件,同时断开输入信号 dmamux_reqx 到输出 dmamux_req_outx 的连接。DMA 请求是一个源即来自外设或也可来自 DMAMUX 请求产生器。

2025-03-16 10:43:29 731

原创 STM32H7 DMA架构分析

这个模式下,一旦启动 DMA,stream 就会从内存中加载一个数据(preloaded data)到内部的 FIFO 中,一旦外设发出请求,这个数据就会被传输给外设,接着 DMA 会重新从内存中加载数据(preloaded data 大小的数据)到空的 FIFO 中,重复这个过程。当启动了这个模式,传输数据的个数会被自动重置,例如:我们设置了 DMA_SxNDTR 寄存器要传输的数据的个数为 16 个,当 DMA_SxNDTR 的 NDT 位递减到零时,会重新加载初始化的值——16,然后循环再次发送。

2025-03-16 10:31:23 900

原创 STM32H7时钟树分析

上图主要列出了 STM32H743 系统时钟的生成原理,包括 CPU 时钟、SysTick 时钟、AXI时钟、AHB1~4 和 APB1~4 等,这些时钟对整个系统运行来说非常重要,图中,D1、D2 和 D3 域是 ST 为了支持动态能效管理,所设计的 3 个独立的电源域,每个域都能独立开启/关闭。使能单元(SCEU),它能够对 D1、D2 和 D3 域内的所有外设时钟进行开/关控制,所以在使用外设的时候,必须设置 SCEU,使能其时钟,否则外设无法使用,也就是配置各个外设时钟的使能ENR。

2025-03-16 10:19:23 913

原创 STM32H7整体架构

涉及到芯片选型的时候,需要大家了解各个型号的区别。此文件里面有简单的对比,只是内容比较简单,仅两页,不过也言简意赅。STM32H7的数据手册里面提供了一张非常棒的框图,大家可以方便地查看每个总线的时钟速度和这个总线所挂的外设。这个在大家配置外设时钟分频的时候还是非常有用的,因为外设的时钟分频就是建立在所挂的总线速度。需要了解更详细的对比信息,可以看数据手册。通过这个截图可以方便地了解不同型号的引脚数、封装、FLASH大小、RAM大小以及是否带HW CRYPTO硬件加密的区别。1、STM32H7硬件框图。

2025-03-14 20:21:49 379

原创 02-STM32F7XX时钟树简介

L-N、 这是PLL时钟。STM32F7的时钟系统比较复杂,有多个时钟源,因为STM32本身非常复杂,外设非常的多,但是并不是所有外设都需要系统时钟这么高的频率,比如看门狗以及RTC只需要几十 k 的时钟即可。它有四个时钟来源分别为:HSI,LSE,HSE和PLL时钟,MCO1时钟源经过1~5分频后向PA8引脚输出时钟。MCO2是向芯片的PC9输出时钟,它同样有四个时钟来源分别为:HSE,PLL,SYSCLK以及PLLI2S时钟,MCO2时钟源同样经过1~5分频后向PC9引脚输出时钟。

2025-03-14 19:58:45 835

原创 001-STM32的GPIO学习-驱动能力

GPIO驱动能力分析

2023-01-14 21:00:56 2898 1

原创 001-STM32的GPIO功能详解

介绍STM32 GPIO的框图分析

2023-01-14 20:22:55 2782 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除