AD5318.c 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  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. HAL_Delay(1);
  11. /* * * *DAC Setting* * * * */
  12. AD5318_Ctrl(0x800C);
  13. HAL_Delay(1);
  14. AD5318_Ctrl(0xA000);
  15. HAL_Delay(1);
  16. /* * * *DAC OPERATE* * * * */
  17. #if 0 // PYJ.2019.10.21_BEGIN --
  18. AD5318_Ctrl(0x0000);
  19. AD5318_Ctrl(0x1000);
  20. AD5318_Ctrl(0x2000);
  21. AD5318_Ctrl(0x3000);
  22. AD5318_Ctrl(0x4000);
  23. AD5318_Ctrl(0x5000);
  24. AD5318_Ctrl(0x6000);
  25. AD5318_Ctrl(0x7000);
  26. HAL_Delay(1);
  27. #endif // PYJ.2019.10.21_END --
  28. }
  29. void AD5318_Ctrl(uint16_t ShiftTarget) {
  30. char i; /* serial counter */
  31. // printf("ShiftTarget : %x \r\n",ShiftTarget);
  32. #if 0 // PYJ.2019.11.14_BEGIN --
  33. if(ShiftTarget & 0x1000){
  34. HAL_GPIO_WritePin(DA_SYNC_GPIO_Port, DA_SYNC_Pin, GPIO_PIN_RESET);
  35. for (i=0;i < 16;i++) { /* loop through all 16 data bits */
  36. HAL_GPIO_WritePin(DA_SCLK_GPIO_Port, DA_SCLK_Pin, GPIO_PIN_SET); /* rise clk line again */
  37. Pol_Delay_us(10);
  38. if (ShiftTarget & 0x8000) HAL_GPIO_WritePin(DA_DIN_GPIO_Port, DA_DIN_Pin, GPIO_PIN_SET);
  39. else HAL_GPIO_WritePin(DA_DIN_GPIO_Port, DA_DIN_Pin, GPIO_PIN_RESET); /* set data bit */
  40. Pol_Delay_us(10);
  41. HAL_GPIO_WritePin(DA_SCLK_GPIO_Port, DA_SCLK_Pin, GPIO_PIN_RESET); /* lower clock line */
  42. ShiftTarget <<= 1;
  43. Pol_Delay_us(10);
  44. }
  45. HAL_GPIO_WritePin(DA_LDAC_GPIO_Port, DA_LDAC_Pin, GPIO_PIN_SET);
  46. Pol_Delay_us(10);
  47. HAL_GPIO_WritePin(DA_LDAC_GPIO_Port, DA_LDAC_Pin, GPIO_PIN_RESET);
  48. Pol_Delay_us(10);
  49. HAL_GPIO_WritePin(DA_SYNC_GPIO_Port, DA_SYNC_Pin, GPIO_PIN_SET);
  50. Pol_Delay_us(10);
  51. HAL_GPIO_WritePin(DA_DIN_GPIO_Port, DA_DIN_Pin, GPIO_PIN_RESET);
  52. Pol_Delay_us(10);
  53. HAL_GPIO_WritePin(DA_LDAC_GPIO_Port, DA_LDAC_Pin, GPIO_PIN_SET);
  54. Pol_Delay_us(10);
  55. /* rise DAC SYNC line again */
  56. HAL_GPIO_WritePin(DA_SYNC_GPIO_Port, DA_SYNC_Pin, GPIO_PIN_RESET);
  57. Pol_Delay_us(10);
  58. HAL_GPIO_WritePin(DA_LDAC_GPIO_Port, DA_LDAC_Pin, GPIO_PIN_RESET);
  59. Pol_Delay_us(10);
  60. }
  61. else{
  62. HAL_GPIO_WritePin(DA_SYNC_GPIO_Port, DA_SYNC_Pin, GPIO_PIN_RESET);
  63. for (i=0;i < 16;i++) { /* loop through all 16 data bits */
  64. HAL_GPIO_WritePin(DA_SCLK_GPIO_Port, DA_SCLK_Pin, GPIO_PIN_SET); /* rise clk line again */
  65. Pol_Delay_us(10);
  66. if (ShiftTarget & 0x8000) HAL_GPIO_WritePin(DA_DIN_GPIO_Port, DA_DIN_Pin, GPIO_PIN_SET);
  67. else HAL_GPIO_WritePin(DA_DIN_GPIO_Port, DA_DIN_Pin, GPIO_PIN_RESET); /* set data bit */
  68. Pol_Delay_us(10);
  69. HAL_GPIO_WritePin(DA_SCLK_GPIO_Port, DA_SCLK_Pin, GPIO_PIN_RESET); /* lower clock line */
  70. ShiftTarget <<= 1;
  71. Pol_Delay_us(10);
  72. }
  73. HAL_GPIO_WritePin(DA_LDAC_GPIO_Port, DA_LDAC_Pin, GPIO_PIN_SET);
  74. Pol_Delay_us(10);
  75. HAL_GPIO_WritePin(DA_LDAC_GPIO_Port, DA_LDAC_Pin, GPIO_PIN_RESET);
  76. Pol_Delay_us(10);
  77. HAL_GPIO_WritePin(DA_SYNC_GPIO_Port, DA_SYNC_Pin, GPIO_PIN_SET);
  78. Pol_Delay_us(10);
  79. HAL_GPIO_WritePin(DA_DIN_GPIO_Port, DA_DIN_Pin, GPIO_PIN_RESET);
  80. Pol_Delay_us(10);
  81. HAL_GPIO_WritePin(DA_LDAC_GPIO_Port, DA_LDAC_Pin, GPIO_PIN_SET);
  82. Pol_Delay_us(10);
  83. /* rise DAC SYNC line again */
  84. HAL_GPIO_WritePin(DA_SYNC_GPIO_Port, DA_SYNC_Pin, GPIO_PIN_RESET);
  85. Pol_Delay_us(10);
  86. HAL_GPIO_WritePin(DA_LDAC_GPIO_Port, DA_LDAC_Pin, GPIO_PIN_RESET);
  87. Pol_Delay_us(10);
  88. }
  89. #else
  90. HAL_GPIO_WritePin(DA_LDAC_GPIO_Port, DA_LDAC_Pin, GPIO_PIN_SET);
  91. if(ShiftTarget & 0x1000){
  92. HAL_GPIO_WritePin(DA_SYNC_GPIO_Port, DA_SYNC_Pin, GPIO_PIN_RESET);
  93. for (i=0;i < 16;i++) { /* loop through all 16 data bits */
  94. if(i <= 2)
  95. HAL_GPIO_WritePin(DA_SYNC_GPIO_Port, DA_SYNC_Pin, GPIO_PIN_SET);
  96. else
  97. HAL_GPIO_WritePin(DA_SYNC_GPIO_Port, DA_SYNC_Pin, GPIO_PIN_RESET);
  98. HAL_GPIO_WritePin(DA_SCLK_GPIO_Port, DA_SCLK_Pin, GPIO_PIN_SET); /* rise clk line again */
  99. Pol_Delay_us(10);
  100. if (ShiftTarget & 0x8000) HAL_GPIO_WritePin(DA_DIN_GPIO_Port, DA_DIN_Pin, GPIO_PIN_SET);
  101. else HAL_GPIO_WritePin(DA_DIN_GPIO_Port, DA_DIN_Pin, GPIO_PIN_RESET); /* set data bit */
  102. Pol_Delay_us(10);
  103. HAL_GPIO_WritePin(DA_SCLK_GPIO_Port, DA_SCLK_Pin, GPIO_PIN_RESET); /* lower clock line */
  104. ShiftTarget <<= 1;
  105. Pol_Delay_us(10);
  106. }
  107. Pol_Delay_us(10);
  108. HAL_GPIO_WritePin(DA_LDAC_GPIO_Port, DA_LDAC_Pin, GPIO_PIN_RESET);
  109. Pol_Delay_us(10);
  110. HAL_GPIO_WritePin(DA_SYNC_GPIO_Port, DA_SYNC_Pin, GPIO_PIN_SET);
  111. Pol_Delay_us(10);
  112. HAL_GPIO_WritePin(DA_DIN_GPIO_Port, DA_DIN_Pin, GPIO_PIN_RESET);
  113. Pol_Delay_us(10);
  114. /* rise DAC SYNC line again */
  115. HAL_GPIO_WritePin(DA_SYNC_GPIO_Port, DA_SYNC_Pin, GPIO_PIN_RESET);
  116. Pol_Delay_us(10);
  117. HAL_GPIO_WritePin(DA_LDAC_GPIO_Port, DA_LDAC_Pin, GPIO_PIN_SET);
  118. Pol_Delay_us(10);
  119. #endif // PYJ.2019.11.14_END --
  120. }
  121. }