/* * 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){ HAL_Delay(1); /* * * *DAC Setting* * * * */ AD5318_Ctrl(0x800C); HAL_Delay(1); AD5318_Ctrl(0xA000); HAL_Delay(1); /* * * *DAC OPERATE* * * * */ #if 0 // PYJ.2019.10.21_BEGIN -- AD5318_Ctrl(0x0000); AD5318_Ctrl(0x1000); AD5318_Ctrl(0x2000); AD5318_Ctrl(0x3000); AD5318_Ctrl(0x4000); AD5318_Ctrl(0x5000); AD5318_Ctrl(0x6000); AD5318_Ctrl(0x7000); HAL_Delay(1); #endif // PYJ.2019.10.21_END -- } #if 0 void AD5318_Ctrl(uint16_t ShiftTarget) { char i; /* serial counter */ // printf("ShiftTarget : %x \r\n",ShiftTarget); #if 1 // PYJ.2019.11.14_BEGIN -- if(ShiftTarget & 0x1000){ 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 */ Pol_Delay_us(10); 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 */ Pol_Delay_us(10); HAL_GPIO_WritePin(DA_SCLK_GPIO_Port, DA_SCLK_Pin, GPIO_PIN_RESET); /* lower clock line */ ShiftTarget <<= 1; Pol_Delay_us(10); } 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); Pol_Delay_us(10); HAL_GPIO_WritePin(DA_SYNC_GPIO_Port, DA_SYNC_Pin, GPIO_PIN_SET); Pol_Delay_us(10); HAL_GPIO_WritePin(DA_DIN_GPIO_Port, DA_DIN_Pin, GPIO_PIN_RESET); Pol_Delay_us(10); HAL_GPIO_WritePin(DA_LDAC_GPIO_Port, DA_LDAC_Pin, GPIO_PIN_SET); Pol_Delay_us(10); /* rise DAC SYNC line again */ HAL_GPIO_WritePin(DA_SYNC_GPIO_Port, DA_SYNC_Pin, GPIO_PIN_RESET); Pol_Delay_us(10); HAL_GPIO_WritePin(DA_LDAC_GPIO_Port, DA_LDAC_Pin, GPIO_PIN_RESET); Pol_Delay_us(10); } else{ 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 */ Pol_Delay_us(10); 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 */ Pol_Delay_us(10); HAL_GPIO_WritePin(DA_SCLK_GPIO_Port, DA_SCLK_Pin, GPIO_PIN_RESET); /* lower clock line */ ShiftTarget <<= 1; Pol_Delay_us(10); } 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); Pol_Delay_us(10); HAL_GPIO_WritePin(DA_SYNC_GPIO_Port, DA_SYNC_Pin, GPIO_PIN_SET); Pol_Delay_us(10); HAL_GPIO_WritePin(DA_DIN_GPIO_Port, DA_DIN_Pin, GPIO_PIN_RESET); Pol_Delay_us(10); HAL_GPIO_WritePin(DA_LDAC_GPIO_Port, DA_LDAC_Pin, GPIO_PIN_SET); Pol_Delay_us(10); /* rise DAC SYNC line again */ HAL_GPIO_WritePin(DA_SYNC_GPIO_Port, DA_SYNC_Pin, GPIO_PIN_RESET); Pol_Delay_us(10); HAL_GPIO_WritePin(DA_LDAC_GPIO_Port, DA_LDAC_Pin, GPIO_PIN_RESET); Pol_Delay_us(10); } #else HAL_GPIO_WritePin(DA_LDAC_GPIO_Port, DA_LDAC_Pin, GPIO_PIN_SET); if(ShiftTarget & 0x1000){ 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 */ if(i <= 2) HAL_GPIO_WritePin(DA_SYNC_GPIO_Port, DA_SYNC_Pin, GPIO_PIN_SET); else HAL_GPIO_WritePin(DA_SYNC_GPIO_Port, DA_SYNC_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(DA_SCLK_GPIO_Port, DA_SCLK_Pin, GPIO_PIN_SET); /* rise clk line again */ Pol_Delay_us(10); 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 */ Pol_Delay_us(10); HAL_GPIO_WritePin(DA_SCLK_GPIO_Port, DA_SCLK_Pin, GPIO_PIN_RESET); /* lower clock line */ ShiftTarget <<= 1; Pol_Delay_us(10); } Pol_Delay_us(10); HAL_GPIO_WritePin(DA_LDAC_GPIO_Port, DA_LDAC_Pin, GPIO_PIN_RESET); Pol_Delay_us(10); HAL_GPIO_WritePin(DA_SYNC_GPIO_Port, DA_SYNC_Pin, GPIO_PIN_SET); Pol_Delay_us(10); HAL_GPIO_WritePin(DA_DIN_GPIO_Port, DA_DIN_Pin, GPIO_PIN_RESET); Pol_Delay_us(10); /* rise DAC SYNC line again */ HAL_GPIO_WritePin(DA_SYNC_GPIO_Port, DA_SYNC_Pin, GPIO_PIN_RESET); Pol_Delay_us(10); HAL_GPIO_WritePin(DA_LDAC_GPIO_Port, DA_LDAC_Pin, GPIO_PIN_SET); Pol_Delay_us(10); #endif // PYJ.2019.11.14_END -- } } #else 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); } #endif