summaryrefslogtreecommitdiff
path: root/Core/Src/AD9851.c
diff options
context:
space:
mode:
Diffstat (limited to 'Core/Src/AD9851.c')
-rw-r--r--Core/Src/AD9851.c59
1 files changed, 59 insertions, 0 deletions
diff --git a/Core/Src/AD9851.c b/Core/Src/AD9851.c
new file mode 100644
index 0000000..4c4652a
--- /dev/null
+++ b/Core/Src/AD9851.c
@@ -0,0 +1,59 @@
+#include "AD9851.h"
+
+void AD9851_reset(void) {
+ HAL_GPIO_WritePin(RESET_GPIO_Port, RESET_Pin, GPIO_PIN_RESET);
+ HAL_GPIO_WritePin(W_CLK_GPIO_Port, W_CLK_Pin, GPIO_PIN_RESET);
+ HAL_GPIO_WritePin(FQ_UD_GPIO_Port, FQ_UD_Pin, GPIO_PIN_RESET);
+ HAL_Delay(50);
+ HAL_GPIO_WritePin(RESET_GPIO_Port, RESET_Pin, GPIO_PIN_SET);
+ HAL_Delay(50);
+ HAL_GPIO_WritePin(RESET_GPIO_Port, RESET_Pin, GPIO_PIN_RESET);
+ HAL_Delay(50);
+}
+
+void AD9851_parallel(uint32_t freq) {
+
+ uint32_t tword = (freq/100) * 2386;
+ uint8_t W[5];
+
+ W[4] = tword;
+ W[3] = tword >> 8;
+ W[2] = tword >> 16;
+ W[1] = tword >> 24;
+
+ W[0] = 0x01; //phase and 6xREFCLK mult enable
+
+ HAL_GPIO_WritePin(FQ_UD_GPIO_Port, FQ_UD_Pin, GPIO_PIN_RESET);
+ for (int i=0;i<5;i++) {
+ HAL_GPIO_WritePin(D0_GPIO_Port, D0_Pin, W[i] & 0x01);
+ HAL_GPIO_WritePin(D1_GPIO_Port, D1_Pin, (W[i] >> 1) & 0x01);
+ HAL_GPIO_WritePin(D2_GPIO_Port, D2_Pin, (W[i] >> 2) & 0x01);
+ HAL_GPIO_WritePin(D3_GPIO_Port, D3_Pin, (W[i] >> 3) & 0x01);
+ HAL_GPIO_WritePin(D4_GPIO_Port, D4_Pin, (W[i] >> 4) & 0x01);
+ HAL_GPIO_WritePin(D5_GPIO_Port, D5_Pin, (W[i] >> 5) & 0x01);
+ if (i==0) {
+ HAL_GPIO_WritePin(D6_GPIO_Port, D6_Pin, 1);
+ } else {
+ HAL_GPIO_WritePin(D6_GPIO_Port, D6_Pin, (W[i] >> 6) & 0x01);
+ }
+ HAL_GPIO_WritePin(D7_GPIO_Port, D7_Pin, (W[i] >> 7) & 0x01);
+
+ HAL_GPIO_WritePin(D10_GPIO_Port, D10_Pin, W[i] & 0x01);
+ HAL_GPIO_WritePin(D11_GPIO_Port, D11_Pin, (W[i] >> 1) & 0x01);
+ HAL_GPIO_WritePin(D12_GPIO_Port, D12_Pin, (W[i] >> 2) & 0x01);
+ HAL_GPIO_WritePin(D13_GPIO_Port, D13_Pin, (W[i] >> 3) & 0x01);
+ HAL_GPIO_WritePin(D14_GPIO_Port, D14_Pin, (W[i] >> 4) & 0x01);
+ HAL_GPIO_WritePin(D15_GPIO_Port, D15_Pin, (W[i] >> 5) & 0x01);
+ HAL_GPIO_WritePin(D16_GPIO_Port, D16_Pin, (W[i] >> 6) & 0x01);
+ HAL_GPIO_WritePin(D17_GPIO_Port, D17_Pin, (W[i] >> 7) & 0x01);
+
+ HAL_GPIO_WritePin(W_CLK_GPIO_Port, W_CLK_Pin, GPIO_PIN_SET);
+ HAL_Delay(50);
+ HAL_GPIO_WritePin(W_CLK_GPIO_Port, W_CLK_Pin, GPIO_PIN_RESET);
+ }
+
+ HAL_GPIO_WritePin(FQ_UD_GPIO_Port, FQ_UD_Pin, GPIO_PIN_SET);
+ HAL_Delay(50);
+ //below may be unnecessary
+ HAL_GPIO_WritePin(FQ_UD_GPIO_Port, FQ_UD_Pin, GPIO_PIN_RESET);
+} \ No newline at end of file