adc

Dependents:   h7adc

Revision:
2:f480200c8600
Parent:
1:5796bdddf29c
Child:
3:1d62b3be52e8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/communication.cpp	Tue Oct 27 13:23:41 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;
+  } 
+}
+