Comparatore STM32F0x1 (COMP) e ADC sullo stesso pin contemporaneamente?


8

Sto mettendo insieme un progetto che sfrutta la periferica di confronto sul microcontrollore STM32F051. Ho letto nella documentazione che per far funzionare il comparatore il pin di input deve essere configurato per analogico ... che è la stessa configurazione se si stesse usando il pin come input ADC.

Posso usare un singolo pin, ad esempio PA1, come input e configurarlo sia come input per il comparatore di finestre sia come input ADC su ADC_IN1?

Ci sono dei gotcha con questa configurazione come rumore aggiuntivo che dovrei considerare?

Scheda tecnica (p 19)

Manuale di riferimento (p 295)

Un riferimento interessante, suggerendo che ciò dovrebbe essere possibile: inserisci qui la descrizione dell'immagine Tratto da AN4232: Introduzione ai comparatori analogici per la serie STM32F3


1
Potresti collegarti alla documentazione pertinente? La scheda tecnica che ho trovato non menziona i comparatori, ma questa è una domanda interessante
David

Sicuramente quello che intendevo dire era STM32F0 * 5 * 1 ...
Daniel

Dalla mia esperienza dovrebbe essere fattibile, ma non posso dirlo con certezza e dubito che troverai queste informazioni in fonti ufficiali. La cosa migliore che puoi fare IMO è sperimentare: procurati una scheda nucleo STM32F07x che è abbastanza economica (~ 10 USD) e provala. O ottieni una scheda scoperta F051, non sono molto più costosi. ST utilizza gli stessi core IP periferici su MCU diversi, quindi puoi aspettarti che si comporti in modo simile tra F07x e F051.
Jan Dorniak,

@JanDorniak Sì, sarebbe il modo migliore. Sfortunatamente mi ci vorrà molto tempo (diversi giorni a scherzare) per capirlo di sicuro e devo passare quel tempo a preparare un PCB per la produzione di prototipi. Se nessuno torna con qualcosa alla fine lo farò.
Daniel

1
@Daniel Un problema che posso dire con certezza è che alcune periferiche sono collegate tramite pin - ho avuto problemi durante il collegamento di un DAC come ingresso COMP perché erano collegati attraverso un pin che ho provato a usare come uscita digitale. Non ha funzionato, fortunatamente avevo alcuni pin gratuiti sull'MCU. Se vuoi esaminarlo, è stato PA4 su L053
Jan Dorniak, l'

Risposte:


4

Funziona, otterrai numeri indietro e interruzioni. Ho verificato, scaricare da .

La precisione e la glitchiness non sono ancora determinate. Ma è ben descritto negli Appnotes come indicato da @Bence Kaulics in questo thread (vedi results.txt per AppNotes aggiuntive)

Credo che sarà stabile per i seguenti motivi.

a) The circuit diagram in RM0091 shows a direct connection from comparator to pin. i.e. it is indicated that the comparator cannot be disconnected with a switch or MUX, and will thus work as soon as the pin is assigned 'analog in'.

b) The comparator is NOT dependent on a 'Clock' to enable it (it is alow power device).

c) ST would not be able to make this level of change without assigning a new part number.


The good news is that one can continue to use the comparator for high-speed events such as over current and emergency stop etc whilst still using the ADC analog window events for other software control.

Questo funziona anche con il DAC, ovvero è possibile impostare il tutto internamente con il DAC o esternamente con il DAC e alcuni resistori.

Solo guardando il circuito utilizzerai l'ADC in parallelo al comparatore, essenzialmente un amplificatore. Come sappiamo, si tratta di dispositivi a guadagno elevato con impedenza molto elevata. I glitch non sono nostri amici.

Ora andremo a sbattere un tappo scaricato su quel perno ogni tanto per alimentare l'ADC.

Come tutti sappiamo, dobbiamo sovracampionare l'ADC e preferibilmente rifiutare la prima lettura dopo un evento di commutazione mux per eliminare l'inclinazione da e verso i canali adiacenti.

Gli ADC sull'STM hanno impedenza di ingresso un po '<50K // 5pF a seconda del modo in cui vengono utilizzati. (DM00039193.pdf pg 76ff)

La Tabella 53 riporta 400-> 50KOhm, che è quello che ho trovato un po 'indietro quando ho calibrato il mio ADC F373.

Pg 79 mostra i circuiti ADC.

Pg 82 fornisce una breve descrizione del pin del comparatore, letto di concerto con la descrizione generale dei pin analogici sopra (pg73ff)

Mettilo in parallelo con l'input del comparatore e ADC MUX e modellalo in modo speziato. Ricordarsi di caricare regolarmente il cappuccio ADC a una tensione casuale.

Qualunque altra cosa accada nel circuito e nel software, si otterranno anomalie abbastanza ragionevoli sull'input del comparatore. BAD IDEA, anche se si collega il pin a un follower a bassa impedenza e al tappo di disaccoppiamento (sulla linea mobile di un ingresso comparatore ????).

Il cappuccio usato dall'ADC è il killer. Speriamo che i futuri dispositivi eseguano il campionamento utilizzando follower / isolatori interni sia sull'ADC che sul comparatore. Questi potrebbero essere già presenti come funzionalità non documentate (improbabili a causa della diafonia mux).

Come me, penso che siamo così coinvolti con il lato digitale delle cose che quando passiamo all'analogico e all'ibrido dimentichiamo le basi.

Come misurare piccole correnti usando il convertitore corrente-tensione?è una discussione che ho avuto con qualcun altro ieri. Conoscevo la risposta perché me ne sono reso conto da solo. Anche con i migliori 3V in 50K otteniamo un AVO di 16K / volt. L'ultima volta che ho usato un tale AVO / multimetro?

Detto questo, uno sguardo ai circuiti dell'F373 mostra che ST e ARM sembrano aver inteso essere in grado di ottenere risultati realizzabili sia dal comparatore che dall'adc utilizzati contemporaneamente in un dispositivo misto. L'aggiunta di opamps nelle serie 150 e 300 fornisce un indizio sui requisiti di isolamento dell'impedenza.

Sono sicuro che qualcuno più intelligente di me sarà in grado di riprogettare l'ambiente per cui sono state progettate queste interconnessioni interne. Penserei automobilistico o HVAC .... inverter e FOC. La biblioteca FOC può fornire preziose informazioni.

A meno che non si stia costruendo uno strumento ad alta velocità e ad alta precisione, tale utilizzo può essere sufficientemente stabile per essere utilizzato praticamente (all'interno delle avvertenze sopra). Certamente salverà molti circuiti esterni. Test rigorosi ad alta velocità sono probabilmente i migliori da lasciare come esercizio per lo studente (tentami di studiare).

Soluzione qui .

Sembra che la libreria HAL ADC sia un po 'rotta per il DMA multicanale. Ho pubblicato sul sito Web STM per ottenere una risposta. Soluzioni alternative: -

a) IRQ entrambi gli ADC

b) Poll entrambi gli ADC

c) DMA un canale e polling l'altro

d) Inizializzare manualmente i registri di basso livello

Questo è un altro avvertimento alla soluzione in cui vengono utilizzati entrambi i comparatori, fino a quando non viene trovata una soluzione migliore.


Su STM32F4Discovery ADC2 e ADC3 funzionano perfettamente con HAL. Sto usando DMA2 Stream1 con ADC3 e DMA2 Stream2 con ADC2, ci sono due canali configurati su entrambi gli ADC. La modalità DMA è circolare. Anche con HAL su un STM32F3 sto usando quattro diversi ADC insieme a DMA, 3 canali su DMA2 e 1 uno DMA1. Cosa c'è di sbagliato quando provi a usare DMA multicanale?
Bence Kaulics,

@Bence - Ho lavorato con F1, F3 e F4 in configurazione ADC-DMA multicanale - usano un meccanismo diverso per aggiungere canali al DMA. I canali possono essere scansionati in qualsiasi sequenza. La serie STM32L0 ha una struttura interna diversa, i canali hanno automaticamente la priorità in base al numero del canale. Esistono diverse strutture e chiamate per configurarlo. Ogni canale può apparire una sola volta in una scansione.
ChrisR,

Vedo, e questo ordine di priorità è stato risolto?
Bence Kaulics,

Grazie per la risposta e per l'impegno a confermare direttamente che funziona, così come per la ricerca di supporto. Molto apprezzato!
Daniel,

1
@Bence - Sì, la priorità e l'ordine sono fissi - vai per numero di canale. Una cosa fantastica è che puoi sottocampionare e fare una media nella scansione. vedi RM collegato sopra, vale la pena leggere. Come molti sono un po 'triste che le librerie HAL non siano (e non possano essere) trasparenti su tutti i dispositivi ARM.
Chris R

4

La configurazione più rilevante che ho trovato è la seguente, da Uso dei comparatori analogici STM32F05xx nei casi applicativi , ( AN4112 ), pagina 4:

inserisci qui la descrizione dell'immagine

Dice:

La Figura 1 mostra come collegare un'uscita sensore (sensore di temperatura, sensore di pressione, rivelatore a infrarossi piroelettrico, sensore a fotodiodo) a un dispositivo STM32F05xx in un'applicazione di monitoraggio della tensione analogica mediante il comparatore 2 (COMP2). COMP2 monitora la tensione analogica in modalità Stop mentre l'ADC la misura in modalità Run.

Qui ADC e COMP funzionano alternativamente ma penso che entrambi siano configurati contemporaneamente. Se continuiamo nel documento c'è uno schema a blocchi sulla configurazione COMP.

inserisci qui la descrizione dell'immagine

Sulla base di questa immagine, penso che ADC e COMP condividano lo stesso canale ADC, l'unica differenza è il numero di Soglie di soglia analogiche abilitate .

Il testo sotto la Figura 5 nella domanda afferma che

l'ingresso del comparatore è un canale ADC

probabilmente uguale a ADC_IN1.

Lo scopo di questa intera configurazione è di risparmiare energia, il COMP attiva i cambiamenti di stato dell'MCU (STOP <--> RUN). Pertanto, quando l'ingresso è al di sotto di una certa soglia, MCU e ADC vengono spenti e funziona solo il comparatore, e quando l'ingresso è al di sopra della soglia MCU e ADC si riattivano, l'ADC misura la tensione di ingresso. Ma se l'ingresso scende di nuovo al di sotto della soglia, COMP invia l'MCU allo stato STOP.

inserisci qui la descrizione dell'immagine

È un modo di usarli insieme, spero che questo possa far avanzare la domanda.


La ringrazio per la risposta. Ha aggiunto molto alla discussione. Alla fine, ho deciso di assegnare la generosità a qualcuno che potesse confermare direttamente la risposta, ma questo ha il mio voto ed è molto apprezzato!
Daniel,

È stata una domanda molto interessante, mi ha fatto piacere partecipare. Inoltre, sono d'accordo con Chris che ha ricevuto il premio :). Ha fatto molto lavoro, non risparmiando tempo e fatica.
Bence Kaulics,

3

Penso che dovresti chiedere sul forum STM. Esistono anche (STM32F1) UART RX e TIMx sullo stesso pin, entrambi gli ingressi, ma non è possibile utilizzarli insieme, come rilevare l'interruzione del timer di fine trasmissione. Invece è necessario collegare un altro pin TIMx in parallelo per avere la funzione UART RX e l'interruzione del timer. Immagino che solo una funzione possa essere attiva contemporaneamente.
Prova a scaricare MxCube e vedi quale configurazione può essere costruita.


Questo è un punto decente. Ce l'ho, dovrei vedere se lo permette. Ma anche se così non fosse, ciò non significa necessariamente che non puoi: /
Daniel

Vale a dire, vorrei che la documentazione fosse migliore e più completa, e potrei avere fiducia in qualsiasi altra risposta diversa da "L'ho provato una volta e non ha funzionato"
Daniel

@Daniel Hai ragione, penso che la risposta finale ti darà lo stesso MCU quando proverai.
Marko Buršič,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.