首页 > 解决方案 > 如何在 stm32 上使用 SPI 将 32 位字传输到 GPS 接收器芯片 (MAX2769C)

问题描述

我正在尝试在半双工主模式下使用 SPI 配置带有 stm32f446re MCU 的 GPS 接收器芯片(MAX2769C)。该芯片需要一个 32 位字(4 位地址和 28 位数据)。这是数据表的第 21 页。

我的第一个问题是,当 cubemx 允许的最大位格式是 16 位传输时,我如何传输 32 位字。我的第二个问题是,我必须生成一个正好为 16,384 MHZ 的时钟来为 MAX2769C 芯片供电(这不是 SPI 的数据时钟 SCK)。所以我在 cubemx 中选择了 MCO1 并玩弄了时钟配置,直到我得到 16.384 MHZ。这将如何影响 SPI 速度?我尝试使用 hal_spi_transmit 使用 4 字节的 unint8_t 数组,但这不起作用。

  HAL_GPIO_WritePin(GPIOB, GPIO_PIN_9, GPIO_PIN_SET);
  HAL_Delay(10);

  //Set IF centre frequency to 3.9 MHz

  //SPI read data
  //1. Put CS low - Activate
  HAL_GPIO_WritePin(GPIOB, GPIO_PIN_9, GPIO_PIN_RESET);

  //2. Write data (0A2919A3) to slave
  spiTX1Data[0] = 0x0A; // Transmit register address 0000
  spiTX1Data[1] =0x29; // Set FCEN  to 001101 & FBW to 00 in configuration 1
  spiTX1Data[2] =0x19; 
  spiTX1Data[3] =0xA3; 



  HAL_SPI_Transmit(&hspi2, spiTX3Data, 4, 10);


  //3. Read
  HAL_SPI_Receive(&hspi2, &spiTX1Data[3], 4, 10);


  //Bring CS high - Deactivate
  HAL_GPIO_WritePin(GPIOB, GPIO_PIN_9, GPIO_PIN_SET);

这是我第一次在这个平台上提问。先感谢您!

标签: stm32spihal

解决方案


推荐阅读