问题标签 [stm32h743]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
354 浏览

stm32 - 如何在 STM32H743 上找到“NOR Flash/PSRAM/SRAM/ROM/LCD 1”的基地址?

使用 STM32F427,生成的代码包括几个不同的#defines,它们映射到我需要写入的地址:

例如

在 CubeMX 为 STM32H743 生成的项目中,我在哪里可以找到类似的#defines?(我想我在这里需要 FMC_BANK1。)

我正在寻找内存/lcd 映射的地址,而不是控制器寄存器的地址(我已经拥有)。

0 投票
1 回答
1006 浏览

stm32 - STM32H743 的 FMC 在 480MHz 的时钟频率下能否驱动比 1.6MHz 更快的 16 位 8080 总线?

我正在使用 STM32H743 的 FMC 来驱动 16 位 8080 总线 LCD 控制器。

我尝试使用 DMA、MDMA 和 CPU 循环通过 FMC 将数据传输到 8080 总线。

传输频率与使用 DMA、MDMA 还是 CPU 循环无关。这让我认为 DMA/MDMA/CPU 循环不是限制因素。

在 480MHz FMC 时钟下,传输频率仅为 1.6MHz,在 16 位彩色 320x240 LCD 上只有 20fps。

在 240MHz FMC 时钟下,传输仅以 0.8MHz 发生,以此类推。

我还尝试将各种设置和保持时间减少到 1 和 0 周期,但这(令人惊讶地)并没有影响 8080 总线上的波形。

我的(Cube-MX 生成)FMC 初始化代码是:

我修改后的设置是:

(Cube-MX 生成的)时钟设置为:

当使用 480MHz 时钟驱动时,如何使 STM32H743 上的 FMC 传输半字快于 1.6MHz?

0 投票
2 回答
1082 浏览

serial-port - USART3_IRQHandler() 被连续调用并设置了 LL_USART_IsActiveFlag_TXE

我要开发自己的串行代码(而不是使用 CubeMX 的 HAL)来连接需要低级串行功能的现有协议代码库。

USART3_IRQHandler()被反复调用(因此serial::serial_irq_handler()也是如此。

序列号.c:

serial->usart == USART3在上面的代码中。)

我认为问题在于我清除了错误的标志(TC 而不是 TXE)。

这是问题的原因吗?

我无法清除 TXE,因为LL_USART_ClearFlag_TXE()不存在。

如果我LL_USART_EnableIT_TXE(serial->usart);在初始化代码中注释掉,问题就会消失(但我无法看到串行端口是否可以自由写入)。

0 投票
4 回答
1987 浏览

stm32 - stm32h7 rtc 掉电后复位(vbat 已连接)

我正在使用 stm32h753 和 stm32cubemx,并尝试在 VBAT 上运行 RTC 模块。为此,我已将电池连接到 MCU。RTC 连接到 LSE。接下来,我在代码中设置 RTC,然后断开 MCU 与电源的连接,然后重新连接。根据文档,这应该会自动将 RTC 电源从 VDD 切换到 VBAT。

我在启动时注释了MX_RTC_Init(),这样当MCU重启时RTC不会被重置。

下面是系统时钟配置、RTC Init 的代码,以及复位后读取 RTC 寄存器的代码。

这是 RTC 初始化代码

这是我在启动后用来读取 rtc 寄存器值的代码:

当我断开 MCU 与电源的连接,然后将其重新连接到电源时,上述代码在电源复位后给出以下结果(RTC 寄存器值):

159,10,9,32,51,51,4294967295

所以 RTC 在 MCU 复位的某个地方被复位。考虑到我已经禁用了 MX_RTC_Init(),我不知道 RTC 在哪里被重置。

抱歉,如果问题是基本的,我对这个领域真的很陌生。

我非常感谢任何帮助,谢谢。

此致,

武里亚

0 投票
1 回答
661 浏览

ethernet - STM32H743 中的 IEEE 1588 PTP 时钟源

我正在尝试获取PTP时间戳STM32H743 NucleoLwIP到目前为止,以太网驱动程序没有问题,除了PTP. IEEE 1588 timestamping我遵循了参考手册 ( ) 上的说明 ( 58.9.7 Programming Guidelines for ) RM0433,如下所示。

但是,系统时间秒数寄存器 ( ETH_MACSTSR) 不计数,只是将初始值加载到系统时间秒数更新寄存器 ( ETH_MACSTSUR) 中。在参考手册中没有关于时钟源的明确信息PTP。在中,时钟配置页面中有如下图所示STM32F7的时钟路径。PTPCubeMX

在此处输入图像描述

但是,如下图所示, PTPin没有时钟路径。STM32H7

在此处输入图像描述

我是否遗漏了一些关于从寄存器中获取系统时间的ETH_MACSTSR信息ETH_MACSTNR

0 投票
0 回答
554 浏览

stm32 - STM32H7 DCMI 与 BT.656

我目前正在使用数码相机制作系统,我的相机分辨率为 384x288 4:2:2 YCbCr。我的相机可在 BT.656 上使用嵌入式同步(无硬件同步)。我用嵌入式同步配置了 STM32 DCMI,但它不起作用。然后我开始调试它,发现了一些奇怪的STM32 DCMI问题:

为 BT.656 嵌入的 STM32 DCMI 被反转。

STM32 DCMI 文档(出自 ST 的 AN5020): 在此处输入图像描述

BT.656 协议(从 这里): 在此处输入图像描述

我有两个问题:

  1. 有没有人能让 BT.656 在 STM32H7 或任何 STF32FXX 上工作?
  2. PAL 的 BT.656 分辨率为 720x576,但我的相机为 384x288。相机的格式是什么?或者:我如何了解使用了多少行?
0 投票
1 回答
1588 浏览

linker - 从 DTCM Ram 更改为 RAM_D1 时的 STM32H7 问题

我正在用 STM32H7 编写一个项目。该项目包含 RTC、SPI、USART、SD 卡、定时器和 I2C。

为了有更多的RAM,我把数据和bss带到了RAM_D1。

我通过更改链接器文件来做到这一点。

作为下一步我想实现以太网。然而,我意识到为了让以太网工作,我只需要使用 RAM_D1。

问题是当我将堆和堆栈带到 RAM_D1 时,项目停止工作。

有人可以帮忙吗?

在将所有内容带到 RAM_D1 之前和之后,我都包含了链接器脚本。

预先感谢您的帮助。

我在下面包含更改前后的链接器文件。

在更改之前,此阶段一切正常:

更改堆和堆栈的 RAM 部分后,在此阶段程序停止工作

非常感谢您的帮助,在此先感谢您。

0 投票
0 回答
1117 浏览

embedded - STM32 EEPROM 仿真与 HAL_FLASH 和 HAL_FLASH_EX 驱动程序

希望确认选项以在 STM32H7 设备上持久保存值。

我对高级选项的理解是:

  1. 使用 eepropm.h/c 进行 EEPROM 仿真(使用 HAL_FLASH/EX 驱动程序)
  2. HAL_FLASH 和 HAL_FLASH_EX 驱动,stm32h7xx_hal_flash.h/c stm32h7xx_hal_flash_ex.h/c
  3. 某种外部存储,EEPROM,FLASH等。

有没有其他图书馆选项可以做到这一点?

eeprom 库的附加价值是什么?

据我所知,eeprom 库只提供了 3 个功能,而且并不是全部可配置的。我认为它更像是一个可以修改的示例,而不是一个可以使用的库。

ST AN4061 App Note参考 ST 应用笔记 STM32F0xx eeprom 仿真,建议自己添加磨损均衡,但也在介绍状态:

  • “至少要使用两个闪存页面,如果可能的话,更多用于磨损均衡”

这对我来说意味着存在磨损均衡。

此外,这些选项是线程安全的吗?HAL_FLASH 驱动程序确实有中断选项,但 eeprom 库没有明确说明如何做到这一点,如果可能的话。

提供磨损均衡且线程安全的选项将是首选。

0 投票
0 回答
165 浏览

storage - 在 STM32H743ZI 上将 ADC 流存储在 µSD 卡上而不会丢失

我正在做一个项目,我必须将 ADC 流的数据存储在 µSD 卡上。但是,即使我使用 16 位缓冲区,我也会丢失 ADC 流中的数据。我的 ADC 与 DMA 一起使用,我使用 FATFS(不带 DMA)和 SDMMC1 外设来用数据填充 .bin 文件。

您有避免这种损失的想法吗?

这是我的项目:https ://github.com/mathieuchene/STM32H743ZI

我在他们的最新版本中使用了 nucleo-h743zi2 Board、CubeIDE 和 CubeMx。

编辑 1

我尝试实施 Colin 的解决方案,它更好,但我在收购过程中遇到了一件奇怪的事情。但是,当我增加最大计数值或尝试调试时,会出现 HardFault_Handler。我修改了 main.c 文件,创建了 2 个块uint16_t blockX[BUFFERLENGTH/2](我还像这样更改了 main 函数中的 while(1) 部分

编辑 2

我修改了我的程序。我将块 1 和块 2 的长度设置为 BUFFERLENGTH,并添加了一个指针 (*idx) 来更改已填充的缓冲区。我不再有 HardFault_Handler 但我仍然从我的 adc 流中丢失了一些数据。这是我所做的修改:

有人知道如何用这些损失解决我的问题吗?

此致

马修

0 投票
0 回答
251 浏览

websocket - Oryx CycloneTCP WebSocket 支持 HTTP 服务器

我已经开始评估Oryx Embedded CycloneTCP库,并且能够使用 CubeMX 配置工具和STM32CubeIDE自定义STM32H7板运行 HTTP 服务器/DHCP 客户端。

但是,我没有得到如何配置WebSocketHTTP Server. 所以我需要一些帮助/示例/演示代码。