An IO expander is a chip that connects to the CPU (in our case via I2C) and provides a number of IO ports. Neo900 will need IO expanders because the CPU doesn't have quite enough pins for all the signals. As an added bonus, IO expanders can also lower the number of signals that have to pass between UPPER and LOWER.

An IO expander is a chip that connects to the CPU (in our case via I2C) and provides a number of IO ports. Neo900 will need IO expanders because the CPU doesn't have quite enough pins for all the signals. As an added bonus, IO expanders can also lower the number of signals that have to pass between UPPER and LOWER.

Please consider evaluating if gpios on the io extender should have wake-up capability, as that will affect power usage etc.

"The two system-wide I2C busses in Neo900 operate at 400 kHz (I2C#2) and 100 kHz (I2C#3)." - I doubt this is correct, i2c1 should operate on 2.2MHz, at it is used to control twl4030 regulators (SmartReflex that is).

Also, IR diode on N900 is not driven by a simple gpio, but through PWM output. If TX diode on Neo900 is going to use the same, then it cannot be attached to iox.

Please consider evaluating if gpios on the io extender should have wake-up capability,

We did a quick evaluation of interrupts, and is seems that most interrupts could end up in a wakeup role. The IO expanders we're interested in are all interrupt-capable (and can mask interrupts from lines that should not generate interrupts), so the CPU can simply wake-up on the interrupt from the GPIO expander.

I doubt this is correct, i2c1 should operate on 2.2MHz, at it is used to control twl4030 regulators (SmartReflex that is).

I2C#1 is not system-wide :-) Only I2C#2 and I2C#3 are. I2C#1 and I2C#4 only connect CPU and the companion chip but don't go to any other components. In any case, most IO expanders don't go above 400 kHz anyway. Only TCA6418 (1 MHz) and MCP23018 (3.4 MHz) are faster, but MCP23018 has only open-drain outputs, which would make it a somewhat inflexible choice. I'm also not sure if it is safe to share the SmartReflex bus with other components.

Also, IR diode on N900 is not driven by a simple gpio, but through PWM output. If TX diode on Neo900 is going to use the same, then it cannot be attached to iox.

Yes, CIR is a "fast" data signal, not one of the control signals mentioned in the white paper. In any case, in Neo900 we use the CIR mode of the UART (see IR white paper), which goes to a different pin (uart3_cts_rctx:H18 instead of gpt_9_pwm_evt:Y2; also, Y2 is likely to be occupied by HB USB).

- defined the (pretty tricky) control logic for the IR transmitter,
- simplified the LED driver and at the same time made its design more robust, and
- since the control logic is too complex for an efficient discrete design, we will use a mixed-signal array for it (like for power selection of the SIM switch). This also allows us to remove the two ICs of the receiver circuit, killing two birds with one stone.

With this update, all major aspects of the IR subsystem are now defined, closing one of our oldest "construction sites".

- the IR logic is now controlled through an I2C-accessible register in the logic chip (Silego), not through GPIOs
- the receiver is designed to filter at 30 Hz, not 10 Hz
- added slew rate control for the transmit LED
- added an analog switch to completely disable the receiver

This document gives an overview of the v2 prototype, describes how it is composed, and discusses what roles its various parts play. It also explains the differences between v2 and what will be the final Neo900 design.

My heart soars every time I see "Announcements related to Neo900" pop up in Active Topics, only to sink again when I follow the link and read the post. No, it is not an announcement of a working prototype, or at least a finished PCB design. It is just another white paper

__________________In particle accelerators atoms are indeed not only touching each others. But banging together in a massive explosive orgasm.
-- nieldk in a TMO post