pico-tracker/firmware/Peripherals.md

64 wiersze
1.7 KiB
Markdown

## SAM D20 Peripherals usage
| Type | Peripheral | Function | Notes
| --- | --- | --- | ---
|*GLCK*|
||gclk0|main clock, internal osc8m|4 MHz
||gclk1|tcxo clock, fed from xosc OR osc8m
||gclk7|aprs clock, fed from gclk1, div 6 / 11
|
|*TC*||
||tc0|telemetry tick timer. 32-bit. glck1
||tc1|^^^^^
||tc2|counts cycles of tcxo. 32-bit. gclk1
||tc3|^^^^^
||tc4|unused (osc8m event source)
||tc5|telemetry pwm 16-bit glck0, ALSO aprs carrier 16-bit gclk7
|
|*EXTINT*|
||extint[5]|gps timepulse
|
|*event channels*|
||0|event source for timer 2 xosc measurement
||1|tc4 retrigger
|
|*SERCOM*||
||sercom0|spi flash
||sercom1|ublox gps
||sercom2|
||sercom3|radio|currently bitbanged as required pin layout broken in sercom
## SAM D20 Interrupts usage
| Name | Function | Priority H(0-3)L | Notes
| --- | --- | --- | ---
|TC0_IRQn|telemetry tick timer|1|latency critical for symbol timing. rate <= 1200Hz
|[GPS_SERCOM]_IRQn|gps usart rx|2|latency not so critical. rate <= 960Hz
|EIC_IRQn|timepulse|3|latency not so critical. rate = 1
|TC2_IRQn|xosc measurement done|3|latency not critical
|ADC_IRQn|adc measurement done|3|latency not critical
## Clock Layout
```
[osc8m] --> [glck0] +
|--> [tc5]
|--> [adc]
|--> [extint]
|--> [cm0+, apbs etc.]
|\
[osc8m]--> 0| |
| | --> [glck1] +--> [tc0, telemetry tick]
tcxo --> [xosc] --> 1| | |--> [tc2, count tcxo] <-- gps timepulse
|/ |--> [glck7] --> [tc5] --> si_gpio1
| |--> [gps usart]
*USE_XOSC*
[osculp32k] --> [gclk4] --> [wdt]
```