adc
communication.c@1:5796bdddf29c, 2020-10-27 (annotated)
- Committer:
- yuliyasm
- Date:
- Tue Oct 27 12:13:16 2020 +0000
- Revision:
- 1:5796bdddf29c
final
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
yuliyasm | 1:5796bdddf29c | 1 | #include "communication.h" |
yuliyasm | 1:5796bdddf29c | 2 | #include "cmsis_os.h" |
yuliyasm | 1:5796bdddf29c | 3 | |
yuliyasm | 1:5796bdddf29c | 4 | extern UART_HandleTypeDef huart3; |
yuliyasm | 1:5796bdddf29c | 5 | enum _BOOL_ uart3PkgTransmited = _FALSE_; |
yuliyasm | 1:5796bdddf29c | 6 | enum _BOOL_ uart3PkgReceived = _FALSE_; |
yuliyasm | 1:5796bdddf29c | 7 | |
yuliyasm | 1:5796bdddf29c | 8 | extern SPI_HandleTypeDef hspi1; |
yuliyasm | 1:5796bdddf29c | 9 | enum _BOOL_ spi1PkgTransmited = _FALSE_; |
yuliyasm | 1:5796bdddf29c | 10 | enum _BOOL_ spi1PkgReceived = _FALSE_; |
yuliyasm | 1:5796bdddf29c | 11 | enum OP_TYPE spi1OpType = NONE; |
yuliyasm | 1:5796bdddf29c | 12 | uint8_t *spi1Buf; |
yuliyasm | 1:5796bdddf29c | 13 | uint8_t spi1Len; |
yuliyasm | 1:5796bdddf29c | 14 | |
yuliyasm | 1:5796bdddf29c | 15 | //void ReceiveUARTPackage(UART_HandleTypeDef *huart, uint8_t *buf, uint8_t len) |
yuliyasm | 1:5796bdddf29c | 16 | //{ |
yuliyasm | 1:5796bdddf29c | 17 | // TickType_t timeBegin = xTaskGetTickCount(); |
yuliyasm | 1:5796bdddf29c | 18 | // HAL_StatusTypeDef err = HAL_UART_Receive_DMA(huart, buf, len); |
yuliyasm | 1:5796bdddf29c | 19 | // while (!uart3PkgReceived && xTaskGetTickCount() - timeBegin < COMMUNICATION_WAITTING) osDelay(COMMUNICATION_DELAY); |
yuliyasm | 1:5796bdddf29c | 20 | // |
yuliyasm | 1:5796bdddf29c | 21 | // uart3PkgReceived = _FALSE_; |
yuliyasm | 1:5796bdddf29c | 22 | //} |
yuliyasm | 1:5796bdddf29c | 23 | // |
yuliyasm | 1:5796bdddf29c | 24 | // |
yuliyasm | 1:5796bdddf29c | 25 | // |
yuliyasm | 1:5796bdddf29c | 26 | //void TransmitUARTPackage(UART_HandleTypeDef *huart, uint8_t *buf, uint8_t len) |
yuliyasm | 1:5796bdddf29c | 27 | //{ |
yuliyasm | 1:5796bdddf29c | 28 | // TickType_t timeBegin = xTaskGetTickCount(); |
yuliyasm | 1:5796bdddf29c | 29 | // HAL_StatusTypeDef err = HAL_UART_Transmit_DMA(huart, buf, len); |
yuliyasm | 1:5796bdddf29c | 30 | // while (!uart3PkgTransmited && xTaskGetTickCount() - timeBegin < COMMUNICATION_WAITTING) osDelay(COMMUNICATION_DELAY); |
yuliyasm | 1:5796bdddf29c | 31 | // |
yuliyasm | 1:5796bdddf29c | 32 | // uart3PkgTransmited = _FALSE_; |
yuliyasm | 1:5796bdddf29c | 33 | //} |
yuliyasm | 1:5796bdddf29c | 34 | // |
yuliyasm | 1:5796bdddf29c | 35 | // |
yuliyasm | 1:5796bdddf29c | 36 | // |
yuliyasm | 1:5796bdddf29c | 37 | //void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart) |
yuliyasm | 1:5796bdddf29c | 38 | //{ |
yuliyasm | 1:5796bdddf29c | 39 | // if(huart == &huart3) { |
yuliyasm | 1:5796bdddf29c | 40 | // uart3PkgTransmited = _TRUE_; |
yuliyasm | 1:5796bdddf29c | 41 | // } |
yuliyasm | 1:5796bdddf29c | 42 | //} |
yuliyasm | 1:5796bdddf29c | 43 | // |
yuliyasm | 1:5796bdddf29c | 44 | // |
yuliyasm | 1:5796bdddf29c | 45 | // |
yuliyasm | 1:5796bdddf29c | 46 | //void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) |
yuliyasm | 1:5796bdddf29c | 47 | //{ |
yuliyasm | 1:5796bdddf29c | 48 | // if(huart == &huart3){ |
yuliyasm | 1:5796bdddf29c | 49 | // uart3PkgReceived = _TRUE_; |
yuliyasm | 1:5796bdddf29c | 50 | // } |
yuliyasm | 1:5796bdddf29c | 51 | //} |
yuliyasm | 1:5796bdddf29c | 52 | |
yuliyasm | 1:5796bdddf29c | 53 | |
yuliyasm | 1:5796bdddf29c | 54 | |
yuliyasm | 1:5796bdddf29c | 55 | void WriteToRegisterBySPI(SPI_HandleTypeDef *hspi, uint8_t addr, uint8_t *buf, uint8_t len) |
yuliyasm | 1:5796bdddf29c | 56 | { |
yuliyasm | 1:5796bdddf29c | 57 | //TickType_t timeBegin = xTaskGetTickCount(); |
yuliyasm | 1:5796bdddf29c | 58 | |
yuliyasm | 1:5796bdddf29c | 59 | enum _BOOL_ *cpltCheck; |
yuliyasm | 1:5796bdddf29c | 60 | if(hspi == &hspi1) { |
yuliyasm | 1:5796bdddf29c | 61 | spi1Buf = buf; |
yuliyasm | 1:5796bdddf29c | 62 | spi1Len = len; |
yuliyasm | 1:5796bdddf29c | 63 | spi1OpType = WRITE; |
yuliyasm | 1:5796bdddf29c | 64 | cpltCheck = &spi1PkgTransmited; |
yuliyasm | 1:5796bdddf29c | 65 | } |
yuliyasm | 1:5796bdddf29c | 66 | |
yuliyasm | 1:5796bdddf29c | 67 | HAL_SPI_Transmit_DMA(hspi, &addr, 1); |
yuliyasm | 1:5796bdddf29c | 68 | // while (!*cpltCheck && xTaskGetTickCount() - timeBegin < COMMUNICATION_WAITTING) osDelay(COMMUNICATION_DELAY); |
yuliyasm | 1:5796bdddf29c | 69 | *cpltCheck = _FALSE_; |
yuliyasm | 1:5796bdddf29c | 70 | } |
yuliyasm | 1:5796bdddf29c | 71 | |
yuliyasm | 1:5796bdddf29c | 72 | |
yuliyasm | 1:5796bdddf29c | 73 | |
yuliyasm | 1:5796bdddf29c | 74 | void ReadFromRegisterBySPI(SPI_HandleTypeDef *hspi, uint8_t addr, uint8_t *buf, uint8_t len) |
yuliyasm | 1:5796bdddf29c | 75 | { |
yuliyasm | 1:5796bdddf29c | 76 | // TickType_t timeBegin = xTaskGetTickCount(); |
yuliyasm | 1:5796bdddf29c | 77 | |
yuliyasm | 1:5796bdddf29c | 78 | enum _BOOL_ *cpltCheck; |
yuliyasm | 1:5796bdddf29c | 79 | if(hspi == &hspi1) { |
yuliyasm | 1:5796bdddf29c | 80 | spi1Buf = buf; |
yuliyasm | 1:5796bdddf29c | 81 | spi1Len = len; |
yuliyasm | 1:5796bdddf29c | 82 | spi1OpType = READ; |
yuliyasm | 1:5796bdddf29c | 83 | cpltCheck = &spi1PkgReceived; |
yuliyasm | 1:5796bdddf29c | 84 | } |
yuliyasm | 1:5796bdddf29c | 85 | |
yuliyasm | 1:5796bdddf29c | 86 | uint8_t addrBuf = addr; |
yuliyasm | 1:5796bdddf29c | 87 | HAL_SPI_Transmit_DMA(hspi, &addrBuf, 1); |
yuliyasm | 1:5796bdddf29c | 88 | // while (!*cpltCheck && xTaskGetTickCount() - timeBegin < COMMUNICATION_WAITTING) osDelay(COMMUNICATION_DELAY); |
yuliyasm | 1:5796bdddf29c | 89 | *cpltCheck = _FALSE_; |
yuliyasm | 1:5796bdddf29c | 90 | } |
yuliyasm | 1:5796bdddf29c | 91 | |
yuliyasm | 1:5796bdddf29c | 92 | |
yuliyasm | 1:5796bdddf29c | 93 | |
yuliyasm | 1:5796bdddf29c | 94 | void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi) |
yuliyasm | 1:5796bdddf29c | 95 | { |
yuliyasm | 1:5796bdddf29c | 96 | if(hspi == &hspi1) { |
yuliyasm | 1:5796bdddf29c | 97 | switch (spi1OpType) |
yuliyasm | 1:5796bdddf29c | 98 | { |
yuliyasm | 1:5796bdddf29c | 99 | case WRITE: |
yuliyasm | 1:5796bdddf29c | 100 | spi1OpType = CPLT; |
yuliyasm | 1:5796bdddf29c | 101 | HAL_SPI_Transmit_DMA(hspi, spi1Buf, spi1Len); |
yuliyasm | 1:5796bdddf29c | 102 | break; |
yuliyasm | 1:5796bdddf29c | 103 | case READ: |
yuliyasm | 1:5796bdddf29c | 104 | spi1OpType = CPLT; |
yuliyasm | 1:5796bdddf29c | 105 | HAL_SPI_Receive_DMA(hspi, spi1Buf, spi1Len); |
yuliyasm | 1:5796bdddf29c | 106 | break; |
yuliyasm | 1:5796bdddf29c | 107 | case CPLT: |
yuliyasm | 1:5796bdddf29c | 108 | spi1PkgTransmited = _TRUE_; |
yuliyasm | 1:5796bdddf29c | 109 | spi1OpType = NONE; |
yuliyasm | 1:5796bdddf29c | 110 | break; |
yuliyasm | 1:5796bdddf29c | 111 | case NONE: |
yuliyasm | 1:5796bdddf29c | 112 | break; |
yuliyasm | 1:5796bdddf29c | 113 | } |
yuliyasm | 1:5796bdddf29c | 114 | } |
yuliyasm | 1:5796bdddf29c | 115 | } |
yuliyasm | 1:5796bdddf29c | 116 | |
yuliyasm | 1:5796bdddf29c | 117 | |
yuliyasm | 1:5796bdddf29c | 118 | |
yuliyasm | 1:5796bdddf29c | 119 | void HAL_SPI_RxCpltCallback(SPI_HandleTypeDef *hspi) |
yuliyasm | 1:5796bdddf29c | 120 | { |
yuliyasm | 1:5796bdddf29c | 121 | if(hspi == &hspi1) { |
yuliyasm | 1:5796bdddf29c | 122 | spi1PkgReceived = _TRUE_; |
yuliyasm | 1:5796bdddf29c | 123 | spi1OpType = NONE; |
yuliyasm | 1:5796bdddf29c | 124 | } |
yuliyasm | 1:5796bdddf29c | 125 | } |
yuliyasm | 1:5796bdddf29c | 126 |