问题标签 [cmsis]

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 投票
0 回答
2709 浏览

fft - Q15 对 8192 个样本的 CMSIS 实 FFT

我需要在STM32F446微控制器上对8192 个样本块执行FFT。为此,我想使用CMSIS DSP 库,因为它很容易获得并且针对 STM32F4 进行了优化。

我的 8192 个输入样本最终将是来自内部 12 位 ADC 的值(左对齐并通过翻转符号位转换为 q15)。但出于测试目的,我正在为 FFT 提供测试缓冲区。

使用 CMSIS 的 FFT 函数,只有 Q15 版本支持 8192 的长度。因此我使用arm_rfft_q15()

因为 CMSIS 库的 FFT 函数默认包含大约 32k 的 LUT——为了适应许多 FFT 长度,我已经“重写”它们以删除与我感兴趣的长度不同的所有表。我没有除了删除无用的代码之外,t 触及任何东西。

我的样本存储在我通过 DMA 访问的外部 SDRAM 上。

使用 FFT 时,我有几个问题:

  • 我的源缓冲区和目标缓冲区都被修改了;
  • 结果完全不像预期的那样

为了确保我得到错误的结果,我在 FFT 之后立即进行了 IFFT,但它只是确认代码不起作用。

这是我的代码:

这是结果(来自 GDB)

GDB 结果

PS:我正在使用ChibiOS - 不确定它是否相关。

0 投票
1 回答
970 浏览

c - 如何在 Openstm32 中链接 arm_cortexM4l_math.lib

我已经包含了 CMSIS_5 库,但我不知道如何将 arm_cortexM4l_math.lib 链接到我的 stm32 项目以进行 FFT。

我的主板是 stm32f407-DISCOVERY,我使用的是 Openstm32。

0 投票
0 回答
669 浏览

rtos - STM32F769 上的 LwIP

我正在尝试使用带有 RTOS 和 LwIP 的 STM32F769I-Discovery 板制作网络服务器。它应该返回一些简单的 html/image 文件。

这是我到目前为止的完整代码的链接:

https://github.com/xtrinch/stm32f7-demos/tree/master/05-rtos-lwip

请注意,它 90% 是从 STM32Cube_FW_F7_V1.7.0\Projects\STM32F769I-Discovery\Applications\LwIP\LwIP_HTTP_Server_Socket_RTOS 复制而来的。

50% 的时间,板子从 DHCP 获得 IP,50% 的时间,DHCP 请求超时。

当板确实从 DHCP 获得 IP 时,我可以 ping 它,但是当我尝试通过浏览器访问它时,它不会返回任何内容,并且 ping 在尝试后停止工作。

如果 IP 是使用 LwIP 静态分配的,我根本无法 ping 它。

我不知道从哪里开始。也许我的 RTOS 线程优先级有问题?我在 osPriorityHigh 上有 tcp/ip 线程,在 osPriorityBelowNormal 上有 DHCP 线程,在 osPriorityAboveNormal 上有 webserver 线程。

我的网络服务器线程成功地将自己绑定到端口 80,但如下:

永远不会被执行。

0 投票
1 回答
309 浏览

c - CMSIS - 外围定义 - 具有联合语法的结构?

我已经从 8 位裸机寄存器迁移过来,并且不得不学习一些新的 C 功夫来了解 CMSIS 核心方法。

我在这里有一段来自 ARM Cortex M 供应商的外设访问层的代码片段。他们创建了这个 SN_WDT_TYPE 结构,您可以使用它们的符号来设置看门狗定时器寄存器。

他们为什么使用工会?我以前没有见过这种语法。

如果你使用联合来创建这样的结构,你会用指针深入几层吗?内存管理与工会?我在这里缺少一些 C 语法吗?

这可能是 CMSIS 特定的,有谁知道“:1”在这些结构声明中做了什么......?我知道 __IO 与读/写的某些 CMSIS 定义有关。

我在评论和回答后发现的有用的东西:

ARM 的 CMSCIS 外设命名约定——这个示例代码似乎不太优雅地确认......

ARM 的 BITFIELD 编译器关于结构和联合的说明

0 投票
2 回答
224 浏览

arm - Cortex-M1 的 CMSIS

可悲的是,我被迫使用和模糊基于 ARM Cortex-M1 内核的微控制器。我刚刚发现最新的 CMSIS (5.2) 不支持它,官方 CMSIS文档这样说:

CMSIS 支持全系列的 Cortex-M 处理器(Cortex-M1 除外)和 ARMv8-M 架构,包括安全扩展。

我猜 Cortex-M1 不是很受欢迎。但是没有 CMSIS 我该怎么办?我的供应商提供的支持包很奇怪,其中包含此核心的 CMSIS 文件,即 core_cm1.h;它充满了 ARM 版权,并且似乎不是由所述供应商直接编写的。文件注释列出了 2013 年 2 月 25 日的 CMSIS V3.20 版本。但我在其他任何地方都找不到它,无论是在更高版本的 CMSIS 中还是在更低版本中。

在 Joseph Yiu 的“ARM Cortex-M0 权威指南”中,我发现了这句话:

由于执行时间差异,软件需要进行微调的可能性也很小。在撰写本文时,没有可用于 Cortex-M1 的 CMSIS 软件包。但是,您可以在 Cortex-M1 编程中使用相同的 CMSIS 文件,因为它们基于相同版本的 ARMv6-M 架构。

我比较了 CMSIS 4.0 中的 core_cm0.h 和我的供应商的 core_cm1.h,发现只有非常小的差异(比如,1 << smthn 在几个地方变成了 1u << smthn)。比我从 CMSIS 5.0.2 中区分 core_cm0.h 和来自供应商的 core_cm1.h 发现了很多差异,结构不同,NVIC 的内联函数不同等等。

所以我的问题是:即使对于最新的 CMSIS,将 core_cm0 用于 Cortex-M1 真的安全吗?还是我应该安全行事并坚持我的供应商文件(即使我不知道它从哪里得到它们)?

0 投票
2 回答
681 浏览

c - Mutex 由一个线程捕获并由另一个 CMSIS 和 FreeRTOS STM 板释放

我们在 STM32F407 板上的 CMSIS 和 FreeRTOS 中遇到互斥锁问题。

有两个线程可以通过 UART 访问硬件无线电。我们使用互斥锁来确保一次只有一个线程可以与无线电通信。

每次成功捕获或释放互斥体时使用SWO打印到串口,我们可以看到在某些情况下会发生以下情况:

  • 线程 1 使用 osMutexWait(radioAccessMutex, 400) 成功捕获互斥锁

  • 线程 2 使用 osMutexRelease(radioAccessMutex) 成功释放相同的互斥锁

据我了解,互斥锁只能由当前持有互斥锁的线程释放。

两个互斥调用的返回值都是 osOK。递归互斥锁已在配置文件中关闭。两个线程的优先级相同。

可能相关信息:CMSIS v. 1.02 FreeRTOS v. 8.2.1

SWO 输出代码:

每次成功调用后立即捕获或释放互斥锁时都会调用此代码。一个以 null 结尾的字符串与调用结果一起传入。

0 投票
1 回答
964 浏览

signal-processing - 相同输入信号的 CMSIS DSP FFT 输出因 FFT 点数而异

我正在使用 CMSIS DSP FFT 函数将已知信号从时域转换为频域。有问题的信号是 1 KHz 正弦波,峰峰值幅度为 1V,直流偏移为 1.25V。我使用 16 位 ADC 对 10 KHz 的输入信号进行采样,然后在 Cortex M4F MCU 上进行浮点处理。

当我运行 1024 点 FFT 时,DC 值在 Bin-0 处出现 ~1.24。当我为 2048 点 FFT 运行相同的信号时,DC 值为 ~2.5。所以我运行了一个 512 点的 FFT,值变成了一半或 ~0.62。为了仔细检查我的信号,我在 Matlab 中做了同样的事情,无论我使用什么 FFT 点,Matlab 将 Bin-0 或 DC 显示为 ~1.25。

似乎 ARM 的 CMSIS DSP 库以某种方式执行了缩放功能,我在代码执行中进行了检查,但无处可见/执行。欢迎任何调试想法。

0 投票
0 回答
937 浏览

iar - 收到“致命错误:无法连接到 CPU 会话中止!” 在 IAR IDE 中

我使用 CMSIS-DAP 链接进行调试并成功加载 CMSIS-DAP 固件。

我使用 IAR Workbench 版本 7.80 IDE。

我可以成功构建代码。

但是在我收到“致命错误:无法连接到 CPU 会话中止!”之后 “下载和调试”期间,来自 IAR IDE 的代码。

我找不到这个问题背后的任何解决方案。

所以,请回复我。

问候, 普拉蒂克

0 投票
1 回答
382 浏览

linker - 使用 cmsis 库中的 fft 例程时未定义的引用

我正在尝试在我的粒子光子应用程序代码中使用 fft 函数。我设法将我的库链接到 Cortex M3 的 cmsis 预建库。但是,当我调用实际的 fft 函数时:

构建失败,引用未定义:

arm_bitreversal_32 恰好是在此处输入链接描述中在汇编中实现的例程

关于如何克服这个问题的任何想法。

0 投票
3 回答
1526 浏览

arm - STM32f091rc UART接收函数只返回数据包的最后一个字节而不是完整的数据包

我一直在研究 STM32f091rc 板,试图让 UART1 和 UART2 工作。我尝试从控制器向 STM 板发送 8 个字节的数据包。由于某些原因,我的功能只是显示数据包的最后一个字节。我的接收功能如下:-

我究竟做错了什么?谁能指出我正确的方向?谢谢你的时间。