aggiunto oscillatore
This commit is contained in:
@@ -25,6 +25,7 @@
|
||||
#include <stdio.h>
|
||||
#include "bassofono.h"
|
||||
#include "interface.h"
|
||||
#include "si5351.h"
|
||||
|
||||
/* USER CODE END Includes */
|
||||
|
||||
@@ -52,6 +53,8 @@ DAC_HandleTypeDef hdac1;
|
||||
DMA_HandleTypeDef hdma_dac1_ch1;
|
||||
DMA_HandleTypeDef hdma_dac1_ch2;
|
||||
|
||||
I2C_HandleTypeDef hi2c1;
|
||||
|
||||
OPAMP_HandleTypeDef hopamp1;
|
||||
|
||||
TIM_HandleTypeDef htim6;
|
||||
@@ -64,6 +67,7 @@ DMA_HandleTypeDef hdma_usart1_tx;
|
||||
/* USER CODE BEGIN PV */
|
||||
|
||||
volatile uint8_t tick;
|
||||
uint16_t tick_timer;
|
||||
|
||||
// RX
|
||||
volatile uint8_t rx_adc_buffer_ready, half_rx_dac_buffer_empty;
|
||||
@@ -85,6 +89,7 @@ static void MX_CORDIC_Init(void);
|
||||
static void MX_USART1_UART_Init(void);
|
||||
static void MX_TIM8_Init(void);
|
||||
static void MX_OPAMP1_Init(void);
|
||||
static void MX_I2C1_Init(void);
|
||||
/* USER CODE BEGIN PFP */
|
||||
|
||||
/* USER CODE END PFP */
|
||||
@@ -94,6 +99,19 @@ static void MX_OPAMP1_Init(void);
|
||||
|
||||
// IRQ
|
||||
|
||||
// EXTI Line9 External Interrupt ISR Handler CallBackFun
|
||||
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){
|
||||
if(GPIO_Pin == GPIO_PIN_11){
|
||||
/*
|
||||
if(HAL_GPIO_ReadPin(PTT_GPIO_Port, PTT_Pin)){
|
||||
enqueue_cmd(BT1P);
|
||||
} else {
|
||||
enqueue_cmd(BT1R);
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
// ADC
|
||||
|
||||
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc){
|
||||
@@ -122,13 +140,13 @@ void HAL_DAC_ConvCpltCallbackCh1(DAC_HandleTypeDef* hdac) {
|
||||
|
||||
// tx
|
||||
void HAL_DACEx_ConvHalfCpltCallbackCh2(DAC_HandleTypeDef* hdac) {
|
||||
HAL_GPIO_TogglePin(OUT_GPIO_Port, OUT_Pin);
|
||||
// HAL_GPIO_TogglePin(OUT_GPIO_Port, OUT_Pin);
|
||||
tx_dac_buffer_toggle = 0;
|
||||
half_tx_dac_buffer_empty = 1;
|
||||
}
|
||||
|
||||
void HAL_DACEx_ConvCpltCallbackCh2(DAC_HandleTypeDef* hdac) {
|
||||
HAL_GPIO_TogglePin(OUT_GPIO_Port, OUT_Pin);
|
||||
// HAL_GPIO_TogglePin(OUT_GPIO_Port, OUT_Pin);
|
||||
tx_dac_buffer_toggle = 1;
|
||||
half_tx_dac_buffer_empty = 1;
|
||||
}
|
||||
@@ -197,21 +215,34 @@ void start_transmit(void){
|
||||
// ADC
|
||||
// HAL_ADC_Start_DMA(&hadc1, (uint32_t*)adc_buffer, ADC_BUFFER_SIZE);
|
||||
|
||||
// DAC
|
||||
HAL_TIM_Base_Start(&htim8);
|
||||
HAL_DAC_Start(&hdac1,DAC_CHANNEL_2);
|
||||
HAL_DAC_Start_DMA(&hdac1, DAC_CHANNEL_2, tx_dac_buffer, (TX_DAC_BUFFER_SIZE * 2), DAC_ALIGN_12B_R);
|
||||
if(TX_TYPE == TX_TYPE_DAC){
|
||||
// DAC
|
||||
HAL_TIM_Base_Start(&htim8);
|
||||
HAL_DAC_Start(&hdac1,DAC_CHANNEL_2);
|
||||
HAL_DAC_Start_DMA(&hdac1, DAC_CHANNEL_2, tx_dac_buffer, (TX_DAC_BUFFER_SIZE * 2), DAC_ALIGN_12B_R);
|
||||
} else if(TX_TYPE == TX_TYPE_PWM){
|
||||
// HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_3);
|
||||
// HAL_TIM_Base_Start(&htim4);
|
||||
} else if(TX_TYPE == TX_TYPE_SI5351){
|
||||
si5351_on();
|
||||
}
|
||||
}
|
||||
|
||||
void stop_transmit(void){
|
||||
transmit = 0;
|
||||
// ADC
|
||||
// HAL_ADC_Stop_DMA(&hadc1);
|
||||
|
||||
// DAC
|
||||
HAL_TIM_Base_Stop(&htim8);
|
||||
HAL_DAC_Stop(&hdac1,DAC_CHANNEL_2);
|
||||
HAL_DAC_Stop_DMA(&hdac1, DAC_CHANNEL_2);
|
||||
if(TX_TYPE == TX_TYPE_DAC){
|
||||
// DAC
|
||||
HAL_TIM_Base_Stop(&htim8);
|
||||
HAL_DAC_Stop(&hdac1,DAC_CHANNEL_2);
|
||||
HAL_DAC_Stop_DMA(&hdac1, DAC_CHANNEL_2);
|
||||
} else if(TX_TYPE == TX_TYPE_PWM){
|
||||
// HAL_TIM_PWM_Stop(&htim4, TIM_CHANNEL_3);
|
||||
// HAL_TIM_Base_Stop(&htim4);
|
||||
} else if(TX_TYPE == TX_TYPE_SI5351){
|
||||
si5351_off();
|
||||
}
|
||||
}
|
||||
|
||||
void start_receive(void){
|
||||
@@ -277,11 +308,6 @@ int main(void)
|
||||
{
|
||||
/* USER CODE BEGIN 1 */
|
||||
state_changed = 0;
|
||||
display_init();
|
||||
state_set_default();
|
||||
interface_set_default();
|
||||
display_update_mode();
|
||||
display_update_state();
|
||||
/* USER CODE END 1 */
|
||||
|
||||
/* MCU Configuration--------------------------------------------------------*/
|
||||
@@ -311,7 +337,19 @@ int main(void)
|
||||
MX_USART1_UART_Init();
|
||||
MX_TIM8_Init();
|
||||
MX_OPAMP1_Init();
|
||||
MX_I2C1_Init();
|
||||
/* USER CODE BEGIN 2 */
|
||||
|
||||
HAL_Delay(10);
|
||||
|
||||
display_init();
|
||||
state_set_default();
|
||||
interface_set_default();
|
||||
|
||||
// inutili
|
||||
display_update_item();
|
||||
// display_update_state();
|
||||
|
||||
st2_filter_init();
|
||||
audio_filter_init();
|
||||
// diag();
|
||||
@@ -321,6 +359,12 @@ int main(void)
|
||||
HAL_UART_Receive_IT(&huart1, uart_rx_buf, 1);
|
||||
// HAL_UART_Receive_IT(&huart2, uart_rx_buf, 1);
|
||||
|
||||
if(TX_TYPE == TX_TYPE_SI5351){
|
||||
// rooto!
|
||||
si53531_initialize();
|
||||
}
|
||||
|
||||
|
||||
start_receive();
|
||||
/* USER CODE END 2 */
|
||||
|
||||
@@ -330,25 +374,30 @@ int main(void)
|
||||
/* USER CODE END WHILE */
|
||||
|
||||
/* USER CODE BEGIN 3 */
|
||||
HAL_GPIO_TogglePin(OUT_GPIO_Port, OUT_Pin);
|
||||
// receive = transmit = 0;
|
||||
if(receive){
|
||||
if(rx_adc_buffer_ready){
|
||||
HAL_GPIO_WritePin(OUT_GPIO_Port, OUT_Pin, SET);
|
||||
rx_mixer(adc_buffer, ADC_BUFFER_SIZE, if_I, if_Q, nco1_increment);
|
||||
HAL_GPIO_WritePin(OUT_GPIO_Port, OUT_Pin, RESET);
|
||||
// HAL_GPIO_WritePin(OUT_GPIO_Port, OUT_Pin, SET);
|
||||
rx_mixer(adc_buffer, ADC_BUFFER_SIZE, if_I, if_Q, rx_nco1_increment);
|
||||
// HAL_GPIO_WritePin(OUT_GPIO_Port, OUT_Pin, RESET);
|
||||
rx_adc_buffer_ready = 0;
|
||||
}
|
||||
if(half_rx_dac_buffer_empty){
|
||||
// HAL_GPIO_WritePin(OUT_GPIO_Port, OUT_Pin, SET);
|
||||
if (modulation == MOD_DC) dc_demodulator(if_I, LF_BUFFER_SIZE, prefilter_lf_buffer);
|
||||
else if(modulation == MOD_LSB || modulation == MOD_USB) ssb_demodulator(if_I, if_Q, LF_BUFFER_SIZE, prefilter_lf_buffer, NCO2_INCREMENT);
|
||||
else if (modulation == MOD_AM) am_demodulator(if_I, if_Q, LF_BUFFER_SIZE, prefilter_lf_buffer);
|
||||
arm_fir_q31(&audio_filter_struct, prefilter_lf_buffer, lf_buffer[lf_buffer_toggle], AUDIO_FILTER_BLOCK_SIZE);
|
||||
// arm_fir_q31(&audio_filter_struct, prefilter_lf_buffer, lf_buffer_test[lf_buffer_toggle], AUDIO_FILTER_BLOCK_SIZE);
|
||||
// HAL_GPIO_WritePin(OUT_GPIO_Port, OUT_Pin, RESET);
|
||||
half_rx_dac_buffer_empty = 0;
|
||||
}
|
||||
}
|
||||
if (transmit){
|
||||
if(half_tx_dac_buffer_empty){
|
||||
// HAL_GPIO_WritePin(OUT_GPIO_Port, OUT_Pin, SET);
|
||||
tx_mixer(tx_dac_buffer[tx_dac_buffer_toggle], TX_DAC_BUFFER_SIZE, if_I, if_Q, nco1_increment);
|
||||
tx_mixer(tx_dac_buffer[tx_dac_buffer_toggle], TX_DAC_BUFFER_SIZE, if_I, if_Q, tx_nco1_increment);
|
||||
half_tx_dac_buffer_empty = 0;
|
||||
// HAL_GPIO_WritePin(OUT_GPIO_Port, OUT_Pin, RESET);
|
||||
}
|
||||
@@ -359,27 +408,46 @@ int main(void)
|
||||
}
|
||||
}
|
||||
if(tick){
|
||||
if(receive){
|
||||
// TODO
|
||||
rx_measure_signal(if_I, LF_BUFFER_SIZE);
|
||||
}
|
||||
// HAL_GPIO_TogglePin(LD2_GPIO_Port, LD2_Pin);
|
||||
// consuma coda comandi
|
||||
while(rx_cmd_rb_in_idx != rx_cmd_rb_out_idx) dequeue_cmd();
|
||||
|
||||
// applica cambiamenti display
|
||||
if(state_changed) display_update_state();
|
||||
if(uart_tx_buf_in_idx){
|
||||
display_write(uart_tx_buf, uart_tx_buf_in_idx);
|
||||
uart_tx_buf_in_idx = 0;
|
||||
}
|
||||
if(peak){
|
||||
if(peakset == 0) click();
|
||||
peakset = 50;
|
||||
peak = 0;
|
||||
}
|
||||
if(peakset){
|
||||
peakset--;
|
||||
if(peakset == 0) click();
|
||||
|
||||
tick_timer++;
|
||||
// eventi lenti
|
||||
if(tick_timer % 8 == 0){
|
||||
if(receive){
|
||||
if(peak){
|
||||
if(peakset == 0) click();
|
||||
peakset = 50;
|
||||
peak = 0;
|
||||
}
|
||||
if(peakset){
|
||||
peakset--;
|
||||
if(peakset == 0) click();
|
||||
}
|
||||
|
||||
rx_signal = measure_log_abs_mean(if_I, LF_BUFFER_SIZE) * RX_SMETER_SCALE;
|
||||
if(rx_signal != s_meter){
|
||||
s_meter = rx_signal;
|
||||
set_changed(7);
|
||||
}
|
||||
}
|
||||
if(transmit){
|
||||
tx_signal = 78;
|
||||
if(tx_signal != s_meter){
|
||||
s_meter = tx_signal;
|
||||
set_changed(7);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
tick = 0;
|
||||
}
|
||||
}
|
||||
@@ -394,7 +462,6 @@ void SystemClock_Config(void)
|
||||
{
|
||||
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
|
||||
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
|
||||
RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
|
||||
|
||||
/** Configure the main internal regulator output voltage
|
||||
*/
|
||||
@@ -428,15 +495,7 @@ void SystemClock_Config(void)
|
||||
{
|
||||
Error_Handler();
|
||||
}
|
||||
/** Initializes the peripherals clocks
|
||||
*/
|
||||
PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART1|RCC_PERIPHCLK_ADC12;
|
||||
PeriphClkInit.Usart1ClockSelection = RCC_USART1CLKSOURCE_PCLK2;
|
||||
PeriphClkInit.Adc12ClockSelection = RCC_ADC12CLKSOURCE_SYSCLK;
|
||||
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
|
||||
{
|
||||
Error_Handler();
|
||||
}
|
||||
HAL_RCC_MCOConfig(RCC_MCO1, RCC_MCO1SOURCE_HSE, RCC_MCODIV_1);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -608,6 +667,52 @@ static void MX_DAC1_Init(void)
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief I2C1 Initialization Function
|
||||
* @param None
|
||||
* @retval None
|
||||
*/
|
||||
static void MX_I2C1_Init(void)
|
||||
{
|
||||
|
||||
/* USER CODE BEGIN I2C1_Init 0 */
|
||||
|
||||
/* USER CODE END I2C1_Init 0 */
|
||||
|
||||
/* USER CODE BEGIN I2C1_Init 1 */
|
||||
|
||||
/* USER CODE END I2C1_Init 1 */
|
||||
hi2c1.Instance = I2C1;
|
||||
hi2c1.Init.Timing = 0x60505F8C;
|
||||
hi2c1.Init.OwnAddress1 = 0;
|
||||
hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
|
||||
hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
|
||||
hi2c1.Init.OwnAddress2 = 0;
|
||||
hi2c1.Init.OwnAddress2Masks = I2C_OA2_NOMASK;
|
||||
hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
|
||||
hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
|
||||
if (HAL_I2C_Init(&hi2c1) != HAL_OK)
|
||||
{
|
||||
Error_Handler();
|
||||
}
|
||||
/** Configure Analogue filter
|
||||
*/
|
||||
if (HAL_I2CEx_ConfigAnalogFilter(&hi2c1, I2C_ANALOGFILTER_ENABLE) != HAL_OK)
|
||||
{
|
||||
Error_Handler();
|
||||
}
|
||||
/** Configure Digital filter
|
||||
*/
|
||||
if (HAL_I2CEx_ConfigDigitalFilter(&hi2c1, 0) != HAL_OK)
|
||||
{
|
||||
Error_Handler();
|
||||
}
|
||||
/* USER CODE BEGIN I2C1_Init 2 */
|
||||
|
||||
/* USER CODE END I2C1_Init 2 */
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief OPAMP1 Initialization Function
|
||||
* @param None
|
||||
@@ -856,11 +961,25 @@ static void MX_GPIO_Init(void)
|
||||
/*Configure GPIO pin Output Level */
|
||||
HAL_GPIO_WritePin(OUT_GPIO_Port, OUT_Pin, GPIO_PIN_RESET);
|
||||
|
||||
/*Configure GPIO pins : NC1_Pin NC2_Pin */
|
||||
GPIO_InitStruct.Pin = NC1_Pin|NC2_Pin;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
|
||||
GPIO_InitStruct.Pull = GPIO_PULLDOWN;
|
||||
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
||||
|
||||
/*Configure GPIO pin : PA8 */
|
||||
GPIO_InitStruct.Pin = GPIO_PIN_8;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||
GPIO_InitStruct.Alternate = GPIO_AF0_MCO;
|
||||
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
||||
|
||||
/*Configure GPIO pin : OUT_Pin */
|
||||
GPIO_InitStruct.Pin = OUT_Pin;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_MEDIUM;
|
||||
HAL_GPIO_Init(OUT_GPIO_Port, &GPIO_InitStruct);
|
||||
|
||||
}
|
||||
@@ -901,4 +1020,3 @@ void assert_failed(uint8_t *file, uint32_t line)
|
||||
}
|
||||
#endif /* USE_FULL_ASSERT */
|
||||
|
||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
||||
|
||||
Reference in New Issue
Block a user