adc

Dependents:   h7adc

communication.cpp

Committer:
yuliyasm
Date:
2020-10-27
Revision:
2:f480200c8600
Parent:
communication.c@ 1:5796bdddf29c
Child:
3:1d62b3be52e8

File content as of revision 2:f480200c8600:

#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;
  } 
}