Come iniziare con la scheda STM32F103C8T6?


10

Da alcuni anni utilizzo MCU AVR a 8 bit per costruire robot follower con gli studenti. Ora vorrei passare a un ARM Cortex-M3 perché vorrei aggiungere alcune funzionalità ad alta intensità di CPU come l'odometria e la fusione dei sensori.

I requisiti sono:

  • 8 ingressi analogici,
  • 4 uscite PWM,
  • I 2 C,
  • 2 ingressi encoder in quadratura,
  • I / O seriale,
  • Autoprogrammazione in modalità wireless senza accesso fisico al robot.
  • Toolchain multipiattaforma + IDE (OS X, Linux, Windows).

I passi che ho fatto finora sono:

Sto usando questa scheda basata STM32F103C8. Credo che questo MCU abbia tutto ciò di cui ho bisogno, incluso il 2 x QEI che avevo pianificato di implementare nel software, ma questo sembra averlo nell'hardware, così eccezionale:

Ho seguito questo per impostare la mia toolchain + IDE:

Ho scoperto che la documentazione per questo chip è sparsa tra un certo numero di PDF, che ho scaricato:

Ho anche scaricato la libreria di periferiche standard STM32F10x, ma questo a sua volta mi ha consigliato di ottenere il più recente STM32CubeF1, che credo sia solo una ridenominazione di marketing di quanto sopra, quindi ho ottenuto entrambi:

Infine, ho anche ricevuto "The Definitive Guide to the ARM Cortex-M3" di Joseph Yiu, che sto leggendo mentre aspetto che arrivino le schede.

Le mie domande sono:

  1. Sono un po 'sopraffatto dalla documentazione, per non dire altro, e non sono nemmeno sicuro di aver capito tutto. Ad esempio, il foglio dati e il manuale di riferimento affermano che il chip ha 3 timer in grado di immettere input codificati in quadratura. Ma non riesco a trovare la documentazione dei registri che controllano i timer da nessuna parte nei PDF sopra. Cosa mi sto perdendo?

  2. Dovrei usare la libreria per periferiche standard (più vecchia?) O l'elemento cubo (più recente?)? Qual è la differenza? Comprendo che entrambe le biblioteche mi salvano dalla manipolazione diretta dei registri e sono la via consigliata. Ho ragione?

  3. Dov'è la documentazione per le librerie (oltre ai commenti doxygen incorporati, che sono belli e tutti ma preferirei avere un html / pdf ricercabile)?

  4. Ho scelto Eclipse + GCC ARM + OpenOCD come mia toolchain perché ritengo che questa sia l'unica opzione che verrà eseguita sui 3 sistemi operativi principali senza dimensioni del codice o altre limitazioni. Ci sono altre opzioni?


2
La pagina 324 del Manuale di riferimento contiene i dettagli dell'interfaccia dell'encoder che utilizza TIM1 e TIM8.
Leon Heller,

1
Posso suggerire sistemi integrati - Shape The World ARM-Cortex-M3, ma è di TI. Inoltre sono stato in grado di configurare Eclipse + GCC ARM + OpenOCD per Ubuntu, è stato piuttosto noioso e non troppo affidabile almeno per me.
Mahendra Gunawardena,

1
Le soluzioni ARM-gcc sono generalmente abbastanza stabili e rappresentano l'opzione più portatile là fuori. L'enfasi tende a essere più orientata verso build guidate da un Makefile o automazione build, quindi l'integrazione con le pratiche di sviluppo del software organizzativo esistenti è eccellente. Quale IDE (se presente) modificare e guidare le build sperimentali tende ad essere una decisione molto più personale e una che non vede necessariamente lo sforzo di sviluppo degli strumenti verso di essa. Personalmente, l'ultima cosa che voglio affrontare è un target / toolchain che presuppone che cambierò IDE solo per lavorarci.
Chris Stratton,

Risposte:


6
  1. Per quanto riguarda i fogli dati, sono effettivamente divisi. Il "Manuale di riferimento" è una descrizione complessa di come fare le cose, la configurazione e considerazioni dettagliate sull'intero MCU. "Foglio dati" è invece solo una breve descrizione delle funzionalità, dei pinout, dei pacchetti MCU ecc. C'è anche un documento molto utile per ogni linea STM32 (F1,2 ... 7) "Introduzione allo sviluppo hardware MCU STM32F7xxxx" che ti fornisce molte informazioni se desideri progettare una scheda personalizzata. Rispetto agli AVR, le descrizioni dei registri sono talvolta messe un po 'a parte dalla descrizione principale di un capitolo particolare.

  2. STM32CubeMX non è una libreria, solo un utile programma di ST, che consente di impostare piedinature, le sue configurazioni, impostare orologi di sistema ecc. E quindi, alla fine, generare un codice e l'intero progetto. Il progetto può essere generato appositamente per Eclipse (System Workbench per STM32) in cui è sufficiente importare questo progetto e si è pronti per iniziare. La nuova libreria è HAL ("livello di astrazione hardware") e prova a usarla. Questa è la novità e talvolta è difficile trovare esempi su Internet ma non insegnare ai tuoi studenti tecnologie obsolete. HAL è comodo da usare e ha documentazione, quindi penso che sia una scelta migliore.

  3. Quale biblioteca? Comunque, non dovrebbe essere un problema cercarli su Google, credo.

  4. Anche se desideri utilizzare un solo sistema operativo (come Windows), Eclipse (AC6 = System workbench per STM32) è - penso - l'opzione migliore. C'è ad esempio l'uVision 5 di Keil - ma questo è davvero terribile IDE - manca la maggior parte delle funzionalità che l'IDE dovrebbe offrire (rifrattore, click-and-search, controllo degli errori corretto, ricerca di riferimenti e molti, molti altri). Quindi, nel complesso, Eclipse è praticamente l'unica scelta ragionevole per IDE per STM32.


3
In realtà, puoi usare praticamente qualsiasi IDE che può essere creato per guidare un compilatore esterno.
Chris Stratton,
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.