DAC functional

git-svn-id: https://svn.vbchaos.nl/svn/hsb/trunk@241 05563f52-14a8-4384-a975-3d1654cca0fa
This commit is contained in:
mmi
2017-10-06 11:03:45 +00:00
parent 71ae4c6832
commit f9b2cda7f8
4 changed files with 73 additions and 40 deletions

View File

@@ -44,7 +44,7 @@
#define MAX5715_SPI_Direction (SPI_Direction_1Line_Tx) #define MAX5715_SPI_Direction (SPI_Direction_1Line_Tx)
#define MAX5715_SPI_Mode (SPI_Mode_Master) #define MAX5715_SPI_Mode (SPI_Mode_Master)
#define MAX5715_SPI_DataSize (SPI_DataSize_8b) #define MAX5715_SPI_DataSize (SPI_DataSize_8b)
#define MAX5715_SPI_CPOL (SPI_CPOL_Low) #define MAX5715_SPI_CPOL (SPI_CPOL_High)
#define MAX5715_SPI_CPHA (SPI_CPHA_1Edge) #define MAX5715_SPI_CPHA (SPI_CPHA_1Edge)
#define MAX5715_SPI_NSS (SPI_NSS_Soft) #define MAX5715_SPI_NSS (SPI_NSS_Soft)
#define MAX5715_SPI_NSS_INTERNAL (SPI_NSSInternalSoft_Reset) #define MAX5715_SPI_NSS_INTERNAL (SPI_NSSInternalSoft_Reset)
@@ -83,30 +83,30 @@
#define MAX5715_CMD_CODE_ALL_LOAD_ALL (0x82) #define MAX5715_CMD_CODE_ALL_LOAD_ALL (0x82)
#define MAX5715_writeCODEn(self, DAC, DATA) (MAX5715_sendCommand(self, (MAX5715_CMD_CODEn | (0x0F & DAC)), DATA)) #define MAX5715_writeCODEn(self, DAC, DATA) (MAX5715_sendCommand(self, (MAX5715_CMD_CODEn | (0x0F & (DAC))), DATA))
#define MAX5715_writeLOADn(self, DAC) (MAX5715_sendCommand(self, (MAX5715_CMD_LOADn | (0x0F & DAC)), 0x0000)) #define MAX5715_writeLOADn(self, DAC) (MAX5715_sendCommand(self, (MAX5715_CMD_LOADn | (0x0F & (DAC))), 0x0000))
#define MAX5715_writeCODEnLOADALL(self, DAC, DATA) (MAX5715_sendCommand(self, (MAX5715_CMD_CODEn_LOAD_ALL | (0x0F & DAC)), DATA)) #define MAX5715_writeCODEnLOADALL(self, DAC, DATA) (MAX5715_sendCommand(self, (MAX5715_CMD_CODEn_LOAD_ALL | (0x0F & (DAC))), DATA))
#define MAX5715_writeCODEnLOADn(self, DAC, DATA) (MAX5715_sendCommand(self, (MAX5715_CMD_CODEn_LOADn | (0x0F & DAC)), DATA)) #define MAX5715_writeCODEnLOADn(self, DAC, DATA) (MAX5715_sendCommand(self, (MAX5715_CMD_CODEn_LOADn | (0x0F & (DAC))), DATA))
#define MAX5715_writePOWER_NORMAL(self, DAC) (MAX5715_sendCommand(self, (MAX5715_CMD_POWER_NORMAL), (0x00FF & (DAC << 4)))) #define MAX5715_writePOWER_NORMAL(self, DAC) (MAX5715_sendCommand(self, (MAX5715_CMD_POWER_NORMAL), (0x00FF & ((DAC) << 4))))
#define MAX5715_writePOWER_PD1K(self, DAC) (MAX5715_sendCommand(self, (MAX5715_CMD_POWER_PD1K), (0x00FF & (DAC << 4)))) #define MAX5715_writePOWER_PD1K(self, DAC) (MAX5715_sendCommand(self, (MAX5715_CMD_POWER_PD1K), (0x00FF & ((DAC) << 4))))
#define MAX5715_writePOWER_PD100K(self, DAC) (MAX5715_sendCommand(self, (MAX5715_CMD_POWER_PD100K), (0x00FF & (DAC << 4)))) #define MAX5715_writePOWER_PD100K(self, DAC) (MAX5715_sendCommand(self, (MAX5715_CMD_POWER_PD100K), (0x00FF & ((DAC) << 4))))
#define MAX5715_writePOWER_HIGHZ(self, DAC) (MAX5715_sendCommand(self, (MAX5715_CMD_POWER_HIGHZ), (0x00FF & (DAC << 4)))) #define MAX5715_writePOWER_HIGHZ(self, DAC) (MAX5715_sendCommand(self, (MAX5715_CMD_POWER_HIGHZ), (0x00FF & ((DAC) << 4))))
#define MAX5715_writeSW_CLEAR(self) (MAX5715_sendCommand(self, (MAX5715_CMD_SW_CLEAR), 0x0000)) #define MAX5715_writeSW_CLEAR(self) (MAX5715_sendCommand(self, (MAX5715_CMD_SW_CLEAR), 0x0000))
#define MAX5715_writeSW_RESET(self) (MAX5715_sendCommand(self, (MAX5715_CMD_SW_RESET), 0x0000)) #define MAX5715_writeSW_RESET(self) (MAX5715_sendCommand(self, (MAX5715_CMD_SW_RESET), 0x0000))
#define MAX5715_writeCONFIG_LATCH_ON(self, DAC) (MAX5715_sendCommand(self, (MAX5715_CMD_CONFIG_LATCH_ON), (0x00FF & (DAC << 4)))) #define MAX5715_writeCONFIG_LATCH_ON(self, DAC) (MAX5715_sendCommand(self, (MAX5715_CMD_CONFIG_LATCH_ON), (0x00FF & ((DAC) << 4))))
#define MAX5715_writeCONFIG_LATCH_OFF(self, DAC) (MAX5715_sendCommand(self, (MAX5715_CMD_CONFIG_LATCH_OFF), (0x00FF & (DAC << 4)))) #define MAX5715_writeCONFIG_LATCH_OFF(self, DAC) (MAX5715_sendCommand(self, (MAX5715_CMD_CONFIG_LATCH_OFF), (0x00FF & ((DAC) << 4))))
#define MAX5715_writeREF_DAC_EXT(self, DAC) (MAX5715_sendCommand(self, (MAX5715_CMD_REF_DAC_EXT), (0x00FF & (DAC << 4)))) #define MAX5715_writeREF_DAC_EXT(self) (MAX5715_sendCommand(self, (MAX5715_CMD_REF_DAC_EXT), 0x0000))
#define MAX5715_writeREF_DAC_2V5(self, DAC) (MAX5715_sendCommand(self, (MAX5715_CMD_REF_DAC_2V5), (0x00FF & (DAC << 4)))) #define MAX5715_writeREF_DAC_2V5(self) (MAX5715_sendCommand(self, (MAX5715_CMD_REF_DAC_2V5), 0x0000))
#define MAX5715_writeREF_DAC_2V0(self, DAC) (MAX5715_sendCommand(self, (MAX5715_CMD_REF_DAC_2V0), (0x00FF & (DAC << 4)))) #define MAX5715_writeREF_DAC_2V0(self) (MAX5715_sendCommand(self, (MAX5715_CMD_REF_DAC_2V0), 0x0000))
#define MAX5715_writeREF_DAC_4V0(self, DAC) (MAX5715_sendCommand(self, (MAX5715_CMD_REF_DAC_4V0), (0x00FF & (DAC << 4)))) #define MAX5715_writeREF_DAC_4V0(self) (MAX5715_sendCommand(self, (MAX5715_CMD_REF_DAC_4V0), 0x0000))
#define MAX5715_writeREF_ON_EXT(self, DAC) (MAX5715_sendCommand(self, (MAX5715_CMD_REF_ON_EXT), (0x00FF & (DAC << 4)))) #define MAX5715_writeREF_ON_EXT(self) (MAX5715_sendCommand(self, (MAX5715_CMD_REF_ON_EXT), 0x0000))
#define MAX5715_writeREF_ON_2V5(self, DAC) (MAX5715_sendCommand(self, (MAX5715_CMD_REF_ON_2V5), (0x00FF & (DAC << 4)))) #define MAX5715_writeREF_ON_2V5(self) (MAX5715_sendCommand(self, (MAX5715_CMD_REF_ON_2V5), 0x0000))
#define MAX5715_writeREF_ON_2V0(self, DAC) (MAX5715_sendCommand(self, (MAX5715_CMD_REF_ON_2V0), (0x00FF & (DAC << 4)))) #define MAX5715_writeREF_ON_2V0(self) (MAX5715_sendCommand(self, (MAX5715_CMD_REF_ON_2V0), 0x0000))
#define MAX5715_writeREF_ON_4V0(self, DAC) (MAX5715_sendCommand(self, (MAX5715_CMD_REF_ON_4V0), (0x00FF & (DAC << 4)))) #define MAX5715_writeREF_ON_4V0(self) (MAX5715_sendCommand(self, (MAX5715_CMD_REF_ON_4V0), 0x0000))
#define MAX5715_writeCODE_ALL(self, DATA) (MAX5715_sendCommand(self, (MAX5715_CMD_CODE_ALL), DATA)) #define MAX5715_writeCODE_ALL(self, DATA) (MAX5715_sendCommand(self, (MAX5715_CMD_CODE_ALL), DATA))
#define MAX5715_writeLOAD_ALL(self, DATA) (MAX5715_sendCommand(self, (MAX5715_CMD_LOAD_ALL), 0x0000)) #define MAX5715_writeLOAD_ALL(self, DATA) (MAX5715_sendCommand(self, (MAX5715_CMD_LOAD_ALL), 0x0000))

View File

@@ -187,10 +187,10 @@ ErrorStatus MAX5715Channel_setValue(struct MAX5715_DAC* self, uint16_t value)
ErrorStatus returnValue = SUCCESS; ErrorStatus returnValue = SUCCESS;
// Send data to CODEn register // Send data to CODEn register
MAX5715_writeCODEn(self->parent, MAX5715_SEL_DACB, value); MAX5715_writeCODEn(self->parent, self->id, value);
// Load CODEn register to DAC output // Load CODEn register to DAC output
MAX5715_writeLOADn(self->parent, MAX5715_SEL_DACB); MAX5715_writeLOADn(self->parent, self->id);
return returnValue; return returnValue;
} }

View File

@@ -285,9 +285,9 @@ ErrorStatus initPlatform(void)
uart3->USART_TypeDef = USART3; uart3->USART_TypeDef = USART3;
Uart_getDefaultParameters(uartTerminalParam); Uart_getDefaultParameters(uartTerminalParam);
// Adjust to higher baudrate for intensive logging // Adjust to higher baudrate for intensive logging
uartLoggerParam->baudrate = UART_TER_BAUDRATE; uartTerminalParam->baudrate = UART_TER_BAUDRATE;
// Adjust the TX queue size for intensive logging // Adjust the TX queue size for intensive logging
uartLoggerParam->txQueueSize = UART_TER_TX_QUEUE; uartTerminalParam->txQueueSize = UART_TER_TX_QUEUE;
returnValue = Uart_construct(uart3, uartTerminalParam); returnValue = Uart_construct(uart3, uartTerminalParam);
/* --------------------------------------------------------------------*/ /* --------------------------------------------------------------------*/
@@ -504,6 +504,9 @@ static ErrorStatus initIO (void)
GPIO_PinRemapConfig(GPIO_Remap_USART1, ENABLE); GPIO_PinRemapConfig(GPIO_Remap_USART1, ENABLE);
/* USART3 initialisation -------------------------------------------------*/ /* USART3 initialisation -------------------------------------------------*/
// For PCBA 0 (Cathode/MCP) and 2 (Anode), use the common USART3 IO
if ((PCBA_getInstance()->pcba == Anode) || (PCBA_getInstance()->pcba == CathodeMCP))
{
// Init TX line // Init TX line
gpio.GPIO_Typedef = GPIOB; gpio.GPIO_Typedef = GPIOB;
gpio.GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP; gpio.GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;
@@ -520,8 +523,29 @@ static ErrorStatus initIO (void)
uart1->USART_RX = gpio; uart1->USART_RX = gpio;
GPIO_Init(gpio.GPIO_Typedef, &gpio.GPIO_InitStruct); GPIO_Init(gpio.GPIO_Typedef, &gpio.GPIO_InitStruct);
GPIO_Init(uart3->USART_RX.GPIO_Typedef, &uart3->USART_RX.GPIO_InitStruct); GPIO_Init(uart3->USART_RX.GPIO_Typedef, &uart3->USART_RX.GPIO_InitStruct);
}
else if (PCBA_getInstance()->pcba == Tesla)
{
// Init TX line
gpio.GPIO_Typedef = GPIOD;
gpio.GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;
gpio.GPIO_InitStruct.GPIO_Pin = GPIO_Pin_8;
gpio.GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
uart1->USART_TX = gpio;
GPIO_Init(gpio.GPIO_Typedef, &gpio.GPIO_InitStruct);
// Init RX line
gpio.GPIO_Typedef = GPIOD;
gpio.GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;
gpio.GPIO_InitStruct.GPIO_Pin = GPIO_Pin_9;
uart1->USART_RX = gpio;
GPIO_Init(gpio.GPIO_Typedef, &gpio.GPIO_InitStruct);
GPIO_Init(uart3->USART_RX.GPIO_Typedef, &uart3->USART_RX.GPIO_InitStruct);
GPIO_PinRemapConfig(GPIO_FullRemap_USART3, ENABLE);
}
/* SPI initialisation ----------------------------------------------------*/ /* SPI initialisation ----------------------------------------------------*/
// SPI1 CLK // SPI1 CLK
_spi1.SPI_CLK.GPIO_Typedef = GPIOA; _spi1.SPI_CLK.GPIO_Typedef = GPIOA;
@@ -531,9 +555,8 @@ static ErrorStatus initIO (void)
GPIO_Init(_spi1.SPI_CLK.GPIO_Typedef, &_spi1.SPI_CLK.GPIO_InitStruct); GPIO_Init(_spi1.SPI_CLK.GPIO_Typedef, &_spi1.SPI_CLK.GPIO_InitStruct);
// SPI1 MISO // SPI1 MISO
_spi1.SPI_MISO.GPIO_Typedef = GPIOA; _spi1.SPI_MISO.GPIO_Typedef = GPIOA;
_spi1.SPI_MISO.GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP; _spi1.SPI_MISO.GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;
_spi1.SPI_MISO.GPIO_InitStruct.GPIO_Pin = GPIO_Pin_6; _spi1.SPI_MISO.GPIO_InitStruct.GPIO_Pin = GPIO_Pin_6;
_spi1.SPI_MISO.GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(_spi1.SPI_MISO.GPIO_Typedef, &_spi1.SPI_MISO.GPIO_InitStruct); GPIO_Init(_spi1.SPI_MISO.GPIO_Typedef, &_spi1.SPI_MISO.GPIO_InitStruct);
// SPI1 MOSI // SPI1 MOSI
_spi1.SPI_MOSI.GPIO_Typedef = GPIOA; _spi1.SPI_MOSI.GPIO_Typedef = GPIOA;

View File

@@ -226,9 +226,19 @@ static void initTask(void* parameters)
MAX5715_construct(&max5715, &spiDAC->device); MAX5715_construct(&max5715, &spiDAC->device);
MAX5715_writeREF_ON_2V5(&max5715, MAX5715_SEL_DACA | MAX5715_SEL_DACB | MAX5715_SEL_DACC); MAX5715_writeREF_ON_2V5(&max5715);
MAX5715_writePOWER_NORMAL(&max5715, MAX5715_SEL_DACA | MAX5715_SEL_DACB | MAX5715_SEL_DACC);
MAX5715_writeCONFIG_LATCH_OFF(&max5715, MAX5715_SEL_DACA | MAX5715_SEL_DACB | MAX5715_SEL_DACC);
MAX5715Channel_construct(&max5715.dac[0], &max5715, 0); MAX5715Channel_construct(&max5715.dac[0], &max5715, 0);
MAX5715Channel_construct(&max5715.dac[1], &max5715, 1);
MAX5715Channel_construct(&max5715.dac[2], &max5715, 2);
MAX5715Channel_setValue(&max5715.dac[0], 0x200);
MAX5715Channel_setValue(&max5715.dac[1], 0x800);
MAX5715Channel_setValue(&max5715.dac[2], 0xD00);
repairProcess_construct(rp, 3, 1024); repairProcess_construct(rp, 3, 1024);