如何在stm32上使用SPI将32位字发送到GPS接收器芯片MAX2769C

问题描述

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

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

  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_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],10);


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

这是我第一次在此平台上提问。预先谢谢你!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)