Skip to content

Commit 623fe7a

Browse files
committed
FRSKYF405: fix pin assignments and clean up target
- Fix UART5_RX: PD12 → PD2 (only valid pin for UART5_RX on STM32F405) - Move SPI3 to PB3/PB4/PB5, freeing PC10/PC11/PC12 for UART3 and UART5_TX - Move UART3 to PC10/PC11 (was conflicting with I2C2 on PB10/PB11) - Fix UART4_RX: PC5 → PA1 (PC5 is shared with RSSI ADC) - Re-enable I2C2 on PB10/PB11 (now free after UART3 move) - Add TARGET_IO_PORTD for PD2 (UART5_RX) - Update SERIAL_PORT_COUNT to 7 (includes UART5) - Remove config.c: UART2 has both standard and hardware-inverted SBUS pads
1 parent 7b0bd00 commit 623fe7a

File tree

3 files changed

+36
-146
lines changed

3 files changed

+36
-146
lines changed

src/main/target/FRSKYF405/config.c

Lines changed: 0 additions & 32 deletions
This file was deleted.

src/main/target/FRSKYF405/target.c

Lines changed: 10 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -22,49 +22,18 @@
2222
#include "drivers/pwm_mapping.h"
2323
#include "drivers/timer.h"
2424

25-
/*
26-
* Timer Allocation for FrSky F405
27-
*
28-
* Connector mapping from schematic (CONN.SchDoc):
29-
* - CON1 (S1): T4_2 = TIM4_CH2 = PB7
30-
* - CON2 (S2): T4_1 = TIM4_CH1 = PB6
31-
* - CON3 (S3): T3_3 = TIM3_CH3 = PB0
32-
* - CON4 (S4): T3_4 = TIM3_CH4 = PB1
33-
* - CON5 (S5): T8_3 = TIM8_CH3 = PC8
34-
* - CON6 (S6): T8_4 = TIM8_CH4 = PC9
35-
* - CON7 (S7): T12_1 = TIM12_CH1 = PB14 (no DMA - no DShot)
36-
* - CON8 (S8): T12_2 = TIM12_CH2 = PB15 (no DMA - no DShot)
37-
* - CON9 (S9): T1_1 = TIM1_CH1 = PA8
38-
* - CON23 (LED): T2_1 = TIM2_CH1 = PA15
39-
*/
40-
4125
timerHardware_t timerHardware[] = {
42-
// Motor outputs S1-S9 (in physical connector order from schematic)
43-
DEF_TIM(TIM4, CH2, PB7, TIM_USE_OUTPUT_AUTO, 0, 0), // S1 (CON1) - Motor 1
44-
DEF_TIM(TIM4, CH1, PB6, TIM_USE_OUTPUT_AUTO, 0, 0), // S2 (CON2) - Motor 2
45-
DEF_TIM(TIM3, CH3, PB0, TIM_USE_OUTPUT_AUTO, 0, 0), // S3 (CON3) - Motor 3
46-
DEF_TIM(TIM3, CH4, PB1, TIM_USE_OUTPUT_AUTO, 0, 0), // S4 (CON4) - Motor 4
47-
DEF_TIM(TIM8, CH3, PC8, TIM_USE_OUTPUT_AUTO, 0, 1), // S5 (CON5) - Motor 5 UP(2,1)
48-
DEF_TIM(TIM8, CH4, PC9, TIM_USE_OUTPUT_AUTO, 0, 0), // S6 (CON6) - Motor 6
49-
DEF_TIM(TIM12, CH1, PB14, TIM_USE_OUTPUT_AUTO, 0, 0), // S7 (CON7) - Motor 7 NOTE: TIM12 has no DMA - DShot not supported
50-
DEF_TIM(TIM12, CH2, PB15, TIM_USE_OUTPUT_AUTO, 0, 0), // S8 (CON8) - Motor 8 NOTE: TIM12 has no DMA - DShot not supported
51-
DEF_TIM(TIM1, CH1, PA8, TIM_USE_OUTPUT_AUTO, 0, 0), // S9 (CON9) - Motor 9 UP(2,5)
26+
DEF_TIM(TIM4, CH2, PB7, TIM_USE_OUTPUT_AUTO, 0, 0), // S1
27+
DEF_TIM(TIM4, CH1, PB6, TIM_USE_OUTPUT_AUTO, 0, 0), // S2
28+
DEF_TIM(TIM3, CH3, PB0, TIM_USE_OUTPUT_AUTO, 0, 0), // S3
29+
DEF_TIM(TIM3, CH4, PB1, TIM_USE_OUTPUT_AUTO, 0, 0), // S4
30+
DEF_TIM(TIM8, CH3, PC8, TIM_USE_OUTPUT_AUTO, 0, 1), // S5
31+
DEF_TIM(TIM8, CH4, PC9, TIM_USE_OUTPUT_AUTO, 0, 0), // S6
32+
DEF_TIM(TIM12, CH1, PB14, TIM_USE_OUTPUT_AUTO, 0, 0), // S7 - no DShot (TIM12 has no DMA)
33+
DEF_TIM(TIM12, CH2, PB15, TIM_USE_OUTPUT_AUTO, 0, 0), // S8 - no DShot (TIM12 has no DMA)
34+
DEF_TIM(TIM1, CH1, PA8, TIM_USE_OUTPUT_AUTO, 0, 0), // S9
5235

53-
// LED Strip on CON23 - PA15 (T2_1 signal on schematic)
54-
DEF_TIM(TIM2, CH1, PA15, TIM_USE_LED, 0, 0), // LED strip (CON23)
36+
DEF_TIM(TIM2, CH1, PA15, TIM_USE_LED, 0, 0), // LED strip
5537
};
5638

5739
const int timerHardwareCount = sizeof(timerHardware) / sizeof(timerHardware[0]);
58-
59-
/*
60-
* IMPLEMENTATION NOTES:
61-
*
62-
* 1. S1/S2 order matches physical board labels (CON1=S1, CON2=S2 from schematic)
63-
*
64-
* 2. TIM12 (S7, S8): No DMA support on STM32F405.
65-
* Works: Standard PWM, OneShot125, OneShot42, MultiShot
66-
* Does NOT work: DShot (all variants), ProShot
67-
* Use S7/S8 for non-DShot ESCs or servos
68-
*
69-
* 3. LED strip output: PA15 (T2_1) on CON23 with TIM2_CH1
70-
*/

src/main/target/FRSKYF405/target.h

Lines changed: 26 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -22,17 +22,11 @@
2222
#define USBD_PRODUCT_STRING "FrSkyF405"
2323

2424
// *************** LED & BEEPER **********************
25-
// Status LEDs share SWD debug pins - only available in release builds
26-
// In debug builds, these pins must remain in SWD mode for debugging
27-
// Red LED is likely a power indicator (always-on, no GPIO control)
28-
#ifndef DEBUG_BUILD
29-
#define LED0 PA14 // Blue LED (shares SWCLK) via R34 1K
30-
#define LED1 PA13 // Green LED (shares SWDIO) via R35 1K
31-
#endif
32-
// Red LED appears to be power indicator (connected to VCC, not GPIO)
25+
#define LED0 PA14 // shares SWCLK
26+
#define LED1 PA13 // shares SWDIO
3327

3428
#define BEEPER PC15
35-
#define BEEPER_INVERTED // INAV beeper driver writes !onoff; BEEPER_INVERTED makes it write HIGH to activate the N-channel MOSFET (Q2)
29+
#define BEEPER_INVERTED
3630

3731
// *************** Gyro & ACC **********************
3832
#define USE_SPI
@@ -42,11 +36,11 @@
4236
#define SPI1_MISO_PIN PA6
4337
#define SPI1_MOSI_PIN PA7
4438

45-
// IIM-42688P Gyro on SPI1
46-
#define USE_IMU_ICM42605 // IIM-42688P is compatible with ICM42605 driver
39+
// IIM-42688P is compatible with ICM42605 driver
40+
#define USE_IMU_ICM42605
4741
#define ICM42605_CS_PIN PA4
4842
#define ICM42605_SPI_BUS BUS_SPI1
49-
#define IMU_ICM42605_ALIGN CW0_DEG // TODO: Verify orientation from board layout
43+
#define IMU_ICM42605_ALIGN CW0_DEG
5044

5145

5246
// *************** OSD *****************************
@@ -55,19 +49,16 @@
5549
#define SPI2_MISO_PIN PC2
5650
#define SPI2_MOSI_PIN PC3
5751

58-
// AT7456E OSD on SPI2
5952
#define USE_MAX7456
6053
#define MAX7456_SPI_BUS BUS_SPI2
6154
#define MAX7456_CS_PIN PB12
6255

6356
// *************** SD Card *************************
6457
#define USE_SPI_DEVICE_3
65-
#define SPI3_SCK_PIN PC10
66-
#define SPI3_MISO_PIN PC11
67-
#define SPI3_MOSI_PIN PC12
58+
#define SPI3_SCK_PIN PB3
59+
#define SPI3_MISO_PIN PB4
60+
#define SPI3_MOSI_PIN PB5
6861

69-
// SD Card on SPI3
70-
// NOTE: PC14 used for CS (Chip Select) - OSC32_IN pin used as GPIO for slow CS signal
7162
#define USE_SDCARD
7263
#define USE_SDCARD_SPI
7364
#define SDCARD_SPI_BUS BUS_SPI3
@@ -77,7 +68,6 @@
7768

7869
// *************** UART *****************************
7970
#define USE_VCP
80-
// Note: USB VBUS sensing not clearly defined in schematic
8171

8272
#define USE_UART1
8373
#define UART1_TX_PIN PA9
@@ -87,55 +77,47 @@
8777
#define UART2_TX_PIN PA2
8878
#define UART2_RX_PIN PA3
8979

90-
// USART2 has SBUS inverter circuit
80+
// UART2 has two pads: standard (for CRSF etc) and hardware-inverted SBUS
9181
#define SERIALRX_UART SERIAL_PORT_USART2
9282
#define SERIALRX_PROVIDER SERIALRX_SBUS
9383
#define DEFAULT_RX_TYPE RX_TYPE_SERIAL
9484

95-
// UART3 conflicts with I2C2 (shares PB10/PB11)
96-
// User must choose: enable UART3 OR I2C2, not both
9785
#define USE_UART3
98-
#define UART3_TX_PIN PB10 // Conflicts with I2C2_SCL
99-
#define UART3_RX_PIN PB11 // Conflicts with I2C2_SDA
86+
#define UART3_TX_PIN PC10
87+
#define UART3_RX_PIN PC11
10088

10189
#define USE_UART4
10290
#define UART4_TX_PIN PA0
103-
#define UART4_RX_PIN PC5 // Shared with RSSI_ADC
91+
#define UART4_RX_PIN PA1
92+
10493

105-
// UART5 TX conflicts with SPI3_MOSI (PC12)
106-
// User must choose: enable UART5 OR SD card, not both
10794
#define USE_UART5
108-
#define UART5_TX_PIN PC12 // Conflicts with SPI3_MOSI
95+
#define UART5_TX_PIN PC12
10996
#define UART5_RX_PIN PD2
11097

11198
#define USE_UART6
11299
#define UART6_TX_PIN PC6
113100
#define UART6_RX_PIN PC7
114101

115-
#define SERIAL_PORT_COUNT 7 // VCP + UART1-6
102+
#define SERIAL_PORT_COUNT 7 // VCP + UART1-5, UART6
116103

117104
// *************** I2C ****************************
118105
#define USE_I2C
119106

120-
// I2C1 for barometer (SPL06)
121107
#define USE_I2C_DEVICE_1
122108
#define I2C1_SCL PB8
123109
#define I2C1_SDA PB9
124110

125-
// I2C2 conflicts with UART3 (shares PB10/PB11)
126-
// Enable one or the other, not both
127-
// #define USE_I2C_DEVICE_2
128-
// #define I2C2_SCL PB10 // Conflicts with UART3_TX
129-
// #define I2C2_SDA PB11 // Conflicts with UART3_RX
111+
#define USE_I2C_DEVICE_2
112+
#define I2C2_SCL PB10
113+
#define I2C2_SDA PB11
130114

131115
#define DEFAULT_I2C_BUS BUS_I2C1
132116

133-
// SPL06 Barometer on I2C1 @ address 0x76
134117
#define USE_BARO
135118
#define BARO_I2C_BUS BUS_I2C1
136119
#define USE_BARO_SPL06
137120

138-
// Magnetometer on I2C (external via connector)
139121
#define USE_MAG
140122
#define MAG_I2C_BUS DEFAULT_I2C_BUS
141123
#define USE_MAG_ALL
@@ -150,27 +132,24 @@
150132
#define ADC_INSTANCE ADC1
151133
#define ADC1_DMA_STREAM DMA2_Stream0
152134

153-
#define ADC_CHANNEL_1_PIN PC0 // VBAT_ADC
154-
#define ADC_CHANNEL_2_PIN PC1 // CURR_ADC
155-
#define ADC_CHANNEL_3_PIN PC5 // RSSI_IN (shared with UART4_RX)
135+
#define ADC_CHANNEL_1_PIN PC0
136+
#define ADC_CHANNEL_2_PIN PC1
137+
#define ADC_CHANNEL_3_PIN PC5
156138

157139
#define VBAT_ADC_CHANNEL ADC_CHN_1
158140
#define CURRENT_METER_ADC_CHANNEL ADC_CHN_2
159141
#define RSSI_ADC_CHANNEL ADC_CHN_3
160142

161-
// Current sensor: INA139 with 0.25mΩ shunt
162-
#define CURRENT_METER_SCALE 250 // TODO: Calibrate based on INA139 + shunt values
143+
#define CURRENT_METER_SCALE 250
163144

164145
#define DEFAULT_FEATURES (FEATURE_OSD | FEATURE_CURRENT_METER | FEATURE_VBAT | FEATURE_TELEMETRY | FEATURE_BLACKBOX)
165146

166147
// *************** LED STRIP ***********************
167-
// CON23 LED output - PA15 (T2_1 signal on schematic)
168148
#define USE_LED_STRIP
169-
#define WS2811_PIN PA15 // TIM2_CH1, labeled as T2_1 on schematic
149+
#define WS2811_PIN PA15
170150

171151
// *************** PWM OUTPUTS *********************
172-
// 9 motor outputs (S1-S9)
173-
// Note: S7/S8 on TIM12 do not support DShot (no DMA on TIM12 for STM32F405)
152+
// S7/S8 on TIM12 do not support DShot
174153
#define MAX_PWM_OUTPUT_PORTS 9
175154

176155
// *************** Other ***************************
@@ -181,30 +160,4 @@
181160
#define TARGET_IO_PORTA 0xffff
182161
#define TARGET_IO_PORTB 0xffff
183162
#define TARGET_IO_PORTC 0xffff
184-
#define TARGET_IO_PORTD (BIT(2)) // PD2 used for UART5_RX
185-
186-
// *************** NOTES & ISSUES *******************
187-
//
188-
// DESIGN NOTES:
189-
// 1. PC14 used for SPI3_NSS (SD card CS) - RTC clock domain, should be fine for slow CS signal
190-
//
191-
// 2. Status LEDs share SWD debug pins (PA13/PA14) - HANDLED WITH #ifndef DEBUG_BUILD
192-
// Release builds: Pins configured as GPIO outputs for status LEDs
193-
// Debug builds: Pins remain in SWD mode for debugging (LEDs disabled)
194-
// Red LED appears to be power indicator (always-on, no GPIO control needed)
195-
//
196-
// PIN CONFLICTS (target or user must choose):
197-
// 3. UART3 vs I2C2: PB10/PB11 shared
198-
// - Enable UART3 for telemetry/GPS, OR
199-
// - Enable I2C2 for additional sensors
200-
//
201-
// 4. UART5 TX vs SD Card: PC12 shared (SPI3_MOSI)
202-
// - Enable UART5 for telemetry, OR
203-
// - Enable SD card for blackbox logging
204-
//
205-
// 5. UART4_RX vs RSSI ADC: PC5 shared
206-
// - May be intentional if RSSI comes via UART protocol
207-
//
208-
// MISSING INFORMATION:
209-
// 6. Gyro orientation (IMU_ALIGN) unknown - needs physical board inspection
210-
// 7. USB VBUS sensing pin not clearly defined in schematic (PC13 may be used)
163+
#define TARGET_IO_PORTD (BIT(2)) // PD2 - UART5_RX

0 commit comments

Comments
 (0)