AD5318(6805).c 1.3 KB

1234567891011121314151617181920212223242526272829303132
  1. /*
  2. * AD5318.c
  3. *
  4. * Created on: 2019. 7. 30.
  5. * Author: parkyj
  6. */
  7. #include "ad5318.h"
  8. void SubmitDAC(uint16_t ShiftTarget) {
  9. char i; /* serial counter */
  10. printf("ShiftTarget : %x \r\n",ShiftTarget);
  11. HAL_GPIO_WritePin(DA_SYNC_GPIO_Port, DA_SYNC_Pin, GPIO_PIN_RESET);
  12. for (i=0;i < 16;i++) { /* loop through all 16 data bits */
  13. HAL_GPIO_WritePin(DA_SCLK_GPIO_Port, DA_SCLK_Pin, GPIO_PIN_SET); /* rise clk line again */
  14. if (ShiftTarget & 0x8000) HAL_GPIO_WritePin(DA_DIN_GPIO_Port, DA_DIN_Pin, GPIO_PIN_SET);
  15. else HAL_GPIO_WritePin(DA_DIN_GPIO_Port, DA_DIN_Pin, GPIO_PIN_RESET); /* set data bit */
  16. HAL_GPIO_WritePin(DA_SCLK_GPIO_Port, DA_SCLK_Pin, GPIO_PIN_RESET); /* lower clock line */
  17. ShiftTarget <<= 1;
  18. }
  19. HAL_GPIO_WritePin(DA_LDAC_GPIO_Port, DA_LDAC_Pin, GPIO_PIN_SET);
  20. Pol_Delay_us(10);
  21. HAL_GPIO_WritePin(DA_LDAC_GPIO_Port, DA_LDAC_Pin, GPIO_PIN_RESET);
  22. HAL_GPIO_WritePin(DA_SYNC_GPIO_Port, DA_SYNC_Pin, GPIO_PIN_SET);
  23. HAL_GPIO_WritePin(DA_DIN_GPIO_Port, DA_DIN_Pin, GPIO_PIN_RESET);
  24. HAL_GPIO_WritePin(DA_LDAC_GPIO_Port, DA_LDAC_Pin, GPIO_PIN_SET);
  25. /* rise DAC SYNC line again */
  26. HAL_GPIO_WritePin(DA_SYNC_GPIO_Port, DA_SYNC_Pin, GPIO_PIN_RESET);
  27. HAL_GPIO_WritePin(DA_LDAC_GPIO_Port, DA_LDAC_Pin, GPIO_PIN_RESET);
  28. }