seveibar/am3352-dev-board-4layer-dogbone
Defines PCB footprints and pin mappings for a TI AM3352ZCZ100 processor, JST GH connectors, and assembly-part lookup helpers for capacitors, resistors, and headers.
- Version
- 0.1.5
- License
- unset
- Stars
- 0
design/schematic-layout.tsx
import plan from './schematic-plan.json'
export const sch=(name:string):any=>{const p:any=(plan.placements as Record<string,unknown>)[name]??{};return {...p,schRotation:name.startsWith("C_")?270:p.schRotation,schX:p.schX*.25,schY:p.schY*.25,...(p.schWidth?{schWidth:p.schWidth*.25,schHeight:p.schHeight*.25}:{})}}
const sheets=[['01-CPU-power','Processor supplies'],['02-DDR','DDR3 memory and references'],['03-Interfaces','Storage, USB and cable interfaces'],['04-Clocks-reset','Clocks, reset and JTAG'],['05-PMIC','Power input and TPS65217C'],['06-Boot','SYSBOOT selectors'],['07-Unused','Unused processor pins'],['08-Decoupling','Processor decoupling banks']]
export function SchematicPages(){return <>
{sheets.map(([name,title],i)=><schematicsheet name={name} displayName={title} sheetIndex={i+1} sheetWidth={360} sheetHeight={310}>
<schematictext text={`AM3352 / ${title}`} schX={-15} schY={12} fontSize={0.5} anchor="left"/>
<schematictext text={name==='03-Interfaces'?'JST-GH 1.25 mm | 3.3 V logic | UART TX/RX named from board perspective':name==='06-Boot'?'Each selector: 1 = 3V3, 2 = SYSBOOT via 100k, 3 = GND. Fit one shunt per bit.':name==='07-Unused'?'Unused / reserved package pins shown for review; no external connections fitted.':'Matching net labels are electrically connected across sheets.'} schX={-15} schY={11} fontSize={0.18} anchor="left"/>
</schematicsheet>)}
{plan.boxes.map(b=><schematicbox name={`${b.chip}_${b.name}`} chipRef={`chip.${b.chip}`} title={b.title} pinLabels={b.pinLabels as Record<string,string[]>} schSheetName={b.sheet} schX={b.x*.25} schY={b.y*.25} width={5} height={b.height*.25} schPinArrangement={{leftSide:Object.keys(b.pinLabels).slice(0,Math.ceil(Object.keys(b.pinLabels).length/2)),rightSide:Object.keys(b.pinLabels).slice(Math.ceil(Object.keys(b.pinLabels).length/2))}}/>)}
</>}