AD5318.c 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. /*
  2. * AD5318.c
  3. *
  4. * Created on: 2019. 7. 30.
  5. * Author: parkyj
  6. */
  7. #include "ad5318.h"
  8. extern void Pol_Delay_us(volatile uint32_t microseconds);
  9. void AD5318_Initialize(void){
  10. /* * * *DAC Setting* * * * */
  11. AD5318_Ctrl(0x800C);
  12. AD5318_Ctrl(0xA000);
  13. /* * * *DAC OPERATE* * * * */
  14. AD5318_Ctrl(0x0FFF);
  15. AD5318_Ctrl(0x13FF);
  16. AD5318_Ctrl(0x24FF);
  17. AD5318_Ctrl(0x35FF);
  18. AD5318_Ctrl(0x46FF);
  19. AD5318_Ctrl(0x57FF);
  20. AD5318_Ctrl(0x68FF);
  21. AD5318_Ctrl(0x79FF);
  22. HAL_Delay(1);
  23. }
  24. void AD5318_Ctrl(uint16_t ShiftTarget) {
  25. char i; /* serial counter */
  26. // printf("ShiftTarget : %x \r\n",ShiftTarget);
  27. HAL_GPIO_WritePin(DA_SYNC_GPIO_Port, DA_SYNC_Pin, GPIO_PIN_RESET);
  28. for (i=0;i < 16;i++) { /* loop through all 16 data bits */
  29. HAL_GPIO_WritePin(DA_SCLK_GPIO_Port, DA_SCLK_Pin, GPIO_PIN_SET); /* rise clk line again */
  30. if (ShiftTarget & 0x8000) HAL_GPIO_WritePin(DA_DIN_GPIO_Port, DA_DIN_Pin, GPIO_PIN_SET);
  31. else HAL_GPIO_WritePin(DA_DIN_GPIO_Port, DA_DIN_Pin, GPIO_PIN_RESET); /* set data bit */
  32. HAL_GPIO_WritePin(DA_SCLK_GPIO_Port, DA_SCLK_Pin, GPIO_PIN_RESET); /* lower clock line */
  33. ShiftTarget <<= 1;
  34. }
  35. HAL_GPIO_WritePin(DA_LDAC_GPIO_Port, DA_LDAC_Pin, GPIO_PIN_SET);
  36. Pol_Delay_us(10);
  37. HAL_GPIO_WritePin(DA_LDAC_GPIO_Port, DA_LDAC_Pin, GPIO_PIN_RESET);
  38. HAL_GPIO_WritePin(DA_SYNC_GPIO_Port, DA_SYNC_Pin, GPIO_PIN_SET);
  39. HAL_GPIO_WritePin(DA_DIN_GPIO_Port, DA_DIN_Pin, GPIO_PIN_RESET);
  40. HAL_GPIO_WritePin(DA_LDAC_GPIO_Port, DA_LDAC_Pin, GPIO_PIN_SET);
  41. /* rise DAC SYNC line again */
  42. HAL_GPIO_WritePin(DA_SYNC_GPIO_Port, DA_SYNC_Pin, GPIO_PIN_RESET);
  43. HAL_GPIO_WritePin(DA_LDAC_GPIO_Port, DA_LDAC_Pin, GPIO_PIN_RESET);
  44. }