From 86608c6770cf08c138a2bdab5855072f64be09ef Mon Sep 17 00:00:00 2001 From: joshua Date: Sat, 30 Dec 2023 23:54:31 -0500 Subject: initial commit --- Core/Src/AD9851.c | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 Core/Src/AD9851.c (limited to 'Core/Src/AD9851.c') 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 -- cgit v1.2.3