AD5318.c 1.7 KB

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