问题标签 [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.
stm32 - 如何在 STM32H743 上找到“NOR Flash/PSRAM/SRAM/ROM/LCD 1”的基地址?
使用 STM32F427,生成的代码包括几个不同的#defines,它们映射到我需要写入的地址:
例如
在 CubeMX 为 STM32H743 生成的项目中,我在哪里可以找到类似的#defines?(我想我在这里需要 FMC_BANK1。)
我正在寻找内存/lcd 映射的地址,而不是控制器寄存器的地址(我已经拥有)。
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?
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);
在初始化代码中注释掉,问题就会消失(但我无法看到串行端口是否可以自由写入)。
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 在哪里被重置。
抱歉,如果问题是基本的,我对这个领域真的很陌生。
我非常感谢任何帮助,谢谢。
此致,
武里亚
ethernet - STM32H743 中的 IEEE 1588 PTP 时钟源
我正在尝试获取PTP
时间戳STM32H743 Nucleo
。LwIP
到目前为止,以太网驱动程序没有问题,除了PTP
. IEEE 1588 timestamping
我遵循了参考手册 ( ) 上的说明 ( 58.9.7 Programming Guidelines for ) RM0433
,如下所示。
但是,系统时间秒数寄存器 ( ETH_MACSTSR
) 不计数,只是将初始值加载到系统时间秒数更新寄存器 ( ETH_MACSTSUR
) 中。在参考手册中没有关于时钟源的明确信息PTP
。在中,时钟配置页面中有如下图所示STM32F7
的时钟路径。PTP
CubeMX
但是,如下图所示, PTP
in没有时钟路径。STM32H7
我是否遗漏了一些关于从寄存器中获取系统时间的ETH_MACSTSR
信息ETH_MACSTNR
?
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 协议(从 这里):
我有两个问题:
- 有没有人能让 BT.656 在 STM32H7 或任何 STF32FXX 上工作?
- PAL 的 BT.656 分辨率为 720x576,但我的相机为 384x288。相机的格式是什么?或者:我如何了解使用了多少行?
linker - 从 DTCM Ram 更改为 RAM_D1 时的 STM32H7 问题
我正在用 STM32H7 编写一个项目。该项目包含 RTC、SPI、USART、SD 卡、定时器和 I2C。
为了有更多的RAM,我把数据和bss带到了RAM_D1。
我通过更改链接器文件来做到这一点。
作为下一步我想实现以太网。然而,我意识到为了让以太网工作,我只需要使用 RAM_D1。
问题是当我将堆和堆栈带到 RAM_D1 时,项目停止工作。
有人可以帮忙吗?
在将所有内容带到 RAM_D1 之前和之后,我都包含了链接器脚本。
预先感谢您的帮助。
我在下面包含更改前后的链接器文件。
在更改之前,此阶段一切正常:
更改堆和堆栈的 RAM 部分后,在此阶段程序停止工作
非常感谢您的帮助,在此先感谢您。
embedded - STM32 EEPROM 仿真与 HAL_FLASH 和 HAL_FLASH_EX 驱动程序
希望确认选项以在 STM32H7 设备上持久保存值。
我对高级选项的理解是:
- 使用 eepropm.h/c 进行 EEPROM 仿真(使用 HAL_FLASH/EX 驱动程序)
- HAL_FLASH 和 HAL_FLASH_EX 驱动,stm32h7xx_hal_flash.h/c stm32h7xx_hal_flash_ex.h/c
- 某种外部存储,EEPROM,FLASH等。
有没有其他图书馆选项可以做到这一点?
eeprom 库的附加价值是什么?
据我所知,eeprom 库只提供了 3 个功能,而且并不是全部可配置的。我认为它更像是一个可以修改的示例,而不是一个可以使用的库。
ST AN4061 App Note参考 ST 应用笔记 STM32F0xx eeprom 仿真,建议自己添加磨损均衡,但也在介绍状态:
- “至少要使用两个闪存页面,如果可能的话,更多用于磨损均衡”
这对我来说意味着存在磨损均衡。
此外,这些选项是线程安全的吗?HAL_FLASH 驱动程序确实有中断选项,但 eeprom 库没有明确说明如何做到这一点,如果可能的话。
提供磨损均衡且线程安全的选项将是首选。
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 流中丢失了一些数据。这是我所做的修改:
有人知道如何用这些损失解决我的问题吗?
此致
马修
websocket - Oryx CycloneTCP WebSocket 支持 HTTP 服务器
我已经开始评估Oryx Embedded CycloneTCP
库,并且能够使用 CubeMX 配置工具和STM32CubeIDE
自定义STM32H7
板运行 HTTP 服务器/DHCP 客户端。
但是,我没有得到如何配置WebSocket
对HTTP Server
. 所以我需要一些帮助/示例/演示代码。