Quellcode durchsuchen

CC1101: explicitly configure SPI

Aleksandr Kutuzov vor 5 Jahren
Ursprung
Commit
aced0ee961
1 geänderte Dateien mit 23 neuen und 2 gelöschten Zeilen
  1. 23 2
      applications/cc1101-workaround/cc1101.cpp

+ 23 - 2
applications/cc1101-workaround/cc1101.cpp

@@ -23,11 +23,34 @@ CC1101::CC1101(GpioPin ss_pin) {
 //******************************************************************************
 //******************************************************************************
 //SpiInit
 //SpiInit
 /******************************************************************************/
 /******************************************************************************/
+extern SPI_HandleTypeDef hspi3;
 void CC1101::SpiInit(void) {
 void CC1101::SpiInit(void) {
     //initialize spi pins
     //initialize spi pins
 
 
     //Enable spi master, MSB, SPI mode 0, FOSC/4
     //Enable spi master, MSB, SPI mode 0, FOSC/4
     SpiMode(0);
     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) {
 void CC1101::SpiEnd(void) {
@@ -68,8 +91,6 @@ void CC1101::SpiMode(byte config) {
 *INPUT        :value: data to send
 *INPUT        :value: data to send
 *OUTPUT       :data to receive
 *OUTPUT       :data to receive
 ****************************************************************/
 ****************************************************************/
-extern SPI_HandleTypeDef hspi3;
-
 byte CC1101::SpiTransfer(byte value) {
 byte CC1101::SpiTransfer(byte value) {
     uint8_t buf[1] = {value};
     uint8_t buf[1] = {value};
     uint8_t rxbuf[1] = {0};
     uint8_t rxbuf[1] = {0};