From aced0ee9613c0c0abac308ac42a489b8003464eb Mon Sep 17 00:00:00 2001 From: Aleksandr Kutuzov Date: Wed, 21 Oct 2020 15:06:18 +0300 Subject: [PATCH] CC1101: explicitly configure SPI --- applications/cc1101-workaround/cc1101.cpp | 25 +++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/applications/cc1101-workaround/cc1101.cpp b/applications/cc1101-workaround/cc1101.cpp index 9baef3f7..2b2a8cc2 100644 --- a/applications/cc1101-workaround/cc1101.cpp +++ b/applications/cc1101-workaround/cc1101.cpp @@ -23,11 +23,34 @@ CC1101::CC1101(GpioPin ss_pin) { //****************************************************************************** //SpiInit /******************************************************************************/ +extern SPI_HandleTypeDef hspi3; void CC1101::SpiInit(void) { //initialize spi pins //Enable spi master, MSB, SPI mode 0, FOSC/4 SpiMode(0); + + if (HAL_SPI_DeInit(&hspi3) != HAL_OK) { + Error_Handler(); + } + + hspi3.Init.Mode = SPI_MODE_MASTER; + hspi3.Init.Direction = SPI_DIRECTION_2LINES; + hspi3.Init.DataSize = SPI_DATASIZE_8BIT; + hspi3.Init.CLKPolarity = SPI_POLARITY_LOW; + hspi3.Init.CLKPhase = SPI_PHASE_1EDGE; + hspi3.Init.NSS = SPI_NSS_SOFT; + hspi3.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_64; + hspi3.Init.FirstBit = SPI_FIRSTBIT_MSB; + hspi3.Init.TIMode = SPI_TIMODE_DISABLE; + hspi3.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + hspi3.Init.CRCPolynomial = 7; + hspi3.Init.CRCLength = SPI_CRC_LENGTH_DATASIZE; + hspi3.Init.NSSPMode = SPI_NSS_PULSE_DISABLE; + + if (HAL_SPI_Init(&hspi3) != HAL_OK) { + Error_Handler(); + } } void CC1101::SpiEnd(void) { @@ -68,8 +91,6 @@ void CC1101::SpiMode(byte config) { *INPUT :value: data to send *OUTPUT :data to receive ****************************************************************/ -extern SPI_HandleTypeDef hspi3; - byte CC1101::SpiTransfer(byte value) { uint8_t buf[1] = {value}; uint8_t rxbuf[1] = {0};