Here's some of my current thinking on the pins....
First, the analog pins are the easy part. There's only 20 pins with ADC input and 10 need to be picked, where 2 must have an I2C port. I'm leaning towards these 10:
Code:
Name BGA Power Def Analog ATL0 ALT1 ALT2 ALT3 ALT4 ALT5 ALT6 ALT7
---- --- ----- --- ------ ---- ---- ---- ---- ---- ---- ---- ----
AD_B1_00 J11 GPIO ALT5 A1:5,A2:5 USB_OTG2_ID QTIMER3_TIMER0 UART2_CTS I2C1_SCL WDOG1_B GPIO1:16 USDHC1_WP KPP_ROW7 Arduino analog
AD_B1_01 K11 GPIO ALT5 A1:6,A2:6 USB_OTG1_PWR QTIMER3_TIMER1 UART2_RTS I2C1_SDA CCM_PMIC_READY GPIO1:17 USDHC1_VSELECT KPP_COL7 Arduino analog
AD_B1_02 L11 GPIO ALT5 A1:7,A2:7 USB_OTG1_ID QTIMER3_TIMER2 UART2_TX SPDIF_OUT ENET1588_OUT2 GPIO1:18 USDHC1_CD_B KPP_ROW6 Arduino analog
AD_B1_03 M12 GPIO ALT5 A1:8,A2:8 USB_OTG1_OC QTIMER3_TIMER3 UART2_RX SPDIF_IN ENET1588_IN2 GPIO1:19 USDHC2_CD_B KPP_COL6 Arduino analog
AD_B1_06 J12 GPIO ALT5 A1:11,A2:11 FLEXSPI_B_DATA1 I2C3_SDA UART3_TX SPDIF_LOCK CSI_VSYNC GPIO1:22 USDHC2_DATA2 KPP_ROW4 Arduino analog
AD_B1_07 K10 GPIO ALT5 A1:12,A2:12 FLEXSPI_B_DATA0 I2C3_SCL UART3_RX SPDIF_EXT_CLK CSI_HSYNC GPIO1:23 USDHC2_DATA3 KPP_COL4 Arduino analog
AD_B1_08 H13 GPIO ALT5 A1:13,A2:13 FLEXSPI_A_SS1_B PWM4_A0 CAN1_TX CCM_PMIC_READY CSI_DATA09 GPIO1:24 USDHC2_CMD KPP_ROW3 Arduino analog
AD_B1_09 M13 GPIO ALT5 A1:14,A2:14 FLEXSPI_A_DQS PWM4_A1 CAN1_RX SAI1_MCLK CSI_DATA08 GPIO1:25 USDHC2_CLK KPP_COL3 Arduino analog
AD_B1_10 L13 GPIO ALT5 A1:15,A2:15 FLEXSPI_A_DATA3 WDOG1_B UART8_TX SAI1_RX_SYNC CSI_DATA07 GPIO1:26 USDHC2_WP KPP_ROW2 Arduino analog
AD_B1_11 J13 GPIO ALT5 A1:0,A2:0 FLEXSPI_A_DATA2 EWM_OUT_B UART8_RX SAI1_RX_BCLK CSI_DATA06 GPIO1:27 USDHC2_RESET_B KPP_COL2 Arduino analog
This gives 3 serial, 2 I2C, SPDIF, 1 CAN, 2 PWM, 4 QTIMER, and 3 of the 5 signals for I2S.
There are a few options to pick up the other 2 I2S signals. This is the one I like the most, because it give another serial port, 2 more PWM, and we get 2 more XBAR and FlexIO signals.
Code:
B1_00 A11 GPIO ALT5 LCD_DATA12 XBAR_INOUT14 UART4_TX SAI1_RX_DATA FlexIO2:16 GPIO2:16 PWM1_A3
B1_01 B11 GPIO ALT5 LCD_DATA13 XBAR_INOUT15 UART4_RX SAI1_TX_DATA FlexIO2:17 GPIO2:17 PWM1_B3
At least one SPI port is needed. There are 5 candidates (and also a 6th, but it's on pins I want to save for Ethernet, so only showing 5 here).
Code:
B0_00 D7 GPIO ALT5 LCD_CLK QTIMER1_TIMER0 MQS_RIGHT SPI4_CS0 FlexIO2:0 GPIO2:0 SEMC_CSX1 -
B0_01 E7 GPIO ALT5 LCD_ENABLE QTIMER1_TIMER1 MQS_LEFT SPI4_MISO FlexIO2:1 GPIO2:1 SEMC_CSX2 -
B0_02 E8 GPIO ALT5 LCD_HSYNC QTIMER1_TIMER2 CAN1_TX SPI4_MOSI FlexIO2:2 GPIO2:2 SEMC_CSX3 -
B0_03 D8 GPIO ALT5 LCD_VSYNC QTIMER2_TIMER0 CAN1_RX SPI4_SCK FlexIO2:3 GPIO2:3 WDOG2_RESET_B_DEB
EMC_00 E3 EMC ALT5 SEMC_DATA00 PWM4_A0 SPI2_SCK XBAR_IN02 FlexIO1:0 GPIO4:0 USB_PHY1_TSTI_TX_LS_MODE
EMC_01 F3 EMC ALT5 SEMC_DATA01 PWM4_B0 SPI2_CS0 XBAR_IN03 FlexIO1:1 GPIO4:1 USB_PHY1_TSTI_TX_HS_MODE
EMC_02 F4 EMC ALT5 SEMC_DATA02 PWM4_A1 SPI2_MOSI XBAR_INOUT04 FlexIO1:2 GPIO4:2 USB_PHY1_TSTI_TX_DN
EMC_03 G4 EMC ALT5 SEMC_DATA03 PWM4_B1 SPI2_MISO XBAR_INOUT05 FlexIO1:3 GPIO4:3 USB_PHY1_TSTO_RX_SQUELCH
AD_B0_00 M14 GPIO ALT5 PWM2_A3 XBAR_INOUT14 REF_CLK_32K USB_OTG2_ID I2C1_SCLS GPIO1:0 USDHC1_RESET_B SPI3_SCK
AD_B0_01 H10 GPIO ALT5 PWM2_B3 XBAR_INOUT15 REF_CLK_24M USB_OTG1_ID I2C1_SDAS GPIO1:1 EWM_OUT_B SPI3_MOSI
AD_B0_02 M11 GPIO ALT5 CAN2_TX XBAR_INOUT16 UART6_TX USB_OTG1_PWR PWM1_X0 GPIO1:2 I2C1_HREQ SPI3_MISO
AD_B0_03 G11 GPIO ALT5 CAN2_RX XBAR_INOUT17 UART6_RX USB_OTG1_OC PWM1_X1 GPIO1:3 REF_CLK_24M SPI3_CS0
EMC_27 A2 EMC ALT5 SEMC_CKE PWM1_A2 UART5_RTS SPI1_SCK FlexIO1:13 GPIO4:27
EMC_28 D1 EMC ALT5 SEMC_WE PWM1_B2 UART5_CTS SPI1_MOSI FlexIO1:14 GPIO4:28
EMC_29 E1 EMC ALT5 SEMC_CS0 PWM3_A0 UART6_RTS SPI1_MISO FlexIO1:15 GPIO4:29
EMC_30 C6 EMC ALT5 SEMC_DATA08 PWM3_B0 UART6_CTS SPI1_CS0 CSI_DATA23 GPIO4:30
AD_B1_12 H12 GPIO ALT5 A2:1 FLEXSPI_A_DATA1 ACMP_OUT00 SPI3_PCS0 SAI1_RX0 CSI_DATA05 GPIO1:28 USDHC2_DATA4 KPP_ROW1
AD_B1_13 H11 GPIO ALT5 A2:2 FLEXSPI_A_DATA0 ACMP_OUT01 SPI3_MISO SAI1_TX0 CSI_DATA04 GPIO1:29 USDHC2_DATA5 KPP_COL1
AD_B1_14 G12 GPIO ALT5 A2:3 FLEXSPI_A_SCLK ACMP_OUT02 SPI3_MOSI SAI1_TX_BCLK CSI_DATA03 GPIO1:30 USDHC2_DATA6 KPP_ROW0
AD_B1_15 J14 GPIO ALT5 A2:4 FLEXSPI_A_SS0_B ACMP_OUT03 SPI3_SCK SAI1_TX_SYNC CSI_DATA02 GPIO1:31 USDHC2_DATA7 KPP_COL0
Whether to put 1 or 2 of these groups on the 14 outside pins is a good question. Two SPI quick burns up the 14 digital pins, but all of these have some pretty tempting alternate features that could make them worthy of using up the precious 14 digital slots.
So far this is 4 of the 8 serial ports (or 5 if EMC27-EMC30 are chosen for SPI). Here are pins that could be used get some or all of the remaining serial. At least 1 of these needs to be chosen for Arduino pins 0 & 1.
Code:
EMC_23 G2 EMC ALT5 SEMC_ADDR10 PWM1_A0 UART5_TX ENET_RX_EN GPT1_CAPTURE2 GPIO4:23
EMC_24 D3 EMC ALT5 SEMC_CAS PWM1_B0 UART5_RX ENET_TX_EN GPT1_CAPTURE1 GPIO4:24
EMC_25 D2 EMC ALT5 SEMC_RAS PWM1_A1 UART6_TX ENET_TX_CLK ENET_REF_CLK GPIO4:25
EMC_26 B3 EMC ALT5 SEMC_CLK PWM1_B1 UART6_RX ENET_RX_ER FlexIO1:12 GPIO4:26
---or---
AD_B0_02 M11 GPIO ALT5 CAN2_TX XBAR_INOUT16 UART6_TX USB_OTG1_PWR PWM1_X0 GPIO1:2 I2C1_HREQ SPI3_MISO
AD_B0_03 G11 GPIO ALT5 CAN2_RX XBAR_INOUT17 UART6_RX USB_OTG1_OC PWM1_X1 GPIO1:3 REF_CLK_24M SPI3_CS0
AD_B0_12 K14 GPIO ALT5 A1:1 I2C4_SCL CCM_PMIC_READY UART1_TX WDOG2_B PWM1_X2 GPIO1:12 ENET1588_OUT1 -
AD_B0_13 L14 GPIO ALT5 A1:2 I2C4_SDA GPT1_CLK UART1_RX EWM_OUT_B PWM1_X3 GPIO1:13 ENET1588_IN1 REF_CLK_24M
There are more interesting pins. For example, these 2 would allow the I2S to do 8 channel in or out (and stereo in the other direction). I'm less inclined since you can do 8 channels with TDM (as we have now on Teensy 3.x), though that does limit you to only certain chips with TDM support.
Code:
B0_10 D9 GPIO ALT5 LCD_DATA06 QTIMER4_TIMER1 PWM2_A2 SAI1_TX3_RX1 FlexIO2:10 GPIO2:10 SRC_BOOT_CFG06
B0_11 A10 GPIO ALT5 LCD_DATA07 QTIMER4_TIMER2 PWM2_B2 SAI1_TX2_RX2 FlexIO2:11 GPIO2:11 SRC_BOOT_CFG07
B0_12 C10 GPIO ALT5 LCD_DATA08 XBAR_INOUT10 ARM_TRACE_CLK SAI1_TX1_RX3 FlexIO2:12 GPIO2:12 SRC_BOOT_CFG08
Of course these are so many other pins... we could forgo some of these features to pick up more XBAR and FlexIO pins, or more PWM and QTIMER.
Hopefully this helps get the conversation started. Are there other choices I've missed? Now's the time to comment. Just remember, the limit (for this thread) is 24 pins assigned to the outside edge, and 8-12 more maybe on bottom-side pads if space permits.