瀏覽代碼

[add] stm32h7 adc and dac driver.

thread-liu 4 年之前
父節點
當前提交
8edb7c316a

+ 51 - 45
bsp/stm32/libraries/HAL_Drivers/config/h7/adc_config.h

@@ -19,63 +19,69 @@ extern "C" {
 
 #ifdef BSP_USING_ADC1
 #ifndef ADC1_CONFIG
-#define ADC1_CONFIG                                                 \
-    {                                                               \
-       .Instance                   = ADC1,                          \
-       .Init.ClockPrescaler        = ADC_CLOCK_SYNC_PCLK_DIV4,      \
-       .Init.Resolution            = ADC_RESOLUTION_12B,            \
-       .Init.DataAlign             = ADC_DATAALIGN_RIGHT,           \
-       .Init.ScanConvMode          = DISABLE,                       \
-       .Init.EOCSelection          = DISABLE,                       \
-       .Init.ContinuousConvMode    = DISABLE,                       \
-       .Init.NbrOfConversion       = 1,                             \
-       .Init.DiscontinuousConvMode = DISABLE,                       \
-       .Init.NbrOfDiscConversion   = 0,                             \
-       .Init.ExternalTrigConv      = ADC_SOFTWARE_START,            \
-       .Init.ExternalTrigConvEdge  = ADC_EXTERNALTRIGCONVEDGE_NONE, \
-       .Init.DMAContinuousRequests = DISABLE,                       \
+#define ADC1_CONFIG                                                     \
+    {                                                                   \
+        .Instance                      = ADC1,                          \
+        .Init.ClockPrescaler           = ADC_CLOCK_SYNC_PCLK_DIV4,      \
+        .Init.Resolution               = ADC_RESOLUTION_16B,            \
+        .Init.ScanConvMode             = ADC_SCAN_DISABLE,              \
+        .Init.EOCSelection             = ADC_EOC_SINGLE_CONV,           \
+        .Init.LowPowerAutoWait         = DISABLE,                       \
+        .Init.ContinuousConvMode       = DISABLE,                       \
+        .Init.NbrOfConversion          = 1,                             \
+        .Init.DiscontinuousConvMode    = DISABLE,                       \
+        .Init.NbrOfDiscConversion      = 1,                             \
+        .Init.ExternalTrigConv         = ADC_SOFTWARE_START,            \
+        .Init.ExternalTrigConvEdge     = ADC_EXTERNALTRIGCONVEDGE_NONE, \
+        .Init.ConversionDataManagement = ADC_CONVERSIONDATA_DR,         \
+        .Init.Overrun                  = ADC_OVR_DATA_OVERWRITTEN,      \
+        .Init.OversamplingMode         = DISABLE,                       \
     }
 #endif /* ADC1_CONFIG */
 #endif /* BSP_USING_ADC1 */
 
 #ifdef BSP_USING_ADC2
 #ifndef ADC2_CONFIG
-#define ADC2_CONFIG                                                 \
-    {                                                               \
-       .Instance                   = ADC2,                          \
-       .Init.ClockPrescaler        = ADC_CLOCK_SYNC_PCLK_DIV4,      \
-       .Init.Resolution            = ADC_RESOLUTION_12B,            \
-       .Init.DataAlign             = ADC_DATAALIGN_RIGHT,           \
-       .Init.ScanConvMode          = DISABLE,                       \
-       .Init.EOCSelection          = DISABLE,                       \
-       .Init.ContinuousConvMode    = DISABLE,                       \
-       .Init.NbrOfConversion       = 1,                             \
-       .Init.DiscontinuousConvMode = DISABLE,                       \
-       .Init.NbrOfDiscConversion   = 0,                             \
-       .Init.ExternalTrigConv      = ADC_SOFTWARE_START,            \
-       .Init.ExternalTrigConvEdge  = ADC_EXTERNALTRIGCONVEDGE_NONE, \
-       .Init.DMAContinuousRequests = DISABLE,                       \
+#define ADC2_CONFIG                                                     \
+    {                                                                   \
+        .Instance                      = ADC2,                          \
+        .Init.ClockPrescaler           = ADC_CLOCK_SYNC_PCLK_DIV4,      \
+        .Init.Resolution               = ADC_RESOLUTION_16B,            \
+        .Init.ScanConvMode             = ADC_SCAN_DISABLE,              \
+        .Init.EOCSelection             = ADC_EOC_SINGLE_CONV,           \
+        .Init.LowPowerAutoWait         = DISABLE,                       \
+        .Init.ContinuousConvMode       = DISABLE,                       \
+        .Init.NbrOfConversion          = 1,                             \
+        .Init.DiscontinuousConvMode    = DISABLE,                       \
+        .Init.NbrOfDiscConversion      = 1,                             \
+        .Init.ExternalTrigConv         = ADC_SOFTWARE_START,            \
+        .Init.ExternalTrigConvEdge     = ADC_EXTERNALTRIGCONVEDGE_NONE, \
+        .Init.ConversionDataManagement = ADC_CONVERSIONDATA_DR,         \
+        .Init.Overrun                  = ADC_OVR_DATA_OVERWRITTEN,      \
+        .Init.OversamplingMode         = DISABLE,                       \
     }
 #endif /* ADC2_CONFIG */
 #endif /* BSP_USING_ADC2 */
 
 #ifdef BSP_USING_ADC3
 #ifndef ADC3_CONFIG
-#define ADC3_CONFIG                                                 \
-    {                                                               \
-       .Instance                   = ADC3,                          \
-       .Init.ClockPrescaler        = ADC_CLOCK_SYNC_PCLK_DIV4,      \
-       .Init.Resolution            = ADC_RESOLUTION_12B,            \
-       .Init.DataAlign             = ADC_DATAALIGN_RIGHT,           \
-       .Init.ScanConvMode          = DISABLE,                       \
-       .Init.EOCSelection          = DISABLE,                       \
-       .Init.ContinuousConvMode    = DISABLE,                       \
-       .Init.NbrOfConversion       = 1,                             \
-       .Init.DiscontinuousConvMode = DISABLE,                       \
-       .Init.NbrOfDiscConversion   = 0,                             \
-       .Init.ExternalTrigConv      = ADC_SOFTWARE_START,            \
-       .Init.ExternalTrigConvEdge  = ADC_EXTERNALTRIGCONVEDGE_NONE, \
-       .Init.DMAContinuousRequests = DISABLE,                       \
+#define ADC3_CONFIG                                                     \
+    {                                                                   \
+        .Instance                      = ADC3,                          \
+       .Init.ClockPrescaler            = ADC_CLOCK_SYNC_PCLK_DIV4,      \
+        .Init.Resolution               = ADC_RESOLUTION_16B,            \
+        .Init.ScanConvMode             = ADC_SCAN_DISABLE,              \
+        .Init.EOCSelection             = ADC_EOC_SINGLE_CONV,           \
+        .Init.LowPowerAutoWait         = DISABLE,                       \
+        .Init.ContinuousConvMode       = DISABLE,                       \
+        .Init.NbrOfConversion          = 1,                             \
+        .Init.DiscontinuousConvMode    = DISABLE,                       \
+        .Init.NbrOfDiscConversion      = 1,                             \
+        .Init.ExternalTrigConv         = ADC_SOFTWARE_START,            \
+        .Init.ExternalTrigConvEdge     = ADC_EXTERNALTRIGCONVEDGE_NONE, \
+        .Init.ConversionDataManagement = ADC_CONVERSIONDATA_DR,         \
+        .Init.Overrun                  = ADC_OVR_DATA_OVERWRITTEN,      \
+        .Init.OversamplingMode         = DISABLE,                       \
     }
 #endif /* ADC3_CONFIG */
 #endif /* BSP_USING_ADC3 */

+ 42 - 0
bsp/stm32/libraries/HAL_Drivers/config/h7/dac_config.h

@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2006-2018, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date           Author       Notes
+ * 2020-06-16     thread-liu   first version
+ */
+
+#ifndef __DAC_CONFIG_H__
+#define __DAC_CONFIG_H__
+
+#include <rtthread.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef BSP_USING_DAC1
+#ifndef DAC1_CONFIG
+#define DAC1_CONFIG                                                    \
+    {                                                                  \
+       .Instance                      = DAC1,                          \
+    }
+#endif /* DAC2_CONFIG */
+#endif /* BSP_USING_DAC2 */
+
+#ifdef BSP_USING_DAC2
+#ifndef DAC2_CONFIG
+#define DAC2_CONFIG                                                    \
+    {                                                                  \
+       .Instance                      = DAC2,                          \
+    }
+#endif /* DAC2_CONFIG */
+#endif /* BSP_USING_DAC2 */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __DAC_CONFIG_H__ */

+ 8 - 5
bsp/stm32/libraries/HAL_Drivers/drv_adc.c

@@ -9,6 +9,7 @@
  * 2018-12-12     greedyhao    Porting for stm32f7xx
  * 2019-02-01     yuneizhilin  fix the stm32_adc_init function initialization issue
  * 2020-06-17     thread-liu   Porting for stm32mp1xx
+ * 2020-10-09     thread-liu   Porting for stm32h7xx
  */
 
 #include <board.h>
@@ -51,7 +52,7 @@ static rt_err_t stm32_adc_enabled(struct rt_adc_device *device, rt_uint32_t chan
 
     if (enabled)
     {
-#if defined(SOC_SERIES_STM32L4) || defined(SOC_SERIES_STM32G0) || defined (SOC_SERIES_STM32MP1)
+#if defined(SOC_SERIES_STM32L4) || defined(SOC_SERIES_STM32G0) || defined(SOC_SERIES_STM32MP1) || defined(SOC_SERIES_STM32H7)
         ADC_Enable(stm32_adc_handler);
 #else
         __HAL_ADC_ENABLE(stm32_adc_handler);
@@ -59,7 +60,7 @@ static rt_err_t stm32_adc_enabled(struct rt_adc_device *device, rt_uint32_t chan
     }
     else
     {
-#if defined(SOC_SERIES_STM32L4) || defined(SOC_SERIES_STM32G0) || defined (SOC_SERIES_STM32MP1)
+#if defined(SOC_SERIES_STM32L4) || defined(SOC_SERIES_STM32G0) || defined(SOC_SERIES_STM32MP1) || defined(SOC_SERIES_STM32H7)
         ADC_Disable(stm32_adc_handler);
 #else
         __HAL_ADC_DISABLE(stm32_adc_handler);
@@ -192,7 +193,7 @@ static rt_err_t stm32_get_adc_value(struct rt_adc_device *device, rt_uint32_t ch
         return -RT_ERROR;
     }
     
-#if defined(SOC_SERIES_STM32MP1)
+#if defined(SOC_SERIES_STM32MP1) || defined (SOC_SERIES_STM32H7)
     ADC_ChanConf.Rank = ADC_REGULAR_RANK_1;
 #else
     ADC_ChanConf.Rank = 1;
@@ -208,6 +209,8 @@ static rt_err_t stm32_get_adc_value(struct rt_adc_device *device, rt_uint32_t ch
     ADC_ChanConf.SamplingTime = ADC_SAMPLETIME_247CYCLES_5;
 #elif defined(SOC_SERIES_STM32MP1)
     ADC_ChanConf.SamplingTime = ADC_SAMPLETIME_810CYCLES_5;
+#elif defined(SOC_SERIES_STM32H7)
+    ADC_ChanConf.SamplingTime = ADC_SAMPLETIME_64CYCLES_5;
 #endif
 
 #if defined(SOC_SERIES_STM32F2) || defined(SOC_SERIES_STM32F4) || defined(SOC_SERIES_STM32F7) || defined(SOC_SERIES_STM32L4)
@@ -217,7 +220,7 @@ static rt_err_t stm32_get_adc_value(struct rt_adc_device *device, rt_uint32_t ch
 #if defined(SOC_SERIES_STM32L4)
     ADC_ChanConf.OffsetNumber = ADC_OFFSET_NONE;
     ADC_ChanConf.SingleDiff = LL_ADC_SINGLE_ENDED;
-#elif defined(SOC_SERIES_STM32MP1)
+#elif defined(SOC_SERIES_STM32MP1) || defined(SOC_SERIES_STM32H7)
     ADC_ChanConf.OffsetNumber = ADC_OFFSET_NONE;  /* ADC channel affected to offset number */
     ADC_ChanConf.Offset       = 0; 
     ADC_ChanConf.SingleDiff   = ADC_SINGLE_ENDED; /* ADC channel differential mode */
@@ -231,7 +234,7 @@ static rt_err_t stm32_get_adc_value(struct rt_adc_device *device, rt_uint32_t ch
         LOG_E("ADC calibration error!\n");
         return -RT_ERROR;
     }
-#elif defined(SOC_SERIES_STM32MP1)
+#elif defined(SOC_SERIES_STM32MP1) || defined(SOC_SERIES_STM32H7)
     /* Run the ADC linear calibration in single-ended mode */
     if (HAL_ADCEx_Calibration_Start(stm32_adc_handler, ADC_CALIB_OFFSET_LINEARITY, ADC_ChanConf.SingleDiff) != HAL_OK)
     {

+ 1 - 0
bsp/stm32/libraries/HAL_Drivers/drv_config.h

@@ -100,6 +100,7 @@ extern "C" {
 #include "h7/spi_config.h"
 #include "h7/qspi_config.h"
 #include "h7/adc_config.h"
+#include "h7/dac_config.h"
 #include "h7/tim_config.h"
 #include "h7/sdio_config.h"
 #include "h7/pwm_config.h"

+ 13 - 8
bsp/stm32/libraries/HAL_Drivers/drv_dac.c

@@ -6,6 +6,7 @@
  * Change Logs:
  * Date           Author            Notes
  * 2020-06-18     thread-liu        the first version
+ * 2020-10-09     thread-liu   Porting for stm32h7xx
  */
 
 #include <board.h>
@@ -22,6 +23,10 @@ static DAC_HandleTypeDef dac_config[] =
 #ifdef BSP_USING_DAC1
     DAC1_CONFIG,
 #endif
+    
+#ifdef BSP_USING_DAC2
+    DAC2_CONFIG,
+#endif
 };
 
 struct stm32_dac
@@ -38,7 +43,7 @@ static rt_err_t stm32_dac_enabled(struct rt_dac_device *device, rt_uint32_t chan
     RT_ASSERT(device != RT_NULL);
     stm32_dac_handler = device->parent.user_data;
 
-#if defined(SOC_SERIES_STM32MP1)
+#if defined(SOC_SERIES_STM32MP1) || defined(SOC_SERIES_STM32H7)
         HAL_DAC_Start(stm32_dac_handler, channel);
 #endif
     
@@ -51,7 +56,7 @@ static rt_err_t stm32_dac_disabled(struct rt_dac_device *device, rt_uint32_t cha
     RT_ASSERT(device != RT_NULL);
     stm32_dac_handler = device->parent.user_data;
     
-#if defined(SOC_SERIES_STM32MP1)
+#if defined(SOC_SERIES_STM32MP1) || defined(SOC_SERIES_STM32H7)
     HAL_DAC_Stop(stm32_dac_handler, channel);
 #endif
     
@@ -91,22 +96,22 @@ static rt_err_t stm32_set_dac_value(struct rt_dac_device *device, rt_uint32_t ch
 
     rt_memset(&DAC_ChanConf, 0, sizeof(DAC_ChanConf));
     
-#if defined(SOC_SERIES_STM32MP1)
-    if (channel <= 2 && channel > 0)
+#if defined(SOC_SERIES_STM32MP1) || defined(SOC_SERIES_STM32H7)
+    if ((channel <= 2) && (channel > 0))
     {
         /* set stm32 dac channel */
         dac_channel =  stm32_dac_get_channel(channel);
     }
     else
     {
-      LOG_E("dac channel must be between 1 and 2.");  
+      LOG_E("dac channel must be 1 or 2.");  
       return -RT_ERROR;
     }
 #endif  
     
-#if defined(SOC_SERIES_STM32MP1)
-    DAC_ChanConf.DAC_Trigger=DAC_TRIGGER_NONE;             
-    DAC_ChanConf.DAC_OutputBuffer=DAC_OUTPUTBUFFER_DISABLE;
+#if defined(SOC_SERIES_STM32MP1) || defined(SOC_SERIES_STM32H7)
+    DAC_ChanConf.DAC_Trigger      = DAC_TRIGGER_NONE;             
+    DAC_ChanConf.DAC_OutputBuffer = DAC_OUTPUTBUFFER_DISABLE;
 #endif    
     /* config dac out channel*/
     if (HAL_DAC_ConfigChannel(stm32_dac_handler, &DAC_ChanConf, dac_channel) != HAL_OK)

+ 6 - 2
bsp/stm32/libraries/STM32H7xx_HAL/SConscript

@@ -27,7 +27,7 @@ STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rng.c
 STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_sram.c
 STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_gpio.c
 ''')
- 
+
 if GetDepend(['RT_USING_SERIAL']):
     src += ['STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.c']
     src += ['STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_usart.c']
@@ -43,7 +43,7 @@ if GetDepend(['RT_USING_SPI']):
 
 if GetDepend(['RT_USING_USB_HOST']) or GetDepend(['RT_USING_USB_DEVICE']):
    # src += ['STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pccard.c']
-    src += ['STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pcd.c'] 
+    src += ['STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pcd.c']
     src += ['STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pcd_ex.c']
     src += ['STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_hcd.c']
     src += ['STM32H7xx_HAL_Driver/Src/stm32h7xx_ll_usb.c']
@@ -64,6 +64,10 @@ if GetDepend(['RT_USING_ADC']):
     src += ['STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc.c']
     src += ['STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc_ex.c']
 
+if GetDepend(['RT_USING_DAC']):
+    src += ['STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dac.c']
+    src += ['STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dac_ex.c']
+
 if GetDepend(['RT_USING_RTC']):
     src += ['STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rtc.c']
     src += ['STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rtc_ex.c']

+ 106 - 86
bsp/stm32/stm32h743-atk-apollo/board/CubeMX_Config/CubeMX_Config.ioc

@@ -1,4 +1,12 @@
 #MicroXplorer Configuration settings - do not modify
+ADC1.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_19
+ADC1.IPParameters=Rank-0\#ChannelRegularConversion,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,OffsetNumber-0\#ChannelRegularConversion,OffsetSignedSaturation-0\#ChannelRegularConversion,NbrOfConversionFlag,master
+ADC1.NbrOfConversionFlag=1
+ADC1.OffsetNumber-0\#ChannelRegularConversion=ADC_OFFSET_NONE
+ADC1.OffsetSignedSaturation-0\#ChannelRegularConversion=DISABLE
+ADC1.Rank-0\#ChannelRegularConversion=1
+ADC1.SamplingTime-0\#ChannelRegularConversion=ADC_SAMPLETIME_1CYCLE_5
+ADC1.master=1
 CORTEX_M7.CPU_DCache=Enabled
 CORTEX_M7.CPU_ICache=Enabled
 CORTEX_M7.IPParameters=CPU_ICache,CPU_DCache
@@ -21,22 +29,24 @@ FMC.WriteRecoveryTime1=4
 File.Version=6
 KeepUserPlacement=false
 Mcu.Family=STM32H7
-Mcu.IP0=CORTEX_M7
-Mcu.IP1=DEBUG
-Mcu.IP10=SDMMC1
-Mcu.IP11=SPI2
-Mcu.IP12=SYS
-Mcu.IP13=USART1
-Mcu.IP14=USART2
-Mcu.IP2=DMA2D
-Mcu.IP3=FMC
-Mcu.IP4=IWDG1
-Mcu.IP5=LTDC
-Mcu.IP6=NVIC
-Mcu.IP7=QUADSPI
-Mcu.IP8=RCC
-Mcu.IP9=RTC
-Mcu.IPNb=15
+Mcu.IP0=ADC1
+Mcu.IP1=CORTEX_M7
+Mcu.IP10=RCC
+Mcu.IP11=RTC
+Mcu.IP12=SDMMC1
+Mcu.IP13=SPI2
+Mcu.IP14=SYS
+Mcu.IP15=USART1
+Mcu.IP16=USART2
+Mcu.IP2=DAC1
+Mcu.IP3=DEBUG
+Mcu.IP4=DMA2D
+Mcu.IP5=FMC
+Mcu.IP6=IWDG1
+Mcu.IP7=LTDC
+Mcu.IP8=NVIC
+Mcu.IP9=QUADSPI
+Mcu.IPNb=17
 Mcu.Name=STM32H743IITx
 Mcu.Package=LQFP176
 Mcu.Pin0=PC13
@@ -55,85 +65,87 @@ Mcu.Pin2=PC15-OSC32_OUT (OSC32_OUT)
 Mcu.Pin20=PC3_C
 Mcu.Pin21=PA2
 Mcu.Pin22=PA3
-Mcu.Pin23=PB2
-Mcu.Pin24=PF11
-Mcu.Pin25=PF12
-Mcu.Pin26=PF13
-Mcu.Pin27=PF14
-Mcu.Pin28=PF15
-Mcu.Pin29=PG0
+Mcu.Pin23=PA4
+Mcu.Pin24=PA5
+Mcu.Pin25=PB2
+Mcu.Pin26=PF11
+Mcu.Pin27=PF12
+Mcu.Pin28=PF13
+Mcu.Pin29=PF14
 Mcu.Pin3=PI9
-Mcu.Pin30=PG1
-Mcu.Pin31=PE7
-Mcu.Pin32=PE8
-Mcu.Pin33=PE9
-Mcu.Pin34=PE10
-Mcu.Pin35=PE11
-Mcu.Pin36=PE12
-Mcu.Pin37=PE13
-Mcu.Pin38=PE14
-Mcu.Pin39=PE15
+Mcu.Pin30=PF15
+Mcu.Pin31=PG0
+Mcu.Pin32=PG1
+Mcu.Pin33=PE7
+Mcu.Pin34=PE8
+Mcu.Pin35=PE9
+Mcu.Pin36=PE10
+Mcu.Pin37=PE11
+Mcu.Pin38=PE12
+Mcu.Pin39=PE13
 Mcu.Pin4=PI10
-Mcu.Pin40=PH9
-Mcu.Pin41=PH10
-Mcu.Pin42=PH11
-Mcu.Pin43=PH12
-Mcu.Pin44=PB13
-Mcu.Pin45=PB14
-Mcu.Pin46=PB15
-Mcu.Pin47=PD8
-Mcu.Pin48=PD9
-Mcu.Pin49=PD10
+Mcu.Pin40=PE14
+Mcu.Pin41=PE15
+Mcu.Pin42=PH9
+Mcu.Pin43=PH10
+Mcu.Pin44=PH11
+Mcu.Pin45=PH12
+Mcu.Pin46=PB13
+Mcu.Pin47=PB14
+Mcu.Pin48=PB15
+Mcu.Pin49=PD8
 Mcu.Pin5=PF0
-Mcu.Pin50=PD14
-Mcu.Pin51=PD15
-Mcu.Pin52=PG2
-Mcu.Pin53=PG4
-Mcu.Pin54=PG5
-Mcu.Pin55=PG6
-Mcu.Pin56=PG7
-Mcu.Pin57=PG8
-Mcu.Pin58=PC8
-Mcu.Pin59=PC9
+Mcu.Pin50=PD9
+Mcu.Pin51=PD10
+Mcu.Pin52=PD14
+Mcu.Pin53=PD15
+Mcu.Pin54=PG2
+Mcu.Pin55=PG4
+Mcu.Pin56=PG5
+Mcu.Pin57=PG6
+Mcu.Pin58=PG7
+Mcu.Pin59=PG8
 Mcu.Pin6=PF1
-Mcu.Pin60=PA9
-Mcu.Pin61=PA10
-Mcu.Pin62=PA13 (JTMS/SWDIO)
-Mcu.Pin63=PH13
-Mcu.Pin64=PH14
-Mcu.Pin65=PH15
-Mcu.Pin66=PI0
-Mcu.Pin67=PI1
-Mcu.Pin68=PI2
-Mcu.Pin69=PA14 (JTCK/SWCLK)
+Mcu.Pin60=PC8
+Mcu.Pin61=PC9
+Mcu.Pin62=PA9
+Mcu.Pin63=PA10
+Mcu.Pin64=PA13 (JTMS/SWDIO)
+Mcu.Pin65=PH13
+Mcu.Pin66=PH14
+Mcu.Pin67=PH15
+Mcu.Pin68=PI0
+Mcu.Pin69=PI1
 Mcu.Pin7=PF2
-Mcu.Pin70=PC10
-Mcu.Pin71=PC11
-Mcu.Pin72=PC12
-Mcu.Pin73=PD0
-Mcu.Pin74=PD1
-Mcu.Pin75=PD2
-Mcu.Pin76=PG11
-Mcu.Pin77=PG15
-Mcu.Pin78=PB6
-Mcu.Pin79=PE0
+Mcu.Pin70=PI2
+Mcu.Pin71=PA14 (JTCK/SWCLK)
+Mcu.Pin72=PC10
+Mcu.Pin73=PC11
+Mcu.Pin74=PC12
+Mcu.Pin75=PD0
+Mcu.Pin76=PD1
+Mcu.Pin77=PD2
+Mcu.Pin78=PG11
+Mcu.Pin79=PG15
 Mcu.Pin8=PF3
-Mcu.Pin80=PE1
-Mcu.Pin81=PI4
-Mcu.Pin82=PI5
-Mcu.Pin83=PI6
-Mcu.Pin84=PI7
-Mcu.Pin85=VP_DMA2D_VS_DMA2D
-Mcu.Pin86=VP_IWDG1_VS_IWDG
-Mcu.Pin87=VP_RTC_VS_RTC_Activate
-Mcu.Pin88=VP_SYS_VS_Systick
+Mcu.Pin80=PB6
+Mcu.Pin81=PE0
+Mcu.Pin82=PE1
+Mcu.Pin83=PI4
+Mcu.Pin84=PI5
+Mcu.Pin85=PI6
+Mcu.Pin86=PI7
+Mcu.Pin87=VP_DMA2D_VS_DMA2D
+Mcu.Pin88=VP_IWDG1_VS_IWDG
+Mcu.Pin89=VP_RTC_VS_RTC_Activate
 Mcu.Pin9=PF4
-Mcu.PinsNb=89
+Mcu.Pin90=VP_SYS_VS_Systick
+Mcu.PinsNb=91
 Mcu.ThirdPartyNb=0
 Mcu.UserConstants=
 Mcu.UserName=STM32H743IITx
-MxCube.Version=5.6.1
-MxDb.Version=DB.5.0.60
+MxCube.Version=6.0.1
+MxDb.Version=DB.6.0.0
 NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
 NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false
 NVIC.ForceEnableDMAVector=true
@@ -159,6 +171,9 @@ PA2.Mode=Asynchronous
 PA2.Signal=USART2_TX
 PA3.Mode=Asynchronous
 PA3.Signal=USART2_RX
+PA4.Signal=COMP_DAC11_group
+PA5.Locked=true
+PA5.Signal=ADCx_INP19
 PA9.Locked=true
 PA9.Mode=Asynchronous
 PA9.Signal=USART1_TX
@@ -350,11 +365,12 @@ ProjectManager.PreviousToolchain=
 ProjectManager.ProjectBuild=false
 ProjectManager.ProjectFileName=CubeMX_Config.ioc
 ProjectManager.ProjectName=CubeMX_Config
+ProjectManager.RegisterCallBack=
 ProjectManager.StackSize=0x400
 ProjectManager.TargetToolchain=MDK-ARM V5
 ProjectManager.ToolChainLocation=
 ProjectManager.UnderRoot=false
-ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-SystemClock_Config-RCC-false-HAL-false,4-MX_USART1_UART_Init-USART1-false-HAL-true,5-MX_FMC_Init-FMC-false-HAL-true,6-MX_DMA2D_Init-DMA2D-false-HAL-true,7-MX_LTDC_Init-LTDC-false-HAL-true,8-MX_RTC_Init-RTC-false-HAL-true,9-MX_IWDG1_Init-IWDG1-false-HAL-true,10-MX_QUADSPI_Init-QUADSPI-false-HAL-true,11-MX_SPI2_Init-SPI2-false-HAL-true,12-MX_USART2_UART_Init-USART2-false-HAL-true,0-MX_CORTEX_M7_Init-CORTEX_M7-false-HAL-true
+ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-SystemClock_Config-RCC-false-HAL-false,3-MX_USART1_UART_Init-USART1-false-HAL-true,4-MX_FMC_Init-FMC-false-HAL-true,5-MX_DMA2D_Init-DMA2D-false-HAL-true,6-MX_LTDC_Init-LTDC-false-HAL-true,7-MX_RTC_Init-RTC-false-HAL-true,8-MX_IWDG1_Init-IWDG1-false-HAL-true,9-MX_QUADSPI_Init-QUADSPI-false-HAL-true,10-MX_SPI2_Init-SPI2-false-HAL-true,11-MX_USART2_UART_Init-USART2-false-HAL-true,12-MX_SDMMC1_SD_Init-SDMMC1-false-HAL-true,13-MX_ADC1_Init-ADC1-false-HAL-true,0-MX_CORTEX_M7_Init-CORTEX_M7-false-HAL-true
 RCC.ADCFreq_Value=50390625
 RCC.AHB12Freq_Value=200000000
 RCC.AHB4Freq_Value=200000000
@@ -438,6 +454,10 @@ RCC.VCO3OutputFreq_Value=800000000
 RCC.VCOInput1Freq_Value=5000000
 RCC.VCOInput2Freq_Value=781250
 RCC.VCOInput3Freq_Value=5000000
+SH.ADCx_INP19.0=ADC1_INP19,IN19-Single-Ended
+SH.ADCx_INP19.ConfNb=1
+SH.COMP_DAC11_group.0=DAC1_OUT1,DAC_OUT1
+SH.COMP_DAC11_group.ConfNb=1
 SH.FMC_A0.0=FMC_A0,13b-sda1
 SH.FMC_A0.ConfNb=1
 SH.FMC_A1.0=FMC_A1,13b-sda1

+ 18 - 18
bsp/stm32/stm32h743-atk-apollo/board/CubeMX_Config/Inc/stm32h7xx_hal_conf.h

@@ -15,7 +15,7 @@
   *                        opensource.org/licenses/BSD-3-Clause
   *
   ******************************************************************************
-  */ 
+  */
 
 /* Define to prevent recursive inclusion -------------------------------------*/
 #ifndef __STM32H7xx_HAL_CONF_H
@@ -30,17 +30,17 @@
 
 /* ########################## Module Selection ############################## */
 /**
-  * @brief This is the list of modules to be used in the HAL driver 
+  * @brief This is the list of modules to be used in the HAL driver
   */
-#define HAL_MODULE_ENABLED  
+#define HAL_MODULE_ENABLED
 
-  /* #define HAL_ADC_MODULE_ENABLED   */
+#define HAL_ADC_MODULE_ENABLED
 /* #define HAL_FDCAN_MODULE_ENABLED   */
 /* #define HAL_CEC_MODULE_ENABLED   */
 /* #define HAL_COMP_MODULE_ENABLED   */
 /* #define HAL_CRC_MODULE_ENABLED   */
 /* #define HAL_CRYP_MODULE_ENABLED   */
-/* #define HAL_DAC_MODULE_ENABLED   */
+#define HAL_DAC_MODULE_ENABLED
 /* #define HAL_DCMI_MODULE_ENABLED   */
 #define HAL_DMA2D_MODULE_ENABLED
 /* #define HAL_ETH_MODULE_ENABLED   */
@@ -100,9 +100,9 @@
 /**
   * @brief Adjust the value of External High Speed oscillator (HSE) used in your application.
   *        This value is used by the RCC HAL module to compute the system frequency
-  *        (when HSE is used as system clock source, directly or through the PLL).  
+  *        (when HSE is used as system clock source, directly or through the PLL).
   */
-#if !defined  (HSE_VALUE) 
+#if !defined  (HSE_VALUE)
 #define HSE_VALUE    ((uint32_t)25000000) /*!< Value of the External oscillator in Hz : FPGA case fixed to 60MHZ */
 #endif /* HSE_VALUE */
 
@@ -117,11 +117,11 @@
 #if !defined  (CSI_VALUE)
   #define CSI_VALUE    ((uint32_t)4000000) /*!< Value of the Internal oscillator in Hz*/
 #endif /* CSI_VALUE */
-   
+
 /**
   * @brief Internal High Speed oscillator (HSI) value.
   *        This value is used by the RCC HAL module to compute the system frequency
-  *        (when HSI is used as system clock source, directly or through the PLL). 
+  *        (when HSI is used as system clock source, directly or through the PLL).
   */
 #if !defined  (HSI_VALUE)
   #define HSI_VALUE    ((uint32_t)64000000) /*!< Value of the Internal oscillator in Hz*/
@@ -141,8 +141,8 @@
 
 /**
   * @brief External clock source for I2S peripheral
-  *        This value is used by the I2S HAL module to compute the I2S clock source 
-  *        frequency, this source is inserted directly through I2S_CKIN pad. 
+  *        This value is used by the I2S HAL module to compute the I2S clock source
+  *        frequency, this source is inserted directly through I2S_CKIN pad.
   */
 #if !defined  (EXTERNAL_CLOCK_VALUE)
   #define EXTERNAL_CLOCK_VALUE    12288000U /*!< Value of the External clock in Hz*/
@@ -154,7 +154,7 @@
 /* ########################### System Configuration ######################### */
 /**
   * @brief This is the HAL system configuration section
-  */     
+  */
 #define  VDD_VALUE                    ((uint32_t)3300U) /*!< Value of VDD in mv */
 #define  TICK_INT_PRIORITY            ((uint32_t)0U) /*!< tick interrupt priority */
 #define  USE_RTOS                     0U
@@ -220,14 +220,14 @@
 
 /* ########################## Assert Selection ############################## */
 /**
-  * @brief Uncomment the line below to expanse the "assert_param" macro in the 
+  * @brief Uncomment the line below to expanse the "assert_param" macro in the
   *        HAL drivers code
   */
-/* #define USE_FULL_ASSERT    1U */ 
+/* #define USE_FULL_ASSERT    1U */
 
 /* Includes ------------------------------------------------------------------*/
 /**
-  * @brief Include module's header file 
+  * @brief Include module's header file
   */
 
 #ifdef HAL_RCC_MODULE_ENABLED
@@ -373,7 +373,7 @@
 #ifdef HAL_OSPI_MODULE_ENABLED
   #include "stm32h7xx_hal_ospi.h"
 #endif /* HAL_OSPI_MODULE_ENABLED */
-   
+
 #ifdef HAL_OTFDEC_MODULE_ENABLED
 #include "stm32h7xx_hal_otfdec.h"
 #endif /* HAL_OTFDEC_MODULE_ENABLED */
@@ -472,7 +472,7 @@
   * @brief  The assert_param macro is used for function's parameters check.
   * @param  expr: If expr is false, it calls assert_failed function
   *         which reports the name of the source file and the source
-  *         line number of the call that failed. 
+  *         line number of the call that failed.
   *         If expr is true, it returns no value.
   * @retval None
   */
@@ -488,6 +488,6 @@
 #endif
 
 #endif /* __STM32H7xx_HAL_CONF_H */
- 
+
 
 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

+ 122 - 0
bsp/stm32/stm32h743-atk-apollo/board/CubeMX_Config/Src/stm32h7xx_hal_msp.c

@@ -96,6 +96,128 @@ void HAL_MspInit(void)
   /* USER CODE END MspInit 1 */
 }
 
+/**
+* @brief ADC MSP Initialization
+* This function configures the hardware resources used in this example
+* @param hadc: ADC handle pointer
+* @retval None
+*/
+void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc)
+{
+  GPIO_InitTypeDef GPIO_InitStruct = {0};
+  if(hadc->Instance==ADC1)
+  {
+  /* USER CODE BEGIN ADC1_MspInit 0 */
+
+  /* USER CODE END ADC1_MspInit 0 */
+    /* Peripheral clock enable */
+    __HAL_RCC_ADC12_CLK_ENABLE();
+
+    __HAL_RCC_GPIOA_CLK_ENABLE();
+    /**ADC1 GPIO Configuration
+    PA5     ------> ADC1_INP19
+    */
+    GPIO_InitStruct.Pin = GPIO_PIN_5;
+    GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
+    GPIO_InitStruct.Pull = GPIO_NOPULL;
+    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
+
+  /* USER CODE BEGIN ADC1_MspInit 1 */
+
+  /* USER CODE END ADC1_MspInit 1 */
+  }
+
+}
+
+/**
+* @brief ADC MSP De-Initialization
+* This function freeze the hardware resources used in this example
+* @param hadc: ADC handle pointer
+* @retval None
+*/
+void HAL_ADC_MspDeInit(ADC_HandleTypeDef* hadc)
+{
+  if(hadc->Instance==ADC1)
+  {
+  /* USER CODE BEGIN ADC1_MspDeInit 0 */
+
+  /* USER CODE END ADC1_MspDeInit 0 */
+    /* Peripheral clock disable */
+    __HAL_RCC_ADC12_CLK_DISABLE();
+
+    /**ADC1 GPIO Configuration
+    PA5     ------> ADC1_INP19
+    */
+    HAL_GPIO_DeInit(GPIOA, GPIO_PIN_5);
+
+  /* USER CODE BEGIN ADC1_MspDeInit 1 */
+
+  /* USER CODE END ADC1_MspDeInit 1 */
+  }
+
+}
+
+/**
+* @brief DAC MSP Initialization
+* This function configures the hardware resources used in this example
+* @param hdac: DAC handle pointer
+* @retval None
+*/
+void HAL_DAC_MspInit(DAC_HandleTypeDef* hdac)
+{
+  GPIO_InitTypeDef GPIO_InitStruct = {0};
+  if(hdac->Instance==DAC1)
+  {
+  /* USER CODE BEGIN DAC1_MspInit 0 */
+
+  /* USER CODE END DAC1_MspInit 0 */
+    /* Peripheral clock enable */
+    __HAL_RCC_DAC12_CLK_ENABLE();
+
+    __HAL_RCC_GPIOA_CLK_ENABLE();
+    /**DAC1 GPIO Configuration
+    PA4     ------> DAC1_OUT1
+    */
+    GPIO_InitStruct.Pin = GPIO_PIN_4;
+    GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
+    GPIO_InitStruct.Pull = GPIO_NOPULL;
+    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
+
+  /* USER CODE BEGIN DAC1_MspInit 1 */
+
+  /* USER CODE END DAC1_MspInit 1 */
+  }
+
+}
+
+/**
+* @brief DAC MSP De-Initialization
+* This function freeze the hardware resources used in this example
+* @param hdac: DAC handle pointer
+* @retval None
+*/
+void HAL_DAC_MspDeInit(DAC_HandleTypeDef* hdac)
+{
+  if(hdac->Instance==DAC1)
+  {
+  /* USER CODE BEGIN DAC1_MspDeInit 0 */
+
+  /* USER CODE END DAC1_MspDeInit 0 */
+    /* Peripheral clock disable */
+    __HAL_RCC_DAC12_CLK_DISABLE();
+
+    /**DAC1 GPIO Configuration
+    PA4     ------> DAC1_OUT1
+    */
+    HAL_GPIO_DeInit(GPIOA, GPIO_PIN_4);
+
+  /* USER CODE BEGIN DAC1_MspDeInit 1 */
+
+  /* USER CODE END DAC1_MspDeInit 1 */
+  }
+
+}
+
 /**
 * @brief DMA2D MSP Initialization
 * This function configures the hardware resources used in this example

+ 21 - 1
bsp/stm32/stm32h743-atk-apollo/board/Kconfig

@@ -138,6 +138,26 @@ menu "On-chip Peripheral Drivers"
             endchoice
         endif
 
+    menuconfig BSP_USING_ADC
+        bool "Enable ADC"
+        default n
+        select RT_USING_ADC
+        if BSP_USING_ADC
+            config BSP_USING_ADC1
+                bool "Enable ADC1"
+                default n
+        endif
+
+    menuconfig BSP_USING_DAC
+        bool "Enable DAC"
+        default n
+        select RT_USING_DAC
+        if BSP_USING_DAC
+            config BSP_USING_DAC1
+                bool "Enable DAC1"
+                default n
+        endif
+
     config BSP_USING_WDT
         bool "Enable Watchdog Timer"
         select RT_USING_WDT
@@ -151,5 +171,5 @@ endmenu
 menu "Board extended module Drivers"
 
 endmenu
- 
+
 endmenu