From 15885e832a00590cbe97365e271dd4a8aff865d8 Mon Sep 17 00:00:00 2001 From: Yohan Boujon Date: Wed, 12 Apr 2023 22:43:31 +0200 Subject: [PATCH] Added ADC section in driver.mds --- assets/adc_cfgr.png | Bin 0 -> 7826 bytes assets/adc_cr2.PNG | Bin 0 -> 26239 bytes driver/driver.md | 60 +++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 assets/adc_cfgr.png create mode 100644 assets/adc_cr2.PNG diff --git a/assets/adc_cfgr.png b/assets/adc_cfgr.png new file mode 100644 index 0000000000000000000000000000000000000000..3f8e90a568ab2429a2df5bba9a6a92e44d8ade15 GIT binary patch literal 7826 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 KDrFC!{q-L-MOO3x literal 0 HcmV?d00001 diff --git a/driver/driver.md b/driver/driver.md index 0d52e45..f7ba8c8 100644 --- a/driver/driver.md +++ b/driver/driver.md @@ -78,9 +78,26 @@ Enfin, une fonction nommée XXX_IRQHandler sera appelée à l'interruption, il s ### Timer Interruption Le registre pour l'activation de l'interruption est dans TimerX_DIER, sur le bit 0 nommé UIE (Update Interrupt Enable). Le flag d'interruption est UIF. +### ADC Interruption +L'adc est plus complexe que les autres car il demande des pins pour être liés à une interruption, pour activer ce dernier nous allons observer un registre en particulier, **ADC_CR2** : + +![ADC CR2](../assets/adc_cr2.png) + +Ici quelques bits vont être mis à 1 pour permettre l'interruption, soit : +- **ADC_CR2_EXTTRIG** : active un trigger externe +- **ADC_CR2_EXTSEL** : On choisi l'event externe pour l'allumage de l'adc, par défaut SWSTART +On active ensuite l'interruption avec le bit **EOCIE** qui est présent dans le registre **CR1**. +Le flag d'intteruption est **EOC** (End of Conversion) dans le registre **SR**. + +Pour relancer une conversion ou init le premier, il faut mettre à 1 dans le registre **CR2** le bit SWSTART comme ceci : +```c +ADC->CR2 |= ADC_CR2_SWSTART; +``` + +*NB : Il est important de faire tout ce qui est fait dans la partie ADC avant de faire les interruptions. En effet ADON sert toujours à l'initialisation mais ne servira pas pour relancer une conversion, il est remplacé par SW_START* ### UART Interruption Le registre pour l'activation de l'interruption est dans USART_CR1, sur le bit 5 (RXNEIE pour la recepetion) et 7 (TXEIE pour la transmission). -Le flag d'intteruption est . +Le flag d'intteruption est RXNE ou TXE. ## PWM Pour activer le mode PWM il existe un registre pour chacun des timers permettant d'activer un mode pwm précis. Ce dernier est présent dans le registre CCMRx. Les bits qui nous intéresse sont OCXM. Il existe différents modes pouvant être trouvés page 414 du [Reference Manual](../assets/cd00171190-stm32f101xx-stm32f102xx-stm32f103xx-stm32f105xx-and-stm32f107xx-advanced-armbased-32bit-mcus-stmicroelectronics.pdf). Ici nous utiliseront le même car il est simple : @@ -99,6 +116,47 @@ Ce dernier permet d'activer avec CCXE le registre précedemment paramétré. --- Une GPIO est ainsi associé à chaque PIN. Pour la retrouver il suffit de se rendre à la page 28 du [Manuel F103RB](../assets/STM32F103RB-3.pdf) et voir quelle pin est associée à quel channel de timer. Il suffit de mettre cette dernière en AltOutPpull. +## ADC +Dans le cas de l'ADC il faut activer celui pour ADCX, le registre est dans **RCC->APB2ENR**. + +--- +L'une des difficultés que nous pouvons rencontrer avec l'ADC est la prédivision de la clock qui doit être réalisé pour qu'une conversion soit possible. En effet la clock de base de 72 MHz fonctionne bien trop rapidement par rapport au module ADC. Ce dernier fonctionne au maxmimum à 16 MHz. Pour régler ce dernier il faut alors toucher au **RCC_CFGR**, le registre de clock configuration. Les bits qui nous intéresses sont 15 et 14 : **ADCPRE** : + +![ADCPRE](../assets/adc_cfgr.png) + +Le minimum pouvant être mis en place est donc "10" avec PCLK2 divisé par 6, ce qui donne 12 MHz + +```c +RCC->APB2ENR |= RCC_APB2ENR_ADC1EN; +RCC->CFGR |= RCC_CFGR_ADCPRE_1; +``` +--- +Le second registre qui nous intéressera sera **ADC_SMPRX**. Ce dernier permet de modifier pour un channel donné X, le nombre de cycle que l'adc devra réalisé pour récupérer une donnée. Une explication liée au résistance peut être faite, mais ici nous nous sommes contentés de mettre sa valeur à 41.5 cycles, soit 100. + +```c +ADCStructPtr->ADC->SMPR2 |= (ADCStructPtr->cycle<<(ADCStructPtr->channel*3)); +//ou pour channel > 10 : +ADCStructPtr->ADC->SMPR1 |= (ADCStructPtr->cycle<<((ADCStructPtr->channel-10)*3)); +``` +--- +Le prochain registre est le **ADC_SQR1** : Ce dernier va nous permettre de faire un certain nombre de conversions. Ici nous ne voulons qu'une seule donc la donnée dans les bits **L** (Bits 23-20) sera *0000*. +```c +ADCStructPtr->ADC->SQR1 &= ADC_SQR1_L; +``` +--- +Le registre **ADC_SQR3** va par la suite nous permettre de sélectionner quel channel nous utilisons pour l'ADC. En effet après avoir changé le nombre de cycles, il faut faire comprendre au STM32 que nous voulons la donnée sur un channel précis. C'est donc aux bits SQ1(Bits 4-0) que nous mettrons un numéro de channel sur 5 bits. C'est le premier channel de conversion, il est possible dans régler d'autres par la suite, mais nous ne l'avons pas fait. +```c + ADCStructPtr->ADC->SQR3 |= channel; //avec channel de 0 à 17 +``` +--- +Finalement, pour initialiser ou faire une une conversion analogique numérique un biot précis dans le registre **ADC_CR2** doit être mis à 1. +Ce dernier est ADON et permet dans un premier temps d'initialiser l'ADC, et dans un second, de faire une conversion quelconque, il est donc préférable de l'utiliser en tant que MACRO : +```c +ADCStructPtr->ADC->CR2 |= ADC_CR2_ADON; +//utilisation en macro : +#define MyADC_Start(ADC) (ADC->CR2 |= ADC_CR2_ADON) +``` + ## UART Dans le cas de l'UART il faut activer celui pour USARTXEN, le registre est dans **RCC->APBXENR**. Pour l'USART 1 il se trouve dans APB2ENR, et pour les autres dans APB1ENR.