小编Ale*_*lek的帖子

使用 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万
查看次数

从没有中断引脚的传感器读取数据的最佳方法,该措施需要一段时间才能准备好

我正在尝试将压力传感器(MS5803-14BA)与我的电路板(NUCLEO-STM32L073RZ)连接。

根据数据表(第3页),压力传感器需要几毫秒的时间才能准备好读取测量值。对于我的项目,我对转换原始数据大约需要10 ms的最高分辨率感兴趣。

不幸的是,该压力传感器没有任何可用于查看测量准备就绪时间的中断引脚,因此,我暂时解决了在请求新数据后延迟的问题。

我不喜欢当前的解决方案,因为在这10毫秒内,我可以让单片机工作在其他地方(我的板上还连接了其他几个传感器),但是没有任何中断引脚,我不确定这是什么。解决此问题的最佳方法。

我想到了另一个解决方案:使用计时器,该计时器每20秒触发一次,并执行以下操作:

1.a Read the current value stored in the registers (discarding the first value)
1.b Ask for a new value
Run Code Online (Sandbox Code Playgroud)

这样,在下一次迭代中,我只需要读取上一次迭代结束时请求的值即可。

我不喜欢我的测量结果总是20毫秒。直到延迟保持20毫秒,它应该还是可以的,但是如果我需要降低速率,则解决方案的读数“老化”会增加。

您对如何处理还有其他想法吗?

谢谢。

注意:如果您需要查看我当前的实现,请告诉我。

c interrupt stm32 multitasking pressure

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

标签 统计

stm32 ×2

c ×1

interrupt ×1

low-level ×1

multitasking ×1

pressure ×1

spi ×1