big refactoring and features added
This commit is contained in:
103
App/Devices/laser_dac.c
Normal file
103
App/Devices/laser_dac.c
Normal file
@ -0,0 +1,103 @@
|
||||
/**
|
||||
* @file laser_dac.c
|
||||
* @brief External DAC access for laser-current and TEC channels.
|
||||
*/
|
||||
|
||||
#include "laser_dac.h"
|
||||
|
||||
#include "board_io.h"
|
||||
#include "main.h"
|
||||
|
||||
void laser_dac_write_channel(uint8_t channel, uint16_t value)
|
||||
{
|
||||
uint32_t timeout;
|
||||
|
||||
if ((channel == 1u) || (channel == 3u))
|
||||
{
|
||||
board_io_configure_spi2_mode(LL_SPI_POLARITY_HIGH, LL_SPI_PHASE_2EDGE);
|
||||
HAL_GPIO_WritePin(AD9102_CS_GPIO_Port, AD9102_CS_Pin, GPIO_PIN_SET);
|
||||
}
|
||||
|
||||
switch (channel)
|
||||
{
|
||||
case 1u:
|
||||
HAL_GPIO_WritePin(DAC_LD1_CS_GPIO_Port, DAC_LD1_CS_Pin, GPIO_PIN_RESET);
|
||||
timeout = 0u;
|
||||
while ((!LL_SPI_IsActiveFlag_TXE(SPI2)) && (timeout <= 500u))
|
||||
{
|
||||
++timeout;
|
||||
}
|
||||
LL_SPI_TransmitData16(SPI2, value);
|
||||
timeout = 0u;
|
||||
while ((!LL_SPI_IsActiveFlag_RXNE(SPI2)) && (timeout <= 500u))
|
||||
{
|
||||
++timeout;
|
||||
}
|
||||
(void)SPI2->DR;
|
||||
break;
|
||||
|
||||
case 2u:
|
||||
if (!LL_SPI_IsEnabled(SPI6))
|
||||
{
|
||||
LL_SPI_Enable(SPI6);
|
||||
}
|
||||
HAL_GPIO_WritePin(DAC_LD2_CS_GPIO_Port, DAC_LD2_CS_Pin, GPIO_PIN_RESET);
|
||||
timeout = 0u;
|
||||
while ((!LL_SPI_IsActiveFlag_TXE(SPI6)) && (timeout <= 500u))
|
||||
{
|
||||
++timeout;
|
||||
}
|
||||
LL_SPI_TransmitData16(SPI6, value);
|
||||
timeout = 0u;
|
||||
while ((!LL_SPI_IsActiveFlag_RXNE(SPI6)) && (timeout <= 500u))
|
||||
{
|
||||
++timeout;
|
||||
}
|
||||
(void)SPI6->DR;
|
||||
break;
|
||||
|
||||
case 3u:
|
||||
HAL_GPIO_WritePin(DAC_TEC1_CS_GPIO_Port, DAC_TEC1_CS_Pin, GPIO_PIN_RESET);
|
||||
timeout = 0u;
|
||||
while ((!LL_SPI_IsActiveFlag_TXE(SPI2)) && (timeout <= 500u))
|
||||
{
|
||||
++timeout;
|
||||
}
|
||||
LL_SPI_TransmitData16(SPI2, value);
|
||||
timeout = 0u;
|
||||
while ((!LL_SPI_IsActiveFlag_RXNE(SPI2)) && (timeout <= 500u))
|
||||
{
|
||||
++timeout;
|
||||
}
|
||||
(void)SPI2->DR;
|
||||
break;
|
||||
|
||||
case 4u:
|
||||
if (!LL_SPI_IsEnabled(SPI6))
|
||||
{
|
||||
LL_SPI_Enable(SPI6);
|
||||
}
|
||||
HAL_GPIO_WritePin(DAC_TEC2_CS_GPIO_Port, DAC_TEC2_CS_Pin, GPIO_PIN_RESET);
|
||||
timeout = 0u;
|
||||
while ((!LL_SPI_IsActiveFlag_TXE(SPI6)) && (timeout <= 500u))
|
||||
{
|
||||
++timeout;
|
||||
}
|
||||
LL_SPI_TransmitData16(SPI6, value);
|
||||
timeout = 0u;
|
||||
while ((!LL_SPI_IsActiveFlag_RXNE(SPI6)) && (timeout <= 500u))
|
||||
{
|
||||
++timeout;
|
||||
}
|
||||
(void)SPI6->DR;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
HAL_GPIO_WritePin(DAC_LD1_CS_GPIO_Port, DAC_LD1_CS_Pin, GPIO_PIN_SET);
|
||||
HAL_GPIO_WritePin(DAC_LD2_CS_GPIO_Port, DAC_LD2_CS_Pin, GPIO_PIN_SET);
|
||||
HAL_GPIO_WritePin(DAC_TEC1_CS_GPIO_Port, DAC_TEC1_CS_Pin, GPIO_PIN_SET);
|
||||
HAL_GPIO_WritePin(DAC_TEC2_CS_GPIO_Port, DAC_TEC2_CS_Pin, GPIO_PIN_SET);
|
||||
}
|
||||
Reference in New Issue
Block a user