From f0ce0a9ff5e33db22e90a4e523e89f77114a2444 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Sun, 25 Jun 2023 17:15:20 +0800 Subject: [PATCH] update --- .vscode/c_cpp_properties.json | 4 +-- app/Core/Inc/spi.h | 3 ++ app/Core/Src/gpio.c | 8 ++--- app/Core/Src/main.c | 1 + app/Core/Src/spi.c | 84 +++++++++++++++++++++++++++++++++++++++++-- app/MDK-ARM/app.uvprojx | 2 +- app/app.ioc | 56 +++++++++++++++++++---------- dep/libiflytop_micro | 2 +- src/umain.cpp | 55 +++++++++++++++++----------- 9 files changed, 167 insertions(+), 48 deletions(-) diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json index 93a2c3b..989ef0b 100644 --- a/.vscode/c_cpp_properties.json +++ b/.vscode/c_cpp_properties.json @@ -56,9 +56,9 @@ "__current_pc()=0U", "__current_sp()=0U", "__disable_fiq()=", - "__disable_irq()=", + // "__disable_irq()=", "__enable_fiq()=", - "__enable_irq()=", + // "__enable_irq()=", "__force_stores()=", "__memory_changed()=", "__schedule_barrier()=", diff --git a/app/Core/Inc/spi.h b/app/Core/Inc/spi.h index f40913c..beb378b 100644 --- a/app/Core/Inc/spi.h +++ b/app/Core/Inc/spi.h @@ -34,11 +34,14 @@ extern "C" { extern SPI_HandleTypeDef hspi1; +extern SPI_HandleTypeDef hspi2; + /* USER CODE BEGIN Private defines */ /* USER CODE END Private defines */ void MX_SPI1_Init(void); +void MX_SPI2_Init(void); /* USER CODE BEGIN Prototypes */ diff --git a/app/Core/Src/gpio.c b/app/Core/Src/gpio.c index 8e26c0d..84cca46 100644 --- a/app/Core/Src/gpio.c +++ b/app/Core/Src/gpio.c @@ -70,11 +70,11 @@ void MX_GPIO_Init(void) HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); /*Configure GPIO pins : PB0 PB1 PB2 PB12 - PB13 PB14 PB15 PB3 - PB4 PB5 PB8 PB9 */ + PB3 PB4 PB5 PB8 + PB9 */ GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_12 - |GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15|GPIO_PIN_3 - |GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_8|GPIO_PIN_9; + |GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_8 + |GPIO_PIN_9; GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); diff --git a/app/Core/Src/main.c b/app/Core/Src/main.c index 07842a9..acc02be 100644 --- a/app/Core/Src/main.c +++ b/app/Core/Src/main.c @@ -96,6 +96,7 @@ int main(void) MX_SPI1_Init(); MX_USART1_UART_Init(); MX_USART3_UART_Init(); + MX_SPI2_Init(); /* USER CODE BEGIN 2 */ umain(0, NULL); diff --git a/app/Core/Src/spi.c b/app/Core/Src/spi.c index 7ddaeaa..63c80bc 100644 --- a/app/Core/Src/spi.c +++ b/app/Core/Src/spi.c @@ -25,6 +25,7 @@ /* USER CODE END 0 */ SPI_HandleTypeDef hspi1; +SPI_HandleTypeDef hspi2; /* SPI1 init function */ void MX_SPI1_Init(void) @@ -41,8 +42,8 @@ void MX_SPI1_Init(void) hspi1.Init.Mode = SPI_MODE_MASTER; hspi1.Init.Direction = SPI_DIRECTION_2LINES; hspi1.Init.DataSize = SPI_DATASIZE_8BIT; - hspi1.Init.CLKPolarity = SPI_POLARITY_LOW; - hspi1.Init.CLKPhase = SPI_PHASE_1EDGE; + hspi1.Init.CLKPolarity = SPI_POLARITY_HIGH; + hspi1.Init.CLKPhase = SPI_PHASE_2EDGE; hspi1.Init.NSS = SPI_NSS_SOFT; hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_64; hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB; @@ -58,6 +59,38 @@ void MX_SPI1_Init(void) /* USER CODE END SPI1_Init 2 */ } +/* SPI2 init function */ +void MX_SPI2_Init(void) +{ + + /* USER CODE BEGIN SPI2_Init 0 */ + + /* USER CODE END SPI2_Init 0 */ + + /* USER CODE BEGIN SPI2_Init 1 */ + + /* USER CODE END SPI2_Init 1 */ + hspi2.Instance = SPI2; + hspi2.Init.Mode = SPI_MODE_MASTER; + hspi2.Init.Direction = SPI_DIRECTION_2LINES; + hspi2.Init.DataSize = SPI_DATASIZE_8BIT; + hspi2.Init.CLKPolarity = SPI_POLARITY_HIGH; + hspi2.Init.CLKPhase = SPI_PHASE_2EDGE; + hspi2.Init.NSS = SPI_NSS_SOFT; + hspi2.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_32; + hspi2.Init.FirstBit = SPI_FIRSTBIT_MSB; + hspi2.Init.TIMode = SPI_TIMODE_DISABLE; + hspi2.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; + hspi2.Init.CRCPolynomial = 10; + if (HAL_SPI_Init(&hspi2) != HAL_OK) + { + Error_Handler(); + } + /* USER CODE BEGIN SPI2_Init 2 */ + + /* USER CODE END SPI2_Init 2 */ + +} void HAL_SPI_MspInit(SPI_HandleTypeDef* spiHandle) { @@ -91,6 +124,34 @@ void HAL_SPI_MspInit(SPI_HandleTypeDef* spiHandle) /* USER CODE END SPI1_MspInit 1 */ } + else if(spiHandle->Instance==SPI2) + { + /* USER CODE BEGIN SPI2_MspInit 0 */ + + /* USER CODE END SPI2_MspInit 0 */ + /* SPI2 clock enable */ + __HAL_RCC_SPI2_CLK_ENABLE(); + + __HAL_RCC_GPIOB_CLK_ENABLE(); + /**SPI2 GPIO Configuration + PB13 ------> SPI2_SCK + PB14 ------> SPI2_MISO + PB15 ------> SPI2_MOSI + */ + GPIO_InitStruct.Pin = GPIO_PIN_13|GPIO_PIN_15; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + + GPIO_InitStruct.Pin = GPIO_PIN_14; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); + + /* USER CODE BEGIN SPI2_MspInit 1 */ + + /* USER CODE END SPI2_MspInit 1 */ + } } void HAL_SPI_MspDeInit(SPI_HandleTypeDef* spiHandle) @@ -115,6 +176,25 @@ void HAL_SPI_MspDeInit(SPI_HandleTypeDef* spiHandle) /* USER CODE END SPI1_MspDeInit 1 */ } + else if(spiHandle->Instance==SPI2) + { + /* USER CODE BEGIN SPI2_MspDeInit 0 */ + + /* USER CODE END SPI2_MspDeInit 0 */ + /* Peripheral clock disable */ + __HAL_RCC_SPI2_CLK_DISABLE(); + + /**SPI2 GPIO Configuration + PB13 ------> SPI2_SCK + PB14 ------> SPI2_MISO + PB15 ------> SPI2_MOSI + */ + HAL_GPIO_DeInit(GPIOB, GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15); + + /* USER CODE BEGIN SPI2_MspDeInit 1 */ + + /* USER CODE END SPI2_MspDeInit 1 */ + } } /* USER CODE BEGIN 1 */ diff --git a/app/MDK-ARM/app.uvprojx b/app/MDK-ARM/app.uvprojx index f9de8a8..ce0a525 100644 --- a/app/MDK-ARM/app.uvprojx +++ b/app/MDK-ARM/app.uvprojx @@ -314,7 +314,7 @@ 1 - 2 + 1 0 0 1 diff --git a/app/app.ioc b/app/app.ioc index 5ef406e..5f4d848 100644 --- a/app/app.ioc +++ b/app/app.ioc @@ -23,34 +23,38 @@ Mcu.CPN=STM32F103C8T6 Mcu.Family=STM32F1 Mcu.IP0=CAN Mcu.IP1=IWDG +Mcu.IP10=USART3 Mcu.IP2=NVIC Mcu.IP3=RCC Mcu.IP4=SPI1 -Mcu.IP5=SYS -Mcu.IP6=TIM4 -Mcu.IP7=USART1 -Mcu.IP8=USART2 -Mcu.IP9=USART3 -Mcu.IPNb=10 +Mcu.IP5=SPI2 +Mcu.IP6=SYS +Mcu.IP7=TIM4 +Mcu.IP8=USART1 +Mcu.IP9=USART2 +Mcu.IPNb=11 Mcu.Name=STM32F103C(8-B)Tx Mcu.Package=LQFP48 Mcu.Pin0=PA2 Mcu.Pin1=PA3 -Mcu.Pin10=PA14 -Mcu.Pin11=PB6 -Mcu.Pin12=PB7 -Mcu.Pin13=VP_IWDG_VS_IWDG -Mcu.Pin14=VP_SYS_VS_Systick -Mcu.Pin15=VP_TIM4_VS_ClockSourceINT +Mcu.Pin10=PA11 +Mcu.Pin11=PA12 +Mcu.Pin12=PA13 +Mcu.Pin13=PA14 +Mcu.Pin14=PB6 +Mcu.Pin15=PB7 +Mcu.Pin16=VP_IWDG_VS_IWDG +Mcu.Pin17=VP_SYS_VS_Systick +Mcu.Pin18=VP_TIM4_VS_ClockSourceINT Mcu.Pin2=PA5 Mcu.Pin3=PA6 Mcu.Pin4=PA7 Mcu.Pin5=PB10 Mcu.Pin6=PB11 -Mcu.Pin7=PA11 -Mcu.Pin8=PA12 -Mcu.Pin9=PA13 -Mcu.PinsNb=16 +Mcu.Pin7=PB13 +Mcu.Pin8=PB14 +Mcu.Pin9=PB15 +Mcu.PinsNb=19 Mcu.ThirdPartyNb=0 Mcu.UserConstants= Mcu.UserName=STM32F103C8Tx @@ -93,6 +97,12 @@ PB10.Mode=Asynchronous PB10.Signal=USART3_TX PB11.Mode=Asynchronous PB11.Signal=USART3_RX +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 PB6.Locked=true PB6.Mode=Asynchronous PB6.Signal=USART1_TX @@ -127,7 +137,7 @@ ProjectManager.StackSize=0x400 ProjectManager.TargetToolchain=MDK-ARM V5.32 ProjectManager.ToolChainLocation= ProjectManager.UnderRoot=false -ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_IWDG_Init-IWDG-false-HAL-true,4-MX_USART2_UART_Init-USART2-false-HAL-true,5-MX_TIM4_Init-TIM4-false-HAL-true,6-MX_CAN_Init-CAN-false-HAL-true,7-MX_SPI1_Init-SPI1-false-HAL-true +ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_IWDG_Init-IWDG-false-HAL-true,4-MX_USART2_UART_Init-USART2-false-HAL-true,5-MX_TIM4_Init-TIM4-false-HAL-true,6-MX_CAN_Init-CAN-false-HAL-true,7-MX_SPI1_Init-SPI1-false-HAL-true,8-MX_USART1_UART_Init-USART1-false-HAL-true,9-MX_USART3_UART_Init-USART3-false-HAL-true RCC.ADCFreqValue=32000000 RCC.AHBFreq_Value=64000000 RCC.APB1CLKDivider=RCC_HCLK_DIV2 @@ -148,11 +158,21 @@ RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK RCC.TimSysFreq_Value=64000000 RCC.USBFreq_Value=64000000 SPI1.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_64 +SPI1.CLKPhase=SPI_PHASE_2EDGE +SPI1.CLKPolarity=SPI_POLARITY_HIGH SPI1.CalculateBaudRate=1000.0 KBits/s SPI1.Direction=SPI_DIRECTION_2LINES -SPI1.IPParameters=VirtualType,Mode,Direction,BaudRatePrescaler,CalculateBaudRate +SPI1.IPParameters=VirtualType,Mode,Direction,BaudRatePrescaler,CalculateBaudRate,CLKPolarity,CLKPhase SPI1.Mode=SPI_MODE_MASTER SPI1.VirtualType=VM_MASTER +SPI2.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_32 +SPI2.CLKPhase=SPI_PHASE_2EDGE +SPI2.CLKPolarity=SPI_POLARITY_HIGH +SPI2.CalculateBaudRate=1000.0 KBits/s +SPI2.Direction=SPI_DIRECTION_2LINES +SPI2.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,BaudRatePrescaler,CLKPolarity,CLKPhase +SPI2.Mode=SPI_MODE_MASTER +SPI2.VirtualType=VM_MASTER TIM4.IPParameters=Prescaler TIM4.Prescaler=63 USART1.IPParameters=VirtualMode diff --git a/dep/libiflytop_micro b/dep/libiflytop_micro index 7ce9d5d..54dd371 160000 --- a/dep/libiflytop_micro +++ b/dep/libiflytop_micro @@ -1 +1 @@ -Subproject commit 7ce9d5decd395dba28b6b5b0e46edaa56e324a59 +Subproject commit 54dd3712885f7322cf152f2eba87c7381fdcbe47 diff --git a/src/umain.cpp b/src/umain.cpp index fb60b75..46d2b7a 100644 --- a/src/umain.cpp +++ b/src/umain.cpp @@ -27,24 +27,28 @@ struct ad77681_init_param ADC_default_init_param = { // .extra = (void*)&spi_eng_init_param, // }, /* Configuration */ - AD77681_FAST, // power_mode - AD77681_MCLK_DIV_8, // mclk_div - AD77681_CONV_CONTINUOUS, // conv_mode - AD77681_POSITIVE_FS, // diag_mux_sel - false, // conv_diag_sel - AD77681_CONV_16BIT, // conv_len - AD77681_CRC, // crc_sel - 0, // status_bit - AD77681_VCM_HALF_VCC, /* VCM setup*/ - AD77681_AINn_ENABLED, /* AIN- precharge buffer*/ - AD77681_AINp_ENABLED, /* AIN+ precharge buffer*/ - AD77681_BUFn_ENABLED, /* REF- buffer*/ - AD77681_BUFp_ENABLED, /* REF+ buffer*/ - AD77681_FIR, /* FIR Filter*/ - AD77681_SINC5_FIR_DECx32, /* Decimate by 32*/ - 0, /* OS ratio of SINC3*/ - 4096, /* Reference voltage*/ - 16384, /* MCLK in kHz*/ + .power_mode = AD77681_FAST, // power_mode + .mclk_div = AD77681_MCLK_DIV_8, // mclk_div + .conv_mode = AD77681_CONV_CONTINUOUS, // conv_mode + .diag_mux_sel = AD77681_POSITIVE_FS, // diag_mux_sel + .conv_diag_sel = false, // conv_diag_sel + .conv_len = AD77681_CONV_16BIT, // conv_len + .crc_sel = AD77681_CRC, // crc_sel + .status_bit = 0, // status_bit + .VCM_out = AD77681_VCM_HALF_VCC, /* VCM setup*/ + .AINn = AD77681_AINn_ENABLED, /* AIN- precharge buffer*/ + .AINp = AD77681_AINp_ENABLED, /* AIN+ precharge buffer*/ + .REFn = AD77681_BUFn_ENABLED, /* REF- buffer*/ + .REFp = AD77681_BUFp_ENABLED, /* REF+ buffer*/ + .filter = AD77681_FIR, /* FIR Filter*/ + .decimate = AD77681_SINC5_FIR_DECx32, /* Decimate by 32*/ + .sinc3_osr = 0, /* OS ratio of SINC3*/ + .vref = 4096, /* Reference voltage*/ + .mclk = 16384, /* MCLK in kHz*/ + + // sample_rate + // data_frame_byte + }; void Main::generateScheduleTicket() { @@ -64,7 +68,18 @@ void Main::main(int argc, char const *argv[]) { m_hardware.output_switch_init(); PB12.initAsOutput(true); - m_ad77681.initialize("ad77681", &m_hardware, &hspi1, &PB12, ADC_default_init_param); + m_ad77681.initialize("ad77681", &m_hardware, &hspi2, &PB12, ADC_default_init_param); + uint8_t adc_data[5]; + while (1) { + m_ad77681.spi_read_adc_data(adc_data, AD77681_CONTINUOUS_DATA_READ); + printf("[ADC DATA]: 0x"); + for (int i = 0; i < sizeof(adc_data); i++) { + printf("%x", adc_data[i]); + } + printf("\r\n"); + HAL_Delay(1000); + // HAL_IWDG_Refresh(&hiwdg); + } while (true) { m_hardware.periodicJob(); @@ -74,6 +89,6 @@ void Main::main(int argc, char const *argv[]) { m_hardware.input_sensors_table_dump(0); } - HAL_IWDG_Refresh(&hiwdg); + // HAL_IWDG_Refresh(&hiwdg); } }