The cheaper Teensy 4.0 ($20) has 5 FlexIO1 pins (2, 3, 4, 5, 33), 9 FlexIO2 pins (6, 7, 8, 9, 10, 11, 12, 13, 32), and 14 FlexIO3 pins (7, 8, 14, 25, 16, 17, 18, 19, 20, 21, 22, 23, 26, 27); of these, pins 7 and 8 are available in both FlexIO2 and FlexIO3.
FlexIO1 has one consecutive group of pins, 4-8 (pins 2, 3, 4, 33, 8
).
FlexIO2 has three consecutive groups of pins: 0-3 (pins 10, 12, 11, 13), 10-12 (pins 6, 9, 32), 16-17 (pins 8, 7).
FlexIO3 has three consecutive groups of pins: 0-3 (pins 19, 18, 14, 15), 6-11 (pins 17, 16, 22, 23, 20, 21), and 14-17 (pins 26, 27, 8, 7).
What I haven't realized before, that just because the other pins aren't exposed, does not mean they cannot be used. For example, FlexIO3 4-5 (AD_B1_04, AD_B1_05) and 12-13 (AD_B1_12, AD_B1_13) are not used on the Teensy (connection schematics
here). They do exist on the BGA package, but are not exposed nor used for other purposes, like say AD_B0_04..AD_B0_11 are for the bootloader chip. So, if one does an 16-bit shift to FlexIO3 0-15, one gets bits 0..3, 6..11, and 14..15 on pins 19, 18, 14, 15, 17, 16, 22, 23, 20, 21, 26, 27; i.e., twelve of the 16 bits as outputs. For receive/input, the 12 input bits are just spread over 16 data bits with two two-bit holes in the middle.
Mmm, more experiments to do!