cancel
Showing results for 
Search instead for 
Did you mean: 

STM32WL33 direct Tx

sbelcatronic
Associate

Hello,

the MRSUBG by STM32CubeMx have a mode of operation named 'Transmit Data control' (not wel descripted by the documentation or examples), when this mode is actived the PIN PA10 change in MRSUBG_TX_DATA and and the bit stream inserted in PA10 pin go straight on the radio module whidout using the buffer. I want the radio works in OOK modulation, when PA10 si set the radio generate the portant frequency, when the PA10 is clear the radio do not generete the portant.

This is my code:

static void MX_MRSUBG_Init(void)
{

  /* USER CODE BEGIN MRSUBG_Init 0 */

  /* USER CODE END MRSUBG_Init 0 */

  /* USER CODE BEGIN MRSUBG_Init 1 */

  /* USER CODE END MRSUBG_Init 1 */

  /** Configures the radio parameters
  */
  MRSUBG_RadioInitStruct.lFrequencyBase = 434150000;
  MRSUBG_RadioInitStruct.xModulationSelect = MOD_ASK;
  MRSUBG_RadioInitStruct.lDatarate = 1000;
  MRSUBG_RadioInitStruct.lFreqDev = 0;
  MRSUBG_RadioInitStruct.lBandwidth = 100000;
  MRSUBG_RadioInitStruct.dsssExp = 0;
  MRSUBG_RadioInitStruct.outputPower = 14;
  MRSUBG_RadioInitStruct.PADrvMode = PA_DRV_TX_HP;
  HAL_MRSubG_Init(&MRSUBG_RadioInitStruct);

  /** Configures the packet parameters
  */
  MRSUBG_PacketSettingsStruct.PreambleLength = 0;
  MRSUBG_PacketSettingsStruct.PostambleLength = 0;
  MRSUBG_PacketSettingsStruct.SyncLength = 0;
  MRSUBG_PacketSettingsStruct.SyncWord = 0x0;
  MRSUBG_PacketSettingsStruct.FixVarLength = FIXED;
  MRSUBG_PacketSettingsStruct.PreambleSequence = PRE_SEQ_0101;
  MRSUBG_PacketSettingsStruct.PostambleSequence = POST_SEQ_0101;
  MRSUBG_PacketSettingsStruct.CrcMode = PKT_NO_CRC;
  MRSUBG_PacketSettingsStruct.Coding = CODING_NONE;
  MRSUBG_PacketSettingsStruct.DataWhitening = DISABLE;
  MRSUBG_PacketSettingsStruct.LengthWidth = BYTE_LEN_1;
  MRSUBG_PacketSettingsStruct.SyncPresent = DISABLE;
  HAL_MRSubG_PacketBasicInit(&MRSUBG_PacketSettingsStruct);
  /* USER CODE BEGIN MRSUBG_Init 2 */
  /* --- Imposta FREQUENZA esplicitamente --- */

  __HAL_MRSUBG_STROBE_CMD(CMD_SABORT);       // in alternativa a CMD_STANDBY
  HAL_Delay(10);

  // --- Calibrazione ASK (specifica per modulazione OOK/ASK) ---
  __HAL_MRSUBG_STROBE_CMD(CMD_CALIB_SAFEASK);
  HAL_Delay(10);
  // --- Calibrazione AGC (per catena RX, opzionale ma consigliata) ---
  __HAL_MRSUBG_STROBE_CMD(CMD_CALIB_AGC);
  HAL_Delay(10);


  /* Imposta la modalità TX diretta */
  __HAL_MRSUBG_SET_TX_MODE(TX_DIRECT_GPIO);
  HAL_Delay(10);

//  /* --- LOCK TX PLL per assicurare che la frequenza sia impostata --- */
//    __HAL_MRSUBG_STROBE_CMD(CMD_LOCKTX);
//    HAL_Delay(10);

  /* Avvia la trasmissione */
  __HAL_MRSUBG_STROBE_CMD(CMD_TX);

  /* USER CODE END MRSUBG_Init 2 */

}

 

This my main: (TX_DATA_Pin is connected to PA10 pin)

 while (1)
  {
	  printf("STM32WL33:\r\n");
	  HAL_GPIO_WritePin(TX_DATA_GPIO_Port, TX_DATA_Pin, GPIO_PIN_SET);	//
	  HAL_Delay(500);
	  HAL_GPIO_WritePin(TX_DATA_GPIO_Port, TX_DATA_Pin, GPIO_PIN_RESET);	//
	  HAL_Delay(500);
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }

 

This code do not works. The radio do not generate any !

Thanks

 

 

 

 

0 REPLIES 0