From 3e4dbfe9a3c97e8097935953a503038534cd0682 Mon Sep 17 00:00:00 2001 From: Gabriel Lima Date: Sun, 23 Jun 2024 00:25:50 -0300 Subject: [PATCH] First SPI communication validated --- Core/Src/Components/start.cpp | 27 ++++++++++++++++++++++++++- Core/Src/gpio.c | 4 ++-- F407-SX1280-FreeRTOS.ioc | 3 ++- 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/Core/Src/Components/start.cpp b/Core/Src/Components/start.cpp index 203da44..0c4418c 100644 --- a/Core/Src/Components/start.cpp +++ b/Core/Src/Components/start.cpp @@ -29,8 +29,14 @@ GPIO_Pin_STM32 sx1280_a_txen(SX1280_A_TXEN_GPIO_Port, SX1280_A_TXEN_Pin); GPIO_Pin_STM32 sx1280_a_rst(SX1280_A_RST_GPIO_Port, SX1280_A_RST_Pin); GPIO_Pin_STM32 sx1280_a_busy(SX1280_A_BUSY_GPIO_Port, SX1280_A_BUSY_Pin); GPIO_Pin_STM32 sx1280_a_irq(SX1280_A_IRQ_GPIO_Port, SX1280_A_IRQ_Pin); - SX1280Hal pRadio(&spiRadio, &sx1280_a_nss, &sx1280_a_busy, &sx1280_a_irq, &sx1280_a_rst, nullptr); +GPIO_Pin_STM32 sx1280_b_nss(SX1280_B_NSS_GPIO_Port, SX1280_B_NSS_Pin); +GPIO_Pin_STM32 sx1280_b_rxen(SX1280_B_RXEN_GPIO_Port, SX1280_B_RXEN_Pin); +GPIO_Pin_STM32 sx1280_b_txen(SX1280_B_TXEN_GPIO_Port, SX1280_B_TXEN_Pin); +GPIO_Pin_STM32 sx1280_b_rst(SX1280_B_RST_GPIO_Port, SX1280_B_RST_Pin); +GPIO_Pin_STM32 sx1280_b_busy(SX1280_B_BUSY_GPIO_Port, SX1280_B_BUSY_Pin); +GPIO_Pin_STM32 sx1280_b_irq(SX1280_B_IRQ_GPIO_Port, SX1280_B_IRQ_Pin); +SX1280Hal pRadio2(&spiRadio, &sx1280_b_nss, &sx1280_b_busy, &sx1280_b_irq, &sx1280_b_rst, nullptr); GPIO_Pin_STM32 blueButton(B1_GPIO_Port, B1_Pin); SSL_Comms radio0(&blueButton); @@ -40,8 +46,27 @@ void start(){ spiRadio.init(); radio0.init(); pRadio.Init(); + RadioRegulatorModes_t regulatorMode = USE_LDO; + pRadio.SetRegulatorMode(regulatorMode); + RadioStandbyModes_t standbyMode = STDBY_XOSC; + pRadio.SetStandby(standbyMode); uint16_t firmwareVersion = pRadio.GetFirmwareVersion(); printf("Radio firmware version: %u\n", firmwareVersion); + TickTime_t timeout = {RADIO_TICK_SIZE_0015_US, 0xFFFF}; + pRadio.SetRx(timeout); int8_t rssiInst = pRadio.GetRssiInst(); printf("Radio RSSI: %d\n", rssiInst); + RadioStatus_t status = pRadio.GetStatus(); + printf("CMD status: 0x%X, Chip mode: 0x%X\n", status.Fields.CmdStatus, status.Fields.ChipMode); + pRadio2.Init(); + RadioRegulatorModes_t regulatorMode2 = USE_LDO; + pRadio2.SetRegulatorMode(regulatorMode2); + RadioStandbyModes_t standbyMode2 = STDBY_XOSC; + pRadio2.SetStandby(standbyMode2); + uint16_t firmwareVersion2 = pRadio2.GetFirmwareVersion(); + printf("Radio2 firmware version: %u\n", firmwareVersion2); + int8_t rssiInst2 = pRadio2.GetRssiInst(); + printf("Radio2 RSSI: %d\n", rssiInst2); + RadioStatus_t status2 = pRadio2.GetStatus(); + printf("CMD2 status: 0x%X, Chip2 mode: 0x%X\n", status2.Fields.CmdStatus, status2.Fields.ChipMode); } diff --git a/Core/Src/gpio.c b/Core/Src/gpio.c index 6a11d6f..a78868d 100644 --- a/Core/Src/gpio.c +++ b/Core/Src/gpio.c @@ -55,7 +55,7 @@ void MX_GPIO_Init(void) __HAL_RCC_GPIOD_CLK_ENABLE(); /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOE, CS_I2C_SPI_Pin|SX1280_A_TXEN_Pin|SX1280_B_RST_Pin|SX1280_B_TXEN_Pin, GPIO_PIN_RESET); + HAL_GPIO_WritePin(GPIOE, CS_I2C_SPI_Pin|SX1280_A_RXEN_Pin|SX1280_B_NSS_Pin|SX1280_B_RXEN_Pin, GPIO_PIN_SET); /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(OTG_FS_PowerSwitchOn_GPIO_Port, OTG_FS_PowerSwitchOn_Pin, GPIO_PIN_SET); @@ -67,7 +67,7 @@ void MX_GPIO_Init(void) HAL_GPIO_WritePin(GPIOB, SX1280_A_RST_Pin|NRF24_A_CE_Pin|LCD_RST_Pin|LCD_DR_Pin, GPIO_PIN_RESET); /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOE, SX1280_A_RXEN_Pin|SX1280_B_NSS_Pin|SX1280_B_RXEN_Pin, GPIO_PIN_SET); + HAL_GPIO_WritePin(GPIOE, SX1280_A_TXEN_Pin|SX1280_B_RST_Pin|SX1280_B_TXEN_Pin, GPIO_PIN_RESET); /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOD, ESP8266_RST_Pin|LD4_Pin|LD3_Pin|LD5_Pin diff --git a/F407-SX1280-FreeRTOS.ioc b/F407-SX1280-FreeRTOS.ioc index 5cba10f..54d82fa 100644 --- a/F407-SX1280-FreeRTOS.ioc +++ b/F407-SX1280-FreeRTOS.ioc @@ -509,11 +509,12 @@ PE15.GPIO_Label=NRF24_A_IRQ PE15.GPIO_PuPd=GPIO_PULLDOWN PE15.Locked=true PE15.Signal=GPXTI15 -PE3.GPIOParameters=GPIO_Speed,GPIO_PuPd,GPIO_Label +PE3.GPIOParameters=GPIO_Speed,PinState,GPIO_PuPd,GPIO_Label PE3.GPIO_Label=CS_I2C/SPI [LIS302DL_CS_I2C/SPI] PE3.GPIO_PuPd=GPIO_NOPULL PE3.GPIO_Speed=GPIO_SPEED_FREQ_LOW PE3.Locked=true +PE3.PinState=GPIO_PIN_SET PE3.Signal=GPIO_Output PE7.GPIOParameters=PinState,GPIO_Label PE7.GPIO_Label=SX1280_A_RXEN