标签: stm32

STM32 USB CDC 的最大速度是多少?

我正在使用 stm32L151 通过 USB CDC 与 PC 通信。我使用 stm32 HAL 库来创建我的项目。我发现 USB 以 1ms 的间隔发送数据,每次发送 64 个字节。那么,USB CDC 的最大速度是 64kbyte/s 吗?而且这个速度远低于USB全速12Mbit/s。我怎样才能达到这个速度?或者至少是这个速度的一小部分?谢谢

usb cdc stm32

4
推荐指数
1
解决办法
1万
查看次数

在 Master (SPI) 中设置 nss_soft

我想使用 Nucleo STM32F103RB 在 master 中将 NSS 引脚设置为软件模式。但我有一些问题?

在参考手册中,他们说,

在 NSS 软件模式下,设置 SPI_CR1 寄存器中的 SSM 和 SSI 位。如果在输出模式下需要 NSS 引脚,则只应设置 SSOE 位。

现在,

为什么我们需要用 SSM 设置 SSI 位?

SSOE 位的目的是什么?

arm spi stm32 master-slave stm32f1

4
推荐指数
1
解决办法
1881
查看次数

HAL_SetDate 将年份设置为错误值

我将 STM32F030RCT6 与 CubeMX 一起使用。设备是一个数据记录器,RTC 是不能失败的主要因素。在勘误表上有一些关于 RTC Shadow Register 的内容。

我将CubeMX配置为不生成MX_RTC_Init()函数,到目前为止它一直正常工作。(我正在使用 LSE)

我需要从 GSM 时间更新时间/日期,但是当我将年份设置为18HAL_SetDate(),经过一段时间的延迟阅读HAL_GetDate()sDate.Year给了我20。除了Year,其他值都是正确的。

我试过的:

  • 二手LSI
  • 而 (HAL_SetDate != HAL_GetDate) HAL_SetDate(ActualDate)
  • HAL_GetDate然后HAL_SetDate

我没有任何进展,事情甚至变得更糟,例如Month= 56、Day= 45 等。

提前致谢。此致。

hal stm32 stm32f0 cubemx

4
推荐指数
1
解决办法
2034
查看次数

FTDI实现标准CDC协议?

FTDI 是否实现标准通信设备类 (CDC) USB 协议?

我需要在 STM32 上实现一个主机,以将设备连接到 FTDI 串行芯片。但谷歌搜索显示,使用 ST 的库时会出现问题。

usb microcontroller cdc stm32 ftdi

4
推荐指数
1
解决办法
2018
查看次数

使用 STM32 MCU 和低级 LL API 通过 SPI 发送数据

我的板是 nucleo STM32L432KCU 板。我正在尝试使用低级 API 通过 SPI 发送字符。SPI 配置为“仅发送主机”并且硬件 NSS 信号被禁用。

不幸的是,我的代码不起作用(见下文)。当我连接逻辑分析仪时,我看不到任何东西。

这是我的代码:

SPI初始化(由CubeMX生成)

void MX_SPI1_Init(void)
{
  LL_SPI_InitTypeDef SPI_InitStruct;

  LL_GPIO_InitTypeDef GPIO_InitStruct;
  /* Peripheral clock enable */
  LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_SPI1);

  /**SPI1 GPIO Configuration  
  PA1   ------> SPI1_SCK
  PA7   ------> SPI1_MOSI 
  */
  GPIO_InitStruct.Pin = SCLK1_to_SpW_Pin|MOSI1_to_SpW_Pin;
  GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE;
  GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_VERY_HIGH;
  GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
  GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
  GPIO_InitStruct.Alternate = LL_GPIO_AF_5;
  LL_GPIO_Init(GPIOA, &GPIO_InitStruct);

  SPI_InitStruct.TransferDirection = LL_SPI_FULL_DUPLEX;
  SPI_InitStruct.Mode = LL_SPI_MODE_MASTER;
  SPI_InitStruct.DataWidth = LL_SPI_DATAWIDTH_8BIT;
  SPI_InitStruct.ClockPolarity = LL_SPI_POLARITY_LOW;
  SPI_InitStruct.ClockPhase = LL_SPI_PHASE_1EDGE;
  SPI_InitStruct.NSS = LL_SPI_NSS_SOFT;
  SPI_InitStruct.BaudRate = LL_SPI_BAUDRATEPRESCALER_DIV8;
  SPI_InitStruct.BitOrder = …
Run Code Online (Sandbox Code Playgroud)

spi stm32 low-level

4
推荐指数
1
解决办法
1万
查看次数

在 STOP 模式之前禁用 STM32 HAL IWDG 或 WWDG(看门狗)

我使用 STM32 (L0 5) HAL,在进入 STOP 模式之前,我需要禁用 IWDG 或 WWDG。在 IWDG 将 MCU 从 STOP 模式重置之前,以下代码可以正常工作。对于 WWDG 使用,这要快得多,并且在调用 HAL_PWR_EnterSTOPMode 之前重置,尽管 HAL_WWDG_Refresh 在每行之后调用。我也在 Nucleo L05 上测试了这些场景。

iwdgHandle.Instance = IWDG;
iwdgHandle.Init.Prescaler = IWDG_PRESCALER_64;
iwdgHandle.Init.Window = 4095;
iwdgHandle.Init.Reload = 4095;
if (HAL_IWDG_Init(&iwdgHandle) != HAL_OK) // almost 7secs until refresh has to be called
{
 _Error_Handler(__FILE__, __LINE__);
}

HAL_PWR_EnableWakeUpPin(WakeSpi_Pin);
HAL_PWREx_EnableUltraLowPower(); // Enable Ultra low power mode
HAL_PWREx_EnableFastWakeUp(); // Enable the fast wake up from Ultra low power mode

HAL_SuspendTick();
HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
Run Code Online (Sandbox Code Playgroud)

hal watchdog stm32

4
推荐指数
1
解决办法
2万
查看次数

硬件复位后的stm32 USB-CDC

我已经使用 USB-CDC 协议对我的 stm32f103 blue-pill 板进行了编程

我可以在这个端口上读写

但是执行硬件重置后,COM 端口不可用,我必须拔下 USB 连接并重新插入,然后 COM 端口才会出现。

有可能避免这种情况吗?

-谢谢

usb stm32 hotplugging

4
推荐指数
1
解决办法
4584
查看次数

有没有人通过wine在Linux上使用Keil MDK?

我在 ubuntu 18.04 上使用 keil MDK 时遇到问题。经过几次试用后,我可以在我的 ubuntu 操作系统上使用 keil 的 uVision IDE。一切正常,但在尝试对我的 mcu 进行编程时,它显示“未找到 ST-Link”。但是当我坚持使用 linux 时,我尝试安装 stm32cube 程序员跳跃尝试使用 hex 文件做一些事情,但没有成功。但不知何故,我管理了 st-link 实用程序(在命令行上工作)。

现在,如果我将 eclipse 的 elf 文件转换为 bin 或 hex 并通过 st-link 实用程序加载到我的 stm32f103vet 中,它就很好用!但是当我刷新由 keil 生成的十六进制文件时,它什么也没显示。不起作用。我厌倦了尝试使用keil MDK 编写stm32。

所以如果有人在他的 linux 操作系统上使用 Keil MDK,请敲这里。请帮帮我!

linux ubuntu microcontroller stm32 keil

4
推荐指数
1
解决办法
2868
查看次数

在 STM32 传输结束时,循环 DMA 外围到内存的行为如何?

我想问一下,在以下情况下,STM32 中的 DMA SPI rx 将如何表现。我有一个名为 A 的指定(例如)96 字节数组,用于存储从 SPI 接收到的数据。我打开对每个字节进行操作的循环 SPI DMA,配置为 96 字节。是否有可能,当 DMA 将填充我的 96 字节数组时,传输完成中断将关闭,以快速将 96 字节数组复制到另一个 - B,然后循环 DMA 将开始写入 A(并破坏保存在 B 中的数据) ? 我想通过 USB 将数据从 B 快速传输(每次我从 B 中的 A 获取新数据时)到 PC。

我只是在想如何通过 USB 将 STM32 的连续数据流 SPI 传输到 PC,因为我认为每隔一定时间通过 USB 传输的 96 字节数据块比通过 STM32 将实时 SPI 流传输到 USB 更容易?我不知道这甚至可能

embedded usb spi stm32 dma

4
推荐指数
1
解决办法
5799
查看次数

使用 openOCD 在 Cortex-M (STM32F4) 上提取 ETB 轨迹

STM32F4 发现(Cortex-M4)有 ETB,一个存储指令跟踪的缓冲区。如何使用 OpenOCD 和片上 st-link 调试器从 ETB 中提取跟踪?

我对 SWO/SWD 有点困惑。我应该使用什么?另外,我是否需要任何额外的硬件来提取跟踪?

谢谢

embedded stm32 openocd

4
推荐指数
1
解决办法
658
查看次数