From 9a3e512b1ba0f546d5c08a6e209a30336e6af2ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kuba=20Szczodrzy=C5=84ski?= Date: Sat, 28 Jan 2023 13:00:06 +0100 Subject: [PATCH] [boards] Add LSC LMA35 T variant --- boards/SUMMARY.md | 1 + boards/lsc-lma35-t.json | 29 ++ boards/lsc-lma35-t/README.md | 98 +++++++ boards/lsc-lma35-t/pinout_lsc-lma35-t.svg | 325 ++++++++++++++++++++++ boards/lsc-lma35-t/pins_arduino.h | 1 + boards/lsc-lma35-t/variant.cpp | 42 +++ boards/lsc-lma35-t/variant.h | 71 +++++ docs/status/supported_boards.md | 1 + 8 files changed, 568 insertions(+) create mode 100644 boards/lsc-lma35-t.json create mode 100644 boards/lsc-lma35-t/README.md create mode 100644 boards/lsc-lma35-t/pinout_lsc-lma35-t.svg create mode 100644 boards/lsc-lma35-t/pins_arduino.h create mode 100644 boards/lsc-lma35-t/variant.cpp create mode 100644 boards/lsc-lma35-t/variant.h diff --git a/boards/SUMMARY.md b/boards/SUMMARY.md index 0664e7d..2df5314 100644 --- a/boards/SUMMARY.md +++ b/boards/SUMMARY.md @@ -28,4 +28,5 @@ - [WR3L](../boards/wr3l/README.md) - [WR3LE](../boards/wr3le/README.md) - [LSC LMA35](../boards/lsc-lma35/README.md) +- [LSC LMA35 T](../boards/lsc-lma35-t/README.md) - [Generic - Host-native](../boards/generic-native/README.md) diff --git a/boards/lsc-lma35-t.json b/boards/lsc-lma35-t.json new file mode 100644 index 0000000..fee18c3 --- /dev/null +++ b/boards/lsc-lma35-t.json @@ -0,0 +1,29 @@ +{ + "_base": [ + "beken-72xx", + "beken-7231u", + "beken-7231t-tuya", + "ic/bk7231-qfn32", + "pcb/lsc-lma35" + ], + "build": { + "mcu": "bk7231t", + "variant": "lsc-lma35-t" + }, + "name": "LSC LMA35 BK7231T", + "symbol": "LSC LMA35 T", + "url": "https://www.action.com/de-at/p/lsc-smart-connect-outdoor-led-streifen/", + "vendor": "Unknown", + "pcb": { + "symbol": "LMA35" + }, + "doc": { + "extra": [ + "## Information", + "This board has no marking on the front side, only something that looks like PCB manufacturing info on the back; thus it was named based on these symbols.", + "It can be found in 'LSC Smart Connect Outdoor LED Strip', and is likely custom-made for this product.", + "The pinout was established by writing to and probing consecutive GPIOs, using the generic board definition.", + "Pins marked with '?' are currently unknown, with a possibility of being CEN. Pin 22 (P1/D14) is also not confirmed." + ] + } +} diff --git a/boards/lsc-lma35-t/README.md b/boards/lsc-lma35-t/README.md new file mode 100644 index 0000000..df042fc --- /dev/null +++ b/boards/lsc-lma35-t/README.md @@ -0,0 +1,98 @@ +# LSC LMA35 BK7231T + +*by Unknown* + +[Product page](https://www.action.com/de-at/p/lsc-smart-connect-outdoor-led-streifen/) + +- [General info](../../docs/platform/beken-72xx/README.md) +- [Flashing guide](../../docs/platform/beken-72xx/flashing.md) + +Parameter | Value +-------------|---------------------------------- +Board code | `lsc-lma35-t` +MCU | BK7231T +Manufacturer | Beken +Series | BK72XX +Frequency | 120 MHz +Flash size | 2 MiB +RAM size | 256 KiB +Voltage | 3.0V - 3.6V +I/O | 15x GPIO, 6x PWM, 2x UART, 1x ADC +Wi-Fi | 802.11 b/g/n +Bluetooth | BLE v4.2 + +## Usage + +**Board code:** `lsc-lma35-t` + +In `platformio.ini`: + +```ini +[env:lsc-lma35-t] +platform = libretuya +board = lsc-lma35-t +framework = arduino +``` + +In ESPHome YAML: + +```yaml +libretuya: + board: lsc-lma35-t + framework: + version: dev +``` + +## Pinout + +![Pinout](pinout_lsc-lma35-t.svg) + +## Arduino Core pin mapping + +No. | Pin | UART | I²C | SPI | PWM | Other +----|-----------|----------|----------|------|------|------ +D0 | P26 | | | | PWM5 | +D1 | P14 | | | SCK | | +D2 | P16 | | | MOSI | | +D3 | P24 | | | | PWM4 | +D4 | P22 | | | | | TDI +D5 | P0 | UART2_TX | I2C2_SCL | | | +D6 | P23 | | | | | TDO +D7 | P8 | | | | PWM2 | +D8 | P9 | | | | PWM3 | +D9 | P21 | | I2C1_SDA | | | TMS +D10 | P6 | | | | PWM0 | +D11 | P7 | | | | PWM1 | +D12 | P10 | UART1_RX | | | | +D13 | P11 | UART1_TX | | | | +D14 | P1 | UART2_RX | I2C2_SDA | | | +A0 | P23, ADC3 | | | | | + +## Flash memory map + +Flash size: 2 MiB / 2,097,152 B / 0x200000 + +Hex values are in bytes. + +Name | Start | Length | End +----------------|----------|--------------------|--------- +Bootloader | 0x000000 | 68 KiB / 0x11000 | 0x011000 +App Image | 0x011000 | 1.1 MiB / 0x121000 | 0x132000 +OTA Image | 0x132000 | 664 KiB / 0xA6000 | 0x1D8000 +Key-Value Store | 0x1D8000 | 32 KiB / 0x8000 | 0x1E0000 +Calibration | 0x1E0000 | 4 KiB / 0x1000 | 0x1E1000 +TLV Store | 0x1E1000 | 4 KiB / 0x1000 | 0x1E2000 +Network Data | 0x1E2000 | 4 KiB / 0x1000 | 0x1E3000 +User Data | 0x1E3000 | 116 KiB / 0x1D000 | 0x200000 + +Bootloader and app partitions contain CRC16 sums every 32 bytes. That results in the actual flash offsets/sizes not aligned to sector boundaries. To simplify calculations, the values shown in the table (extracted from bootloader's partition table) were aligned to 4096 bytes. + +## Information + +This board has no marking on the front side, only something that looks like PCB manufacturing info on the back; thus it was named based on these symbols. + +It can be found in 'LSC Smart Connect Outdoor LED Strip', and is likely custom-made for this product. + +The pinout was established by writing to and probing consecutive GPIOs, using the generic board definition. + +Pins marked with '?' are currently unknown, with a possibility of being CEN. Pin 22 (P1/D14) is also not confirmed. diff --git a/boards/lsc-lma35-t/pinout_lsc-lma35-t.svg b/boards/lsc-lma35-t/pinout_lsc-lma35-t.svg new file mode 100644 index 0000000..3d02d8c --- /dev/null +++ b/boards/lsc-lma35-t/pinout_lsc-lma35-t.svg @@ -0,0 +1,325 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 3V3 + + + + + P26 + + + + D0 + + + + IRDA + + + + PWM5 + + + + + P14 + + + + D1 + + + + + P16 + + + + D2 + + + + + P24 + + + + D3 + + + + PWM4 + + + + + GND + + + + + P22 + + + + D4 + + + + + P0 + + + + D5 + + + + TX2 + + + + SCL2 + + + + + P23 + + + + ADC3 + + + + D6 + + + + A0 + + + + + ? + + + + + GND + + + + + P8 + + + + D7 + + + + PWM2 + + + + + P9 + + + + D8 + + + + PWM3 + + + + + GND + + + + + P21 + + + + D9 + + + + + P6 + + + + D10 + + + + PWM0 + + + + + P7 + + + + D11 + + + + PWM1 + + + + + P10 + + + + D12 + + + + RX1 + + + + + GND + + + + + P11 + + + + D13 + + + + TX1 + + + + + ? + + + + + P1 + + + + D14 + + + + RX2 + + + + SDA2 + diff --git a/boards/lsc-lma35-t/pins_arduino.h b/boards/lsc-lma35-t/pins_arduino.h new file mode 100644 index 0000000..1de3ade --- /dev/null +++ b/boards/lsc-lma35-t/pins_arduino.h @@ -0,0 +1 @@ +#include "variant.h" diff --git a/boards/lsc-lma35-t/variant.cpp b/boards/lsc-lma35-t/variant.cpp new file mode 100644 index 0000000..19882ab --- /dev/null +++ b/boards/lsc-lma35-t/variant.cpp @@ -0,0 +1,42 @@ +/* This file was auto-generated from lsc-lma35-t.json using boardgen */ + +#include + +extern "C" { + +// clang-format off +PinInfo pinTable[PINS_COUNT] = { + // D0: P26, PWM5, IRDA + {GPIO26, PIN_GPIO | PIN_IRQ | PIN_PWM, PIN_NONE, 0}, + // D1: P14, SD_CLK, SCK + {GPIO14, PIN_GPIO | PIN_IRQ | PIN_SPI, PIN_NONE, 0}, + // D2: P16, SD_D0, MOSI + {GPIO16, PIN_GPIO | PIN_IRQ | PIN_SPI, PIN_NONE, 0}, + // D3: P24, PWM4 + {GPIO24, PIN_GPIO | PIN_IRQ | PIN_PWM, PIN_NONE, 0}, + // D4: P22, TDI, FSI + {GPIO22, PIN_GPIO | PIN_IRQ | PIN_JTAG, PIN_NONE, 0}, + // D5: P0, UART2_TX, I2C2_SCL + {GPIO0, PIN_GPIO | PIN_IRQ | PIN_I2C | PIN_UART, PIN_NONE, 0}, + // D6: P23, ADC3, TDO, FSO + {GPIO23, PIN_GPIO | PIN_IRQ | PIN_ADC | PIN_JTAG, PIN_NONE, 0}, + // D7: P8, PWM2 + {GPIO8, PIN_GPIO | PIN_IRQ | PIN_PWM, PIN_NONE, 0}, + // D8: P9, PWM3 + {GPIO9, PIN_GPIO | PIN_IRQ | PIN_PWM, PIN_NONE, 0}, + // D9: P21, I2C1_SDA, TMS, MCLK, ^FCS + {GPIO21, PIN_GPIO | PIN_IRQ | PIN_I2C | PIN_I2S | PIN_JTAG, PIN_NONE, 0}, + // D10: P6, PWM0 + {GPIO6, PIN_GPIO | PIN_IRQ | PIN_PWM, PIN_NONE, 0}, + // D11: P7, PWM1 + {GPIO7, PIN_GPIO | PIN_IRQ | PIN_PWM, PIN_NONE, 0}, + // D12: P10, UART1_RX + {GPIO10, PIN_GPIO | PIN_IRQ | PIN_UART, PIN_NONE, 0}, + // D13: P11, UART1_TX + {GPIO11, PIN_GPIO | PIN_IRQ | PIN_UART, PIN_NONE, 0}, + // D14: P1, UART2_RX, I2C2_SDA + {GPIO1, PIN_GPIO | PIN_IRQ | PIN_I2C | PIN_UART, PIN_NONE, 0}, +}; +// clang-format on + +} // extern "C" diff --git a/boards/lsc-lma35-t/variant.h b/boards/lsc-lma35-t/variant.h new file mode 100644 index 0000000..7fff860 --- /dev/null +++ b/boards/lsc-lma35-t/variant.h @@ -0,0 +1,71 @@ +/* This file was auto-generated from lsc-lma35-t.json using boardgen */ + +#pragma once + +#include + +// clang-format off + +// Pins +// ---- +#define PINS_COUNT 15 +#define NUM_DIGITAL_PINS 15 +#define NUM_ANALOG_INPUTS 1 +#define NUM_ANALOG_OUTPUTS 0 + +// Analog pins +// ----------- +#define PIN_A0 6u // GPIO23 +#define A0 PIN_A0 + +// SPI Interfaces +// -------------- +#define SPI_INTERFACES_COUNT 0 + +// Wire Interfaces +// --------------- +#define WIRE_INTERFACES_COUNT 1 +#define PIN_WIRE2_SCL 5u // GPIO0 +#define PIN_WIRE2_SDA 14u // GPIO1 + +// Serial ports +// ------------ +#define SERIAL_INTERFACES_COUNT 2 +#define PIN_SERIAL1_RX 12u // GPIO10 +#define PIN_SERIAL1_TX 13u // GPIO11 +#define PIN_SERIAL2_RX 14u // GPIO1 +#define PIN_SERIAL2_TX 5u // GPIO0 + +// Pin function macros +// ------------------- +#define PIN_FUNCTION_ADC3 6u // GPIO23 +#define PIN_FUNCTION_MOSI 2u // GPIO16 +#define PIN_FUNCTION_P0 5u // GPIO0 +#define PIN_FUNCTION_P1 14u // GPIO1 +#define PIN_FUNCTION_P6 10u // GPIO6 +#define PIN_FUNCTION_P7 11u // GPIO7 +#define PIN_FUNCTION_P8 7u // GPIO8 +#define PIN_FUNCTION_P9 8u // GPIO9 +#define PIN_FUNCTION_P10 12u // GPIO10 +#define PIN_FUNCTION_P11 13u // GPIO11 +#define PIN_FUNCTION_P14 1u // GPIO14 +#define PIN_FUNCTION_P16 2u // GPIO16 +#define PIN_FUNCTION_P21 9u // GPIO21 +#define PIN_FUNCTION_P22 4u // GPIO22 +#define PIN_FUNCTION_P23 6u // GPIO23 +#define PIN_FUNCTION_P24 3u // GPIO24 +#define PIN_FUNCTION_P26 0u // GPIO26 +#define PIN_FUNCTION_PWM0 10u // GPIO6 +#define PIN_FUNCTION_PWM1 11u // GPIO7 +#define PIN_FUNCTION_PWM2 7u // GPIO8 +#define PIN_FUNCTION_PWM3 8u // GPIO9 +#define PIN_FUNCTION_PWM4 3u // GPIO24 +#define PIN_FUNCTION_PWM5 0u // GPIO26 +#define PIN_FUNCTION_RX1 12u // GPIO10 +#define PIN_FUNCTION_RX2 14u // GPIO1 +#define PIN_FUNCTION_SCK 1u // GPIO14 +#define PIN_FUNCTION_SCL2 5u // GPIO0 +#define PIN_FUNCTION_SDA1 9u // GPIO21 +#define PIN_FUNCTION_SDA2 14u // GPIO1 +#define PIN_FUNCTION_TX1 13u // GPIO11 +#define PIN_FUNCTION_TX2 5u // GPIO0 diff --git a/docs/status/supported_boards.md b/docs/status/supported_boards.md index 565d9ba..7182c61 100644 --- a/docs/status/supported_boards.md +++ b/docs/status/supported_boards.md @@ -34,5 +34,6 @@ Name | MCU [WR3LE](../../boards/wr3le/README.md) | RTL8710BX | 2 MiB | 256 KiB | 16 (12 I/O) | ✔️ | ❌ | ❌ | `realtek-ambz` **Unknown** | | | | | | | | [LSC LMA35](../../boards/lsc-lma35/README.md) | BK7231N | 2 MiB | 256 KiB | 22 (15 I/O) | ✔️ | ✔️ | ❌ | `beken-7231n` +[LSC LMA35 T](../../boards/lsc-lma35-t/README.md) | BK7231T | 2 MiB | 256 KiB | 22 (15 I/O) | ✔️ | ✔️ | ❌ | `beken-7231u` **N/A** | | | | | | | | [Native](../../boards/generic-native/README.md) | NATIVE | 4 MiB | 4 MiB | - | ✔️ | ❌ | ❌ | `host-native`