diff --git a/boards/_base/pcb/afw121t.json b/boards/_base/pcb/afw121t.json new file mode 100644 index 000000000..c3b606893 --- /dev/null +++ b/boards/_base/pcb/afw121t.json @@ -0,0 +1,90 @@ +{ + "pcb": { + "templates": [ + "99iot-21p", + "pcb-blue-light", + "rf-type1" + ], + "scale": 16, + "vars": { + "TRACE_COLOR": "#FAFD9D" + }, + "pinout_hidden": "I2S,TRIG,WAKE,CTS,RTS,SD", + "pinout": { + "1": { + "GND": null + }, + "2": { + "CTRL": "RF_O" + }, + "3": { + "GND": null + }, + "4": { + "NC": null + }, + "5": { + "CTRL": "CEN" + }, + "6": { + "IC": 13, + "ARD": "D0" + }, + "7": { + "IC": 14, + "ARD": "D1" + }, + "8": { + "IC": 16, + "ARD": "D2" + }, + "9": { + "IC": 17, + "ARD": "D3" + }, + "10": { + "GND": null + }, + "11": { + "PWR": 3.3 + }, + "12": { + "GND": null + }, + "13": { + "NC": null + }, + "14": { + "IC": 28, + "ARD": "D5" + }, + "15": { + "IC": 29, + "ARD": "D6" + }, + "16": { + "IC": 30, + "ARD": "D7" + }, + "17": { + "IC": 31, + "ARD": "D8" + }, + "18": { + "IC": 32, + "ARD": "D9" + }, + "19": { + "IC": 1, + "ARD": "D10" + }, + "20": { + "IC": 2, + "ARD": "D4" + }, + "21": { + "GND": null + } + } + } +} diff --git a/boards/_base/realtek-ambz-1mb-468k.json b/boards/_base/realtek-ambz-1mb-468k.json new file mode 100644 index 000000000..89f1a7010 --- /dev/null +++ b/boards/_base/realtek-ambz-1mb-468k.json @@ -0,0 +1,16 @@ +{ + "build": { + "amb_boot_all": "boot_all_77F7.bin" + }, + "flash": { + "ota1": "0x00B000+0x75000", + "ota2": "0x080000+0x75000", + "kvs": "0x0F5000+0x4000", + "userdata": "0x0F9000+0x7000" + }, + "upload": { + "flash_size": 1048576, + "maximum_size": 479232 + } +} + diff --git a/boards/afw121t.json b/boards/afw121t.json new file mode 100644 index 000000000..8b12c4649 --- /dev/null +++ b/boards/afw121t.json @@ -0,0 +1,24 @@ +{ + "_base": [ + "realtek-ambz", + "realtek-ambz-1mb-468k", + "realtek-ambz-bx", + "ic/rtl8710bn", + "pcb/afw121t" + ], + "build": { + "mcu": "rtl8710bx", + "variant": "afw121t" + }, + "name": "AFW121T", + "url": "https://item.szlcsc.com/357903.html?fromZone=l_b__%2522brand%2522", + "vendor": "99iot(Shenzhen)co.,ltd", + "pcb": { + "symbol": "AFW121T" + }, + "doc": { + "links": { + "Vendor datasheet": "https://item.szlcsc.com/datasheet/AFW121TI-AY1LED1/357903.html" + } + } +} diff --git a/boards/templates/99iot-21p.json b/boards/templates/99iot-21p.json new file mode 100644 index 000000000..6d0c05061 --- /dev/null +++ b/boards/templates/99iot-21p.json @@ -0,0 +1,142 @@ +{ + "name": "99iot-21p", + "title": "99iot 21-pin modules", + "width": 18, + "height": 22, + "vars": { + "PINTYPE_VERT": "pin_vert_cast_nohole", + "PINTYPE_HORZ": "pin_horz_cast_nohole", + "RASTER": 1.2, + "RF_W": 18, + "RF_H": 3.9 + }, + "front": [ + { + "comment": "PCB soldermask", + "type": "rect", + "pos": "0,0", + "size": "18,22", + "preset": "${MASK_PRESET}" + }, + { + "comment": "Metal shielding", + "type": "rect", + "pos": "1.105,7", + "size": "15.79,14.58", + "preset": "shield" + }, + { + "comment": "Pins (1-3)", + "id": "left_t", + "name": "r_pins_vert", + "repeat": 3, + "pos": "0,3.9", + "vars": { + "PINDIR": "left" + } + }, + { + "comment": "Pins (3-10)", + "id": "left_b", + "name": "r_pins_vert", + "repeat": 7, + "pos": "0,12.8", + "vars": { + "PINDIR": "left" + } + }, + { + "comment": "Pins (10-20)", + "id": "right_b", + "name": "r_pins_vert", + "repeat": 10, + "pos": "18,9.2", + "vars": { + "PINDIR": "right" + } + }, + { + "comment": "Pin 21", + "id": "right_t", + "name": "r_pins_vert", + "repeat": 1, + "pos": "18,7", + "vars": { + "PINDIR": "right" + } + } + ], + "back": [ + { + "comment": "PCB soldermask", + "type": "rect", + "pos": "0,0", + "size": "18,22", + "preset": "${MASK_PRESET}" + }, + { + "comment": "Pins (1-3)", + "id": "left_t", + "name": "r_pins_vert", + "repeat": 3, + "pos": "0,3.9", + "vars": { + "PINDIR": "left" + } + }, + { + "comment": "Pins (3-10)", + "id": "left_b", + "name": "r_pins_vert", + "repeat": 7, + "pos": "0,12.8", + "vars": { + "PINDIR": "left" + } + }, + { + "comment": "Pins (10-20)", + "id": "right_b", + "name": "r_pins_vert", + "repeat": 10, + "pos": "18,9.2", + "vars": { + "PINDIR": "right" + } + }, + { + "comment": "Pin 21", + "id": "right_t", + "name": "r_pins_vert", + "repeat": 1, + "pos": "18,7", + "vars": { + "PINDIR": "right" + } + } + ], + "pads": { + "1": "99iot-21p.front.left_t.pin1", + "2": "99iot-21p.front.left_t.pin2", + "3": "99iot-21p.front.left_t.pin3", + "4": "99iot-21p.front.left_b.pin1", + "5": "99iot-21p.front.left_b.pin2", + "6": "99iot-21p.front.left_b.pin3", + "7": "99iot-21p.front.left_b.pin4", + "8": "99iot-21p.front.left_b.pin5", + "9": "99iot-21p.front.left_b.pin6", + "10": "99iot-21p.front.left_b.pin7", + "11": "99iot-21p.front.right_b.pin10", + "12": "99iot-21p.front.right_b.pin9", + "13": "99iot-21p.front.right_b.pin8", + "14": "99iot-21p.front.right_b.pin7", + "15": "99iot-21p.front.right_b.pin6", + "16": "99iot-21p.front.right_b.pin5", + "17": "99iot-21p.front.right_b.pin4", + "18": "99iot-21p.front.right_b.pin3", + "19": "99iot-21p.front.right_b.pin2", + "20": "99iot-21p.front.right_b.pin1", + "21": "99iot-21p.front.right_t.pin1" + }, + "test_pads": {} +} diff --git a/boards/variants/afw121t.c b/boards/variants/afw121t.c new file mode 100644 index 000000000..12b634593 --- /dev/null +++ b/boards/variants/afw121t.c @@ -0,0 +1,48 @@ +/* This file was auto-generated from afw121t.json using boardgen */ + +#include + +#ifdef LT_VARIANT_INCLUDE +#include LT_VARIANT_INCLUDE +#endif + +// clang-format off +PinInfo lt_arduino_pin_info_list[PINS_COUNT] = { + // D0: PA14, PWM0, SWCLK + {PA_14, PIN_GPIO | PIN_IRQ | PIN_PWM | PIN_SWD, PIN_NONE, 0}, + // D1: PA15, PWM1, SWDIO + {PA_15, PIN_GPIO | PIN_IRQ | PIN_PWM | PIN_SWD, PIN_NONE, 0}, + // D2: PA00, PWM2 + {PA_0, PIN_GPIO | PIN_IRQ | PIN_PWM, PIN_NONE, 0}, + // D3: PA12, PWM3 + {PA_12, PIN_GPIO | PIN_IRQ | PIN_PWM, PIN_NONE, 0}, + // D4: PA29, UART2_RX, I2C0_SCL, PWM4 + {PA_29, PIN_GPIO | PIN_IRQ | PIN_PWM | PIN_I2C | PIN_UART, PIN_NONE, 0}, + // D5: PA05, PWM4, WAKE1 + {PA_5, PIN_GPIO | PIN_IRQ | PIN_PWM, PIN_NONE, 0}, + // D6: PA18, UART0_RX, SPI0_SCK, SPI1_SCK, I2C1_SCL, SD_D2, TMR4_TRIG, I2S0_MCK, WAKE0 + {PA_18, PIN_GPIO | PIN_IRQ | PIN_I2C | PIN_I2S | PIN_SPI | PIN_UART, PIN_NONE, 0}, + // D7: PA19, ADC1, UART0_CTS, SPI0_CS, SPI1_CS, I2C0_SDA, SD_D3, TMR5_TRIG, I2S0_TX + {PA_19, PIN_GPIO | PIN_IRQ | PIN_I2C | PIN_I2S | PIN_SPI | PIN_UART, PIN_NONE, 0}, + // D8: PA22, UART0_RTS, SPI0_MISO, SPI1_MISO, I2C0_SCL, SD_D0, PWM5, I2S0_WS, WAKE2 + {PA_22, PIN_GPIO | PIN_IRQ | PIN_PWM | PIN_I2C | PIN_I2S | PIN_SPI | PIN_UART, PIN_NONE, 0}, + // D9: PA23, UART0_TX, SPI0_MOSI, SPI1_MOSI, I2C1_SDA, SD_D1, PWM0, WAKE3 + {PA_23, PIN_GPIO | PIN_IRQ | PIN_PWM | PIN_I2C | PIN_SPI | PIN_UART, PIN_NONE, 0}, + // D10: PA30, UART2_TX, I2C0_SDA, PWM4 + {PA_30, PIN_GPIO | PIN_IRQ | PIN_PWM | PIN_I2C | PIN_UART, PIN_NONE, 0}, +}; + +PinInfo *lt_arduino_pin_gpio_map[] = { + [0] = &(lt_arduino_pin_info_list[2]), // PA_0 (D2) + [5] = &(lt_arduino_pin_info_list[5]), // PA_5 (D5) + [12] = &(lt_arduino_pin_info_list[3]), // PA_12 (D3) + [14] = &(lt_arduino_pin_info_list[0]), // PA_14 (D0) + [15] = &(lt_arduino_pin_info_list[1]), // PA_15 (D1) + [18] = &(lt_arduino_pin_info_list[6]), // PA_18 (D6) + [19] = &(lt_arduino_pin_info_list[7]), // PA_19 (D7) + [22] = &(lt_arduino_pin_info_list[8]), // PA_22 (D8) + [23] = &(lt_arduino_pin_info_list[9]), // PA_23 (D9) + [29] = &(lt_arduino_pin_info_list[4]), // PA_29 (D4) + [30] = &(lt_arduino_pin_info_list[10]), // PA_30 (D10) +}; +// clang-format on diff --git a/boards/variants/afw121t.h b/boards/variants/afw121t.h new file mode 100644 index 000000000..2e9c83b04 --- /dev/null +++ b/boards/variants/afw121t.h @@ -0,0 +1,136 @@ +/* This file was auto-generated from afw121t.json using boardgen */ + +#pragma once + +// clang-format off + +// Pins +// ---- +#define PINS_COUNT 11 // Total GPIO count +#define NUM_DIGITAL_PINS 11 // Digital inputs/outputs +#define NUM_ANALOG_INPUTS 0 // ADC inputs +#define NUM_ANALOG_OUTPUTS 9 // PWM & DAC outputs +#define PINS_GPIO_MAX 30 // Last usable GPIO number + +// SPI Interfaces +// -------------- +#define PIN_SPI0_CS 19u // PA_19 +#define PIN_SPI0_MISO 22u // PA_22 +#define PIN_SPI0_MOSI 23u // PA_23 +#define PIN_SPI0_SCK 18u // PA_18 +#define PIN_SPI1_CS 19u // PA_19 +#define PIN_SPI1_MISO 22u // PA_22 +#define PIN_SPI1_MOSI 23u // PA_23 +#define PIN_SPI1_SCK 18u // PA_18 +#define PINS_SPI0_CS (pin_size_t[]){19u} +#define PINS_SPI0_MISO (pin_size_t[]){22u} +#define PINS_SPI0_MOSI (pin_size_t[]){23u} +#define PINS_SPI0_SCK (pin_size_t[]){18u} +#define PINS_SPI1_CS (pin_size_t[]){19u} +#define PINS_SPI1_MISO (pin_size_t[]){22u} +#define PINS_SPI1_MOSI (pin_size_t[]){23u} +#define PINS_SPI1_SCK (pin_size_t[]){18u} + +// Wire Interfaces +// --------------- +#define PIN_WIRE0_SCL_0 22u // PA_22 +#define PIN_WIRE0_SCL_1 29u // PA_29 +#define PIN_WIRE0_SDA_0 19u // PA_19 +#define PIN_WIRE0_SDA_1 30u // PA_30 +#define PIN_WIRE1_SCL 18u // PA_18 +#define PIN_WIRE1_SDA 23u // PA_23 +#define PINS_WIRE0_SCL (pin_size_t[]){22u, 29u} +#define PINS_WIRE0_SDA (pin_size_t[]){19u, 30u} +#define PINS_WIRE1_SCL (pin_size_t[]){18u} +#define PINS_WIRE1_SDA (pin_size_t[]){23u} + +// Serial ports +// ------------ +#define PIN_SERIAL0_CTS 19u // PA_19 +#define PIN_SERIAL0_RTS 22u // PA_22 +#define PIN_SERIAL0_RX 18u // PA_18 +#define PIN_SERIAL0_TX 23u // PA_23 +#define PIN_SERIAL2_RX 29u // PA_29 +#define PIN_SERIAL2_TX 30u // PA_30 +#define PINS_SERIAL0_CTS (pin_size_t[]){19u} +#define PINS_SERIAL0_RTS (pin_size_t[]){22u} +#define PINS_SERIAL0_RX (pin_size_t[]){18u} +#define PINS_SERIAL0_TX (pin_size_t[]){23u} +#define PINS_SERIAL2_RX (pin_size_t[]){29u} +#define PINS_SERIAL2_TX (pin_size_t[]){30u} + +// Pin function macros +// ------------------- +#define PIN_ADC1 19u // PA_19 +#define PIN_CS0 19u // PA_19 +#define PIN_CS1 19u // PA_19 +#define PIN_CTS0 19u // PA_19 +#define PIN_MISO0 22u // PA_22 +#define PIN_MISO1 22u // PA_22 +#define PIN_MOSI0 23u // PA_23 +#define PIN_MOSI1 23u // PA_23 +#define PIN_PA00 0u // PA_0 +#define PIN_PA05 5u // PA_5 +#define PIN_PA12 12u // PA_12 +#define PIN_PA14 14u // PA_14 +#define PIN_PA15 15u // PA_15 +#define PIN_PA18 18u // PA_18 +#define PIN_PA19 19u // PA_19 +#define PIN_PA22 22u // PA_22 +#define PIN_PA23 23u // PA_23 +#define PIN_PA29 29u // PA_29 +#define PIN_PA30 30u // PA_30 +#define PIN_PWM1 15u // PA_15 +#define PIN_PWM2 0u // PA_0 +#define PIN_PWM3 12u // PA_12 +#define PIN_PWM4 29u // PA_29 +#define PIN_PWM5 22u // PA_22 +#define PIN_RTS0 22u // PA_22 +#define PIN_RX0 18u // PA_18 +#define PIN_RX2 29u // PA_29 +#define PIN_SCK0 18u // PA_18 +#define PIN_SCK1 18u // PA_18 +#define PIN_SCL1 18u // PA_18 +#define PIN_SDA1 23u // PA_23 +#define PIN_TX0 23u // PA_23 +#define PIN_TX2 30u // PA_30 + +// Port availability +// ----------------- +#define HAS_SERIAL0 1 +#define HAS_SERIAL2 1 +#define HAS_SPI0 1 +#define HAS_SPI1 1 +#define HAS_WIRE0 1 +#define HAS_WIRE1 1 +#define SERIAL_INTERFACES_COUNT 2 +#define SPI_INTERFACES_COUNT 2 +#define WIRE_INTERFACES_COUNT 2 + +// Arduino pin names +// ----------------- +#define PIN_D0 14u // PA_14 +#define PIN_D1 15u // PA_15 +#define PIN_D2 0u // PA_0 +#define PIN_D3 12u // PA_12 +#define PIN_D4 29u // PA_29 +#define PIN_D5 5u // PA_5 +#define PIN_D6 18u // PA_18 +#define PIN_D7 19u // PA_19 +#define PIN_D8 22u // PA_22 +#define PIN_D9 23u // PA_23 +#define PIN_D10 30u // PA_30 + +// Static pin names +// ---------------- +static const unsigned char D0 = PIN_D0; +static const unsigned char D1 = PIN_D1; +static const unsigned char D2 = PIN_D2; +static const unsigned char D3 = PIN_D3; +static const unsigned char D4 = PIN_D4; +static const unsigned char D5 = PIN_D5; +static const unsigned char D6 = PIN_D6; +static const unsigned char D7 = PIN_D7; +static const unsigned char D8 = PIN_D8; +static const unsigned char D9 = PIN_D9; +static const unsigned char D10 = PIN_D10;