With the exception of features like analog and PWM, to me it's long seemed like you can program just about any pin to do anything. Based upon my [flawed?] reasoning, it seems like it should be possible to map the SPI and I2C functionality to any desired pin.
So when I look at the pretty colored chart showing where different interfaces are defined, I've assumed these were defaults, overridable if needed. But I'm guessing I'm wrong on this...
The reason I ask: I'm designing a pinball machine I/O controller based around the Teensy 4.0. Because pinball machines are complex, electrically noisy environments, I see a need for multiple I2C and SPI busses.
Multiple SPI busses would be helpful mainly from a wiring perspective, since these devices must be daisy chained. I'd like to have the IO controller central on the playfield, and then optional expanded LED drivers connected via SPI. For wiring convenience, I'd like to be able to connect one set going up the playfield, and another set going the opposite direction. Having a 2nd SPI port would prevent me from having a daisy chain running loops around the long playfield.
Multiple I2C busses are really just to do noise isolation. In my testing I've observed a noisy servo controller occasionally interfering with On/Off states of an I/O expander on the same bus. Since the perfect functioning of the I/O expander is critical, I'd like to have it on a separate I2C bus to give it the best possible chance of noise-free operation.
Looking at the Teensy 4.0 I/O map, it's got two I2C on the top pins, which is probably enough. But if I wanted a third, it looks like I'd have to access the small pads 24 & 25 on the bottom.
Similarly, there's only one SPI defined on the top pins, and if I wanted a 2nd I'd have to utilize the super tiny, closely spaced pads 34-37 on the bottom.
This is not appealing to me, as I'm trying to create a custom I/O breakout carrier board, for which the Teensy 4.0 simply plugs in, and is easily swappable in case of a failure, or even simply to reprogram it outside of the pinball machine. I don't think pogo pins would be a good solution, especially as much as a pinball machine vibrates. I don't know if there are any spring contact pads that I could utilize, but that seems both complex and expensive. Soldering additional connections to Teensy is not optimum for a commercially viable product.
Ideally, I'd prefer to simply remap these features to the top pins. I've got 8 unused header pins in my design. So is this possible?
Yes, I know the Teensy 4.1 directly resolves these specific criteria. I'm just trying to understand if this is possible with the 4.0, which is perfect for my application in all other regards.
Thanks for any help!
Paul
So when I look at the pretty colored chart showing where different interfaces are defined, I've assumed these were defaults, overridable if needed. But I'm guessing I'm wrong on this...
The reason I ask: I'm designing a pinball machine I/O controller based around the Teensy 4.0. Because pinball machines are complex, electrically noisy environments, I see a need for multiple I2C and SPI busses.
Multiple SPI busses would be helpful mainly from a wiring perspective, since these devices must be daisy chained. I'd like to have the IO controller central on the playfield, and then optional expanded LED drivers connected via SPI. For wiring convenience, I'd like to be able to connect one set going up the playfield, and another set going the opposite direction. Having a 2nd SPI port would prevent me from having a daisy chain running loops around the long playfield.
Multiple I2C busses are really just to do noise isolation. In my testing I've observed a noisy servo controller occasionally interfering with On/Off states of an I/O expander on the same bus. Since the perfect functioning of the I/O expander is critical, I'd like to have it on a separate I2C bus to give it the best possible chance of noise-free operation.
Looking at the Teensy 4.0 I/O map, it's got two I2C on the top pins, which is probably enough. But if I wanted a third, it looks like I'd have to access the small pads 24 & 25 on the bottom.
Similarly, there's only one SPI defined on the top pins, and if I wanted a 2nd I'd have to utilize the super tiny, closely spaced pads 34-37 on the bottom.
This is not appealing to me, as I'm trying to create a custom I/O breakout carrier board, for which the Teensy 4.0 simply plugs in, and is easily swappable in case of a failure, or even simply to reprogram it outside of the pinball machine. I don't think pogo pins would be a good solution, especially as much as a pinball machine vibrates. I don't know if there are any spring contact pads that I could utilize, but that seems both complex and expensive. Soldering additional connections to Teensy is not optimum for a commercially viable product.
Ideally, I'd prefer to simply remap these features to the top pins. I've got 8 unused header pins in my design. So is this possible?
Yes, I know the Teensy 4.1 directly resolves these specific criteria. I'm just trying to understand if this is possible with the 4.0, which is perfect for my application in all other regards.
Thanks for any help!
Paul