questions + read adc3
This commit is contained in:
parent
2b9655cdce
commit
01c5606a09
@ -23,7 +23,7 @@
|
|||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu.1647005419" name="Floating-point unit" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu" useByScannerDiscovery="true" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu.value.fpv5-sp-d16" valueType="enumerated"/>
|
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu.1647005419" name="Floating-point unit" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu" useByScannerDiscovery="true" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu.value.fpv5-sp-d16" valueType="enumerated"/>
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi.250397381" name="Floating-point ABI" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi" useByScannerDiscovery="true" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi.value.hard" valueType="enumerated"/>
|
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi.250397381" name="Floating-point ABI" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi" useByScannerDiscovery="true" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi.value.hard" valueType="enumerated"/>
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board.1505368498" name="Board" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board" useByScannerDiscovery="false" value="STM32F746G-DISCO" valueType="string"/>
|
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board.1505368498" name="Board" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board" useByScannerDiscovery="false" value="STM32F746G-DISCO" valueType="string"/>
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults.464483919" name="Defaults" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults" useByScannerDiscovery="false" value="com.st.stm32cube.ide.common.services.build.inputs.revA.1.0.5 || Debug || true || Executable || com.st.stm32cube.ide.mcu.gnu.managedbuild.option.toolchain.value.workspace || STM32F746G-DISCO || 0 || 0 || arm-none-eabi- || ${gnu_tools_for_stm32_compiler_path} || ../Drivers/CMSIS/Device/ST/STM32F7xx/Include | ../Drivers/STM32F7xx_HAL_Driver/Inc | ../Drivers/CMSIS/Include | ../Core/Inc | ../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy || || || USE_HAL_DRIVER | STM32F746xx || || Drivers | Core/Startup | Core || || || ${workspace_loc:/${ProjName}/STM32F746NGHX_FLASH.ld} || true || NonSecure || || secure_nsclib.o || || None || " valueType="string"/>
|
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults.464483919" name="Defaults" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults" useByScannerDiscovery="false" value="com.st.stm32cube.ide.common.services.build.inputs.revA.1.0.5 || Debug || true || Executable || com.st.stm32cube.ide.mcu.gnu.managedbuild.option.toolchain.value.workspace || STM32F746G-DISCO || 0 || 0 || arm-none-eabi- || ${gnu_tools_for_stm32_compiler_path} || ../Drivers/CMSIS/Include | ../Drivers/CMSIS/Device/ST/STM32F7xx/Include | ../Core/Inc | ../Drivers/STM32F7xx_HAL_Driver/Inc | ../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy || || || USE_HAL_DRIVER | STM32F746xx || || Drivers | Core/Startup | Core || || || ${workspace_loc:/${ProjName}/STM32F746NGHX_FLASH.ld} || true || NonSecure || || secure_nsclib.o || || None || " valueType="string"/>
|
||||||
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform.1466792025" isAbstract="false" osList="all" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform"/>
|
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform.1466792025" isAbstract="false" osList="all" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform"/>
|
||||||
<builder buildPath="${workspace_loc:/RealtimeOscilloscope}/Debug" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder.10376157" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder"/>
|
<builder buildPath="${workspace_loc:/RealtimeOscilloscope}/Debug" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder.10376157" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder"/>
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.1308839655" name="MCU GCC Assembler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler">
|
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.1308839655" name="MCU GCC Assembler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler">
|
||||||
@ -115,7 +115,7 @@
|
|||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu.728042019" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu" useByScannerDiscovery="true" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu.value.fpv5-sp-d16" valueType="enumerated"/>
|
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu.728042019" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu" useByScannerDiscovery="true" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu.value.fpv5-sp-d16" valueType="enumerated"/>
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi.1060964587" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi" useByScannerDiscovery="true" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi.value.hard" valueType="enumerated"/>
|
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi.1060964587" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi" useByScannerDiscovery="true" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi.value.hard" valueType="enumerated"/>
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board.20764220" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board" useByScannerDiscovery="false" value="STM32F746G-DISCO" valueType="string"/>
|
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board.20764220" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board" useByScannerDiscovery="false" value="STM32F746G-DISCO" valueType="string"/>
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults.1485083547" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults" useByScannerDiscovery="false" value="com.st.stm32cube.ide.common.services.build.inputs.revA.1.0.5 || Release || false || Executable || com.st.stm32cube.ide.mcu.gnu.managedbuild.option.toolchain.value.workspace || STM32F746G-DISCO || 0 || 0 || arm-none-eabi- || ${gnu_tools_for_stm32_compiler_path} || ../Drivers/CMSIS/Device/ST/STM32F7xx/Include | ../Drivers/STM32F7xx_HAL_Driver/Inc | ../Drivers/CMSIS/Include | ../Core/Inc | ../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy || || || USE_HAL_DRIVER | STM32F746xx || || Drivers | Core/Startup | Core || || || ${workspace_loc:/${ProjName}/STM32F746NGHX_FLASH.ld} || true || NonSecure || || secure_nsclib.o || || None || " valueType="string"/>
|
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults.1485083547" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults" useByScannerDiscovery="false" value="com.st.stm32cube.ide.common.services.build.inputs.revA.1.0.5 || Release || false || Executable || com.st.stm32cube.ide.mcu.gnu.managedbuild.option.toolchain.value.workspace || STM32F746G-DISCO || 0 || 0 || arm-none-eabi- || ${gnu_tools_for_stm32_compiler_path} || ../Drivers/CMSIS/Include | ../Drivers/CMSIS/Device/ST/STM32F7xx/Include | ../Core/Inc | ../Drivers/STM32F7xx_HAL_Driver/Inc | ../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy || || || USE_HAL_DRIVER | STM32F746xx || || Drivers | Core/Startup | Core || || || ${workspace_loc:/${ProjName}/STM32F746NGHX_FLASH.ld} || true || NonSecure || || secure_nsclib.o || || None || " valueType="string"/>
|
||||||
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform.906133983" isAbstract="false" osList="all" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform"/>
|
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform.906133983" isAbstract="false" osList="all" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform"/>
|
||||||
<builder buildPath="${workspace_loc:/RealtimeOscilloscope}/Release" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder.362615635" managedBuildOn="true" name="Gnu Make Builder.Release" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder"/>
|
<builder buildPath="${workspace_loc:/RealtimeOscilloscope}/Release" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder.362615635" managedBuildOn="true" name="Gnu Make Builder.Release" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder"/>
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.297130526" name="MCU GCC Assembler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler">
|
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.297130526" name="MCU GCC Assembler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler">
|
||||||
|
@ -55,6 +55,7 @@ void SVC_Handler(void);
|
|||||||
void DebugMon_Handler(void);
|
void DebugMon_Handler(void);
|
||||||
void PendSV_Handler(void);
|
void PendSV_Handler(void);
|
||||||
void SysTick_Handler(void);
|
void SysTick_Handler(void);
|
||||||
|
void ADC_IRQHandler(void);
|
||||||
void TIM6_DAC_IRQHandler(void);
|
void TIM6_DAC_IRQHandler(void);
|
||||||
void LTDC_IRQHandler(void);
|
void LTDC_IRQHandler(void);
|
||||||
void DMA2D_IRQHandler(void);
|
void DMA2D_IRQHandler(void);
|
||||||
|
14
Core/Src/isrs.cpp
Normal file
14
Core/Src/isrs.cpp
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
/*
|
||||||
|
* isrs.cpp
|
||||||
|
*
|
||||||
|
* Created on: Dec 12, 2023
|
||||||
|
* Author: remi.heredero
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "stm32f7xx_hal.h"
|
||||||
|
|
||||||
|
|
||||||
|
extern "C" void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef * hadc) {
|
||||||
|
volatile uint32_t value = HAL_ADC_GetValue(hadc);
|
||||||
|
}
|
||||||
|
|
@ -144,8 +144,13 @@ int main(void)
|
|||||||
|
|
||||||
/* Infinite loop */
|
/* Infinite loop */
|
||||||
/* USER CODE BEGIN WHILE */
|
/* USER CODE BEGIN WHILE */
|
||||||
while (1)
|
while (1) {
|
||||||
{
|
|
||||||
|
HAL_ADC_Start_IT(&hadc3);
|
||||||
|
HAL_Delay(2000);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* USER CODE END WHILE */
|
/* USER CODE END WHILE */
|
||||||
|
|
||||||
/* USER CODE BEGIN 3 */
|
/* USER CODE BEGIN 3 */
|
||||||
|
@ -116,6 +116,9 @@ void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc)
|
|||||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||||
HAL_GPIO_Init(ARDUINO_A0_GPIO_Port, &GPIO_InitStruct);
|
HAL_GPIO_Init(ARDUINO_A0_GPIO_Port, &GPIO_InitStruct);
|
||||||
|
|
||||||
|
/* ADC3 interrupt Init */
|
||||||
|
HAL_NVIC_SetPriority(ADC_IRQn, 0, 0);
|
||||||
|
HAL_NVIC_EnableIRQ(ADC_IRQn);
|
||||||
/* USER CODE BEGIN ADC3_MspInit 1 */
|
/* USER CODE BEGIN ADC3_MspInit 1 */
|
||||||
|
|
||||||
/* USER CODE END ADC3_MspInit 1 */
|
/* USER CODE END ADC3_MspInit 1 */
|
||||||
@ -152,6 +155,8 @@ void HAL_ADC_MspDeInit(ADC_HandleTypeDef* hadc)
|
|||||||
|
|
||||||
HAL_GPIO_DeInit(ARDUINO_A0_GPIO_Port, ARDUINO_A0_Pin);
|
HAL_GPIO_DeInit(ARDUINO_A0_GPIO_Port, ARDUINO_A0_Pin);
|
||||||
|
|
||||||
|
/* ADC3 interrupt DeInit */
|
||||||
|
HAL_NVIC_DisableIRQ(ADC_IRQn);
|
||||||
/* USER CODE BEGIN ADC3_MspDeInit 1 */
|
/* USER CODE BEGIN ADC3_MspDeInit 1 */
|
||||||
|
|
||||||
/* USER CODE END ADC3_MspDeInit 1 */
|
/* USER CODE END ADC3_MspDeInit 1 */
|
||||||
|
@ -55,6 +55,7 @@
|
|||||||
/* USER CODE END 0 */
|
/* USER CODE END 0 */
|
||||||
|
|
||||||
/* External variables --------------------------------------------------------*/
|
/* External variables --------------------------------------------------------*/
|
||||||
|
extern ADC_HandleTypeDef hadc3;
|
||||||
extern DMA2D_HandleTypeDef hdma2d;
|
extern DMA2D_HandleTypeDef hdma2d;
|
||||||
extern LTDC_HandleTypeDef hltdc;
|
extern LTDC_HandleTypeDef hltdc;
|
||||||
extern TIM_HandleTypeDef htim6;
|
extern TIM_HandleTypeDef htim6;
|
||||||
@ -201,6 +202,20 @@ void SysTick_Handler(void)
|
|||||||
/* please refer to the startup file (startup_stm32f7xx.s). */
|
/* please refer to the startup file (startup_stm32f7xx.s). */
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief This function handles ADC1, ADC2 and ADC3 global interrupts.
|
||||||
|
*/
|
||||||
|
void ADC_IRQHandler(void)
|
||||||
|
{
|
||||||
|
/* USER CODE BEGIN ADC_IRQn 0 */
|
||||||
|
|
||||||
|
/* USER CODE END ADC_IRQn 0 */
|
||||||
|
HAL_ADC_IRQHandler(&hadc3);
|
||||||
|
/* USER CODE BEGIN ADC_IRQn 1 */
|
||||||
|
|
||||||
|
/* USER CODE END ADC_IRQn 1 */
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief This function handles TIM6 global interrupt, DAC1 and DAC2 underrun error interrupts.
|
* @brief This function handles TIM6 global interrupt, DAC1 and DAC2 underrun error interrupts.
|
||||||
*/
|
*/
|
||||||
|
56
README.md
Normal file
56
README.md
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
|
||||||
|
|
||||||
|
# Question on tasks
|
||||||
|
## Task 5
|
||||||
|
Comme prochaine tâche, nous voulons analyser les temps d'exécution des différents composants du logiciel.
|
||||||
|
En principe, nous avons deux composants qui peuvent être exécutés à deux vitesses différentes :
|
||||||
|
|
||||||
|
|#|Composant|Timing|
|
||||||
|
|--|--|--|
|
||||||
|
|1|Conversion du signal analogue|1 kHz ou plus|
|
||||||
|
|2|Rafraichissement de l'écran|20 à 60 fois par seconde|
|
||||||
|
|
||||||
|
### Question 1
|
||||||
|
> Est-ce qu'il est possible d'exécuter le composant #1 avec un XF (ou un RTOS) ? Justifiez votre réponse.
|
||||||
|
|
||||||
|
Il vaut mieux utiliser un timer hardward pour aller plus vite
|
||||||
|
|
||||||
|
### Question 2
|
||||||
|
> Est-ce qu'il est possible d'exécuter le composant #2 avec un XF (ou un RTOS) ? Justifiez votre réponse.
|
||||||
|
|
||||||
|
La vitesse d'un XF est largement suffisante. Le temps le plus rapide est de 1/60 = 16,7ms.
|
||||||
|
Avec des ticks toutes les millisecondes, le XF est largement capable
|
||||||
|
|
||||||
|
### Question 3
|
||||||
|
> Si l'on combine un timer hardware avec un XF, lequel des deux composants doit être priorisé ? Justifiez votre réponse.
|
||||||
|
|
||||||
|
La conversion du signal analogue doit être prioritaire. On doit donc mettre la priorité sur le timer hard.
|
||||||
|
|
||||||
|
## Task 7
|
||||||
|
### Question 1
|
||||||
|
> Combien de mesures [Samples/s] le convertisseur A/D doit-il effectuer par seconde pour pouvoir échantillonner des signaux avec des fréquences jusqu'à 1 kHz ?
|
||||||
|
|
||||||
|
Tout dépend de la résolution souhaitée. Il nous faut au miminum 2 fois la fréquence la plus élevée de notre signal.
|
||||||
|
Dans notre cas, il nous faut au minimu fs = 2*1kHz = 2kHz
|
||||||
|
|
||||||
|
### Question 2
|
||||||
|
> Faut-il un filtre ? Si oui, quelle sera la fréquence de coupure de ce filtre ?
|
||||||
|
|
||||||
|
Oui pour éviter les fréquences de repliement.
|
||||||
|
Il faut le dimensionner à Fs/2
|
||||||
|
|
||||||
|
### Question 3
|
||||||
|
> Est-ce la fréquence donnée par le théorème d’échantillonnage ou devrait-elle être plus élevée ?
|
||||||
|
|
||||||
|
Il nous faudra beaucoup plus que 2 points par sinus. Tout dépend de la résolution souhaitée
|
||||||
|
|
||||||
|
### Question 4
|
||||||
|
> Lequel des canaux du ADC3 doit être utilisé pour pouvoir mesurer / échantillonner le signal à l'aide de la broche PA0 ?
|
||||||
|
|
||||||
|
Il faut utiliser le chanal ADC3_IN0
|
||||||
|
|
||||||
|
### Question 5
|
||||||
|
> Est-ce que le ADC pourrait éventuellement effectuer des mesures à des intervalles réguliers à l'aide de ses propres moyens ?
|
||||||
|
|
||||||
|
Pour que l'ADC effectue des mesures par ses propres moyens il faudrait le mettre en mode continu.
|
||||||
|
Mais se ne serait pas à interval régulier, il effectuerait une mesure dès la précédente terminée.
|
@ -75,5 +75,6 @@
|
|||||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
|
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
|
||||||
<listEntry value="4"/>
|
<listEntry value="4"/>
|
||||||
</listAttribute>
|
</listAttribute>
|
||||||
|
<stringAttribute key="org.eclipse.dsf.launch.MEMORY_BLOCKS" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?><memoryBlockExpressionList context="reserved-for-future-use"/>"/>
|
||||||
<stringAttribute key="process_factory_id" value="com.st.stm32cube.ide.mcu.debug.launch.HardwareDebugProcessFactory"/>
|
<stringAttribute key="process_factory_id" value="com.st.stm32cube.ide.mcu.debug.launch.HardwareDebugProcessFactory"/>
|
||||||
</launchConfiguration>
|
</launchConfiguration>
|
||||||
|
@ -254,6 +254,7 @@ Mcu.UserConstants=
|
|||||||
Mcu.UserName=STM32F746NGHx
|
Mcu.UserName=STM32F746NGHx
|
||||||
MxCube.Version=6.5.0
|
MxCube.Version=6.5.0
|
||||||
MxDb.Version=DB.6.0.50
|
MxDb.Version=DB.6.0.50
|
||||||
|
NVIC.ADC_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
|
||||||
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:true
|
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:true
|
||||||
NVIC.DMA2D_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
|
NVIC.DMA2D_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
|
||||||
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:true
|
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:true
|
||||||
|
Reference in New Issue
Block a user