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

使用STM32 mcu和低级LL API通过SPI发送数据,stm32,spi,low-level,Stm32,Spi,Low Level,我的板是核子STM32L432KCU板。我正在尝试使用低级API通过SPI发送字符。SPI配置为“仅传输主机”,硬件NSS信号被禁用 不幸的是,我的代码不起作用(见下文)。当我连接逻辑分析仪时,我什么也看不到 这是我的密码: SPI初始化(由CubeMX生成) 发送一个字符的代码 调用MX\u SPI1\u Init()函数后,以下代码在main函数上 while (!(SPI1->SR & SPI_SR_TXE)); // Send bytes over the SPI LL_S

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

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

这是我的密码:

SPI初始化(由CubeMX生成)

发送一个字符的代码

调用MX\u SPI1\u Init()函数后,以下代码在main函数上

while (!(SPI1->SR & SPI_SR_TXE));
// Send bytes over the SPI
LL_SPI_TransmitData8(SPI1,0b01010111);
// Wait until the transmission is complete
while (SPI1->SR & SPI_SR_BSY);

谢谢。

我想我已经找到了解决方案,或者至少找到了有效的方法。我的问题是我忘记启用SPI(在CR1寄存器上写入,第6位)。 以下是工作代码(当前解决方案):


我真正关心的是我在现实生活中建立的声誉,而不是在这里。我认为StAdPoad作为一个网站,我可以学习新的东西,希望能提供一些帮助回来。如果您认为我的自我回答是为了“赢得一些声誉”,请随意思考。@PeterJ_01这是一个坏建议,这里不鼓励您:“您应该将问题更改为[已解决]……并在最后添加编辑。”
while (!(SPI1->SR & SPI_SR_TXE));
// Send bytes over the SPI
LL_SPI_TransmitData8(SPI1,0b01010111);
// Wait until the transmission is complete
while (SPI1->SR & SPI_SR_BSY);
  // Check if the SPI is enabled
  if((SPI1->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE)
  {
      // If disabled, I enable it
      SET_BIT(SPI1->CR1, SPI_CR1_SPE);
  }

  while (!(SPI1->SR & SPI_SR_TXE));
  // Send bytes over the SPI
  LL_SPI_TransmitData16(SPI1,0xA0A0);
  // Wait until the transmission is complete
  while (SPI1->SR & SPI_SR_BSY);

  // Disable SPI
  CLEAR_BIT(SPI1->CR1, SPI_CR1_SPE);