{ "schemaVersion": "0.2.4", "contentVersion": "0.2.0", "headerVersion": "0.2.0", "device": { "fe310": { "displayName": "Freedom E310-G000", "description": "The FE310-G000 is the first Freedom E300 SoC, and is the industry's first commercially available RISC-V SoC. The FE310-G000 is built around the E31 Core Complex instantiated in the Freedom E300 platform.", "supplier": { "name": "sifive", "id": "1", "displayName": "SiFive", "fullName": "SiFive, Inc.", "contact": "info@sifive.com" }, "busWidth": "32", "resetMask": "all", "resetValue": "0x00000000", "access": "rw", "headerGuardPrefix": "SIFIVE_DEVICES_FE310_", "headerTypePrefix": "sifive_fe310_", "headerInterruptPrefix": "sifive_fe310_interrupt_global_", "headerInterruptEnumPrefix": "riscv_interrupts_global_", "revision": "r0p0", "numInterrupts": "51", "priorityBits": "3", "regWidth": "32", "cores": { "e31": { "harts": "1", "isa": "RV32IMAC", "isaVersion": "2.2", "mpu": "pmp", "mmu": "none", "localInterrupts": { "machine_software": { "description": "Machine Software Interrupt", "value": "3" }, "machine_timer": { "description": "Machine Timer Interrupt", "value": "7" }, "machine_ext": { "description": "Machine External Interrupt", "value": "11" } }, "numLocalInterrupts": "0" } }, "peripherals": { "clint": { "description": "Core Complex Local Interruptor (CLINT) Peripheral", "baseAddress": "0x02000000", "size": "0x10000", "registers": { "msip": { "description": "MSIP (Machine-mode Software Interrupts) Register per Hart", "addressOffset": "0x0000", "arraySize": "1" } }, "clusters": { "mtimecmp": { "description": "Machine Time Compare Registers per Hart", "addressOffset": "0x4000", "arraySize": "1", "registers": { "low": { "description": "Machine Compare Register Low", "addressOffset": "0x0000" }, "high": { "description": "Machine Compare Register High", "addressOffset": "0x0004" } } }, "mtime": { "description": "Machine Time Register", "addressOffset": "0xBFF8", "access": "r", "registers": { "low": { "description": "Machine Time Register Low", "addressOffset": "0x0000" }, "high": { "description": "Machine Time Register High", "addressOffset": "0x0004" } } } } }, "plic": { "description": "Platform-Level Interrupt Controller (PLIC) Peripheral", "baseAddress": "0x0C000000", "size": "0x4000000", "registers": { "priorities": { "arraySize": "52", "description": "Interrupt Priorities Registers; 0 is reserved.", "addressOffset": "0x0000", "fields": { "value": { "description": "The priority for a given global interrupt", "bitOffset": "0", "bitWidth": "3", "resetMask": "all", "resetValue": "0x0" } } }, "pendings": { "arraySize": "2", "description": "Interrupt Pending Bits Registers", "addressOffset": "0x1000", "access": "r" } }, "clusters": { "enablestarget0": { "description": "Hart 0 Interrupt Enable Bits", "addressOffset": "0x00002000", "clusters": { "m": { "addressOffset": "0x0000", "description": "Hart 0 M-mode Interrupt Enable Bits", "registers": { "enables": { "arraySize": "2", "description": "Interrupt Enable Bits Registers", "addressOffset": "0x0000" } } } } }, "target0": { "description": "Hart 0 Interrupt Thresholds", "addressOffset": "0x00200000", "clusters": { "m": { "addressOffset": "0x0000", "description": "Hart 0 M-Mode Interrupt Threshold", "registers": { "threshold": { "description": "The Priority Threshold Register", "addressOffset": "0x0000", "fields": { "value": { "description": "The priority threshold value", "bitOffset": "0", "bitWidth": "3", "resetMask": "all", "resetValue": "0x0" } } }, "claimcomplete": { "description": "The Interrupt Claim/Completion Register", "addressOffset": "0x0004" } } } } } } }, "wdog": { "description": "Watchdog Timer (WDT), part of Always-On Domain", "baseAddress": "0x10000000", "size": "0x0040", "resetMask": "none", "registers": { "cfg": { "description": "Watchdog Configuration Register", "addressOffset": "0x0000", "fields": { "scale": { "description": "Watchdog counter scale", "bitOffset": "0", "bitWidth": "4" }, "rsten": { "description": "Watchdog full reset enable", "bitOffset": "8", "bitWidth": "1", "resetMask": "all", "resetValue": "0x0" }, "zerocmp": { "description": "Watchdog zero on comparator", "bitOffset": "9", "bitWidth": "1" }, "enalways": { "description": "Watchdog enable counter always", "bitOffset": "12", "bitWidth": "1", "resetMask": "all", "resetValue": "0x0" }, "encoreawake": { "description": "Watchdog counter only when awake", "bitOffset": "13", "bitWidth": "1", "resetMask": "all", "resetValue": "0x0" }, "cmpip": { "description": "Watchdog interrupt pending", "bitOffset": "28", "bitWidth": "1" } } }, "count": { "description": "Watchdog Count Register", "addressOffset": "0x0008" }, "scale": { "description": "Watchdog Scale Register", "addressOffset": "0x0010", "fields": { "value": { "description": "Watchdog scale value", "bitOffset": "0", "bitWidth": "16" } } }, "feed": { "description": "Watchdog Feed Address Register", "addressOffset": "0x0018" }, "key": { "description": "Watchdog Key Register", "addressOffset": "0x001C" }, "cmp": { "description": "Watchdog Compare Register", "addressOffset": "0x0020", "fields": { "value": { "description": "Watchdog compare value", "bitOffset": "0", "bitWidth": "16" } } } }, "interrupts": { "wdogcmp": { "description": "Watchdog Compare Interrupt", "value": "1" } } }, "rtc": { "description": "Real-Time Clock (RTC), part of Always-On Domain", "baseAddress": "0x10000040", "size": "0x0030", "resetMask": "none", "registers": { "cfg": { "description": "RTC Configuration Register", "addressOffset": "0x0000", "fields": { "scale": { "description": "RTC clock rate scale", "bitOffset": "0", "bitWidth": "4" }, "enalways": { "description": "RTC counter enable", "bitOffset": "12", "bitWidth": "1", "resetMask": "all", "resetValue": "0x0" }, "cmpip": { "description": "RTC comparator interrupt pending", "bitOffset": "28", "bitWidth": "1", "access": "r" } } }, "low": { "description": "RTC Counter Register Low", "addressOffset": "0x0008" }, "high": { "description": "RTC Counter Register High", "addressOffset": "0x000C", "fields": { "value": { "description": "RTC counter register, high bits", "bitOffset": "0", "bitWidth": "16" } } }, "scale": { "description": "RTC Scale Register", "addressOffset": "0x0010" }, "cmp": { "description": "RTC Compare Register", "addressOffset": "0x0020" } }, "interrupts": { "rtccmp": { "description": "RTC Compare Interrupt", "value": "2" } } }, "pmu": { "description": "Power-Management Unit (PMU), part of Always-On Domain", "baseAddress": "0x10000100", "size": "0x0050", "resetMask": "none", "registers": { "wakeupi": { "description": "Wakeup program instruction Registers", "addressOffset": "0x0000", "arraySize": "8" }, "sleepi": { "description": "Sleep Program Instruction Registers", "addressOffset": "0x0020", "arraySize": "8" }, "ie": { "description": "PMU Interrupt Enables Register", "addressOffset": "0x0040", "fields": { "rtc": { "description": "RTC Comparator active", "bitOffset": "1", "bitWidth": "1" }, "dwakeup": { "description": "dwakeup_n pin active", "bitOffset": "2", "bitWidth": "1" } } }, "cause": { "description": "PMU Wakeup Cause Register", "addressOffset": "0x0044", "fields": { "wakeupcause": { "description": "Wakeup cause", "bitOffset": "0", "bitWidth": "2", "access": "r", "enumerations": { "wakeupcause-enum": { "description": "Wakeup Cause Values Enumeration", "values": { "0": { "displayName": "reset", "description": "Reset Wakeup" }, "1": { "displayName": "rtc", "description": "RTC Wakeup" }, "2": { "displayName": "dwakeup", "description": "Digital input Wakeup" }, "*": { "displayName": "undefined" } } } } }, "resetcause": { "description": "Reset cause", "bitOffset": "8", "bitWidth": "2", "access": "r", "enumerations": { "resetcause-enum": { "description": "Reset Cause Values Enumeration", "values": { "1": { "displayName": "external", "description": "External reset" }, "2": { "displayName": "watchdog", "description": "Watchdog timer reset" }, "*": { "displayName": "undefined" } } } } } } }, "sleep": { "description": "PMU Initiate Sleep Sequence Register", "addressOffset": "0x0048" }, "key": { "description": "PMU Key Register", "addressOffset": "0x004C" } } }, "aon": { "description": "Always-On (AON) Domain", "baseAddress": "0x10000070", "size": "0x0090", "resetMask": "none", "registers": { "lfrosccfg": { "description": "Internal Programmable Low-Frequency Ring Oscillator Register", "addressOffset": "0x0000", "fields": { "div": { "description": "LFROSC divider", "bitOffset": "0", "bitWidth": "6", "resetMask": "all", "resetValue": "0x04" }, "trim": { "description": "LFROSC trim value", "bitOffset": "16", "bitWidth": "5", "resetMask": "all", "resetValue": "0x10" }, "en": { "description": "LFROSC enable", "bitOffset": "30", "bitWidth": "1", "resetMask": "all", "resetValue": "0x1" }, "rdy": { "description": "LFROSC ready", "bitOffset": "31", "bitWidth": "1", "access": "r" } } }, "backup": { "description": "Backup Registers", "addressOffset": "0x0010", "arraySize": "32" } } }, "prci": { "description": "Power, Reset, Clock, Interrupt (PRCI) Peripheral", "baseAddress": "0x10008000", "size": "0x8000", "registers": { "hfrosccfg": { "description": "Internal Trimmable Programmable 72 MHz Oscillator Register", "addressOffset": "0x0000", "fields": { "div": { "description": "HFROSC divider", "bitOffset": "0", "bitWidth": "6", "resetMask": "all", "resetValue": "0x04" }, "trim": { "description": "HFROSC trim value", "bitOffset": "16", "bitWidth": "5", "resetMask": "all", "resetValue": "0x10" }, "en": { "description": "HFROSC enable", "bitOffset": "30", "bitWidth": "1", "resetMask": "all", "resetValue": "0x1" }, "rdy": { "description": "HFROSC ready", "bitOffset": "31", "bitWidth": "1", "access": "r" } } }, "hfxosccfg": { "description": "External 16 MHz Crystal Oscillator Register", "addressOffset": "0x0004", "fields": { "en": { "description": "HFXOSC enable", "bitOffset": "30", "bitWidth": "1", "resetMask": "all", "resetValue": "0x1" }, "rdy": { "description": "HFXOSC ready", "bitOffset": "31", "bitWidth": "1", "access": "r" } } }, "pllcfg": { "description": "Internal High-Frequency PLL (HFPLL) Register", "addressOffset": "0x0008", "fields": { "r": { "description": "PLL R input divider value", "bitOffset": "0", "bitWidth": "3", "resetMask": "all", "resetValue": "0x1", "enumerations": { "pllr-enum": { "description": "Reference Clock R Divide Ratio Enumeration", "values": { "0": { "displayName": "/1", "headerName": "div1", "description": "Unchanged" }, "1": { "displayName": "/2", "headerName": "div2", "description": "Divided by 2" }, "2": { "displayName": "/3", "headerName": "div3", "description": "Divided by 3" }, "3": { "displayName": "/4", "headerName": "div4", "description": "Divided by 4" } } } } }, "f": { "description": "PLL F multiplier value", "bitOffset": "4", "bitWidth": "6", "resetMask": "all", "resetValue": "0x1F", "enumerations": { "pllf-enum": { "description": "Reference Clock F Multiplier Ratio Enumeration", "values": { "0": { "displayName": "*2", "headerName": "mul2", "description": "Multiplied by 2" }, "1": { "displayName": "*4", "headerName": "mul4", "description": "Multiplied by 4" }, "2": { "displayName": "*6", "headerName": "mul6", "description": "Multiplied by 6" }, "3": { "displayName": "*8", "headerName": "mul8", "description": "Multiplied by 8" }, "4": { "displayName": "*10", "headerName": "mul10", "description": "Multiplied by 10" }, "5": { "displayName": "*12", "headerName": "mul12", "description": "Multiplied by 12" }, "6": { "displayName": "*14", "headerName": "mul14", "description": "Multiplied by 14" }, "7": { "displayName": "*16", "headerName": "mul16", "description": "Multiplied by 16" }, "8": { "displayName": "*18", "headerName": "mul18", "description": "Multiplied by 18" }, "9": { "displayName": "*20", "headerName": "mul20", "description": "Multiplied by 20" }, "10": { "displayName": "*22", "headerName": "mul22", "description": "Multiplied by 22" }, "11": { "displayName": "*24", "headerName": "mul24", "description": "Multiplied by 24" }, "12": { "displayName": "*26", "headerName": "mul26", "description": "Multiplied by 26" }, "13": { "displayName": "*28", "headerName": "mul28", "description": "Multiplied by 28" }, "14": { "displayName": "*30", "headerName": "mul30", "description": "Multiplied by 30" }, "15": { "displayName": "*32", "headerName": "mul32", "description": "Multiplied by 32" }, "16": { "displayName": "*34", "headerName": "mul34", "description": "Multiplied by 34" }, "17": { "displayName": "*36", "headerName": "mul36", "description": "Multiplied by 36" }, "18": { "displayName": "*38", "headerName": "mul38", "description": "Multiplied by 38" }, "19": { "displayName": "*40", "headerName": "mul40", "description": "Multiplied by 40" }, "20": { "displayName": "*42", "headerName": "mul42", "description": "Multiplied by 42" }, "21": { "displayName": "*44", "headerName": "mul44", "description": "Multiplied by 44" }, "22": { "displayName": "*46", "headerName": "mul46", "description": "Multiplied by 46" }, "23": { "displayName": "*48", "headerName": "mul48", "description": "Multiplied by 48" }, "24": { "displayName": "*50", "headerName": "mul50", "description": "Multiplied by 50" }, "25": { "displayName": "*52", "headerName": "mul52", "description": "Multiplied by 52" }, "26": { "displayName": "*54", "headerName": "mul54", "description": "Multiplied by 54" }, "27": { "displayName": "*56", "headerName": "mul56", "description": "Multiplied by 56" }, "28": { "displayName": "*58", "headerName": "mul58", "description": "Multiplied by 58" }, "29": { "displayName": "*60", "headerName": "mul60", "description": "Multiplied by 60" }, "30": { "displayName": "*62", "headerName": "mul62", "description": "Multiplied by 62" }, "31": { "displayName": "*64", "headerName": "mul64", "description": "Multiplied by 64" }, "32": { "displayName": "*66", "headerName": "mul66", "description": "Multiplied by 66" }, "33": { "displayName": "*68", "headerName": "mul68", "description": "Multiplied by 68" }, "34": { "displayName": "*70", "headerName": "mul70", "description": "Multiplied by 70" }, "35": { "displayName": "*72", "headerName": "mul72", "description": "Multiplied by 72" }, "36": { "displayName": "*74", "headerName": "mul74", "description": "Multiplied by 74" }, "37": { "displayName": "*76", "headerName": "mul76", "description": "Multiplied by 76" }, "38": { "displayName": "*78", "headerName": "mul78", "description": "Multiplied by 78" }, "39": { "displayName": "*80", "headerName": "mul80", "description": "Multiplied by 80" }, "40": { "displayName": "*82", "headerName": "mul82", "description": "Multiplied by 82" }, "41": { "displayName": "*84", "headerName": "mul84", "description": "Multiplied by 84" }, "42": { "displayName": "*86", "headerName": "mul86", "description": "Multiplied by 86" }, "43": { "displayName": "*88", "headerName": "mul88", "description": "Multiplied by 88" }, "44": { "displayName": "*90", "headerName": "mul90", "description": "Multiplied by 90" }, "45": { "displayName": "*92", "headerName": "mul92", "description": "Multiplied by 92" }, "46": { "displayName": "*94", "headerName": "mul94", "description": "Multiplied by 94" }, "47": { "displayName": "*96", "headerName": "mul96", "description": "Multiplied by 96" }, "48": { "displayName": "*98", "headerName": "mul98", "description": "Multiplied by 98" }, "49": { "displayName": "*100", "headerName": "mul100", "description": "Multiplied by 100" }, "50": { "displayName": "*102", "headerName": "mul102", "description": "Multiplied by 102" }, "51": { "displayName": "*104", "headerName": "mul104", "description": "Multiplied by 104" }, "52": { "displayName": "*106", "headerName": "mul106", "description": "Multiplied by 106" }, "53": { "displayName": "*108", "headerName": "mul108", "description": "Multiplied by 108" }, "54": { "displayName": "*110", "headerName": "mul110", "description": "Multiplied by 110" }, "55": { "displayName": "*112", "headerName": "mul112", "description": "Multiplied by 112" }, "56": { "displayName": "*114", "headerName": "mul114", "description": "Multiplied by 114" }, "57": { "displayName": "*116", "headerName": "mul116", "description": "Multiplied by 116" }, "58": { "displayName": "*118", "headerName": "mul118", "description": "Multiplied by 118" }, "59": { "displayName": "*120", "headerName": "mul120", "description": "Multiplied by 120" }, "60": { "displayName": "*122", "headerName": "mul122", "description": "Multiplied by 122" }, "61": { "displayName": "*124", "headerName": "mul124", "description": "Multiplied by 124" }, "62": { "displayName": "*126", "headerName": "mul126", "description": "Multiplied by 126" }, "63": { "displayName": "*128", "headerName": "mul128", "description": "Multiplied by 128" } } } } }, "q": { "description": "PLL Q output divider value", "bitOffset": "10", "bitWidth": "2", "resetMask": "all", "resetValue": "0x3", "enumerations": { "pllq-enum": { "description": "Reference Clock Q Divide Ratio Enumeration", "values": { "*": { "displayName": "n/a", "description": "Not supported" }, "1": { "displayName": "/2", "headerName": "div2", "description": "Divided by 2" }, "2": { "displayName": "/4", "headerName": "div4", "description": "Divided by 4" }, "3": { "displayName": "/8", "headerName": "div8", "description": "Divided by 8" } } } } }, "sel": { "description": "PLL select", "bitOffset": "16", "bitWidth": "1", "resetMask": "all", "resetValue": "0x0" }, "refsel": { "description": "PLL reference select", "bitOffset": "17", "bitWidth": "1", "resetMask": "all", "resetValue": "0x1" }, "bypass": { "description": "PLL bypass", "bitOffset": "18", "bitWidth": "1", "resetMask": "all", "resetValue": "0x1" }, "lock": { "description": "PLL lock indicator", "bitOffset": "31", "bitWidth": "1", "access": "r" } } }, "plloutdiv": { "description": "PLL Output Divider", "addressOffset": "0x000C" } } }, "otp": { "description": "One-Time Programmable Memory (OTP) Peripheral", "baseAddress": "0x10010000", "size": "0x1000", "registers": { "lock": { "description": "Programmed-I/O Lock Register", "addressOffset": "0x0000" }, "ck": { "description": "Device Clock Signal Register", "addressOffset": "0x0004" }, "oe": { "description": "Device Output-Enable Signal Register", "addressOffset": "0x0008" }, "sel": { "description": "Device Chip-Select Signal Register", "addressOffset": "0x000C" }, "we": { "description": "Device Write-Enable Signal Register", "addressOffset": "0x0010" }, "mr": { "description": "Device Mode Register", "addressOffset": "0x0014" }, "mrr": { "description": "Read-Voltage Regulator Control Register", "addressOffset": "0x0018" }, "mpp": { "description": "Write-Voltage Charge Pump Control Register", "addressOffset": "0x001C" }, "vrren": { "description": "Read-Voltage Enable Register", "addressOffset": "0x0020" }, "vppen": { "description": "Write-Voltage Enable Register", "addressOffset": "0x0024" }, "a": { "description": "Device Address Register", "addressOffset": "0x0028" }, "d": { "description": "Device Data Input Register", "addressOffset": "0x002C" }, "q": { "description": "Device Data Output Register", "addressOffset": "0x0030" }, "rsctrl": { "description": "Read Sequencer Control Register", "addressOffset": "0x0034", "fields": { "scale": { "description": "OTP timescale", "bitOffset": "0", "bitWidth": "2", "resetMask": "all", "resetValue": "0x1" }, "tas": { "description": "Address setup time", "bitOffset": "3", "bitWidth": "1", "resetMask": "all", "resetValue": "0x0" }, "trp": { "description": "Read pulse time", "bitOffset": "4", "bitWidth": "1" }, "tracc": { "description": "Read access time", "bitOffset": "5", "bitWidth": "1" } } } } }, "gpio": { "description": "General Purpose Input/Output Controller (GPIO) Peripheral", "baseAddress": "0x10012000", "size": "0x1000", "registers": { "value": { "description": "Pin Value Register", "addressOffset": "0x000", "fields": { "bit": { "repeatGenerator": "0-31", "description": "Value Bit Field", "bitOffset": "0", "bitWidth": "1", "headerName": "" } } }, "inputen": { "description": "Pin Input Enable Register", "addressOffset": "0x004", "fields": { "bit": { "repeatGenerator": "0-31", "description": "Pin Input Enable Bit Field", "bitOffset": "0", "bitWidth": "1", "headerName": "" } } }, "outputen": { "description": "Pin Output Enable Register", "addressOffset": "0x008", "fields": { "bit": { "repeatGenerator": "0-31", "description": "Pin Output Enable Bit Field", "bitOffset": "0", "bitWidth": "1", "headerName": "" } } }, "port": { "description": "Output Port Value Register", "addressOffset": "0x00C", "fields": { "bit": { "repeatGenerator": "0-31", "description": "Output Port Value Bit Field", "bitOffset": "0", "bitWidth": "1", "headerName": "" } } }, "pue": { "description": "Internal Pull-up Enable Register", "addressOffset": "0x010", "fields": { "bit": { "repeatGenerator": "0-31", "description": "Internal Pull-up Enable Bit Field", "bitOffset": "0", "bitWidth": "1", "headerName": "" } } }, "ds": { "description": "Pin Drive Strength Register", "addressOffset": "0x014", "fields": { "bit": { "repeatGenerator": "0-31", "description": "Pin Drive Strength Bit Field", "bitOffset": "0", "bitWidth": "1", "headerName": "" } } }, "riseie": { "description": "Rise Interrupt Enable Register", "addressOffset": "0x018", "fields": { "bit": { "repeatGenerator": "0-31", "description": "Rise Interrupt Enable Bit Field", "bitOffset": "0", "bitWidth": "1", "headerName": "" } } }, "riseip": { "description": "Rise Interrupt Pending Register", "addressOffset": "0x01C", "fields": { "bit": { "repeatGenerator": "0-31", "description": "Rise Interrupt Pending Bit Field", "bitOffset": "0", "bitWidth": "1", "headerName": "" } } }, "fallie": { "description": "Fall Interrupt Enable Register", "addressOffset": "0x020", "fields": { "bit": { "repeatGenerator": "0-31", "description": "Fall Interrupt Enable Bit Field", "bitOffset": "0", "bitWidth": "1", "headerName": "" } } }, "fallip": { "description": "Fall Interrupt Pending Register", "addressOffset": "0x024", "fields": { "bit": { "repeatGenerator": "0-31", "description": "Fall Interrupt Pending Bit Field", "bitOffset": "0", "bitWidth": "1", "headerName": "" } } }, "highie": { "description": "High Interrupt Enable Register", "addressOffset": "0x028", "fields": { "bit": { "repeatGenerator": "0-31", "description": "High Interrupt Enable Bit Field", "bitOffset": "0", "bitWidth": "1", "headerName": "" } } }, "highip": { "description": "High Interrupt Pending Register", "addressOffset": "0x02C", "fields": { "bit": { "repeatGenerator": "0-31", "description": "High Interrupt Pending Bit Field", "bitOffset": "0", "bitWidth": "1", "headerName": "" } } }, "lowie": { "description": "Low Interrupt Enable Register", "addressOffset": "0x030", "fields": { "bit": { "repeatGenerator": "0-31", "description": "Low Interrupt Enable Bit Field", "bitOffset": "0", "bitWidth": "1", "headerName": "" } } }, "lowip": { "description": "Low Interrupt Pending Register", "addressOffset": "0x034", "fields": { "bit": { "repeatGenerator": "0-31", "description": "Low Interrupt Pending Bit Field", "bitOffset": "0", "bitWidth": "1", "headerName": "" } } }, "iofen": { "description": "HW I/O Function Enable Register", "addressOffset": "0x038", "fields": { "bit": { "repeatGenerator": "0-31", "description": "HW I/O Function Enable Bit Field", "bitOffset": "0", "bitWidth": "1", "headerName": "" } } }, "iofsel": { "description": "HW I/O Function Select Register", "addressOffset": "0x03C", "fields": { "bit": { "repeatGenerator": "0-31", "description": "HW I/O Function Select Bit Field", "bitOffset": "0", "bitWidth": "1", "headerName": "" } } }, "outxor": { "description": "Output XOR (invert) Register", "addressOffset": "0x040", "fields": { "bit": { "repeatGenerator": "0-31", "description": "Output XOR Bit Field", "bitOffset": "0", "bitWidth": "1", "headerName": "" } } } }, "interrupts": { "gpio0": { "description": "GPIO0 Interrupt", "value": "8" }, "gpio1": { "description": "GPIO1 Interrupt", "value": "9" }, "gpio2": { "description": "GPIO2 Interrupt", "value": "10" }, "gpio3": { "description": "GPIO3 Interrupt", "value": "11" }, "gpio4": { "description": "GPIO4 Interrupt", "value": "12" }, "gpio5": { "description": "GPIO5 Interrupt", "value": "13" }, "gpio6": { "description": "GPIO6 Interrupt", "value": "14" }, "gpio7": { "description": "GPIO7 Interrupt", "value": "15" }, "gpio8": { "description": "GPIO8 Interrupt", "value": "16" }, "gpio9": { "description": "GPIO9 Interrupt", "value": "17" }, "gpio10": { "description": "GPIO10 Interrupt", "value": "18" }, "gpio11": { "description": "GPIO11 Interrupt", "value": "19" }, "gpio12": { "description": "GPIO12 Interrupt", "value": "20" }, "gpio13": { "description": "GPIO13 Interrupt", "value": "21" }, "gpio14": { "description": "GPIO14 Interrupt", "value": "22" }, "gpio15": { "description": "GPIO15 Interrupt", "value": "23" }, "gpio16": { "description": "GPIO16 Interrupt", "value": "24" }, "gpio17": { "description": "GPIO17 Interrupt", "value": "25" }, "gpio18": { "description": "GPIO18 Interrupt", "value": "26" }, "gpio19": { "description": "GPIO19 Interrupt", "value": "27" }, "gpio20": { "description": "GPIO20 Interrupt", "value": "28" }, "gpio21": { "description": "GPIO21 Interrupt", "value": "29" }, "gpio22": { "description": "GPIO22 Interrupt", "value": "30" }, "gpio23": { "description": "GPIO23 Interrupt", "value": "31" }, "gpio24": { "description": "GPIO24 Interrupt", "value": "32" }, "gpio25": { "description": "GPIO25 Interrupt", "value": "33" }, "gpio26": { "description": "GPIO26 Interrupt", "value": "34" }, "gpio27": { "description": "GPIO27 Interrupt", "value": "35" }, "gpio28": { "description": "GPIO28 Interrupt", "value": "36" }, "gpio29": { "description": "GPIO29 Interrupt", "value": "37" }, "gpio30": { "description": "GPIO30 Interrupt", "value": "38" }, "gpio31": { "description": "GPIO31 Interrupt", "value": "39" } } }, "uart0": { "description": "Universal Asynchronous Receiver/Transmitter (UART) Peripheral", "baseAddress": "0x10013000", "size": "0x1000", "resetMask": "none", "groupName": "uart", "registers": { "txdata": { "description": "Transmit Data Register", "addressOffset": "0x000", "fields": { "data": { "description": "Transmit data", "bitOffset": "0", "bitWidth": "8" }, "full": { "description": "Transmit FIFO full", "bitOffset": "31", "bitWidth": "1" } } }, "rxdata": { "description": "Receive Data Register", "addressOffset": "0x004", "resetMask": "none", "fields": { "data": { "description": "Received data", "bitOffset": "0", "bitWidth": "8", "access": "r" }, "empty": { "description": "Receive FIFO empty", "bitOffset": "31", "bitWidth": "1" } } }, "txctrl": { "description": "Transmit Control Register ", "addressOffset": "0x008", "fields": { "txen": { "description": "Transmit enable", "bitOffset": "0", "bitWidth": "1", "resetMask": "all", "resetValue": "0x0" }, "nstop": { "description": "Number of stop bits", "bitOffset": "1", "bitWidth": "1", "resetMask": "all", "resetValue": "0x0" }, "txcnt": { "description": "Transmit watermark level", "bitOffset": "16", "bitWidth": "3", "resetMask": "all", "resetValue": "0x0" } } }, "rxctrl": { "description": "Receive Control Register", "addressOffset": "0x00C", "fields": { "rxen": { "description": "Receive enable", "bitOffset": "0", "bitWidth": "1", "resetMask": "all", "resetValue": "0x0" }, "rxcnt": { "description": "Receive watermark level", "bitOffset": "16", "bitWidth": "3", "resetMask": "all", "resetValue": "0x0" } } }, "ie": { "description": "Interrupt Enable Register", "addressOffset": "0x010", "fields": { "txwm": { "description": "Transmit watermark interrupt enable", "bitOffset": "0", "bitWidth": "1", "resetMask": "all", "resetValue": "0x0" }, "rxwm": { "description": "Receive watermark interrupt enable", "bitOffset": "1", "bitWidth": "1", "resetMask": "all", "resetValue": "0x0" } } }, "ip": { "description": "Interrupt Pending Register", "addressOffset": "0x014", "access": "r", "fields": { "txwm": { "description": "Transmit watermark interrupt pending", "bitOffset": "0", "bitWidth": "1" }, "rxwm": { "description": "Receive watermark interrupt pending", "bitOffset": "1", "bitWidth": "1" } } }, "div": { "description": "Baud Rate Divisor Register", "addressOffset": "0x018", "fields": { "value": { "description": "Baud rate divisor", "bitOffset": "0", "bitWidth": "16", "resetMask": "all", "resetValue": "0x0000FFFF" } } } }, "interrupts": { "uart0": { "description": "UART0 Interrupt", "value": "3" } } }, "spi0": { "description": "Serial Peripheral Interface (SPI) Peripheral", "baseAddress": "0x10014000", "size": "0x1000", "resetMask": "none", "groupName": "spi", "registers": { "sckdiv": { "description": "Serial clock divisor Register", "addressOffset": "0x000", "fields": { "scale": { "description": "Divisor for serial clock", "bitOffset": "0", "bitWidth": "12", "resetMask": "all", "resetValue": "0x003" } } }, "sckmode": { "description": "Serial Clock Mode Register", "addressOffset": "0x004", "fields": { "pha": { "description": "Serial clock phase", "bitOffset": "0", "bitWidth": "1", "resetMask": "all", "resetValue": "0x0" }, "pol": { "description": "Serial clock polarity", "bitOffset": "1", "bitWidth": "1", "resetMask": "all", "resetValue": "0x0" } } }, "csid": { "description": "Chip Select ID Register", "addressOffset": "0x010", "resetMask": "all", "resetValue": "0x00000000" }, "csdef": { "description": "Chip Select Default Register", "addressOffset": "0x014", "resetMask": "all", "resetValue": "0x00000001" }, "csmode": { "description": "Chip Select Mode Register", "addressOffset": "0x018", "fields": { "mode": { "description": "Chip select mode", "bitOffset": "0", "bitWidth": "2", "resetMask": "all", "resetValue": "0x0", "enumerations": { "csmode-enum": { "description": "Chip Select Modes Enumeration", "values": { "0": { "displayName": "auto", "description": "Assert/de-assert CS at the beginning/end of each frame" }, "*": { "displayName": "reserved" }, "2": { "displayName": "hold", "description": "Keep CS continuously asserted after the initial frame" }, "3": { "displayName": "off", "description": "Disable hardware control of the CS pin" } } } } } } }, "delay0": { "description": "Delay Control 0 Register", "addressOffset": "0x028", "fields": { "cssck": { "description": "CS to SCK Delay", "bitOffset": "0", "bitWidth": "8", "resetMask": "all", "resetValue": "0x01" }, "sckcs": { "description": "SCK to CS Delay", "bitOffset": "16", "bitWidth": "8", "resetMask": "all", "resetValue": "0x01" } } }, "delay1": { "description": "Delay Control 1 Register", "addressOffset": "0x02C", "fields": { "intercs": { "description": "Minimum CS inactive time", "bitOffset": "0", "bitWidth": "8", "resetMask": "all", "resetValue": "0x01" }, "interxfr": { "description": "Maximum interframe delay", "bitOffset": "16", "bitWidth": "8", "resetMask": "all", "resetValue": "0x01" } } }, "fmt": { "description": "Frame Format Register", "addressOffset": "0x040", "fields": { "proto": { "description": "SPI Protocol", "bitOffset": "0", "bitWidth": "2", "resetMask": "all", "resetValue": "0x0", "enumerations": { "proto-enum": { "description": "SPI Protocol Enumeration", "values": { "0": { "displayName": "single", "description": "DQ0 (MOSI), DQ1 (MISO)" }, "1": { "displayName": "dual", "description": "DQ0, DQ1" }, "2": { "displayName": "quad", "description": "DQ0, DQ1, DQ2, DQ3" }, "*": { "displayName": "reserved" } } } } }, "endian": { "description": "SPI endianness", "bitOffset": "2", "bitWidth": "1", "resetMask": "all", "resetValue": "0x0", "enumerations": { "endian-enum": { "description": "SPI Endianness Enumeration", "values": { "0": { "displayName": "msb", "description": "Transmit most-significant bit (MSB) first" }, "1": { "displayName": "lsb", "description": "Transmit least-significant bit (LSB) first" } } } } }, "dir": { "description": "SPI I/O Direction", "bitOffset": "3", "bitWidth": "1", "resetMask": "all", "resetValue": "0x1", "enumerations": { "dir-enum": { "description": "SPI I/O Direction Enumeration", "values": { "0": { "displayName": "rx", "description": "For dual and quad protocols, the DQ pins are tri-stated. For the single protocol, the DQ0 pin is driven with the transmit data as normal." }, "1": { "displayName": "tx", "description": "The receive FIFO is not populated." } } } } }, "len": { "description": "Number of bits per frame", "bitOffset": "16", "bitWidth": "4", "resetMask": "all", "resetValue": "0x8" } } }, "txdata": { "description": "Tx FIFO Data Register", "addressOffset": "0x048", "fields": { "data": { "description": "Transmit data", "bitOffset": "0", "bitWidth": "8", "resetMask": "all", "resetValue": "0x00" }, "full": { "description": "FIFO full flag", "bitOffset": "31", "bitWidth": "1", "access": "r" } } }, "rxdata": { "description": "Rx FIFO Data Register", "addressOffset": "0x04C", "resetMask": "none", "access": "r", "fields": { "data": { "description": "Received data", "bitOffset": "0", "bitWidth": "8" }, "empty": { "description": "FIFO empty flag", "bitOffset": "31", "bitWidth": "1" } } }, "txmark": { "description": "Tx FIFO Watermark Register", "addressOffset": "0x050", "fields": { "value": { "description": "Transmit watermark", "bitOffset": "0", "bitWidth": "3", "resetMask": "all", "resetValue": "0x1" } } }, "rxmark": { "description": "Rx FIFO Watermark Register", "addressOffset": "0x054", "fields": { "value": { "description": "Receive watermark", "bitOffset": "0", "bitWidth": "3", "resetMask": "all", "resetValue": "0x0" } } }, "fctrl": { "description": "Flash Interface Control Register", "addressOffset": "0x060", "fields": { "en": { "description": "SPI Flash Mode Select", "bitOffset": "0", "bitWidth": "1", "resetMask": "all", "resetValue": "0x1" } } }, "ffmt": { "description": "Flash Instruction Format Register", "addressOffset": "0x064", "fields": { "cmden": { "description": "Enable sending of command", "bitOffset": "0", "bitWidth": "1", "resetMask": "all", "resetValue": "0x1" }, "addrlen": { "description": "Number of address bytes(0 to 4)", "bitOffset": "1", "bitWidth": "3", "resetMask": "all", "resetValue": "0x3" }, "padcnt": { "description": "Number of dummy cycles", "bitOffset": "4", "bitWidth": "4", "resetMask": "all", "resetValue": "0x0" }, "cmdproto": { "description": "Protocol for transmitting command", "bitOffset": "8", "bitWidth": "2", "resetMask": "all", "resetValue": "0x0" }, "addrproto": { "description": "Protocol for transmitting address and padding", "bitOffset": "10", "bitWidth": "2", "resetMask": "all", "resetValue": "0x0" }, "dataproto": { "description": "Protocol for receiving data bytes", "bitOffset": "12", "bitWidth": "2", "resetMask": "all", "resetValue": "0x0" }, "cmdcode": { "description": "Value of command byte", "bitOffset": "16", "bitWidth": "8", "resetMask": "all", "resetValue": "0x03" }, "padcode": { "description": "First 8 bits to transmit during dummy cycles", "bitOffset": "24", "bitWidth": "8", "resetMask": "all", "resetValue": "0x0" } } }, "ie": { "description": "Interrupt Enable Register", "addressOffset": "0x070", "fields": { "txwm": { "description": "Transmit watermark enable", "bitOffset": "0", "bitWidth": "1", "access": "r", "resetMask": "all", "resetValue": "0x0" }, "rxwm": { "description": "Receive watermark enable", "bitOffset": "1", "bitWidth": "1", "access": "r", "resetMask": "all", "resetValue": "0x0" } } }, "ip": { "description": "Interrupt Pending Register", "addressOffset": "0x074", "fields": { "txwm": { "description": "Transmit watermark pending", "bitOffset": "0", "bitWidth": "1", "access": "r" }, "rxwm": { "description": "Receive watermark pending", "bitOffset": "1", "bitWidth": "1", "access": "r" } } } }, "interrupts": { "spi0": { "description": "SPI0 Interrupt", "value": "5" } } }, "pwm0": { "description": "Pulse-Width Modulation (PWM) Peripheral", "baseAddress": "0x10015000", "size": "0x1000", "resetMask": "none", "registers": { "cfg": { "description": "Configuration Register", "addressOffset": "0x000", "fields": { "scale": { "description": "Counter scale", "bitOffset": "0", "bitWidth": "4" }, "sticky": { "description": "Sticky - disallow clearing pwmcmpXip bits", "bitOffset": "8", "bitWidth": "1" }, "zerocmp": { "description": "Zero - counter resets to zero after match", "bitOffset": "9", "bitWidth": "1" }, "deglitch": { "description": "Deglitch - latch pwmcmpXip within same cycle", "bitOffset": "10", "bitWidth": "1" }, "enalways": { "description": "Enable always - run continuously", "bitOffset": "12", "bitWidth": "1", "resetMask": "all", "resetValue": "0x0" }, "enoneshot": { "description": "enable one shot - run one cycle", "bitOffset": "13", "bitWidth": "1", "resetMask": "all", "resetValue": "0x0" }, "cmp0center": { "description": "PWM0 Compare Center", "bitOffset": "16", "bitWidth": "1" }, "cmp1center": { "description": "PWM1 Compare Center", "bitOffset": "17", "bitWidth": "1" }, "cmp2center": { "description": "PWM2 Compare Center", "bitOffset": "18", "bitWidth": "1" }, "cmp3center": { "description": "PWM3 Compare Center", "bitOffset": "19", "bitWidth": "1" }, "cmp0gang": { "description": "PWM0/PWM1 Compare Gang", "bitOffset": "24", "bitWidth": "1" }, "cmp1gang": { "description": "PWM1/PWM2 Compare Gang", "bitOffset": "25", "bitWidth": "1" }, "cmp2gang": { "description": "PWM2/PWM3 Compare Gang", "bitOffset": "26", "bitWidth": "1" }, "cmp3gang": { "description": "PWM3/PWM0 Compare Gang", "bitOffset": "27", "bitWidth": "1" }, "cmp0ip": { "description": "PWM0 Interrupt Pending", "bitOffset": "28", "bitWidth": "1" }, "cmp1ip": { "description": "PWM1 Interrupt Pending", "bitOffset": "29", "bitWidth": "1" }, "cmp2ip": { "description": "PWM2 Interrupt Pending", "bitOffset": "30", "bitWidth": "1" }, "cmp3ip": { "description": "PWM3 Interrupt Pending", "bitOffset": "31", "bitWidth": "1" } } }, "count": { "description": "Configuration Register", "addressOffset": "0x008" }, "scale": { "description": "Scale Register", "addressOffset": "0x010", "fields": { "value": { "description": "Compare value", "bitOffset": "0", "bitWidth": "8" } } }, "cmp": { "arraySize": "4", "description": "Compare Registers", "addressOffset": "0x020", "fields": { "value": { "description": "Compare value", "bitOffset": "0", "bitWidth": "8" } } } }, "interrupts": { "pwm0cmp0": { "description": "PWM0 Compare 0 Interrupt", "value": "40" }, "pwm0cmp1": { "description": "PWM0 Compare 1 Interrupt", "value": "41" }, "pwm0cmp2": { "description": "PWM0 Compare 2 Interrupt", "value": "42" }, "pwm0cmp3": { "description": "PWM0 Compare 3 Interrupt", "value": "43" } } }, "uart1": { "baseAddress": "0x10023000", "derivedFrom": "uart0", "groupName": "uart", "interrupts": { "uart1": { "description": "UART1 Interrupt", "value": "4" } } }, "spi1": { "baseAddress": "0x10024000", "derivedFrom": "spi0", "groupName": "spi", "interrupts": { "spi1": { "description": "SPI1 Interrupt", "value": "6" } } }, "pwm1": { "description": "Pulse-Width Modulation (PWM) Peripheral", "baseAddress": "0x10025000", "groupName": "pwm", "size": "0x1000", "resetMask": "none", "groupName": "pwm", "registers": { "cfg": { "description": "Configuration Register", "addressOffset": "0x000", "fields": { "scale": { "description": "Counter scale", "bitOffset": "0", "bitWidth": "4" }, "sticky": { "description": "Sticky - disallow clearing pwmcmpXip bits", "bitOffset": "8", "bitWidth": "1" }, "zerocmp": { "description": "Zero - counter resets to zero after match", "bitOffset": "9", "bitWidth": "1" }, "deglitch": { "description": "Deglitch - latch pwmcmpXip within same cycle", "bitOffset": "10", "bitWidth": "1" }, "enalways": { "description": "Enable always - run continuously", "bitOffset": "12", "bitWidth": "1", "resetMask": "all", "resetValue": "0x0" }, "enoneshot": { "description": "enable one shot - run one cycle", "bitOffset": "13", "bitWidth": "1", "resetMask": "all", "resetValue": "0x0" }, "cmp0center": { "description": "PWM0 Compare Center", "bitOffset": "16", "bitWidth": "1" }, "cmp1center": { "description": "PWM1 Compare Center", "bitOffset": "17", "bitWidth": "1" }, "cmp2center": { "description": "PWM2 Compare Center", "bitOffset": "18", "bitWidth": "1" }, "cmp3center": { "description": "PWM3 Compare Center", "bitOffset": "19", "bitWidth": "1" }, "cmp0gang": { "description": "PWM0/PWM1 Compare Gang", "bitOffset": "24", "bitWidth": "1" }, "cmp1gang": { "description": "PWM1/PWM2 Compare Gang", "bitOffset": "25", "bitWidth": "1" }, "cmp2gang": { "description": "PWM2/PWM3 Compare Gang", "bitOffset": "26", "bitWidth": "1" }, "cmp3gang": { "description": "PWM3/PWM0 Compare Gang", "bitOffset": "27", "bitWidth": "1" }, "cmp0ip": { "description": "PWM0 Interrupt Pending", "bitOffset": "28", "bitWidth": "1" }, "cmp1ip": { "description": "PWM1 Interrupt Pending", "bitOffset": "29", "bitWidth": "1" }, "cmp2ip": { "description": "PWM2 Interrupt Pending", "bitOffset": "30", "bitWidth": "1" }, "cmp3ip": { "description": "PWM3 Interrupt Pending", "bitOffset": "31", "bitWidth": "1" } } }, "count": { "description": "Configuration Register", "addressOffset": "0x008" }, "scale": { "description": "Scale Register", "addressOffset": "0x010", "fields": { "value": { "description": "Compare value", "bitOffset": "0", "bitWidth": "16" } } }, "cmp": { "arraySize": "4", "description": "Compare Registers", "addressOffset": "0x020", "fields": { "value": { "description": "Compare value", "bitOffset": "0", "bitWidth": "16" } } } }, "interrupts": { "pwm1cmp0": { "description": "PWM1 Compare 0 Interrupt", "value": "44" }, "pwm1cmp1": { "description": "PWM1 Compare 1 Interrupt", "value": "45" }, "pwm1cmp2": { "description": "PWM1 Compare 2 Interrupt", "value": "46" }, "pwm1cmp3": { "description": "PWM1 Compare 3 Interrupt", "value": "47" } } }, "spi2": { "baseAddress": "0x10034000", "derivedFrom": "spi0", "groupName": "spi", "interrupts": { "spi2": { "description": "SPI2 Interrupt", "value": "7" } } }, "pwm2": { "baseAddress": "0x10035000", "derivedFrom": "pwm1", "groupName": "pwm", "interrupts": { "pwm2cmp0": { "description": "PWM2 Compare 0 Interrupt", "value": "48" }, "pwm2cmp1": { "description": "PWM2 Compare 1 Interrupt", "value": "49" }, "pwm2cmp2": { "description": "PWM2 Compare 2 Interrupt", "value": "50" }, "pwm2cmp3": { "description": "PWM2 Compare 3 Interrupt", "value": "51" } } } } } } }