/* * AD5318.c * * Created on: 2019. 7. 30. * Author: parkyj */ #include "ad5318.h" extern void Pol_Delay_us(volatile uint32_t microseconds); void AD5318_Initialize(void){ /* * * *DAC Setting* * * * */ AD5318_Ctrl(0x800C); AD5318_Ctrl(0xA000); /* * * *DAC OPERATE* * * * */ AD5318_Ctrl(0x0FFF); AD5318_Ctrl(0x13FF); AD5318_Ctrl(0x24FF); AD5318_Ctrl(0x35FF); AD5318_Ctrl(0x46FF); AD5318_Ctrl(0x57FF); AD5318_Ctrl(0x68FF); AD5318_Ctrl(0x79FF); HAL_Delay(1); } void AD5318_Ctrl(uint16_t ShiftTarget) { char i; /* serial counter */ // printf("ShiftTarget : %x \r\n",ShiftTarget); HAL_GPIO_WritePin(DA_SYNC_GPIO_Port, DA_SYNC_Pin, GPIO_PIN_RESET); for (i=0;i < 16;i++) { /* loop through all 16 data bits */ HAL_GPIO_WritePin(DA_SCLK_GPIO_Port, DA_SCLK_Pin, GPIO_PIN_SET); /* rise clk line again */ if (ShiftTarget & 0x8000) HAL_GPIO_WritePin(DA_DIN_GPIO_Port, DA_DIN_Pin, GPIO_PIN_SET); else HAL_GPIO_WritePin(DA_DIN_GPIO_Port, DA_DIN_Pin, GPIO_PIN_RESET); /* set data bit */ HAL_GPIO_WritePin(DA_SCLK_GPIO_Port, DA_SCLK_Pin, GPIO_PIN_RESET); /* lower clock line */ ShiftTarget <<= 1; } HAL_GPIO_WritePin(DA_LDAC_GPIO_Port, DA_LDAC_Pin, GPIO_PIN_SET); Pol_Delay_us(10); HAL_GPIO_WritePin(DA_LDAC_GPIO_Port, DA_LDAC_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(DA_SYNC_GPIO_Port, DA_SYNC_Pin, GPIO_PIN_SET); HAL_GPIO_WritePin(DA_DIN_GPIO_Port, DA_DIN_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(DA_LDAC_GPIO_Port, DA_LDAC_Pin, GPIO_PIN_SET); /* rise DAC SYNC line again */ HAL_GPIO_WritePin(DA_SYNC_GPIO_Port, DA_SYNC_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(DA_LDAC_GPIO_Port, DA_LDAC_Pin, GPIO_PIN_RESET); }