initialize ad9833 and mcp41

This commit is contained in:
2023-05-21 21:09:07 +02:00
parent 26f5cfe3ce
commit 40e0ca1d0c
15 changed files with 237 additions and 178 deletions

View File

@@ -1 +1 @@
[]
[{"node":"ADC1","expanded":true,"format":0,"pinned":false}]

View File

@@ -18,5 +18,6 @@
"ulog.h": "c",
"ctrl_generator.h": "c",
"type_traits": "c"
}
},
"cortex-debug.variableUseNaturalFormat": true
}

View File

@@ -23,8 +23,7 @@
#define __MAIN_H
#ifdef __cplusplus
extern "C"
{
extern "C" {
#endif
/* Includes ------------------------------------------------------------------*/
@@ -61,36 +60,42 @@ extern "C"
/* Private defines -----------------------------------------------------------*/
#define B1_Pin GPIO_PIN_13
#define B1_GPIO_Port GPIOC
#define BTN1_Pin GPIO_PIN_0
#define BTN1_GPIO_Port GPIOA
#define BTN2_Pin GPIO_PIN_1
#define BTN2_GPIO_Port GPIOA
#define USART_TX_Pin GPIO_PIN_2
#define USART_TX_GPIO_Port GPIOA
#define USART_RX_Pin GPIO_PIN_3
#define USART_RX_GPIO_Port GPIOA
#define LD2_Pin GPIO_PIN_5
#define LD2_GPIO_Port GPIOA
#define BTN1_Pin GPIO_PIN_1
#define BTN1_GPIO_Port GPIOB
#define BTN2_Pin GPIO_PIN_2
#define BTN2_GPIO_Port GPIOB
#define BTN3_Pin GPIO_PIN_11
#define BTN3_GPIO_Port GPIOB
#define BTN4_Pin GPIO_PIN_12
#define BTN4_GPIO_Port GPIOB
#define BTN5_Pin GPIO_PIN_11
#define BTN3_Pin GPIO_PIN_4
#define BTN3_GPIO_Port GPIOA
#define BTN4_Pin GPIO_PIN_5
#define BTN4_GPIO_Port GPIOA
#define AMP1_CS_Pin GPIO_PIN_11
#define AMP1_CS_GPIO_Port GPIOB
#define DDS1_CS_Pin GPIO_PIN_12
#define DDS1_CS_GPIO_Port GPIOB
#define ST7565_RST_Pin GPIO_PIN_8
#define ST7565_RST_GPIO_Port GPIOC
#define ST7565_A0_Pin GPIO_PIN_9
#define ST7565_A0_GPIO_Port GPIOC
#define BTN5_Pin GPIO_PIN_8
#define BTN5_GPIO_Port GPIOA
#define BTN_CH1_Pin GPIO_PIN_9
#define BTN_CH1_GPIO_Port GPIOA
#define LED_CH1_Pin GPIO_PIN_10
#define LED_CH1_GPIO_Port GPIOA
#define TMS_Pin GPIO_PIN_13
#define TMS_GPIO_Port GPIOA
#define TCK_Pin GPIO_PIN_14
#define TCK_GPIO_Port GPIOA
#define ST7565_CS_Pin GPIO_PIN_15
#define ST7565_CS_GPIO_Port GPIOA
#define ST7565_SCK_Pin GPIO_PIN_10
#define ST7565_SCK_GPIO_Port GPIOC
#define ST7565_RST_Pin GPIO_PIN_11
#define ST7565_RST_GPIO_Port GPIOC
#define ST7565_CS_Pin GPIO_PIN_11
#define ST7565_CS_GPIO_Port GPIOC
#define ST7565_MOSI_Pin GPIO_PIN_12
#define ST7565_MOSI_GPIO_Port GPIOC
#define ST7565_A0_Pin GPIO_PIN_2
#define ST7565_A0_GPIO_Port GPIOD
#define SWO_Pin GPIO_PIN_3
#define SWO_GPIO_Port GPIOB
/* USER CODE BEGIN Private defines */

View File

@@ -49,16 +49,15 @@ void MX_GPIO_Init(void)
__HAL_RCC_GPIOF_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
__HAL_RCC_GPIOD_CLK_ENABLE();
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(GPIOA, LD2_Pin|ST7565_CS_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB, AMP1_CS_Pin|DDS1_CS_Pin, GPIO_PIN_RESET);
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(ST7565_RST_GPIO_Port, ST7565_RST_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOC, ST7565_RST_Pin|ST7565_A0_Pin|ST7565_CS_Pin, GPIO_PIN_RESET);
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(ST7565_A0_GPIO_Port, ST7565_A0_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(LED_CH1_GPIO_Port, LED_CH1_Pin, GPIO_PIN_RESET);
/*Configure GPIO pin : PtPin */
GPIO_InitStruct.Pin = B1_Pin;
@@ -66,38 +65,34 @@ void MX_GPIO_Init(void)
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(B1_GPIO_Port, &GPIO_InitStruct);
/*Configure GPIO pins : PAPin PAPin */
GPIO_InitStruct.Pin = LD2_Pin|ST7565_CS_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
/*Configure GPIO pins : PAPin PAPin PAPin PAPin
PAPin PAPin */
GPIO_InitStruct.Pin = BTN1_Pin|BTN2_Pin|BTN3_Pin|BTN4_Pin
|BTN5_Pin|BTN_CH1_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
/*Configure GPIO pins : PBPin PBPin PBPin PBPin */
GPIO_InitStruct.Pin = BTN1_Pin|BTN2_Pin|BTN3_Pin|BTN4_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
/*Configure GPIO pins : PBPin PBPin */
GPIO_InitStruct.Pin = AMP1_CS_Pin|DDS1_CS_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
/*Configure GPIO pin : PtPin */
GPIO_InitStruct.Pin = BTN5_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(BTN5_GPIO_Port, &GPIO_InitStruct);
/*Configure GPIO pin : PtPin */
GPIO_InitStruct.Pin = ST7565_RST_Pin;
/*Configure GPIO pins : PCPin PCPin PCPin */
GPIO_InitStruct.Pin = ST7565_RST_Pin|ST7565_A0_Pin|ST7565_CS_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(ST7565_RST_GPIO_Port, &GPIO_InitStruct);
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
/*Configure GPIO pin : PtPin */
GPIO_InitStruct.Pin = ST7565_A0_Pin;
GPIO_InitStruct.Pin = LED_CH1_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(ST7565_A0_GPIO_Port, &GPIO_InitStruct);
HAL_GPIO_Init(LED_CH1_GPIO_Port, &GPIO_InitStruct);
}

View File

@@ -102,9 +102,8 @@ int main(void)
MX_TIM3_Init();
/* USER CODE BEGIN 2 */
ulog_init();
ulog_subscribe(RTT_console_logger, ULOG_DEBUG_LEVEL);
ulog_subscribe(RTT_console_logger, ULOG_TRACE_LEVEL);
APP_init(&app_data);
HAL_TIM_Encoder_Start(&htim3, TIM_CHANNEL_ALL);
// SEGGER_RTT_WriteString(0, "App start...\n");
ULOG_INFO("start app...");
@@ -124,8 +123,9 @@ int main(void)
/* USER CODE BEGIN WHILE */
DISP_clearScreen(&disp);
ST7565_DisplayAll(&hst7565);
HAL_Delay(1000);
uint32_t last_tick = HAL_GetTick();
APP_init(&app_data);
while (1)
{
CTRL_buttonsHandler();

View File

@@ -42,7 +42,7 @@ void MX_SPI2_Init(void)
hspi2.Init.Mode = SPI_MODE_MASTER;
hspi2.Init.Direction = SPI_DIRECTION_2LINES;
hspi2.Init.DataSize = SPI_DATASIZE_8BIT;
hspi2.Init.CLKPolarity = SPI_POLARITY_LOW;
hspi2.Init.CLKPolarity = SPI_POLARITY_HIGH;
hspi2.Init.CLKPhase = SPI_PHASE_1EDGE;
hspi2.Init.NSS = SPI_NSS_SOFT;
hspi2.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_32;

View File

@@ -1,5 +1,5 @@
##########################################################################################################################
# File automatically-generated by tool: [projectgenerator] version: [3.17.1] date: [Fri Apr 21 19:03:25 CEST 2023]
# File automatically-generated by tool: [projectgenerator] version: [3.17.1] date: [Sun May 21 21:04:44 CEST 2023]
##########################################################################################################################
# ------------------------------------------------

View File

@@ -21,35 +21,38 @@ Mcu.Name=STM32F303R(D-E)Tx
Mcu.Package=LQFP64
Mcu.Pin0=PC13
Mcu.Pin1=PC14-OSC32_IN
Mcu.Pin10=PB1
Mcu.Pin11=PB2
Mcu.Pin12=PB11
Mcu.Pin13=PB12
Mcu.Pin14=PB13
Mcu.Pin15=PB14
Mcu.Pin16=PB15
Mcu.Pin17=PA11
Mcu.Pin18=PA13
Mcu.Pin19=PA14
Mcu.Pin10=PA5
Mcu.Pin11=PA6
Mcu.Pin12=PA7
Mcu.Pin13=PB11
Mcu.Pin14=PB12
Mcu.Pin15=PB13
Mcu.Pin16=PB14
Mcu.Pin17=PB15
Mcu.Pin18=PC8
Mcu.Pin19=PC9
Mcu.Pin2=PC15-OSC32_OUT
Mcu.Pin20=PA15
Mcu.Pin21=PC10
Mcu.Pin22=PC11
Mcu.Pin23=PC12
Mcu.Pin24=PD2
Mcu.Pin25=PB3
Mcu.Pin26=PB6
Mcu.Pin27=PB7
Mcu.Pin28=VP_SYS_VS_Systick
Mcu.Pin29=VP_TIM2_VS_ClockSourceINT
Mcu.Pin20=PA8
Mcu.Pin21=PA9
Mcu.Pin22=PA10
Mcu.Pin23=PA13
Mcu.Pin24=PA14
Mcu.Pin25=PC10
Mcu.Pin26=PC11
Mcu.Pin27=PC12
Mcu.Pin28=PB3
Mcu.Pin29=PB6
Mcu.Pin3=PF0-OSC_IN
Mcu.Pin30=PB7
Mcu.Pin31=VP_SYS_VS_Systick
Mcu.Pin32=VP_TIM2_VS_ClockSourceINT
Mcu.Pin4=PF1-OSC_OUT
Mcu.Pin5=PA2
Mcu.Pin6=PA3
Mcu.Pin7=PA5
Mcu.Pin8=PA6
Mcu.Pin9=PA7
Mcu.PinsNb=30
Mcu.Pin5=PA0
Mcu.Pin6=PA1
Mcu.Pin7=PA2
Mcu.Pin8=PA3
Mcu.Pin9=PA4
Mcu.PinsNb=33
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32F303RETx
@@ -66,10 +69,18 @@ NVIC.PriorityGroup=NVIC_PRIORITYGROUP_0
NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.SysTick_IRQn=true\:0\:0\:true\:false\:true\:true\:true\:false
NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:true\:false\:false
PA11.GPIOParameters=GPIO_Label
PA11.GPIO_Label=BTN5
PA11.Locked=true
PA11.Signal=GPIO_Input
PA0.GPIOParameters=GPIO_Label
PA0.GPIO_Label=BTN1
PA0.Locked=true
PA0.Signal=GPIO_Input
PA1.GPIOParameters=GPIO_Label
PA1.GPIO_Label=BTN2
PA1.Locked=true
PA1.Signal=GPIO_Input
PA10.GPIOParameters=GPIO_Label
PA10.GPIO_Label=LED_CH1
PA10.Locked=true
PA10.Signal=GPIO_Output
PA13.GPIOParameters=GPIO_Label
PA13.GPIO_Label=TMS
PA13.Locked=true
@@ -80,10 +91,6 @@ PA14.GPIO_Label=TCK
PA14.Locked=true
PA14.Mode=Serial_Wire
PA14.Signal=SYS_JTCK-SWCLK
PA15.GPIOParameters=GPIO_Label
PA15.GPIO_Label=ST7565_CS
PA15.Locked=true
PA15.Signal=GPIO_Output
PA2.GPIOParameters=GPIO_Speed,GPIO_PuPd,GPIO_Label,GPIO_Mode
PA2.GPIO_Label=USART_TX
PA2.GPIO_Mode=GPIO_MODE_AF_PP
@@ -100,38 +107,39 @@ PA3.GPIO_Speed=GPIO_SPEED_FREQ_LOW
PA3.Locked=true
PA3.Mode=Asynchronous
PA3.Signal=USART2_RX
PA5.GPIOParameters=GPIO_Speed,GPIO_PuPd,GPIO_Label,GPIO_Mode
PA5.GPIO_Label=LD2 [Green Led]
PA5.GPIO_Mode=GPIO_MODE_OUTPUT_PP
PA5.GPIO_PuPd=GPIO_NOPULL
PA5.GPIO_Speed=GPIO_SPEED_FREQ_LOW
PA4.GPIOParameters=GPIO_Label
PA4.GPIO_Label=BTN3
PA4.Locked=true
PA4.Signal=GPIO_Input
PA5.GPIOParameters=GPIO_Label
PA5.GPIO_Label=BTN4
PA5.Locked=true
PA5.Signal=GPIO_Output
PA5.Signal=GPIO_Input
PA6.Signal=S_TIM3_CH1
PA7.Locked=true
PA7.Signal=S_TIM3_CH2
PB1.GPIOParameters=GPIO_Label
PB1.GPIO_Label=BTN1
PB1.Locked=true
PB1.Signal=GPIO_Input
PA8.GPIOParameters=GPIO_Label
PA8.GPIO_Label=BTN5
PA8.Locked=true
PA8.Signal=GPIO_Input
PA9.GPIOParameters=GPIO_Label
PA9.GPIO_Label=BTN_CH1
PA9.Locked=true
PA9.Signal=GPIO_Input
PB11.GPIOParameters=GPIO_Label
PB11.GPIO_Label=BTN3
PB11.GPIO_Label=AMP1_CS
PB11.Locked=true
PB11.Signal=GPIO_Input
PB11.Signal=GPIO_Output
PB12.GPIOParameters=GPIO_Label
PB12.GPIO_Label=BTN4
PB12.GPIO_Label=DDS1_CS
PB12.Locked=true
PB12.Signal=GPIO_Input
PB12.Signal=GPIO_Output
PB13.Mode=Full_Duplex_Master
PB13.Signal=SPI2_SCK
PB14.Mode=Full_Duplex_Master
PB14.Signal=SPI2_MISO
PB15.Mode=Full_Duplex_Master
PB15.Signal=SPI2_MOSI
PB2.GPIOParameters=GPIO_Label
PB2.GPIO_Label=BTN2
PB2.Locked=true
PB2.Signal=GPIO_Input
PB3.GPIOParameters=GPIO_Label
PB3.GPIO_Label=SWO
PB3.Locked=true
@@ -147,7 +155,7 @@ PC10.Locked=true
PC10.Mode=Simplex_Bidirectional_Master
PC10.Signal=SPI3_SCK
PC11.GPIOParameters=GPIO_Label
PC11.GPIO_Label=ST7565_RST
PC11.GPIO_Label=ST7565_CS
PC11.Locked=true
PC11.Signal=GPIO_Output
PC12.GPIOParameters=GPIO_Label
@@ -165,10 +173,14 @@ PC14-OSC32_IN.Signal=RCC_OSC32_IN
PC15-OSC32_OUT.Locked=true
PC15-OSC32_OUT.Mode=LSE-External-Oscillator
PC15-OSC32_OUT.Signal=RCC_OSC32_OUT
PD2.GPIOParameters=GPIO_Label
PD2.GPIO_Label=ST7565_A0
PD2.Locked=true
PD2.Signal=GPIO_Output
PC8.GPIOParameters=GPIO_Label
PC8.GPIO_Label=ST7565_RST
PC8.Locked=true
PC8.Signal=GPIO_Output
PC9.GPIOParameters=GPIO_Label
PC9.GPIO_Label=ST7565_A0
PC9.Locked=true
PC9.Signal=GPIO_Output
PF0-OSC_IN.Locked=true
PF0-OSC_IN.Mode=HSE-External-Clock-Source
PF0-OSC_IN.Signal=RCC_OSC_IN
@@ -202,7 +214,7 @@ ProjectManager.StackSize=0x400
ProjectManager.TargetToolchain=Makefile
ProjectManager.ToolChainLocation=
ProjectManager.UnderRoot=false
ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_USART2_UART_Init-USART2-false-HAL-true,4-MX_SPI2_Init-SPI2-false-HAL-true,5-MX_I2C1_Init-I2C1-false-HAL-true,6-MX_SPI3_Init-SPI3-false-HAL-true,7-MX_TIM2_Init-TIM2-false-HAL-true
ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_USART2_UART_Init-USART2-false-HAL-true,4-MX_SPI2_Init-SPI2-false-HAL-true,5-MX_I2C1_Init-I2C1-false-HAL-true,6-MX_SPI3_Init-SPI3-false-HAL-true,7-MX_TIM2_Init-TIM2-false-HAL-true,8-MX_TIM3_Init-TIM3-false-HAL-true,9-MX_ADC1_Init-ADC1-false-HAL-true
RCC.ADC12outputFreq_Value=72000000
RCC.ADC34outputFreq_Value=72000000
RCC.AHBFreq_Value=72000000
@@ -258,10 +270,11 @@ SH.S_TIM3_CH1.ConfNb=1
SH.S_TIM3_CH2.0=TIM3_CH2,Encoder_Interface
SH.S_TIM3_CH2.ConfNb=1
SPI2.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_32
SPI2.CLKPolarity=SPI_POLARITY_HIGH
SPI2.CalculateBaudRate=1.125 MBits/s
SPI2.DataSize=SPI_DATASIZE_8BIT
SPI2.Direction=SPI_DIRECTION_2LINES
SPI2.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,DataSize,NSSPMode,BaudRatePrescaler
SPI2.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,DataSize,NSSPMode,BaudRatePrescaler,CLKPolarity
SPI2.Mode=SPI_MODE_MASTER
SPI2.NSSPMode=SPI_NSS_PULSE_ENABLE
SPI2.VirtualType=VM_MASTER

View File

@@ -3,6 +3,7 @@
#include "ctrl_bottom_button.h"
#include "ctrl_channel_button.h"
#include "ctrl_encoder.h"
#include "ctrl_generator.h"
#include "ctrl_app.h"
@@ -24,7 +25,7 @@ static const uint32_t pow_of_10[7] = {1, 10, 100, 1000, 10000, 100000, 1000000};
static HW_BotBtnName_t last_key;
static APP_data_t *_app_data;
static const GENERATOR_t generators[CHANNEL_MAX] = {
static GENERATOR_t generators[CHANNEL_MAX] = {
{.gen_type = GEN_FG_TYPE, .gen = &func_gen[0]},
{.gen_type = GEN_FG_TYPE, .gen = &func_gen[1]},
{.gen_type = GEN_FG_TYPE, .gen = &func_gen[2]},
@@ -55,13 +56,15 @@ void APP_init(APP_data_t *app_data)
_app_data->isButtonBlink = 1;
CTRL_buttonsInit();
HAL_GPIO_WritePin(LED_CH1_GPIO_Port, LED_CH1_Pin, GPIO_PIN_SET);
gen_init();
}
void CTRL_buttonsInit(void)
{
CTRL_bottomButtonInit();
// CTRL_channelButtonInit();
CTRL_channelButtonInit();
}
void CTRL_buttonsHandler(void)
@@ -84,6 +87,25 @@ void CTRL_pushedChanBtnEvent(ButtonKey_t *key)
UNUSED(key);
}
void CTRL_longPushedChanBtnEvent(ButtonKey_t *key)
{
ULOG_TRACE("Chan btn(long): %d", key->instance);
GEN_fg_t *dds_ch0 = generators[key->instance].gen;
if (dds_ch0->enabled)
{
dds_ch0->enabled = FALSE;
setEnabled(&generators[CHANNEL1], CHANNEL1);
HAL_GPIO_WritePin(LED_CH1_GPIO_Port, LED_CH1_Pin, GPIO_PIN_SET);
}
else
{
dds_ch0->enabled = TRUE;
setEnabled(&generators[CHANNEL1], CHANNEL1);
HAL_GPIO_WritePin(LED_CH1_GPIO_Port, LED_CH1_Pin, GPIO_PIN_RESET);
}
UNUSED(key);
}
static void _changeValueFunGen(int8_t dir)
{
GEN_fg_t *gen = (GEN_fg_t *)_app_data->generator;
@@ -99,6 +121,7 @@ static void _changeValueFunGen(int8_t dir)
return;
}
gen->frequency = new_freq;
setFreq(&generators[CHANNEL1], CHANNEL1);
break;
}
case LAY_AMPL:
@@ -110,6 +133,7 @@ static void _changeValueFunGen(int8_t dir)
return;
}
gen->amplitude = new_ampl;
setAmplitude(&generators[CHANNEL1], CHANNEL1);
break;
}
case LAY_OFFS:
@@ -121,6 +145,7 @@ static void _changeValueFunGen(int8_t dir)
return;
}
gen->offset = new_offs;
setOfsset(&generators[CHANNEL1], CHANNEL1);
break;
}
case LAY_PHAS:
@@ -158,6 +183,7 @@ static void _changeValuePwmGen(int8_t dir)
return;
}
gen->frequency = new_freq;
break;
}
case LAY_AMPL:
@@ -169,6 +195,7 @@ static void _changeValuePwmGen(int8_t dir)
return;
}
gen->amplitude = new_ampl;
break;
}
case LAY_OFFS:
@@ -180,6 +207,7 @@ static void _changeValuePwmGen(int8_t dir)
return;
}
gen->offset = new_offs;
break;
}
case LAY_PHAS:

View File

@@ -11,31 +11,31 @@ void CTRL_bottomButtonInit(void)
bottom_buttons[BTN_BOT_1].buttonPressed = CTRL_pushedDispBtnEvent;
bottom_buttons[BTN_BOT_1].gpio_port = BTN1_GPIO_Port;
bottom_buttons[BTN_BOT_1].gpio_pin = BTN1_Pin;
bottom_buttons[BTN_BOT_1].pushed_state = GPIO_PIN_SET;
bottom_buttons[BTN_BOT_1].pushed_state = GPIO_PIN_RESET;
bottom_buttons[BTN_BOT_2].instance = BTN_BOT_2;
bottom_buttons[BTN_BOT_2].buttonPressed = CTRL_pushedDispBtnEvent;
bottom_buttons[BTN_BOT_2].gpio_port = BTN2_GPIO_Port;
bottom_buttons[BTN_BOT_2].gpio_pin = BTN2_Pin;
bottom_buttons[BTN_BOT_2].pushed_state = GPIO_PIN_SET;
bottom_buttons[BTN_BOT_2].pushed_state = GPIO_PIN_RESET;
bottom_buttons[BTN_BOT_3].instance = BTN_BOT_3;
bottom_buttons[BTN_BOT_3].buttonPressed = CTRL_pushedDispBtnEvent;
bottom_buttons[BTN_BOT_3].gpio_port = BTN3_GPIO_Port;
bottom_buttons[BTN_BOT_3].gpio_pin = BTN3_Pin;
bottom_buttons[BTN_BOT_3].pushed_state = GPIO_PIN_SET;
bottom_buttons[BTN_BOT_3].pushed_state = GPIO_PIN_RESET;
bottom_buttons[BTN_BOT_4].instance = BTN_BOT_4;
bottom_buttons[BTN_BOT_4].buttonPressed = CTRL_pushedDispBtnEvent;
bottom_buttons[BTN_BOT_4].gpio_port = BTN4_GPIO_Port;
bottom_buttons[BTN_BOT_4].gpio_pin = BTN4_Pin;
bottom_buttons[BTN_BOT_4].pushed_state = GPIO_PIN_SET;
bottom_buttons[BTN_BOT_4].pushed_state = GPIO_PIN_RESET;
bottom_buttons[BTN_BOT_5].instance = BTN_BOT_5;
bottom_buttons[BTN_BOT_5].buttonPressed = CTRL_pushedDispBtnEvent;
bottom_buttons[BTN_BOT_5].gpio_port = BTN5_GPIO_Port;
bottom_buttons[BTN_BOT_5].gpio_pin = BTN5_Pin;
bottom_buttons[BTN_BOT_5].pushed_state = GPIO_PIN_SET;
bottom_buttons[BTN_BOT_5].pushed_state = GPIO_PIN_RESET;
for (HW_BotBtnName_t btn_key = BTN_BOT_1; btn_key < BTN_BOT_MAX; btn_key++)
{

View File

@@ -2,8 +2,8 @@
#include "hw_button.h"
#include "ctrl_channel_button.h"
#define DUMMY_GPIO_Port GPIOA
#define DUMMY_GPIO_Pin GPIO_PIN_0
#define DUMMY_GPIO_Port B1_GPIO_Port
#define DUMMY_GPIO_Pin B1_Pin
static ButtonKey_t channel_buttons[BTN_CH_MAX];
@@ -11,39 +11,40 @@ void CTRL_channelButtonInit(void)
{
channel_buttons[BTN_CH_1].instance = BTN_CH_1;
channel_buttons[BTN_CH_1].buttonPressed = CTRL_pushedChanBtnEvent;
channel_buttons[BTN_CH_1].gpio_port = DUMMY_GPIO_Port;
channel_buttons[BTN_CH_1].gpio_pin = DUMMY_GPIO_Pin;
channel_buttons[BTN_CH_1].pushed_state = GPIO_PIN_SET;
channel_buttons[BTN_CH_1].buttonLongPressed = CTRL_longPushedChanBtnEvent;
channel_buttons[BTN_CH_1].gpio_port = BTN_CH1_GPIO_Port;
channel_buttons[BTN_CH_1].gpio_pin = BTN_CH1_Pin;
channel_buttons[BTN_CH_1].pushed_state = GPIO_PIN_RESET;
channel_buttons[BTN_CH_2].instance = BTN_CH_2;
channel_buttons[BTN_CH_2].buttonPressed = CTRL_pushedChanBtnEvent;
channel_buttons[BTN_CH_2].gpio_port = DUMMY_GPIO_Port;
channel_buttons[BTN_CH_2].gpio_pin = DUMMY_GPIO_Pin;
channel_buttons[BTN_CH_2].pushed_state = GPIO_PIN_SET;
channel_buttons[BTN_CH_2].pushed_state = GPIO_PIN_RESET;
channel_buttons[BTN_CH_3].instance = BTN_CH_3;
channel_buttons[BTN_CH_3].buttonPressed = CTRL_pushedChanBtnEvent;
channel_buttons[BTN_CH_3].gpio_port = DUMMY_GPIO_Port;
channel_buttons[BTN_CH_3].gpio_pin = DUMMY_GPIO_Pin;
channel_buttons[BTN_CH_3].pushed_state = GPIO_PIN_SET;
channel_buttons[BTN_CH_3].pushed_state = GPIO_PIN_RESET;
channel_buttons[BTN_CH_4].instance = BTN_CH_4;
channel_buttons[BTN_CH_4].buttonPressed = CTRL_pushedChanBtnEvent;
channel_buttons[BTN_CH_4].gpio_port = DUMMY_GPIO_Port;
channel_buttons[BTN_CH_4].gpio_pin = DUMMY_GPIO_Pin;
channel_buttons[BTN_CH_4].pushed_state = GPIO_PIN_SET;
channel_buttons[BTN_CH_4].pushed_state = GPIO_PIN_RESET;
channel_buttons[BTN_CH_5].instance = BTN_CH_5;
channel_buttons[BTN_CH_5].buttonPressed = CTRL_pushedChanBtnEvent;
channel_buttons[BTN_CH_5].gpio_port = DUMMY_GPIO_Port;
channel_buttons[BTN_CH_5].gpio_pin = DUMMY_GPIO_Pin;
channel_buttons[BTN_CH_5].pushed_state = GPIO_PIN_SET;
channel_buttons[BTN_CH_5].pushed_state = GPIO_PIN_RESET;
channel_buttons[BTN_CH_6].instance = BTN_CH_6;
channel_buttons[BTN_CH_6].buttonPressed = CTRL_pushedChanBtnEvent;
channel_buttons[BTN_CH_6].gpio_port = DUMMY_GPIO_Port;
channel_buttons[BTN_CH_6].gpio_pin = DUMMY_GPIO_Pin;
channel_buttons[BTN_CH_6].pushed_state = GPIO_PIN_SET;
channel_buttons[BTN_CH_6].pushed_state = GPIO_PIN_RESET;
for (HW_chanBtnName_t btn_key = BTN_CH_1; btn_key < BTN_CH_MAX; btn_key++)
{
@@ -66,3 +67,8 @@ __weak void CTRL_pushedChanBtnEvent(ButtonKey_t *key)
{
UNUSED(key);
}
__weak void CTRL_longPushedChanBtnEvent(ButtonKey_t *key)
{
UNUSED(key);
}

View File

@@ -14,3 +14,4 @@ typedef enum
void CTRL_channelButtonInit(void);
void CTRL_channelButtonsHandler(void);
void CTRL_pushedChanBtnEvent(ButtonKey_t *key);
void CTRL_longPushedChanBtnEvent(ButtonKey_t *key);

View File

@@ -2,7 +2,6 @@
#include "spi.h"
#include "i2c.h"
#include "ctrl_app_types.h"
#include "ctrl_app.h"
#include "ad9833.h"
#include "ltc2631.h"
#include "mcp41x.h"
@@ -47,35 +46,35 @@ PWM_handle_t pwm_gen[PWM_CHAN_MAX];
uint8_t ch_to_gen_ch[CHANNEL_MAX] = {FG_CHAN1, FG_CHAN2, FG_CHAN3, PWM_CHAN1, PWM_CHAN2, PWM_CHAN3};
#define DDS1_CS_PORT GPIOC
#define DDS2_CS_PORT GPIOC
#define DDS3_CS_PORT GPIOC
// #define DDS1_CS_PORT GPIOC
// #define DDS2_CS_PORT GPIOC
// #define DDS3_CS_PORT GPIOC
#define DDS1_CS_PIN GPIO_PIN_0
#define DDS2_CS_PIN GPIO_PIN_0
#define DDS3_CS_PIN GPIO_PIN_0
// #define DDS1_CS_PIN GPIO_PIN_0
// #define DDS2_CS_PIN GPIO_PIN_0
// #define DDS3_CS_PIN GPIO_PIN_0
#define AMP1_CS_PORT GPIOC
#define AMP2_CS_PORT GPIOC
#define AMP3_CS_PORT GPIOC
// #define AMP1_CS_PORT GPIOC
// #define AMP2_CS_PORT GPIOC
// #define AMP3_CS_PORT GPIOC
#define AMP1_CS_PIN GPIO_PIN_0
#define AMP2_CS_PIN GPIO_PIN_0
#define AMP3_CS_PIN GPIO_PIN_0
// #define AMP1_CS_PIN GPIO_PIN_0
// #define AMP2_CS_PIN GPIO_PIN_0
// #define AMP3_CS_PIN GPIO_PIN_0
void gen_init()
{
ad9833_init(&dds_gen[FG_CHAN1].hdds, &hspi2, DDS1_CS_PORT, DDS1_CS_PIN);
ad9833_init(&dds_gen[FG_CHAN2].hdds, &hspi2, DDS2_CS_PORT, DDS2_CS_PIN);
ad9833_init(&dds_gen[FG_CHAN3].hdds, &hspi2, DDS3_CS_PORT, DDS3_CS_PIN);
ad9833_init(&dds_gen[FG_CHAN1].hdds, &hspi2, DDS1_CS_GPIO_Port, DDS1_CS_Pin);
// ad9833_init(&dds_gen[FG_CHAN2].hdds, &hspi2, DDS2_CS_PORT, DDS2_CS_PIN);
// ad9833_init(&dds_gen[FG_CHAN3].hdds, &hspi2, DDS3_CS_PORT, DDS3_CS_PIN);
ltc2631_init(&dds_gen[FG_CHAN1].hoffs, &hi2c1, 0x00, LTC2631_8BIT, LTC_REF_2V5);
ltc2631_init(&dds_gen[FG_CHAN2].hoffs, &hi2c1, 0x01, LTC2631_8BIT, LTC_REF_2V5);
ltc2631_init(&dds_gen[FG_CHAN3].hoffs, &hi2c1, 0x02, LTC2631_8BIT, LTC_REF_2V5);
// ltc2631_init(&dds_gen[FG_CHAN1].hoffs, &hi2c1, 0x00, LTC2631_8BIT, LTC_REF_2V5);
// ltc2631_init(&dds_gen[FG_CHAN2].hoffs, &hi2c1, 0x01, LTC2631_8BIT, LTC_REF_2V5);
// ltc2631_init(&dds_gen[FG_CHAN3].hoffs, &hi2c1, 0x02, LTC2631_8BIT, LTC_REF_2V5);
mcp41x_init(&dds_gen[FG_CHAN1].hampl, &hspi2, AMP1_CS_PORT, AMP1_CS_PIN, MCP41X_10K);
mcp41x_init(&dds_gen[FG_CHAN1].hampl, &hspi2, AMP2_CS_PORT, AMP2_CS_PIN, MCP41X_10K);
mcp41x_init(&dds_gen[FG_CHAN1].hampl, &hspi2, AMP3_CS_PORT, AMP3_CS_PIN, MCP41X_10K);
mcp41x_init(&dds_gen[FG_CHAN1].hampl, &hspi2, AMP1_CS_GPIO_Port, AMP1_CS_Pin, MCP41X_10K);
// mcp41x_init(&dds_gen[FG_CHAN1].hampl, &hspi2, AMP2_CS_PORT, AMP2_CS_PIN, MCP41X_10K);
// mcp41x_init(&dds_gen[FG_CHAN1].hampl, &hspi2, AMP3_CS_PORT, AMP3_CS_PIN, MCP41X_10K);
}
static void _setAmpliude(mcp41x_handle_t *hampl, uint16_t ampl_x100)

View File

@@ -1 +1,12 @@
#pragma once
#include "ctrl_app.h"
void setLink(GENERATOR_t *source_gen, GEN_channel_t source_ch, GENERATOR_t *dest_gen, GEN_channel_t dest_ch);
void setEnabled(GENERATOR_t *gen, GEN_channel_t channel);
void setDuty(GENERATOR_t *gen, GEN_channel_t channel);
void setWave(GENERATOR_t *gen, GEN_channel_t channel);
void setPhase(GENERATOR_t *gen, GEN_channel_t channel);
void setOfsset(GENERATOR_t *gen, GEN_channel_t channel);
void setAmplitude(GENERATOR_t *gen, GEN_channel_t channel);
void setFreq(GENERATOR_t *gen, GEN_channel_t channel);
void gen_init();

View File

@@ -249,7 +249,7 @@ static void _drawOffsetLine(GFX_display_t *disp, int16_t offs, uint32_t ampl)
vert_shift = MIN(vert_shift, 20);
vert_shift = MAX(vert_shift, -19);
ULOG_TRACE("<OFFSLINE> shift: %i", vert_shift);
// ULOG_DEBUG("<OFFSLINE> shift: %i", vert_shift);
DISP_drawHorizontalLine(disp, 2, 31 + vert_shift, 57, GFX_WHITE);
}