Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
231 changes: 231 additions & 0 deletions boards/SparkFun-FT231X-Breakout/FT231X.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,231 @@
import type { ChipProps } from "@tscircuit/props"

// FT231X - USB to Full Handshake UART IC (SSOP-20 package)
const pinLabels = {
pin1: ["RESET"],
pin2: ["OSCO"],
pin3: ["OSCI"],
pin4: ["GND1"],
pin5: ["TXD"],
pin6: ["RXD"],
pin7: ["RTS"],
pin8: ["CTS"],
pin9: ["CBUS2"],
pin10: ["CBUS1"],
pin11: ["GND2"],
pin12: ["VCC"],
pin13: ["V3_3"],
pin14: ["USBDP"],
pin15: ["USBDM"],
pin16: ["V3_3OUT"],
pin17: ["GND3"],
pin18: ["CBUS0"],
pin19: ["CBUS3"],
pin20: ["DTR"],
} as const

export const FT231X = (props: ChipProps<typeof pinLabels>) => {
return (
<chip
pinLabels={pinLabels}
supplierPartNumbers={{
jlcpcb: ["C14010"],
}}
manufacturerPartNumber="FT231XS-R"
footprint={
<footprint>
{/* SSOP-20 package - 0.65mm pitch, 5.3mm x 6.2mm body */}
{/* Left side pins (1-10) */}
<smtpad
portHints={["pin1"]}
pcbX="-3.4mm"
pcbY="2.925mm"
width="1.6mm"
height="0.4mm"
shape="rect"
/>
<smtpad
portHints={["pin2"]}
pcbX="-3.4mm"
pcbY="2.275mm"
width="1.6mm"
height="0.4mm"
shape="rect"
/>
<smtpad
portHints={["pin3"]}
pcbX="-3.4mm"
pcbY="1.625mm"
width="1.6mm"
height="0.4mm"
shape="rect"
/>
<smtpad
portHints={["pin4"]}
pcbX="-3.4mm"
pcbY="0.975mm"
width="1.6mm"
height="0.4mm"
shape="rect"
/>
<smtpad
portHints={["pin5"]}
pcbX="-3.4mm"
pcbY="0.325mm"
width="1.6mm"
height="0.4mm"
shape="rect"
/>
<smtpad
portHints={["pin6"]}
pcbX="-3.4mm"
pcbY="-0.325mm"
width="1.6mm"
height="0.4mm"
shape="rect"
/>
<smtpad
portHints={["pin7"]}
pcbX="-3.4mm"
pcbY="-0.975mm"
width="1.6mm"
height="0.4mm"
shape="rect"
/>
<smtpad
portHints={["pin8"]}
pcbX="-3.4mm"
pcbY="-1.625mm"
width="1.6mm"
height="0.4mm"
shape="rect"
/>
<smtpad
portHints={["pin9"]}
pcbX="-3.4mm"
pcbY="-2.275mm"
width="1.6mm"
height="0.4mm"
shape="rect"
/>
<smtpad
portHints={["pin10"]}
pcbX="-3.4mm"
pcbY="-2.925mm"
width="1.6mm"
height="0.4mm"
shape="rect"
/>

{/* Right side pins (11-20) */}
<smtpad
portHints={["pin11"]}
pcbX="3.4mm"
pcbY="-2.925mm"
width="1.6mm"
height="0.4mm"
shape="rect"
/>
<smtpad
portHints={["pin12"]}
pcbX="3.4mm"
pcbY="-2.275mm"
width="1.6mm"
height="0.4mm"
shape="rect"
/>
<smtpad
portHints={["pin13"]}
pcbX="3.4mm"
pcbY="-1.625mm"
width="1.6mm"
height="0.4mm"
shape="rect"
/>
<smtpad
portHints={["pin14"]}
pcbX="3.4mm"
pcbY="-0.975mm"
width="1.6mm"
height="0.4mm"
shape="rect"
/>
<smtpad
portHints={["pin15"]}
pcbX="3.4mm"
pcbY="-0.325mm"
width="1.6mm"
height="0.4mm"
shape="rect"
/>
<smtpad
portHints={["pin16"]}
pcbX="3.4mm"
pcbY="0.325mm"
width="1.6mm"
height="0.4mm"
shape="rect"
/>
<smtpad
portHints={["pin17"]}
pcbX="3.4mm"
pcbY="0.975mm"
width="1.6mm"
height="0.4mm"
shape="rect"
/>
<smtpad
portHints={["pin18"]}
pcbX="3.4mm"
pcbY="1.625mm"
width="1.6mm"
height="0.4mm"
shape="rect"
/>
<smtpad
portHints={["pin19"]}
pcbX="3.4mm"
pcbY="2.275mm"
width="1.6mm"
height="0.4mm"
shape="rect"
/>
<smtpad
portHints={["pin20"]}
pcbX="3.4mm"
pcbY="2.925mm"
width="1.6mm"
height="0.4mm"
shape="rect"
/>

{/* Silkscreen body outline */}
<silkscreenpath
route={[
{ x: -2.65, y: 3.3 },
{ x: 2.65, y: 3.3 },
{ x: 2.65, y: -3.3 },
{ x: -2.65, y: -3.3 },
{ x: -2.65, y: 3.3 },
]}
/>
{/* Pin 1 indicator */}
<silkscreencircle pcbX="-2.2" pcbY="3.6" radius={0.2} />
</footprint>
}
schPortArrangement={{
leftSide: {
direction: "top-to-bottom",
pins: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
},
rightSide: {
direction: "bottom-to-top",
pins: [11, 12, 13, 14, 15, 16, 17, 18, 19, 20],
},
}}
schWidth={1.5}
schHeight={3}
{...props}
/>
)
}
64 changes: 64 additions & 0 deletions boards/SparkFun-FT231X-Breakout/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# SparkFun FT231X Breakout

A tscircuit implementation of the SparkFun FT231X Breakout board (BOB-13263).

## Description

The SparkFun FT231X Breakout is a USB-to-Serial adapter built around the FTDI FT231X chip. Unlike basic FTDI adapters, this board breaks out all pins for full UART hardware handshaking support.

## Features

- **FT231X IC**: Full-speed USB to asynchronous serial UART interface
- **Micro-B USB Connector**: Standard USB interface
- **Full Hardware Handshaking**: RTS, CTS, DTR, DSR, DCD, RI signals
- **Arduino Compatible**: Standard 6-pin header (DTR, RXI, TXO, VCC, CTS, GND)
- **TX/RX LEDs**: Visual indication of serial activity
- **3.3V/5V Selectable**: Voltage flexibility for different logic levels
- **5V Tolerant I/O**: Safe interfacing with various logic levels

## Pin Headers

### JP1 - Arduino Compatible Header
| Pin | Function |
|-----|----------|
| 1 | DTR |
| 2 | RXI |
| 3 | TXO |
| 4 | VCC |
| 5 | CTS |
| 6 | GND |

### JP2 - Extended UART Header
| Pin | Function |
|-----|----------|
| 1 | RTS |
| 2 | RXO |
| 3 | TXI |
| 4 | RI |
| 5 | DSR |
| 6 | DCD |
| 7 | GND |

## Components

- U1: FT231X (SSOP-20)
- USB: Micro-B USB Connector
- F1: 500mA Polyfuse
- R1, R2: 330Ω LED resistors
- LED1: TX LED (Green)
- LED2: RX LED (Yellow)
- C1-C4: Decoupling capacitors

## Usage

```tsx
import { SparkFunFT231XBreakout } from "./boards/SparkFun-FT231X-Breakout"

export default () => <SparkFunFT231XBreakout />
```

## Reference

- [SparkFun Product Page](https://www.sparkfun.com/products/13263)
- [FT231X Datasheet](http://cdn.sparkfun.com/datasheets/Components/General%20IC/DS_FT231X.pdf)
- [Schematic](http://cdn.sparkfun.com/datasheets/BreakoutBoards/ft231x-breakout-v11.pdf)
Loading
Loading