GPIO assignments, DMA channels, and peripheral settings.
Pin Mapping
| Pin | Function | Peripheral | Description |
|---|
| PA0 | ADC+ | ADC1_IN1 | Gas sensor positive (differential) |
| PA1 | ADC− | ADC1_IN2 | Gas sensor negative |
| PA2 | DAC MSB | GPIO Output | AD5545 midscale/zero-scale select |
| PA3 | DAC RS | GPIO Output | AD5545 reset (active low) |
| PA4 | DAC LDAC | GPIO Output | AD5545 latch (pulse low to update) |
| PA5 | SPI SCK | SPI1 | DAC clock |
| PA6 | SPI CS | GPIO Output | DAC chip select (active low) |
| PA7 | SPI MOSI | SPI1 | DAC data |
| PA8 | LED | GPIO Output | Heartbeat (500 ms toggle) |
| PA9 | UART TX | USART1 | Host → sensor commands |
| PA10 | UART RX | USART1 | Sensor → host responses |
| PB7 | I2C SDA | I2C1 | SHT45 temperature/humidity sensor |
| PB8 | I2C SCL | I2C1 | SHT45 clock |
Clock Tree
HSI (16 MHz)
→ PREDIV ÷4 → 4 MHz
→ PLL ×85 → 340 MHz
→ DIVR ÷2 → SYSCLK = 170 MHz
│
├── APB1 = 42.5 MHz (I2C1, USART1)
└── APB2 = 85 MHz (SPI1, ADC1)
Peripheral Configuration
| Parameter | Value |
|---|
| Mode | Differential (PA0⁺ / PA1⁻) |
| Resolution | 12-bit (0 – 4095 codes) |
| Sample time | 6.5 cycles |
| Oversampling | 8× hardware (ratio=3, shift=4) |
| Clock source | SYSCLK (170 MHz via Adcsel::SYS) |
| VREFINT cal. | On boot — actual VDD calculated |
With 8× hardware oversampling the noise floor is effectively reduced by ~√8 ≈ 2.8, giving an effective resolution of ~13.5 bits. The hardware right-shifts the result back to 12-bit output, so ADC_MAX_CODE = 4095.
SPI1 — AD5545 DAC
| Parameter | Value |
|---|
| Frequency | 5 MHz |
| Mode | Mode 0 (CPOL=0, CPHA=0) |
| Data order | MSB first |
| Direction | TX only |
| Bus sharing | RTIC ArbiterDevice |
USART1 — Host Communication
| Parameter | Value |
|---|
| Baud rate | 115200 |
| Format | 8N1 |
| DMA | CH1 RX, CH2 TX |
I2C1 — SHT45 Sensor
| Parameter | Value |
|---|
| Frequency | 100 kHz |
| Address | 0x44 (SHT45) |
| DMA | CH4 RX, CH6 TX |
DMA Channel Assignments
| Channel | Peripheral | Direction |
|---|
| DMA1_CH1 | USART1 RX | Peripheral → RAM |
| DMA1_CH2 | USART1 TX | RAM → Peripheral |
| DMA1_CH3 | SPI1 TX | RAM → Peripheral |
| DMA1_CH4 | I2C1 RX | Peripheral → RAM |
| DMA1_CH5 | ADC1 | (Allocated, unused) |
| DMA1_CH6 | I2C1 TX | RAM → Peripheral |