AD5318.c 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  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. #if 0
  30. void AD5318_Ctrl(uint16_t ShiftTarget) {
  31. char i; /* serial counter */
  32. // printf("ShiftTarget : %x \r\n",ShiftTarget);
  33. #if 1 // PYJ.2019.11.14_BEGIN --
  34. if(ShiftTarget & 0x1000){
  35. HAL_GPIO_WritePin(DA_SYNC_GPIO_Port, DA_SYNC_Pin, GPIO_PIN_RESET);
  36. for (i=0;i < 16;i++) { /* loop through all 16 data bits */
  37. HAL_GPIO_WritePin(DA_SCLK_GPIO_Port, DA_SCLK_Pin, GPIO_PIN_SET); /* rise clk line again */
  38. Pol_Delay_us(10);
  39. if (ShiftTarget & 0x8000) HAL_GPIO_WritePin(DA_DIN_GPIO_Port, DA_DIN_Pin, GPIO_PIN_SET);
  40. else HAL_GPIO_WritePin(DA_DIN_GPIO_Port, DA_DIN_Pin, GPIO_PIN_RESET); /* set data bit */
  41. Pol_Delay_us(10);
  42. HAL_GPIO_WritePin(DA_SCLK_GPIO_Port, DA_SCLK_Pin, GPIO_PIN_RESET); /* lower clock line */
  43. ShiftTarget <<= 1;
  44. Pol_Delay_us(10);
  45. }
  46. HAL_GPIO_WritePin(DA_LDAC_GPIO_Port, DA_LDAC_Pin, GPIO_PIN_SET);
  47. Pol_Delay_us(10);
  48. HAL_GPIO_WritePin(DA_LDAC_GPIO_Port, DA_LDAC_Pin, GPIO_PIN_RESET);
  49. Pol_Delay_us(10);
  50. HAL_GPIO_WritePin(DA_SYNC_GPIO_Port, DA_SYNC_Pin, GPIO_PIN_SET);
  51. Pol_Delay_us(10);
  52. HAL_GPIO_WritePin(DA_DIN_GPIO_Port, DA_DIN_Pin, GPIO_PIN_RESET);
  53. Pol_Delay_us(10);
  54. HAL_GPIO_WritePin(DA_LDAC_GPIO_Port, DA_LDAC_Pin, GPIO_PIN_SET);
  55. Pol_Delay_us(10);
  56. /* rise DAC SYNC line again */
  57. HAL_GPIO_WritePin(DA_SYNC_GPIO_Port, DA_SYNC_Pin, GPIO_PIN_RESET);
  58. Pol_Delay_us(10);
  59. HAL_GPIO_WritePin(DA_LDAC_GPIO_Port, DA_LDAC_Pin, GPIO_PIN_RESET);
  60. Pol_Delay_us(10);
  61. }
  62. else{
  63. HAL_GPIO_WritePin(DA_SYNC_GPIO_Port, DA_SYNC_Pin, GPIO_PIN_RESET);
  64. for (i=0;i < 16;i++) { /* loop through all 16 data bits */
  65. HAL_GPIO_WritePin(DA_SCLK_GPIO_Port, DA_SCLK_Pin, GPIO_PIN_SET); /* rise clk line again */
  66. Pol_Delay_us(10);
  67. if (ShiftTarget & 0x8000) HAL_GPIO_WritePin(DA_DIN_GPIO_Port, DA_DIN_Pin, GPIO_PIN_SET);
  68. else HAL_GPIO_WritePin(DA_DIN_GPIO_Port, DA_DIN_Pin, GPIO_PIN_RESET); /* set data bit */
  69. Pol_Delay_us(10);
  70. HAL_GPIO_WritePin(DA_SCLK_GPIO_Port, DA_SCLK_Pin, GPIO_PIN_RESET); /* lower clock line */
  71. ShiftTarget <<= 1;
  72. Pol_Delay_us(10);
  73. }
  74. HAL_GPIO_WritePin(DA_LDAC_GPIO_Port, DA_LDAC_Pin, GPIO_PIN_SET);
  75. Pol_Delay_us(10);
  76. HAL_GPIO_WritePin(DA_LDAC_GPIO_Port, DA_LDAC_Pin, GPIO_PIN_RESET);
  77. Pol_Delay_us(10);
  78. HAL_GPIO_WritePin(DA_SYNC_GPIO_Port, DA_SYNC_Pin, GPIO_PIN_SET);
  79. Pol_Delay_us(10);
  80. HAL_GPIO_WritePin(DA_DIN_GPIO_Port, DA_DIN_Pin, GPIO_PIN_RESET);
  81. Pol_Delay_us(10);
  82. HAL_GPIO_WritePin(DA_LDAC_GPIO_Port, DA_LDAC_Pin, GPIO_PIN_SET);
  83. Pol_Delay_us(10);
  84. /* rise DAC SYNC line again */
  85. HAL_GPIO_WritePin(DA_SYNC_GPIO_Port, DA_SYNC_Pin, GPIO_PIN_RESET);
  86. Pol_Delay_us(10);
  87. HAL_GPIO_WritePin(DA_LDAC_GPIO_Port, DA_LDAC_Pin, GPIO_PIN_RESET);
  88. Pol_Delay_us(10);
  89. }
  90. #else
  91. HAL_GPIO_WritePin(DA_LDAC_GPIO_Port, DA_LDAC_Pin, GPIO_PIN_SET);
  92. if(ShiftTarget & 0x1000){
  93. HAL_GPIO_WritePin(DA_SYNC_GPIO_Port, DA_SYNC_Pin, GPIO_PIN_RESET);
  94. for (i=0;i < 16;i++) { /* loop through all 16 data bits */
  95. if(i <= 2)
  96. HAL_GPIO_WritePin(DA_SYNC_GPIO_Port, DA_SYNC_Pin, GPIO_PIN_SET);
  97. else
  98. HAL_GPIO_WritePin(DA_SYNC_GPIO_Port, DA_SYNC_Pin, GPIO_PIN_RESET);
  99. HAL_GPIO_WritePin(DA_SCLK_GPIO_Port, DA_SCLK_Pin, GPIO_PIN_SET); /* rise clk line again */
  100. Pol_Delay_us(10);
  101. if (ShiftTarget & 0x8000) HAL_GPIO_WritePin(DA_DIN_GPIO_Port, DA_DIN_Pin, GPIO_PIN_SET);
  102. else HAL_GPIO_WritePin(DA_DIN_GPIO_Port, DA_DIN_Pin, GPIO_PIN_RESET); /* set data bit */
  103. Pol_Delay_us(10);
  104. HAL_GPIO_WritePin(DA_SCLK_GPIO_Port, DA_SCLK_Pin, GPIO_PIN_RESET); /* lower clock line */
  105. ShiftTarget <<= 1;
  106. Pol_Delay_us(10);
  107. }
  108. Pol_Delay_us(10);
  109. HAL_GPIO_WritePin(DA_LDAC_GPIO_Port, DA_LDAC_Pin, GPIO_PIN_RESET);
  110. Pol_Delay_us(10);
  111. HAL_GPIO_WritePin(DA_SYNC_GPIO_Port, DA_SYNC_Pin, GPIO_PIN_SET);
  112. Pol_Delay_us(10);
  113. HAL_GPIO_WritePin(DA_DIN_GPIO_Port, DA_DIN_Pin, GPIO_PIN_RESET);
  114. Pol_Delay_us(10);
  115. /* rise DAC SYNC line again */
  116. HAL_GPIO_WritePin(DA_SYNC_GPIO_Port, DA_SYNC_Pin, GPIO_PIN_RESET);
  117. Pol_Delay_us(10);
  118. HAL_GPIO_WritePin(DA_LDAC_GPIO_Port, DA_LDAC_Pin, GPIO_PIN_SET);
  119. Pol_Delay_us(10);
  120. #endif // PYJ.2019.11.14_END --
  121. }
  122. }
  123. #else
  124. void AD5318_Ctrl(uint16_t ShiftTarget) {
  125. char i; /* serial counter */
  126. // printf("ShiftTarget : %x \r\n",ShiftTarget);
  127. HAL_GPIO_WritePin(DA_SYNC_GPIO_Port, DA_SYNC_Pin, GPIO_PIN_RESET);
  128. for (i=0;i < 16;i++) { /* loop through all 16 data bits */
  129. HAL_GPIO_WritePin(DA_SCLK_GPIO_Port, DA_SCLK_Pin, GPIO_PIN_SET); /* rise clk line again */
  130. if (ShiftTarget & 0x8000) HAL_GPIO_WritePin(DA_DIN_GPIO_Port, DA_DIN_Pin, GPIO_PIN_SET);
  131. else HAL_GPIO_WritePin(DA_DIN_GPIO_Port, DA_DIN_Pin, GPIO_PIN_RESET); /* set data bit */
  132. HAL_GPIO_WritePin(DA_SCLK_GPIO_Port, DA_SCLK_Pin, GPIO_PIN_RESET); /* lower clock line */
  133. ShiftTarget <<= 1;
  134. }
  135. HAL_GPIO_WritePin(DA_LDAC_GPIO_Port, DA_LDAC_Pin, GPIO_PIN_SET);
  136. Pol_Delay_us(10);
  137. HAL_GPIO_WritePin(DA_LDAC_GPIO_Port, DA_LDAC_Pin, GPIO_PIN_RESET);
  138. HAL_GPIO_WritePin(DA_SYNC_GPIO_Port, DA_SYNC_Pin, GPIO_PIN_SET);
  139. HAL_GPIO_WritePin(DA_DIN_GPIO_Port, DA_DIN_Pin, GPIO_PIN_RESET);
  140. HAL_GPIO_WritePin(DA_LDAC_GPIO_Port, DA_LDAC_Pin, GPIO_PIN_SET);
  141. /* rise DAC SYNC line again */
  142. HAL_GPIO_WritePin(DA_SYNC_GPIO_Port, DA_SYNC_Pin, GPIO_PIN_RESET);
  143. HAL_GPIO_WritePin(DA_LDAC_GPIO_Port, DA_LDAC_Pin, GPIO_PIN_RESET);
  144. }
  145. #endif