#include "flipper_v2.h" #include "cc1101-workaround/cc1101.h" // ****************************************************************************** #define WRITE_BURST 0x40 #define READ_SINGLE 0x80 #define READ_BURST 0xC0 #define BYTES_IN_FIFO 0x7F //used to detect FIFO underflow or overflow /*********************ss_pin as global variable****************************** */ /* cc1101 */ /******************************************************************************/ GpioPin ss_pin; CC1101::CC1101(GpioPin ss_pin) { /* pinMode(gdo0_pin, OUTPUT); //GDO0 as asynchronous serial mode input pinMode(gdo2_pin, INPUT); //GDO2 as asynchronous serial mode output */ pinMode(ss_pin, OUTPUT); this->ss_pin = 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) { /* SPCR = ((0<