Mercurial > public > ostc4
diff Small_CPU/Src/spi.c @ 89:ff7775cc34c4 kittz
temp! full cyclic SPI
author | Dmitry Romanov <kitt@bk.ru> |
---|---|
date | Fri, 23 Nov 2018 16:52:21 +0300 |
parents | 3db7389d49cc |
children | 83857eb3b12b |
line wrap: on
line diff
--- a/Small_CPU/Src/spi.c Thu Nov 22 12:02:55 2018 +0300 +++ b/Small_CPU/Src/spi.c Fri Nov 23 16:52:21 2018 +0300 @@ -1,23 +1,23 @@ /** - ****************************************************************************** - * @file spi.c - * @author heinrichs weikamp gmbh - * @version V0.0.1 - * @date 16-Sept-2014 - * @brief Source code for spi control - * - @verbatim - ============================================================================== - ##### How to use ##### - ============================================================================== - @endverbatim - ****************************************************************************** - * @attention - * - * <h2><center>© COPYRIGHT(c) 2014 heinrichs weikamp</center></h2> - * - ****************************************************************************** - */ + ****************************************************************************** + * @file spi.c + * @author heinrichs weikamp gmbh + * @version V0.0.1 + * @date 16-Sept-2014 + * @brief Source code for spi control + * + @verbatim + ============================================================================== + ##### How to use ##### + ============================================================================== + @endverbatim + ****************************************************************************** + * @attention + * + * <h2><center>© COPYRIGHT(c) 2014 heinrichs weikamp</center></h2> + * + ****************************************************************************** + */ /* Includes ------------------------------------------------------------------*/ #include "spi.h" @@ -29,9 +29,8 @@ extern void GPIO_new_DEBUG_LOW(void); extern void GPIO_new_DEBUG_HIGH(void); - -uint8_t data_error = 0; -uint32_t data_error_time = 0; +uint8_t data_error = 0; +uint32_t data_error_time = 0; static void SPI_Error_Handler(void); @@ -46,193 +45,171 @@ DMA_HandleTypeDef hdma_rx; // SPI3 init function -void MX_SPI3_Init(void) -{ - hspi3.Instance = SPI3; - hspi3.Init.Mode = SPI_MODE_MASTER; - hspi3.Init.Direction = SPI_DIRECTION_2LINES; - hspi3.Init.DataSize = SPI_DATASIZE_8BIT; - hspi3.Init.CLKPolarity = SPI_POLARITY_HIGH; - hspi3.Init.CLKPhase = SPI_PHASE_1EDGE; - hspi3.Init.NSS = SPI_NSS_SOFT; - hspi3.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_256; - hspi3.Init.FirstBit = SPI_FIRSTBIT_MSB; - hspi3.Init.TIMode = SPI_TIMODE_DISABLED; - hspi3.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLED; - hspi3.Init.CRCPolynomial = 7; - HAL_SPI_Init(&hspi3); +void MX_SPI3_Init(void) { + hspi3.Instance = SPI3; + hspi3.Init.Mode = SPI_MODE_MASTER; + hspi3.Init.Direction = SPI_DIRECTION_2LINES; + hspi3.Init.DataSize = SPI_DATASIZE_8BIT; + hspi3.Init.CLKPolarity = SPI_POLARITY_HIGH; + hspi3.Init.CLKPhase = SPI_PHASE_1EDGE; + hspi3.Init.NSS = SPI_NSS_SOFT; + hspi3.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_256; + hspi3.Init.FirstBit = SPI_FIRSTBIT_MSB; + hspi3.Init.TIMode = SPI_TIMODE_DISABLED; + hspi3.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLED; + hspi3.Init.CRCPolynomial = 7; + HAL_SPI_Init(&hspi3); } -void MX_SPI3_DeInit(void) -{ - HAL_SPI_DeInit(&hspi3); +void MX_SPI3_DeInit(void) { + HAL_SPI_DeInit(&hspi3); } -uint8_t SPI3_ButtonAdjust(uint8_t *arrayInput, uint8_t *arrayOutput) -{ +uint8_t SPI3_ButtonAdjust(uint8_t *arrayInput, uint8_t *arrayOutput) { HAL_StatusTypeDef status; uint8_t answer[10]; uint8_t rework[10]; rework[0] = 0xFF; - for(int i = 0; i < 3; i++) - { + for (int i = 0; i < 3; i++) { // limiter - if(arrayInput[i] == 0xFF) + if (arrayInput[i] == 0xFF) arrayInput[i] = 0xFE; - if(arrayInput[i] >= 15) - { + if (arrayInput[i] >= 15) { // copy - ausl�se-schwelle - rework[i+1] = arrayInput[i]; + rework[i + 1] = arrayInput[i]; // wieder-scharf-schalte-schwelle - rework[i+3+1] = arrayInput[i] - 10; - } - else - if(arrayInput[i] >= 10) - { + rework[i + 3 + 1] = arrayInput[i] - 10; + } else if (arrayInput[i] >= 10) { // copy - ausl�se-schwelle - rework[i+1] = arrayInput[i]; + rework[i + 1] = arrayInput[i]; // wieder-scharf-schalte-schwelle - rework[i+3+1] = arrayInput[i] - 5; - } - else - { + rework[i + 3 + 1] = arrayInput[i] - 5; + } else { // copy - ausl�se-schwelle - rework[i+1] = 7; + rework[i + 1] = 7; // wieder-scharf-schalte-schwelle - rework[i+3+1] = 6; + rework[i + 3 + 1] = 6; } } status = HAL_OK; /* = 0 */ - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_9,GPIO_PIN_SET); - for(int i=0;i<7;i++) - { + HAL_GPIO_WritePin(GPIOC, GPIO_PIN_9, GPIO_PIN_SET); + for (int i = 0; i < 7; i++) { + HAL_Delay(10); + HAL_GPIO_WritePin(GPIOC, GPIO_PIN_9, GPIO_PIN_RESET); HAL_Delay(10); - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_9,GPIO_PIN_RESET); + status += HAL_SPI_TransmitReceive(&hspi3, &rework[i], &answer[i], 1, + 20); HAL_Delay(10); - status += HAL_SPI_TransmitReceive(&hspi3, &rework[i], &answer[i], 1,20); - HAL_Delay(10); - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_9,GPIO_PIN_SET); + HAL_GPIO_WritePin(GPIOC, GPIO_PIN_9, GPIO_PIN_SET); } - - if(status == HAL_OK) - { - for(int i = 0; i < 3; i++) - { - arrayOutput[i] = answer[i+2]; // first not, return of 0xFF not - } + + if (status == HAL_OK) { + for (int i = 0; i < 3; i++) { + arrayOutput[i] = answer[i + 2]; // first not, return of 0xFF not + } return 1; - } - else - + } else + return 0; } - // SPI5 init function -void MX_SPI1_Init(void) -{ - hspi1.Instance = SPI1; - hspi1.Init.Mode = SPI_MODE_SLAVE; - hspi1.Init.Direction = SPI_DIRECTION_2LINES; - hspi1.Init.DataSize = SPI_DATASIZE_8BIT; - hspi1.Init.CLKPolarity = SPI_POLARITY_LOW; - hspi1.Init.CLKPhase = SPI_PHASE_1EDGE; - hspi1.Init.NSS = SPI_NSS_HARD_INPUT;//SPI_NSS_SOFT; - hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_128; - hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB; - hspi1.Init.TIMode = SPI_TIMODE_DISABLED; - hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLED;//_DISABLED; _ENABLED; - hspi1.Init.CRCPolynomial = 7; - HAL_SPI_Init(&hspi1); +void MX_SPI1_Init(void) { + hspi1.Instance = SPI1; + hspi1.Init.Mode = SPI_MODE_SLAVE; + hspi1.Init.Direction = SPI_DIRECTION_2LINES; + hspi1.Init.DataSize = SPI_DATASIZE_8BIT; + hspi1.Init.CLKPolarity = SPI_POLARITY_LOW; + hspi1.Init.CLKPhase = SPI_PHASE_1EDGE; + hspi1.Init.NSS = SPI_NSS_HARD_INPUT; //SPI_NSS_SOFT; + hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_128; + hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB; + hspi1.Init.TIMode = SPI_TIMODE_DISABLED; + hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLED; //_DISABLED; _ENABLED; + hspi1.Init.CRCPolynomial = 7; + HAL_SPI_Init(&hspi1); } -void MX_SPI_DeInit(void) -{ - HAL_SPI_DeInit(&hspi1); +void MX_SPI_DeInit(void) { + HAL_SPI_DeInit(&hspi1); } +void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi) { -void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi) -{ - - GPIO_InitTypeDef GPIO_InitStruct; + GPIO_InitTypeDef GPIO_InitStruct; - if(hspi->Instance==SPI1) - { - // Peripheral clock enable - __SPI1_CLK_ENABLE(); - __GPIOA_CLK_ENABLE(); + if (hspi->Instance == SPI1) { + // Peripheral clock enable + __SPI1_CLK_ENABLE(); + __GPIOA_CLK_ENABLE(); //SPI1 GPIO Configuration //PA4 ------> SPI1_CS //PA5 ------> SPI1_SCK //PA6 ------> SPI1_MISO //PA7 ------> SPI1_MOSI - - GPIO_InitStruct.Pin = GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7; + + GPIO_InitStruct.Pin = GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7; // GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7; - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - GPIO_InitStruct.Pull = GPIO_PULLUP; - GPIO_InitStruct.Speed = GPIO_SPEED_MEDIUM; - GPIO_InitStruct.Alternate = GPIO_AF5_SPI1; - HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_PULLUP; + GPIO_InitStruct.Speed = GPIO_SPEED_MEDIUM; + GPIO_InitStruct.Alternate = GPIO_AF5_SPI1; + HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); //##-3- Configure the DMA streams ########################################## // Configure the DMA handler for Transmission process - hdma_tx.Instance = DMA2_Stream3; - hdma_tx.Init.Channel = DMA_CHANNEL_3; - hdma_tx.Init.Direction = DMA_MEMORY_TO_PERIPH; - hdma_tx.Init.PeriphInc = DMA_PINC_DISABLE; - hdma_tx.Init.MemInc = DMA_MINC_ENABLE; + hdma_tx.Instance = DMA2_Stream3; + hdma_tx.Init.Channel = DMA_CHANNEL_3; + hdma_tx.Init.Direction = DMA_MEMORY_TO_PERIPH; + hdma_tx.Init.PeriphInc = DMA_PINC_DISABLE; + hdma_tx.Init.MemInc = DMA_MINC_ENABLE; hdma_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; - hdma_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; - hdma_tx.Init.Mode = DMA_NORMAL; - hdma_tx.Init.Priority = DMA_PRIORITY_LOW; - hdma_tx.Init.FIFOMode = DMA_FIFOMODE_DISABLE; - hdma_tx.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL; - hdma_tx.Init.MemBurst = DMA_MBURST_INC4; - hdma_tx.Init.PeriphBurst = DMA_PBURST_INC4; - - HAL_DMA_Init(&hdma_tx); - + hdma_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; + hdma_tx.Init.Mode = DMA_NORMAL; + hdma_tx.Init.Priority = DMA_PRIORITY_VERY_HIGH; + hdma_tx.Init.FIFOMode = DMA_FIFOMODE_DISABLE; + hdma_tx.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL; + hdma_tx.Init.MemBurst = DMA_MBURST_INC4; + hdma_tx.Init.PeriphBurst = DMA_PBURST_INC4; + + HAL_DMA_Init(&hdma_tx); + // Associate the initialized DMA handle to the the SPI handle __HAL_LINKDMA(hspi, hdmatx, hdma_tx); - + // Configure the DMA handler for Transmission process - hdma_rx.Instance = DMA2_Stream0; - hdma_rx.Init.Channel = DMA_CHANNEL_3; - hdma_rx.Init.Direction = DMA_PERIPH_TO_MEMORY; - hdma_rx.Init.PeriphInc = DMA_PINC_DISABLE; - hdma_rx.Init.MemInc = DMA_MINC_ENABLE; + hdma_rx.Instance = DMA2_Stream0; + hdma_rx.Init.Channel = DMA_CHANNEL_3; + hdma_rx.Init.Direction = DMA_PERIPH_TO_MEMORY; + hdma_rx.Init.PeriphInc = DMA_PINC_DISABLE; + hdma_rx.Init.MemInc = DMA_MINC_ENABLE; hdma_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; - hdma_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; - hdma_rx.Init.Mode = DMA_NORMAL; - hdma_rx.Init.Priority = DMA_PRIORITY_HIGH; - hdma_rx.Init.FIFOMode = DMA_FIFOMODE_DISABLE; - hdma_rx.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL; - hdma_rx.Init.MemBurst = DMA_MBURST_INC4; - hdma_rx.Init.PeriphBurst = DMA_PBURST_INC4; + hdma_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; + hdma_rx.Init.Mode = DMA_NORMAL; + hdma_rx.Init.Priority = DMA_PRIORITY_HIGH; + hdma_rx.Init.FIFOMode = DMA_FIFOMODE_DISABLE; + hdma_rx.Init.FIFOThreshold = DMA_FIFO_THRESHOLD_FULL; + hdma_rx.Init.MemBurst = DMA_MBURST_INC4; + hdma_rx.Init.PeriphBurst = DMA_PBURST_INC4; HAL_DMA_Init(&hdma_rx); - - // Associate the initialized DMA handle to the the SPI handle - __HAL_LINKDMA(hspi, hdmarx, hdma_rx); - - //##-4- Configure the NVIC for DMA ######################################### - //NVIC configuration for DMA transfer complete interrupt (SPI3_RX) - HAL_NVIC_SetPriority(DMA2_Stream0_IRQn, 1, 0); - HAL_NVIC_EnableIRQ(DMA2_Stream0_IRQn); + + // Associate the initialized DMA handle to the the SPI handle + __HAL_LINKDMA(hspi, hdmarx, hdma_rx); - // NVIC configuration for DMA transfer complete interrupt (SPI1_TX) - HAL_NVIC_SetPriority(DMA2_Stream3_IRQn, 1, 1); - HAL_NVIC_EnableIRQ(DMA2_Stream3_IRQn); - } - else - if(hspi->Instance==SPI3) - { - __GPIOC_CLK_ENABLE(); - __SPI3_CLK_ENABLE(); + //##-4- Configure the NVIC for DMA ######################################### + //NVIC configuration for DMA transfer complete interrupt (SPI3_RX) + HAL_NVIC_SetPriority(DMA2_Stream0_IRQn, 1, 0); + HAL_NVIC_EnableIRQ(DMA2_Stream0_IRQn); + + // NVIC configuration for DMA transfer complete interrupt (SPI1_TX) + HAL_NVIC_SetPriority(DMA2_Stream3_IRQn, 1, 1); + HAL_NVIC_EnableIRQ(DMA2_Stream3_IRQn); + } else if (hspi->Instance == SPI3) { + __GPIOC_CLK_ENABLE(); + __SPI3_CLK_ENABLE(); //SPI1 GPIO Configuration //PC10 ------> SPI3_SCK @@ -240,27 +217,26 @@ //PC12 ------> SPI3_MOSI //PA15 ------> SPI3_NSS (official) //PC9 ------> SPI3_NSS (hw) - - GPIO_InitStruct.Pin = GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12; - GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; - GPIO_InitStruct.Pull = GPIO_PULLUP; - GPIO_InitStruct.Speed = GPIO_SPEED_FAST; - GPIO_InitStruct.Alternate = GPIO_AF6_SPI3; - HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + + GPIO_InitStruct.Pin = GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_PULLUP; + GPIO_InitStruct.Speed = GPIO_SPEED_FAST; + GPIO_InitStruct.Alternate = GPIO_AF6_SPI3; + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); GPIO_InitStruct.Pin = GPIO_PIN_9; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Speed = GPIO_SPEED_LOW; - HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_9,GPIO_PIN_SET); + HAL_GPIO_WritePin(GPIOC, GPIO_PIN_9, GPIO_PIN_SET); } } -void HAL_SPI_MspDeInit(SPI_HandleTypeDef* hspi){ - if(hspi->Instance==SPI1) - { +void HAL_SPI_MspDeInit(SPI_HandleTypeDef* hspi) { + if (hspi->Instance == SPI1) { __SPI1_FORCE_RESET(); __SPI1_RELEASE_RESET(); @@ -268,18 +244,15 @@ //PA5 ------> SPI1_SCK //PA6 ------> SPI1_MISO //PA7 ------> SPI1_MOSI - - HAL_GPIO_DeInit(GPIOA, GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7); + + HAL_GPIO_DeInit(GPIOA, GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7); HAL_DMA_DeInit(&hdma_tx); HAL_DMA_DeInit(&hdma_rx); - + HAL_NVIC_DisableIRQ(DMA2_Stream3_IRQn); HAL_NVIC_DisableIRQ(DMA2_Stream0_IRQn); - } - else - if(hspi->Instance==SPI3) - { + } else if (hspi->Instance == SPI3) { __SPI3_FORCE_RESET(); __SPI3_RELEASE_RESET(); @@ -289,119 +262,105 @@ //PC12 ------> SPI3_MOSI //PA15 ------> SPI3_NSS (official) //PC9 ------> SPI3_NSS (hw) - HAL_GPIO_DeInit(GPIOC, GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12); + HAL_GPIO_DeInit(GPIOC, GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12); } } -void SPI_synchronize_with_Master(void) -{ - GPIO_InitTypeDef GPIO_InitStruct; - - __GPIOA_CLK_ENABLE(); - /**SPI1 GPIO Configuration - PA5 ------> SPI1_SCK - */ - GPIO_InitStruct.Pin = GPIO_PIN_4|GPIO_PIN_5; - GPIO_InitStruct.Mode = GPIO_MODE_INPUT; - GPIO_InitStruct.Pull = GPIO_PULLUP; - GPIO_InitStruct.Speed = GPIO_SPEED_LOW; - HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - - HAL_Delay(10); - while(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_4) == 0); - HAL_Delay(10); - while(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_5) == 1); - HAL_Delay(50); +void SPI_synchronize_with_Master(void) { +// GPIO_InitTypeDef GPIO_InitStruct; +// +// __GPIOA_CLK_ENABLE(); +// /**SPI1 GPIO Configuration +// PA5 ------> SPI1_SCK +// */ +// GPIO_InitStruct.Pin = GPIO_PIN_4 | GPIO_PIN_5; +// GPIO_InitStruct.Mode = GPIO_MODE_INPUT; +// GPIO_InitStruct.Pull = GPIO_PULLUP; +// GPIO_InitStruct.Speed = GPIO_SPEED_LOW; +// HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); +// +// HAL_Delay(10); +// while (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_4) == 0); +// HAL_Delay(10); +// while (HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_5) == 1); +// HAL_Delay(20); } - -void SPI_Start_single_TxRx_with_Master(void) -{ +void SPI_Start_single_TxRx_with_Master(void) { uint8_t * pOutput; - if(global.dataSendToSlave.getDeviceDataNow) - { + if (global.dataSendToSlave.getDeviceDataNow) { global.dataSendToSlave.getDeviceDataNow = 0; - pOutput = (uint8_t*)&(global.deviceDataSendToMaster); - } - else - { - pOutput = (uint8_t*)&(global.dataSendToMaster); + pOutput = (uint8_t*) &(global.deviceDataSendToMaster); + } else { + pOutput = (uint8_t*) &(global.dataSendToMaster); } - if(HAL_SPI_TransmitReceive_DMA(&hspi1,pOutput, (uint8_t*)&(global.dataSendToSlave), EXCHANGE_BUFFERSIZE+1) != HAL_OK) - { - // Transfer error in transmission process + if (HAL_SPI_TransmitReceive_DMA(&hspi1, pOutput,(uint8_t*) &(global.dataSendToSlave), EXCHANGE_BUFFERSIZE)!= HAL_OK) { + // Transfer error in transmission process SPI_Error_Handler(); } } +void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi) { + /* restart SPI */ + if (hspi == &hspi1) { -void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi) -{ - /* restart SPI */ -if(hspi == &hspi1) - { + global.check_sync_not_running = 0; + /* stop data exchange? */ + if (global.mode == MODE_SHUTDOWN) { + global.mode = MODE_SLEEP; + global.dataSendToSlavePending = 0; + global.dataSendToSlaveIsValid = 1; + global.dataSendToSlaveIsNotValidCount = 0; + return; + } - global.check_sync_not_running = 0; - /* stop data exchange? */ - if(global.mode == MODE_SHUTDOWN) - { - global.mode = MODE_SLEEP; - global.dataSendToSlavePending = 0; - global.dataSendToSlaveIsValid = 1; - global.dataSendToSlaveIsNotValidCount = 0; - return; + /* data consistent? */ + if (SPI_check_header_and_footer_ok()) { +// GPIO_new_DEBUG_HIGH(); //For debug. + global.dataSendToSlaveIsValid = 1; + global.dataSendToSlaveIsNotValidCount = 0; + } else { +// GPIO_new_DEBUG_LOW(); //For debug. + global.dataSendToSlaveIsValid = 0; + global.dataSendToSlaveIsNotValidCount++; + global.check_sync_not_running++; + } + global.dataSendToMaster.power_on_reset = 0; + global.deviceDataSendToMaster.power_on_reset = 0; + + +// if ( !global.dataSendToSlaveStopEval ) { +// scheduleSpecial_Evaluate_DataSendToSlave(); +// } + scheduleSpecial_Evaluate_DataSendToSlave(); + SPI_Start_single_TxRx_with_Master(); } - - /* data consistent? */ - if(SPI_check_header_and_footer_ok()) - { -// GPIO_new_DEBUG_HIGH(); //For debug. - global.dataSendToSlaveIsValid = 1; - global.dataSendToSlaveIsNotValidCount = 0; - } - else - { -// GPIO_new_DEBUG_LOW(); //For debug. - global.dataSendToSlaveIsValid = 0; - global.dataSendToSlaveIsNotValidCount++; - } - global.dataSendToMaster.power_on_reset = 0; - global.deviceDataSendToMaster.power_on_reset = 0; - if(!global.dataSendToSlaveStopEval) - { - scheduleSpecial_Evaluate_DataSendToSlave(); - } - SPI_Start_single_TxRx_with_Master(); - } } - -static uint8_t SPI_check_header_and_footer_ok(void) -{ - if(global.dataSendToSlave.header.checkCode[0] != 0xBB) +static uint8_t SPI_check_header_and_footer_ok(void) { + if (global.dataSendToSlave.header.checkCode[0] != 0xBB) return 0; - if(global.dataSendToSlave.header.checkCode[1] != 0x01) + if (global.dataSendToSlave.header.checkCode[1] != 0x01) return 0; - if(global.dataSendToSlave.header.checkCode[2] != 0x01) + if (global.dataSendToSlave.header.checkCode[2] != 0x01) return 0; - if(global.dataSendToSlave.header.checkCode[3] != 0xBB) + if (global.dataSendToSlave.header.checkCode[3] != 0xBB) return 0; - if(global.dataSendToSlave.footer.checkCode[0] != 0xF4) + if (global.dataSendToSlave.footer.checkCode[0] != 0xF4) return 0; - if(global.dataSendToSlave.footer.checkCode[1] != 0xF3) + if (global.dataSendToSlave.footer.checkCode[1] != 0xF3) return 0; - if(global.dataSendToSlave.footer.checkCode[2] != 0xF2) + if (global.dataSendToSlave.footer.checkCode[2] != 0xF2) return 0; - if(global.dataSendToSlave.footer.checkCode[3] != 0xF1) + if (global.dataSendToSlave.footer.checkCode[3] != 0xF1) return 0; return 1; } -static void SPI_Error_Handler(void) -{ +static void SPI_Error_Handler(void) { //The device is locks. Hard to recover. // while(1) // { @@ -409,11 +368,11 @@ } /** - * @} - */ + * @} + */ /** - * @} - */ + * @} + */ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/