Universal I/O Controller Design
Table
| Function | Implemented Channels | External Connectors | Main Nets |
|---|---|---|---|
| Universal Inputs | 4 | J1–J4 | UI1_FIELD–UI4_FIELD, UI1_ADC–UI4_ADC, UI1_DIG_OUT–UI4_DIG_OUT |
| Universal Outputs | 4 | J5–J8 | UO1_OUT–UO4_OUT |
| Control / Host Interface | 1 expanded header | J10, plus J9 legacy/programming header | SPI_SCLK, SPI_MOSI, SPI_MISO, ADC_CS_N, ADC_RDY_N, HC595_LATCH |
| Field Power Input | 1 | J10 pin 16 / FIELD_24V_IN | FIELD_24V_IN, FIELD_24V_PROT |
Table
| Function | Components / Nets | Notes |
|---|---|---|
| Input field rail | FIELD_24V_IN | Feeds U1 IN pins and configuration dividers |
| Protected field rail | FIELD_24V_PROT | U1 OUT rail with C22 bulk capacitance |
| UVLO setting | R31, R32, LM76202_UVLO_SET | Approximate configured undervoltage threshold network |
| OVP setting | R33, R34, LM76202_OVP_SET | Approximate configured overvoltage threshold network |
| Current limit | R35, LM76202_ILIM_SET | Sets U1 current-limit behavior |
| Current monitor | R36, LM76202_IMON | Provides monitor load/path |
| dV/dT control | C26, LM76202_DVDT | Controls output slew behavior |
| Fault output | FIELD_FLT_N / UI4_DIG_OUT header conflict note | U1 fault indication was initially brought to J10 pin 15; this pin is now also used for UI4_DIG_OUT and should be reviewed before production |
Table
| Rail | Source / Use | Notes |
|---|---|---|
| 5V_IN | J10 / external logic supply | Feeds U10 input and U5 LM2902 supply |
| 3V3 | U10 AP2204K-3.3TRG1 | Feeds AD7708 logic/analog supply, HC595, CD4066 switches, comparators, references, and pullups |
| 2V5_REF | IC1 LM4040AIZ-2.5/NOPB | Reference input for AD7708 REFIN1(+) |
| GND | Common return | Current schematic uses common GND for analog, digital, and field return; future revision may split AGND/DGND/field return if needed |
Table
| ADC Function | Implemented Nets / Components |
|---|---|
| Analog channels | UI1_ADC, UI2_ADC, UI3_ADC, UI4_ADC into AIN1–AIN4 |
| Reference | 2V5_REF into REFIN1(+), GND into REFIN1(-) |
| Clock | Y1 32.768 kHz crystal with C23/C24 load capacitors on ADC_XTAL1 / ADC_XTAL2 |
| SPI interface | SPI_SCLK, SPI_MOSI, SPI_MISO, ADC_CS_N |
| Data ready | ADC_RDY_N |
| Reset | ADC_RESET_N |
Text
Field terminal → TVS/protection → 1k series resistor → protected node ├─ 0–10 V divider path ├─ 0–20 mA shunt path ├─ resistance / RTD / thermistor excitation path └─ digital comparator sense path
Table
| Channel | Connector | TVS | Series R | 0–10 V Divider | 0–20 mA Shunt | Excitation R | Switch IC | ADC Net | Digital Sense | Digital Output |
|---|---|---|---|---|---|---|---|---|---|---|
| UI1 | J1 | D1 | R1 1k | R2 30k / R3 10k | R4 165Ω | R5 10k | U6 | UI1_ADC | UI1_DIG_SENSE | UI1_DIG_OUT |
| UI2 | J2 | D2 | R6 1k | R7 30k / R8 10k | R9 165Ω | R10 10k | U7 | UI2_ADC | UI2_DIG_SENSE | UI2_DIG_OUT |
| UI3 | J3 | D3 | R11 1k | R12 30k / R13 10k | R14 165Ω | R15 10k | U8 | UI3_ADC | UI3_DIG_SENSE | UI3_DIG_OUT |
| UI4 | J4 | D4 | R16 1k | R17 30k / R18 10k | R19 165Ω | R20 10k | U9 | UI4_ADC | UI4_DIG_SENSE | UI4_DIG_OUT |
Table
| Mode | Hardware Path | Firmware Action |
|---|---|---|
| 0–10 V | Select divider path with CTRL_VOLTAGE_MODE | Convert ADC result using divider ratio and calibration coefficients |
| 0–20 mA | Select shunt path with CTRL_CURRENT_MODE | Convert ADC voltage across 165Ω shunt to current |
| Resistance / RTD / Thermistor | Select excitation path with CTRL_RESISTANCE_MODE | Measure divider/sense voltage and apply resistance/temperature conversion table |
| Digital Input | Select digital sense path with CTRL_DIGITAL_MODE | Read comparator output UIx_DIG_OUT |
| Analog Input | Use ADC path appropriate to source range | Firmware must choose direct/scaled path according to allowed voltage range |
Table
| Channel | Comparator | Input Net | Output Net | Pullup |
|---|---|---|---|---|
| UI1 | U3A | UI1_DIG_SENSE | UI1_DIG_OUT | R25 to 3V3 |
| UI2 | U3B | UI2_DIG_SENSE | UI2_DIG_OUT | R26 to 3V3 |
| UI3 | U11A | UI3_DIG_SENSE | UI3_DIG_OUT | R27 to 3V3 |
| UI4 | U11B | UI4_DIG_SENSE | UI4_DIG_OUT | R28 to 3V3 |
Table
| HC595 Output | Net | Function |
|---|---|---|
| QA | CTRL_VOLTAGE_MODE | Enables 0–10 V divider path on all UI channels |
| QB | CTRL_CURRENT_MODE | Enables 0–20 mA shunt path on all UI channels |
| QC | CTRL_RESISTANCE_MODE | Enables excitation path for resistance/RTD/thermistor modes |
| QD | CTRL_DIGITAL_MODE | Enables digital comparator sense path |
| QE | UO1_CMD | Software command/control for UO1 buffer |
| QF | UO2_CMD | Software command/control for UO2 buffer |
| QG | UO3_CMD | Software command/control for UO3 buffer |
| QH | UO4_CMD | Software command/control for UO4 buffer |
Table
| Output | Command Net | Op-Amp Stage | External Connector | Output Net |
|---|---|---|---|---|
| UO1 | UO1_CMD | U5 channel 1 | J5 | UO1_OUT |
| UO2 | UO2_CMD | U5 channel 2 | J6 | UO2_OUT |
| UO3 | UO3_CMD | U5 channel 3 | J7 | UO3_OUT |
| UO4 | UO4_CMD | U5 channel 4 | J8 | UO4_OUT |
Table
| Net | Purpose |
|---|---|
| 5V_IN | External 5 V input for local 3V3 regulator and LM2902 supply |
| 3V3 | Local regulated logic rail output/reference |
| SPI_SCLK | AD7708 SCLK and HC595 shift clock |
| SPI_MOSI | AD7708 DIN and HC595 SER |
| SPI_MISO | AD7708 DOUT |
| ADC_CS_N | AD7708 chip select |
| ADC_RDY_N | AD7708 data-ready output |
| HC595_LATCH | HC595 storage-register latch |
| HC595_SRCLR_N | HC595 shift-register clear |
| HC595_OE_N | HC595 output enable |
| UI1_DIG_OUT–UI4_DIG_OUT | Comparator-backed digital input outputs |
| FIELD_24V_IN | Field power input |
Table
| Check Area | Status |
|---|---|
| Schematic components/nets | Implemented at architecture level |
| ERC basics | Previously reported clean in earlier validation passes |
| DRC overlapping copper | U1 issue was specifically targeted and reported clean after correction |
| DRC airwires | Still failing; routing remains incomplete |
| Manufacturing exports | Should remain blocked until routing and final DRC are clean |
Welcome 👋
Flux helps you build PCBs faster with an AI teammate!
Create your account to collaborate, stay updated, fork your own version, and get instant answers from our AI agent.