adc
Diff: communication.c
- Revision:
- 1:5796bdddf29c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/communication.c Tue Oct 27 12:13:16 2020 +0000 @@ -0,0 +1,126 @@ +#include "communication.h" +#include "cmsis_os.h" + +extern UART_HandleTypeDef huart3; +enum _BOOL_ uart3PkgTransmited = _FALSE_; +enum _BOOL_ uart3PkgReceived = _FALSE_; + +extern SPI_HandleTypeDef hspi1; +enum _BOOL_ spi1PkgTransmited = _FALSE_; +enum _BOOL_ spi1PkgReceived = _FALSE_; +enum OP_TYPE spi1OpType = NONE; +uint8_t *spi1Buf; +uint8_t spi1Len; + +//void ReceiveUARTPackage(UART_HandleTypeDef *huart, uint8_t *buf, uint8_t len) +//{ +// TickType_t timeBegin = xTaskGetTickCount(); +// HAL_StatusTypeDef err = HAL_UART_Receive_DMA(huart, buf, len); +// while (!uart3PkgReceived && xTaskGetTickCount() - timeBegin < COMMUNICATION_WAITTING) osDelay(COMMUNICATION_DELAY); +// +// uart3PkgReceived = _FALSE_; +//} +// +// +// +//void TransmitUARTPackage(UART_HandleTypeDef *huart, uint8_t *buf, uint8_t len) +//{ +// TickType_t timeBegin = xTaskGetTickCount(); +// HAL_StatusTypeDef err = HAL_UART_Transmit_DMA(huart, buf, len); +// while (!uart3PkgTransmited && xTaskGetTickCount() - timeBegin < COMMUNICATION_WAITTING) osDelay(COMMUNICATION_DELAY); +// +// uart3PkgTransmited = _FALSE_; +//} +// +// +// +//void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart) +//{ +// if(huart == &huart3) { +// uart3PkgTransmited = _TRUE_; +// } +//} +// +// +// +//void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) +//{ +// if(huart == &huart3){ +// uart3PkgReceived = _TRUE_; +// } +//} + + + +void WriteToRegisterBySPI(SPI_HandleTypeDef *hspi, uint8_t addr, uint8_t *buf, uint8_t len) +{ + //TickType_t timeBegin = xTaskGetTickCount(); + + enum _BOOL_ *cpltCheck; + if(hspi == &hspi1) { + spi1Buf = buf; + spi1Len = len; + spi1OpType = WRITE; + cpltCheck = &spi1PkgTransmited; + } + + HAL_SPI_Transmit_DMA(hspi, &addr, 1); +// while (!*cpltCheck && xTaskGetTickCount() - timeBegin < COMMUNICATION_WAITTING) osDelay(COMMUNICATION_DELAY); + *cpltCheck = _FALSE_; +} + + + +void ReadFromRegisterBySPI(SPI_HandleTypeDef *hspi, uint8_t addr, uint8_t *buf, uint8_t len) +{ +// TickType_t timeBegin = xTaskGetTickCount(); + + enum _BOOL_ *cpltCheck; + if(hspi == &hspi1) { + spi1Buf = buf; + spi1Len = len; + spi1OpType = READ; + cpltCheck = &spi1PkgReceived; + } + + uint8_t addrBuf = addr; + HAL_SPI_Transmit_DMA(hspi, &addrBuf, 1); +// while (!*cpltCheck && xTaskGetTickCount() - timeBegin < COMMUNICATION_WAITTING) osDelay(COMMUNICATION_DELAY); + *cpltCheck = _FALSE_; +} + + + +void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi) +{ + if(hspi == &hspi1) { + switch (spi1OpType) + { + case WRITE: + spi1OpType = CPLT; + HAL_SPI_Transmit_DMA(hspi, spi1Buf, spi1Len); + break; + case READ: + spi1OpType = CPLT; + HAL_SPI_Receive_DMA(hspi, spi1Buf, spi1Len); + break; + case CPLT: + spi1PkgTransmited = _TRUE_; + spi1OpType = NONE; + break; + case NONE: + break; + } + } +} + + + +void HAL_SPI_RxCpltCallback(SPI_HandleTypeDef *hspi) +{ + if(hspi == &hspi1) { + spi1PkgReceived = _TRUE_; + spi1OpType = NONE; + } +} +