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:
- Board http://eud.dx.com/product/high-quality-cortex-m3-stm32-stm32f103c8t6-development-board-w-swd-interface-844380789
- Programmatore http://eud.dx.com/product/st-link-v2-programmer-emulator-mini-stlink-downloader-for-stm8-stm32-mcu-development-board-844380733
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:
- Scheda tecnica STM32F103x8 http://www.st.com/st-web-ui/static/active/en/resource/technical/document/datheet/CD00161566.pdf
- Manuale di riferimento http://www.st.com/st-web-ui/static/active/en/resource/technical/document/reference_manual/CD00171190.pdf
- Alcuni altri documenti come AN2606 (modalità di avvio della memoria), PM0075 (manuale di programmazione flash) e AN3155 (protocollo di bootloader seriale), che probabilmente avrò bisogno in futuro.
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:
- http://www.st.com/web/catalog/tools/FM147/CL1794/SC961/SS1743/LN1939/PF257890
- http://www.st.com/web/en/catalog/tools/PF260820
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:
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?
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?
Dov'è la documentazione per le librerie (oltre ai commenti doxygen incorporati, che sono belli e tutti ma preferirei avere un html / pdf ricercabile)?
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?