[boards] Add remaining WB2x and WB3x boards

This commit is contained in:
Kuba Szczodrzyński
2022-07-11 16:42:45 +02:00
parent aed97a5e92
commit 6d36c9ef7b
26 changed files with 2119 additions and 4 deletions

View File

@@ -3,6 +3,9 @@
- [BW12](../boards/bw12/README.md) - [BW12](../boards/bw12/README.md)
- [CB2S](../boards/cb2s/README.md) - [CB2S](../boards/cb2s/README.md)
- [WB2L](../boards/wb2l/README.md) - [WB2L](../boards/wb2l/README.md)
- [WB2S](../boards/wb2s/README.md)
- [WB3L](../boards/wb3l/README.md)
- [WB3S](../boards/wb3s/README.md)
- [WR2](../boards/wr2/README.md) - [WR2](../boards/wr2/README.md)
- [WR2E](../boards/wr2e/README.md) - [WR2E](../boards/wr2e/README.md)
- [WR3](../boards/wr3/README.md) - [WR3](../boards/wr3/README.md)

View File

@@ -0,0 +1,158 @@
{
"pcb": {
"test_pads": {
"TRST": "wb2s.back.cen.anchor",
"TRX2": "wb2s.back.2rx.anchor",
"TTX2": "wb2s.back.2tx.anchor",
"TGND": "wb2s.back.gnd.anchor",
"TSCK": "wb2s.back.sck.anchor",
"TCSN": "wb2s.back.csn.anchor",
"TSI": "wb2s.back.si.anchor",
"TSO": "wb2s.back.adc_so.anchor",
"TPWM3": "wb2s.back.pwm3.anchor",
"TVCC": "wb2s.back.vbat.anchor"
},
"back": [
{
"name": "test_pad_1mm",
"pos": "2.6,6.2"
},
{
"id": "sck",
"name": "label_line_2mm_up",
"pos": "2.6,5.4",
"vars": {
"DIR": "left",
"W": 1.3,
"H": 2
}
},
{
"name": "test_pad_1mm",
"pos": "4.6,6.2"
},
{
"id": "pwm3",
"name": "label_line_2mm_up",
"pos": "4.6,5.4",
"vars": {
"DIR": "left",
"W": 3.3,
"H": 4
}
},
{
"name": "test_pad_1mm",
"pos": "7.0,6.2"
},
{
"id": "2rx",
"name": "label_line_2mm_up",
"pos": "7.0,5.4",
"vars": {
"DIR": "right",
"W": 2,
"H": 4
}
},
{
"name": "test_pad_1mm",
"pos": "9.0,6.2"
},
{
"id": "2tx",
"name": "label_line_2mm_up",
"pos": "9.0,5.4",
"vars": {
"DIR": "right",
"W": 0,
"H": 2
}
},
{
"name": "test_pad_1mm",
"pos": "3.0,8.3"
},
{
"id": "csn",
"name": "label_line_2mm_up",
"pos": "2.2,8.4",
"vars": {
"DIR": "left",
"W": 0.9,
"H": 0
}
},
{
"name": "test_pad_1mm",
"pos": "5.2,8.8"
},
{
"id": "si",
"name": "label_line_2mm_up",
"pos": "6.0,8.9",
"vars": {
"DIR": "right",
"W": 3,
"H": 0
}
},
{
"name": "test_pad_1mm",
"pos": "2.1,11.6"
},
{
"id": "adc_so",
"name": "label_line_2mm_up",
"pos": "1.3,11.7",
"vars": {
"DIR": "left",
"W": 0,
"H": 0
}
},
{
"name": "test_pad_1mm",
"pos": "4.3,11.6"
},
{
"id": "cen",
"name": "label_line_2mm_up",
"pos": "5.1,11.7",
"vars": {
"DIR": "right",
"W": 3.9,
"H": 0
}
},
{
"name": "test_pad_1mm",
"pos": "2.5,14.5"
},
{
"id": "vbat",
"name": "label_line_2mm_up",
"pos": "1.7,14.6",
"vars": {
"DIR": "left",
"W": 0.4,
"H": 0
}
},
{
"name": "test_pad_1mm",
"pos": "4.8,14.5"
},
{
"id": "gnd",
"name": "label_line_2mm_up",
"pos": "5.6,14.6",
"vars": {
"DIR": "right",
"W": 3.4,
"H": 0
}
}
]
}
}

102
boards/_base/pcb/wb2s.json Normal file
View File

@@ -0,0 +1,102 @@
{
"pcb": {
"scale": 10.5,
"templates": [
"tuya2",
"rf-15mm-type1",
"tuya2-shield"
],
"vars": {
"MASK_PRESET": "mask_blue_light",
"TRACE_COLOR": "#58839B",
"SILK_COLOR": "white"
},
"pinout_hidden": "I2S,FLASH",
"pinout": {
"1": {
"PWR": 3.3
},
"2": {
"IC": 24,
"ARD": "D0"
},
"3": {
"GND": null
},
"4": {
"IC": 23,
"ARD": "D1"
},
"5": {
"IC": 26,
"ARD": "D4"
},
"6": {
"IC": 22,
"ARD": "D2"
},
"7": {
"IC": 27,
"ARD": "D5"
},
"8": {
"IC": 17,
"ARD": [
"D3",
"A0"
]
},
"9": {
"IC": 16,
"ARD": "D6"
},
"10": {
"IC": 21
},
"11": {
"IC": 15,
"ARD": "D7"
},
"TSCK": {
"IC": 20,
"ARD": "D8"
},
"TPWM3": {
"IC": 25,
"ARD": "D9"
},
"TRX2": {
"IC": 28,
"ARD": "D10"
},
"TTX2": {
"IC": 29,
"ARD": "D11"
},
"TCSN": {
"IC": 19,
"ARD": "D12"
},
"TSI": {
"IC": 18,
"ARD": "D13"
},
"TSO": {
"IC": 17,
"ARD": [
"D3",
"A0"
]
},
"TRST": {
"CTRL": "^RST"
},
"TVCC": {
"PWR": 3.3
},
"TGND": {
"GND": null
}
}
}
}

106
boards/_base/pcb/wb3l.json Normal file
View File

@@ -0,0 +1,106 @@
{
"pcb": {
"templates": [
"esp12e-21",
"esp12e-shield-nohole",
"tuya-16x24",
"rf-16mm-type1"
],
"vars": {
"MASK_PRESET": "mask_white",
"TRACE_COLOR": "#E0E0E0",
"SILK_COLOR": "black",
"PINTYPE_VERT": "pin_vert_2mm_cast_nohole",
"PINTYPE_HORZ": "pin_horz_2mm_cast_nohole"
},
"pinout_hidden": "I2S,SD,SPI",
"pinout": {
"1": {
"NC": null
},
"2": {
"IC": 17,
"ARD": [
"D0",
"A0"
]
},
"3": {
"IC": 21
},
"4": {
"IC": 11,
"ARD": "D1"
},
"5": {
"IC": 15,
"ARD": "D2"
},
"6": {
"IC": 16,
"ARD": "D3"
},
"7": {
"IC": 22,
"ARD": "D4"
},
"8": {
"PWR": 3.3
},
"9": {
"GND": null
},
"10": {
"IC": 25,
"ARD": "D5"
},
"11": {
"IC": 29,
"ARD": "D6"
},
"12": {
"IC": 12,
"ARD": "D7"
},
"13": {
"IC": 24,
"ARD": "D8"
},
"14": {
"IC": 23,
"ARD": "D9"
},
"15": {
"IC": 26,
"ARD": "D10"
},
"16": {
"IC": 27,
"ARD": "D11"
},
"17": {
"IC": 17,
"ARD": [
"D0",
"A0"
]
},
"18": {
"IC": 18,
"ARD": "D12"
},
"19": {
"IC": 19,
"ARD": "D13"
},
"20": {
"IC": 20,
"ARD": "D14"
},
"21": {
"IC": 28,
"ARD": "D15"
}
}
}
}

108
boards/_base/pcb/wb3s.json Normal file
View File

@@ -0,0 +1,108 @@
{
"pcb": {
"templates": [
"esp12e-22",
"esp12e-shield-nohole",
"tuya-16x24",
"rf-16mm-type1"
],
"vars": {
"MASK_PRESET": "mask_blue_light",
"TRACE_COLOR": "#58839B",
"SILK_COLOR": "white",
"PINTYPE_VERT": "pin_vert_2mm_cast_nohole",
"PINTYPE_HORZ": "pin_horz_2mm_cast_nohole"
},
"pinout_hidden": "I2S,SD,SPI",
"pinout": {
"1": {
"IC": 21
},
"2": {
"IC": 17,
"ARD": [
"D0",
"A0"
]
},
"3": {
"NC": null
},
"4": {
"IC": 11,
"ARD": "D1"
},
"5": {
"IC": 15,
"ARD": "D2"
},
"6": {
"IC": 16,
"ARD": "D3"
},
"7": {
"IC": 22,
"ARD": "D4"
},
"8": {
"PWR": 3.3
},
"9": {
"GND": null
},
"10": {
"IC": 23,
"ARD": "D5"
},
"11": {
"IC": 29,
"ARD": "D6"
},
"12": {
"IC": 28,
"ARD": "D7"
},
"13": {
"IC": 25,
"ARD": "D8"
},
"14": {
"IC": 24,
"ARD": "D9"
},
"15": {
"IC": 26,
"ARD": "D10"
},
"16": {
"IC": 27,
"ARD": "D11"
},
"17": {
"IC": 17,
"ARD": [
"D0",
"A0"
]
},
"18": {
"IC": 18,
"ARD": "D12"
},
"19": {
"IC": 19,
"ARD": "D13"
},
"20": {
"IC": 20,
"ARD": "D14"
},
"21": {
"NC": null
},
"22": {
"NC": null
}
}
}
}

20
boards/wb2s.json Normal file
View File

@@ -0,0 +1,20 @@
{
"_base": [
"beken-72xx",
"beken-7231t",
"beken-7231t-tuya",
"pcb/ic-bk7231-qfn32",
"pcb/wb2s",
"pcb/wb2s-test"
],
"build": {
"mcu": "bk7231t",
"variant": "wb2s"
},
"name": "WB2S Wi-Fi Module",
"url": "https://developer.tuya.com/en/docs/iot/wb2s-module-datasheet?id=K9ghecl7kc479",
"vendor": "Tuya Inc.",
"pcb": {
"symbol": "WB2S"
}
}

64
boards/wb2s/README.md Normal file
View File

@@ -0,0 +1,64 @@
# WB2S Wi-Fi Module
*by Tuya Inc.*
[Product page](https://developer.tuya.com/en/docs/iot/wb2s-module-datasheet?id=K9ghecl7kc479)
- [General info](../../docs/platform/beken-72xx/README.md)
- [Flashing guide](../../docs/platform/beken-72xx/flashing.md)
- [BkWriter v1.6.0](https://images.tuyacn.com/smart/bk_writer1.60/bk_writer1.60.exe)
Parameter | Value
-------------|----------------------------------
MCU | BK7231T
Manufacturer | Beken
Series | BK72XX
Frequency | 120 MHz
Flash size | 2 MiB
RAM size | 256 KiB
Voltage | 3.0V - 3.6V
I/O | 14x GPIO, 6x PWM, 2x UART, 1x ADC
Wi-Fi | 802.11 b/g/n
Bluetooth | BLE v4.2
## Pinout
![Pinout](pinout_wb2s.svg)
## Arduino Core pin mapping
No. | Pin | UART | I²C | SPI | PWM | Other
----|-----------|----------|----------|-----|------|------
D0 | P8 | | | | PWM2 |
D1 | P7 | | | | PWM1 |
D2 | P6 | | | | PWM0 |
D3 | P23 | | | | | TDO
D4 | P10 | UART1_RX | | | |
D5 | P11 | UART1_TX | | | |
D6 | P24 | | | | PWM4 |
D7 | P26 | | | | PWM5 |
D8 | P20 | | I2C1_SCL | | | TCK
D9 | P9 | | | | PWM3 |
D10 | P1 | UART2_RX | I2C2_SDA | | |
D11 | P0 | UART2_TX | I2C2_SCL | | |
D12 | P21 | | I2C1_SDA | | | TMS
D13 | P22 | | | | | TDI
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
TLV Store | 0x1E0000 | 4 KiB / 0x1000 | 0x1E1000
Network Data | 0x1E1000 | 8 KiB / 0x2000 | 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.

391
boards/wb2s/pinout_wb2s.svg Normal file
View File

@@ -0,0 +1,391 @@
<?xml version="1.0" encoding="utf-8" ?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="full" height="500" version="1.1" viewBox="0,0,97.52380952380952,47.61904761904762" width="1024">
<defs/>
<rect fill="white" height="47.61904761904762" stroke="black" stroke-width="0.1" width="97.52380952380952" x="0" y="0"/>
<linearGradient gradientUnits="objectBoundingBox" id="id1" x1="1.0" x2="0.0" y1="0.0" y2="1.0">
<stop offset="0%" stop-color="#47a8cd"/>
<stop offset="100%" stop-color="#008fb5"/>
</linearGradient>
<rect fill="url(#id1) none" height="17.799999999999997" stroke="#b5a739" stroke-width="0.1" width="14.9" x="19.230952380952377" y="11.45952380952381"/>
<rect fill="#b5a739" height="0.1" width="1.6" x="19.180952380952377" y="25.75952380952381"/>
<rect fill="#b5a739" height="3.45" width="0.1" x="20.780952380952378" y="25.75952380952381"/>
<rect fill="#fff" height="3.55" width="1.7" x="19.080952380952375" y="25.859523809523807"/>
<rect fill="#b5a739" height="0.1" width="1.6" x="32.480952380952374" y="25.75952380952381"/>
<rect fill="#b5a739" height="3.45" width="0.1" x="32.480952380952374" y="25.75952380952381"/>
<rect fill="#fff" height="3.55" width="1.7" x="32.580952380952375" y="25.859523809523807"/>
<rect fill="#e5b472" height="2.5" id="pads_horz5_2mm.pin1.pad" rx="0.2" ry="0.2" width="1.0" x="22.180952380952377" y="26.45952380952381"/>
<rect fill="#e5b472" height="2.5" id="pads_horz5_2mm.pin2.pad" rx="0.2" ry="0.2" width="1.0" x="24.180952380952377" y="26.45952380952381"/>
<rect fill="#e5b472" height="2.5" id="pads_horz5_2mm.pin3.pad" rx="0.2" ry="0.2" width="1.0" x="26.180952380952377" y="26.45952380952381"/>
<rect fill="#e5b472" height="2.5" id="pads_horz5_2mm.pin4.pad" rx="0.2" ry="0.2" width="1.0" x="28.180952380952377" y="26.45952380952381"/>
<rect fill="#e5b472" height="2.5" id="pads_horz5_2mm.pin5.pad" rx="0.2" ry="0.2" width="1.0" x="30.180952380952377" y="26.45952380952381"/>
<rect fill="#4e4c4c" height="2.0" width="0.2" x="22.580952380952375" y="29.509523809523806"/>
<rect fill="#4e4c4c" height="0.2" width="0.2" x="22.380952380952376" y="31.30952380952381"/>
<rect height="0.0" id="tuya2.front.pins.label1.anchor" width="0.0" x="22.880952380952376" y="31.40952380952381"/>
<rect fill="#4e4c4c" height="4.0" width="0.2" x="24.580952380952375" y="29.509523809523806"/>
<rect fill="#4e4c4c" height="0.2" width="2.2" x="22.380952380952376" y="33.30952380952381"/>
<rect height="0.0" id="tuya2.front.pins.label2.anchor" width="0.0" x="22.880952380952376" y="33.40952380952381"/>
<rect fill="#4e4c4c" height="6.0" width="0.2" x="26.580952380952375" y="29.509523809523806"/>
<rect fill="#4e4c4c" height="0.2" width="4.2" x="22.380952380952376" y="35.30952380952381"/>
<rect height="0.0" id="tuya2.front.pins.label3.anchor" width="0.0" x="22.880952380952376" y="35.40952380952381"/>
<rect fill="#4e4c4c" height="6.0" width="0.2" x="28.580952380952375" y="29.509523809523806"/>
<rect fill="#4e4c4c" height="0.2" width="4.2" x="28.680952380952377" y="35.30952380952381"/>
<rect height="0.0" id="tuya2.front.pins.label4.anchor" width="0.0" x="32.38095238095238" y="35.40952380952381"/>
<rect fill="#4e4c4c" height="4.0" width="0.2" x="30.580952380952375" y="29.509523809523806"/>
<rect fill="#4e4c4c" height="0.2" width="2.2" x="30.680952380952377" y="33.30952380952381"/>
<rect height="0.0" id="tuya2.front.pins.label5.anchor" width="0.0" x="32.38095238095238" y="33.40952380952381"/>
<text fill="#fff" font-family="Consolas" font-size="1.0" x="26.180952380952377" y="16.40952380952381">WB2S</text>
<rect fill="#58839b" height="5.2" width="0.5" x="19.980952380952377" y="11.90952380952381"/>
<rect fill="#58839b" height="0.5" width="4.6" x="19.980952380952377" y="11.90952380952381"/>
<rect fill="#58839b" height="5.2" width="0.5" x="22.180952380952377" y="11.90952380952381"/>
<rect fill="#58839b" height="3.0" width="0.5" x="24.080952380952375" y="11.90952380952381"/>
<rect fill="#58839b" height="0.5" width="3.0" x="24.080952380952375" y="14.40952380952381"/>
<rect fill="#58839b" height="3.0" width="0.5" x="26.580952380952375" y="11.90952380952381"/>
<rect fill="#58839b" height="0.5" width="2.7" x="26.580952380952375" y="11.90952380952381"/>
<rect fill="#58839b" height="3.0" width="0.5" x="28.780952380952378" y="11.90952380952381"/>
<rect fill="#58839b" height="0.5" width="3.0" x="28.780952380952378" y="14.40952380952381"/>
<rect fill="#58839b" height="3.0" width="0.5" x="31.280952380952378" y="11.90952380952381"/>
<rect fill="#58839b" height="0.5" width="2.5" x="31.280952380952378" y="11.90952380952381"/>
<rect fill="#58839b" height="4.4" width="0.5" x="33.28095238095238" y="11.90952380952381"/>
<linearGradient gradientUnits="objectBoundingBox" id="id2" x1="1.0" x2="0.0" y1="0.0" y2="1.0">
<stop offset="0%" stop-color="whitesmoke"/>
<stop offset="100%" stop-color="#999"/>
</linearGradient>
<rect fill="url(#id2) none" height="8.0" rx="0.5" ry="0.5" width="14.4" x="19.480952380952377" y="17.40952380952381"/>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="32.88095238095238" y="33.30952380952381"/>
<g transform="translate(36.295311734897275,32.609523809523814)">
<rect fill="#800000" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="37.78095238095238" y="33.40952380952381">P8</text>
<g transform="translate(39.895311734897284,32.609523809523814)">
<rect fill="#99188d" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="41.08095238095238" y="33.40952380952381">D0</text>
<g transform="translate(42.895311734897284,32.609523809523814)">
<rect fill="#afa35e" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="44.38095238095239" y="33.40952380952381">PWM2</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="32.88095238095238" y="35.30952380952381"/>
<g transform="translate(36.295311734897275,34.609523809523814)">
<rect fill="#800000" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="37.78095238095238" y="35.40952380952381">P7</text>
<g transform="translate(39.895311734897284,34.609523809523814)">
<rect fill="#99188d" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="41.08095238095238" y="35.40952380952381">D1</text>
<g transform="translate(42.895311734897284,34.609523809523814)">
<rect fill="#afa35e" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="44.38095238095239" y="35.40952380952381">PWM1</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="19.780952380952375" y="35.30952380952381"/>
<g transform="translate(15.995311734897276,34.609523809523814)">
<rect fill="#800000" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="17.480952380952377" y="35.40952380952381">P6</text>
<g transform="translate(12.995311734897275,34.609523809523814)">
<rect fill="#99188d" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="14.180952380952377" y="35.40952380952381">D2</text>
<g transform="translate(9.395311734897275,34.609523809523814)">
<rect fill="#afa35e" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="10.880952380952376" y="35.40952380952381">PWM0</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="19.780952380952375" y="33.30952380952381"/>
<g transform="translate(15.995311734897276,32.609523809523814)">
<rect fill="#800000" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="17.480952380952377" y="33.40952380952381">P23</text>
<g transform="translate(12.395311734897275,32.609523809523814)">
<rect fill="#8ad039" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="13.880952380952376" y="33.40952380952381">ADC3</text>
<g transform="translate(9.395311734897275,32.609523809523814)">
<rect fill="#99188d" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="10.580952380952377" y="33.40952380952381">D3</text>
<g transform="translate(6.395311734897275,32.609523809523814)">
<rect fill="#16a352" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="7.580952380952377" y="33.40952380952381">A0</text>
<g transform="translate(2.7953117348972754,32.609523809523814)">
<rect fill="#ffe680" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="4.280952380952377" y="33.40952380952381">TDO</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="19.780952380952375" y="31.30952380952381"/>
<g transform="translate(15.995311734897276,30.60952380952381)">
<rect fill="#ed602e" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="17.480952380952377" y="31.40952380952381">CEN</text>
<linearGradient gradientUnits="objectBoundingBox" id="id3" x1="1.0" x2="0.0" y1="0.0" y2="1.0">
<stop offset="0%" stop-color="#47a8cd"/>
<stop offset="100%" stop-color="#008fb5"/>
</linearGradient>
<rect fill="url(#id3) none" height="17.799999999999997" stroke="#b5a739" stroke-width="0.1" width="14.9" x="67.81785714285714" y="11.45952380952381"/>
<rect fill="#b5a739" height="0.1" width="1.6" x="67.76785714285714" y="25.75952380952381"/>
<rect fill="#b5a739" height="3.45" width="0.1" x="69.36785714285713" y="25.75952380952381"/>
<rect fill="#fff" height="3.55" width="1.7" x="67.66785714285714" y="25.859523809523807"/>
<rect fill="#b5a739" height="0.1" width="1.6" x="81.06785714285714" y="25.75952380952381"/>
<rect fill="#b5a739" height="3.45" width="0.1" x="81.06785714285714" y="25.75952380952381"/>
<rect fill="#fff" height="3.55" width="1.7" x="81.16785714285714" y="25.859523809523807"/>
<rect fill="#e5b472" height="2.5" id="pads_horz6_2mm.pin1.pad" rx="0.2" ry="0.2" width="1.0" x="69.71785714285714" y="26.45952380952381"/>
<rect fill="#e5b472" height="2.5" id="pads_horz6_2mm.pin2.pad" rx="0.2" ry="0.2" width="1.0" x="71.71785714285714" y="26.45952380952381"/>
<rect fill="#e5b472" height="2.5" id="pads_horz6_2mm.pin3.pad" rx="0.2" ry="0.2" width="1.0" x="73.71785714285714" y="26.45952380952381"/>
<rect fill="#e5b472" height="2.5" id="pads_horz6_2mm.pin4.pad" rx="0.2" ry="0.2" width="1.0" x="75.71785714285714" y="26.45952380952381"/>
<rect fill="#e5b472" height="2.5" id="pads_horz6_2mm.pin5.pad" rx="0.2" ry="0.2" width="1.0" x="77.71785714285714" y="26.45952380952381"/>
<rect fill="#e5b472" height="2.5" id="pads_horz6_2mm.pin6.pad" rx="0.2" ry="0.2" width="1.0" x="79.71785714285714" y="26.45952380952381"/>
<rect fill="#4e4c4c" height="2.0" width="0.2" x="70.11785714285713" y="29.509523809523806"/>
<rect fill="#4e4c4c" height="0.2" width="0.2" x="69.91785714285714" y="31.30952380952381"/>
<rect height="0.0" id="tuya2.back.pins.label1.anchor" width="0.0" x="70.41785714285714" y="31.40952380952381"/>
<rect fill="#4e4c4c" height="4.0" width="0.2" x="72.11785714285713" y="29.509523809523806"/>
<rect fill="#4e4c4c" height="0.2" width="2.2" x="69.91785714285714" y="33.30952380952381"/>
<rect height="0.0" id="tuya2.back.pins.label2.anchor" width="0.0" x="70.41785714285714" y="33.40952380952381"/>
<rect fill="#4e4c4c" height="6.0" width="0.2" x="74.11785714285713" y="29.509523809523806"/>
<rect fill="#4e4c4c" height="0.2" width="4.2" x="69.91785714285714" y="35.30952380952381"/>
<rect height="0.0" id="tuya2.back.pins.label3.anchor" width="0.0" x="70.41785714285714" y="35.40952380952381"/>
<rect fill="#4e4c4c" height="6.0" width="0.2" x="76.11785714285713" y="29.509523809523806"/>
<rect fill="#4e4c4c" height="0.2" width="4.2" x="76.21785714285714" y="35.30952380952381"/>
<rect height="0.0" id="tuya2.back.pins.label4.anchor" width="0.0" x="79.91785714285714" y="35.40952380952381"/>
<rect fill="#4e4c4c" height="4.0" width="0.2" x="78.11785714285713" y="29.509523809523806"/>
<rect fill="#4e4c4c" height="0.2" width="2.2" x="78.21785714285714" y="33.30952380952381"/>
<rect height="0.0" id="tuya2.back.pins.label5.anchor" width="0.0" x="79.91785714285714" y="33.40952380952381"/>
<rect fill="#4e4c4c" height="2.0" width="0.2" x="80.11785714285713" y="29.509523809523806"/>
<rect fill="#4e4c4c" height="0.2" width="0.2" x="80.21785714285714" y="31.30952380952381"/>
<rect height="0.0" id="tuya2.back.pins.label6.anchor" width="0.0" x="79.91785714285714" y="31.40952380952381"/>
<circle cx="70.36785714285713" cy="17.60952380952381" fill="#e5b472" r="0.5"/>
<rect fill="#4e4c4c" height="2.0" width="0.2" x="70.26785714285714" y="14.609523809523811"/>
<rect fill="#4e4c4c" height="0.2" width="1.5" x="68.76785714285714" y="14.609523809523811"/>
<rect height="0.0" id="wb2s.back.sck.anchor" width="0.0" x="69.26785714285714" y="14.70952380952381"/>
<circle cx="72.36785714285713" cy="17.60952380952381" fill="#e5b472" r="0.5"/>
<rect fill="#4e4c4c" height="4.0" width="0.2" x="72.26785714285714" y="12.609523809523811"/>
<rect fill="#4e4c4c" height="0.2" width="3.5" x="68.76785714285714" y="12.609523809523811"/>
<rect height="0.0" id="wb2s.back.pwm3.anchor" width="0.0" x="69.26785714285714" y="12.70952380952381"/>
<circle cx="74.76785714285714" cy="17.60952380952381" fill="#e5b472" r="0.5"/>
<rect fill="#4e4c4c" height="4.0" width="0.2" x="74.66785714285714" y="12.609523809523811"/>
<rect fill="#4e4c4c" height="0.2" width="2.2" x="74.76785714285714" y="12.609523809523811"/>
<rect height="0.0" id="wb2s.back.2rx.anchor" width="0.0" x="76.46785714285714" y="12.70952380952381"/>
<circle cx="76.76785714285714" cy="17.60952380952381" fill="#e5b472" r="0.5"/>
<rect fill="#4e4c4c" height="2.0" width="0.2" x="76.66785714285714" y="14.609523809523811"/>
<rect fill="#4e4c4c" height="0.2" width="0.2" x="76.76785714285714" y="14.609523809523811"/>
<rect height="0.0" id="wb2s.back.2tx.anchor" width="0.0" x="76.46785714285714" y="14.70952380952381"/>
<circle cx="70.76785714285714" cy="19.70952380952381" fill="#e5b472" r="0.5"/>
<rect fill="#4e4c4c" height="0.0" width="0.2" x="69.86785714285713" y="19.60952380952381"/>
<rect fill="#4e4c4c" height="0.2" width="1.1" x="68.76785714285714" y="19.60952380952381"/>
<rect height="0.0" id="wb2s.back.csn.anchor" width="0.0" x="69.26785714285714" y="19.70952380952381"/>
<circle cx="72.96785714285714" cy="20.20952380952381" fill="#e5b472" r="0.5"/>
<rect fill="#4e4c4c" height="0.0" width="0.2" x="73.66785714285714" y="20.10952380952381"/>
<rect fill="#4e4c4c" height="0.2" width="3.2" x="73.76785714285714" y="20.10952380952381"/>
<rect height="0.0" id="wb2s.back.si.anchor" width="0.0" x="76.46785714285714" y="20.20952380952381"/>
<circle cx="69.86785714285713" cy="23.00952380952381" fill="#e5b472" r="0.5"/>
<rect fill="#4e4c4c" height="0.0" width="0.2" x="68.96785714285714" y="22.90952380952381"/>
<rect fill="#4e4c4c" height="0.2" width="0.2" x="68.76785714285714" y="22.90952380952381"/>
<rect height="0.0" id="wb2s.back.adc_so.anchor" width="0.0" x="69.26785714285714" y="23.00952380952381"/>
<circle cx="72.06785714285714" cy="23.00952380952381" fill="#e5b472" r="0.5"/>
<rect fill="#4e4c4c" height="0.0" width="0.2" x="72.76785714285714" y="22.90952380952381"/>
<rect fill="#4e4c4c" height="0.2" width="4.1" x="72.86785714285713" y="22.90952380952381"/>
<rect height="0.0" id="wb2s.back.cen.anchor" width="0.0" x="76.46785714285714" y="23.00952380952381"/>
<circle cx="70.26785714285714" cy="25.90952380952381" fill="#e5b472" r="0.5"/>
<rect fill="#4e4c4c" height="0.0" width="0.2" x="69.36785714285713" y="25.80952380952381"/>
<rect fill="#4e4c4c" height="0.2" width="0.6000000000000001" x="68.76785714285714" y="25.80952380952381"/>
<rect height="0.0" id="wb2s.back.vbat.anchor" width="0.0" x="69.26785714285714" y="25.90952380952381"/>
<circle cx="72.56785714285714" cy="25.90952380952381" fill="#e5b472" r="0.5"/>
<rect fill="#4e4c4c" height="0.0" width="0.2" x="73.26785714285714" y="25.80952380952381"/>
<rect fill="#4e4c4c" height="0.2" width="3.6" x="73.36785714285713" y="25.80952380952381"/>
<rect height="0.0" id="wb2s.back.gnd.anchor" width="0.0" x="76.46785714285714" y="25.90952380952381"/>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="67.31785714285715" y="31.30952380952381"/>
<g transform="translate(63.532216496802036,30.60952380952381)">
<rect fill="#cd3c24" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="65.01785714285714" y="31.40952380952381">3V3</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="67.31785714285715" y="33.30952380952381"/>
<g transform="translate(63.532216496802036,32.609523809523814)">
<rect fill="#000" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="65.01785714285714" y="33.40952380952381">GND</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="67.31785714285715" y="35.30952380952381"/>
<g transform="translate(63.532216496802036,34.609523809523814)">
<rect fill="#800000" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="65.01785714285714" y="35.40952380952381">P10</text>
<g transform="translate(60.53221649680204,34.609523809523814)">
<rect fill="#99188d" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="61.71785714285714" y="35.40952380952381">D4</text>
<g transform="translate(56.93221649680204,34.609523809523814)">
<rect fill="#dcd4ee" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="58.417857142857144" y="35.40952380952381">RX1</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="80.41785714285714" y="35.30952380952381"/>
<g transform="translate(83.83221649680203,34.609523809523814)">
<rect fill="#800000" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="85.31785714285714" y="35.40952380952381">P11</text>
<g transform="translate(87.43221649680203,34.609523809523814)">
<rect fill="#99188d" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="88.61785714285713" y="35.40952380952381">D5</text>
<g transform="translate(90.43221649680203,34.609523809523814)">
<rect fill="#dcd4ee" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="91.91785714285713" y="35.40952380952381">TX1</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="80.41785714285714" y="33.30952380952381"/>
<g transform="translate(83.83221649680203,32.609523809523814)">
<rect fill="#800000" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="85.31785714285714" y="33.40952380952381">P24</text>
<g transform="translate(87.43221649680203,32.609523809523814)">
<rect fill="#99188d" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="88.61785714285713" y="33.40952380952381">D6</text>
<g transform="translate(90.43221649680203,32.609523809523814)">
<rect fill="#afa35e" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="91.91785714285713" y="33.40952380952381">PWM4</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="80.41785714285714" y="31.30952380952381"/>
<g transform="translate(83.83221649680203,30.60952380952381)">
<rect fill="#800000" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="85.31785714285714" y="31.40952380952381">P26</text>
<g transform="translate(87.43221649680203,30.60952380952381)">
<rect fill="#99188d" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="88.61785714285713" y="31.40952380952381">D7</text>
<g transform="translate(90.43221649680203,30.60952380952381)">
<rect fill="#aeafc1" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="91.91785714285713" y="31.40952380952381">IRDA</text>
<g transform="translate(94.03221649680204,30.60952380952381)">
<rect fill="#afa35e" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="95.51785714285714" y="31.40952380952381">PWM5</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="66.16785714285714" y="14.609523809523811"/>
<g transform="translate(62.382216496802045,13.90952380952381)">
<rect fill="#800000" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="63.86785714285715" y="14.70952380952381">P20</text>
<g transform="translate(59.38221649680204,13.90952380952381)">
<rect fill="#99188d" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="60.567857142857136" y="14.70952380952381">D8</text>
<g transform="translate(55.782216496802036,13.90952380952381)">
<rect fill="#f95" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="57.26785714285714" y="14.70952380952381">SCL1</text>
<g transform="translate(52.18221649680204,13.90952380952381)">
<rect fill="#ffe680" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="53.667857142857144" y="14.70952380952381">TCK</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="66.16785714285714" y="12.609523809523811"/>
<g transform="translate(62.382216496802045,11.90952380952381)">
<rect fill="#800000" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="63.86785714285715" y="12.70952380952381">P9</text>
<g transform="translate(59.38221649680204,11.90952380952381)">
<rect fill="#99188d" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="60.567857142857136" y="12.70952380952381">D9</text>
<g transform="translate(55.782216496802036,11.90952380952381)">
<rect fill="#afa35e" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="57.26785714285714" y="12.70952380952381">PWM3</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="76.96785714285714" y="12.609523809523811"/>
<g transform="translate(80.38221649680203,11.90952380952381)">
<rect fill="#800000" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="81.86785714285713" y="12.70952380952381">P1</text>
<g transform="translate(83.98221649680204,11.90952380952381)">
<rect fill="#99188d" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="85.16785714285714" y="12.70952380952381">D10</text>
<g transform="translate(86.98221649680204,11.90952380952381)">
<rect fill="#dcd4ee" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="88.46785714285714" y="12.70952380952381">RX2</text>
<g transform="translate(90.58221649680203,11.90952380952381)">
<rect fill="#f95" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="92.06785714285714" y="12.70952380952381">SDA2</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="76.96785714285714" y="14.609523809523811"/>
<g transform="translate(80.38221649680203,13.90952380952381)">
<rect fill="#800000" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="81.86785714285713" y="14.70952380952381">P0</text>
<g transform="translate(83.98221649680204,13.90952380952381)">
<rect fill="#99188d" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="85.16785714285714" y="14.70952380952381">D11</text>
<g transform="translate(86.98221649680204,13.90952380952381)">
<rect fill="#dcd4ee" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="88.46785714285714" y="14.70952380952381">TX2</text>
<g transform="translate(90.58221649680203,13.90952380952381)">
<rect fill="#f95" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="92.06785714285714" y="14.70952380952381">SCL2</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="66.16785714285714" y="19.609523809523807"/>
<g transform="translate(62.382216496802045,18.909523809523808)">
<rect fill="#800000" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="63.86785714285715" y="19.70952380952381">P21</text>
<g transform="translate(59.38221649680204,18.909523809523808)">
<rect fill="#99188d" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="60.567857142857136" y="19.70952380952381">D12</text>
<g transform="translate(55.782216496802036,18.909523809523808)">
<rect fill="#f95" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="57.26785714285714" y="19.70952380952381">SDA1</text>
<g transform="translate(52.18221649680204,18.909523809523808)">
<rect fill="#ffe680" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="53.667857142857144" y="19.70952380952381">TMS</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="76.96785714285714" y="20.109523809523807"/>
<g transform="translate(80.38221649680203,19.409523809523808)">
<rect fill="#800000" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="81.86785714285713" y="20.20952380952381">P22</text>
<g transform="translate(83.98221649680204,19.409523809523808)">
<rect fill="#99188d" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="85.16785714285714" y="20.20952380952381">D13</text>
<g transform="translate(86.98221649680204,19.409523809523808)">
<rect fill="#ffe680" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="88.46785714285714" y="20.20952380952381">TDI</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="66.16785714285714" y="22.909523809523808"/>
<g transform="translate(62.382216496802045,22.20952380952381)">
<rect fill="#800000" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="63.86785714285715" y="23.00952380952381">P23</text>
<g transform="translate(58.782216496802036,22.20952380952381)">
<rect fill="#8ad039" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="60.26785714285714" y="23.00952380952381">ADC3</text>
<g transform="translate(55.78221649680204,22.20952380952381)">
<rect fill="#99188d" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="56.96785714285714" y="23.00952380952381">D3</text>
<g transform="translate(52.78221649680204,22.20952380952381)">
<rect fill="#16a352" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="53.96785714285714" y="23.00952380952381">A0</text>
<g transform="translate(49.18221649680204,22.20952380952381)">
<rect fill="#ffe680" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="50.667857142857144" y="23.00952380952381">TDO</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="76.96785714285714" y="22.909523809523808"/>
<g transform="translate(80.38221649680203,22.20952380952381)">
<rect fill="#ed602e" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="middle" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="81.86785714285713" y="21.99702380952381">___</text>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="81.86785714285713" y="23.11577380952381">RST</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="66.16785714285714" y="25.80952380952381"/>
<g transform="translate(62.382216496802045,25.10952380952381)">
<rect fill="#cd3c24" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="63.86785714285715" y="25.90952380952381">3V3</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="76.96785714285714" y="25.80952380952381"/>
<g transform="translate(80.38221649680203,25.10952380952381)">
<rect fill="#000" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="81.86785714285713" y="25.90952380952381">GND</text>
</svg>

After

Width:  |  Height:  |  Size: 35 KiB

View File

@@ -0,0 +1 @@
#include "variant.h"

40
boards/wb2s/variant.cpp Normal file
View File

@@ -0,0 +1,40 @@
/* This file was auto-generated from wb2s.json using boardgen */
#include <Arduino.h>
extern "C" {
// clang-format off
PinInfo pinTable[PINS_COUNT] = {
// D0: P8, PWM2
{GPIO8, PIN_GPIO | PIN_IRQ | PIN_PWM, PIN_NONE, 0},
// D1: P7, PWM1
{GPIO7, PIN_GPIO | PIN_IRQ | PIN_PWM, PIN_NONE, 0},
// D2: P6, PWM0
{GPIO6, PIN_GPIO | PIN_IRQ | PIN_PWM, PIN_NONE, 0},
// D3: P23, ADC3, TDO, FSO
{GPIO23, PIN_GPIO | PIN_IRQ | PIN_ADC | PIN_JTAG, PIN_NONE, 0},
// D4: P10, UART1_RX
{GPIO10, PIN_GPIO | PIN_IRQ | PIN_UART, PIN_NONE, 0},
// D5: P11, UART1_TX
{GPIO11, PIN_GPIO | PIN_IRQ | PIN_UART, PIN_NONE, 0},
// D6: P24, PWM4
{GPIO24, PIN_GPIO | PIN_IRQ | PIN_PWM, PIN_NONE, 0},
// D7: P26, PWM5, IRDA
{GPIO26, PIN_GPIO | PIN_IRQ | PIN_PWM, PIN_NONE, 0},
// D8: P20, I2C1_SCL, TCK, FSCK
{GPIO20, PIN_GPIO | PIN_IRQ | PIN_I2C | PIN_JTAG, PIN_NONE, 0},
// D9: P9, PWM3
{GPIO9, PIN_GPIO | PIN_IRQ | PIN_PWM, PIN_NONE, 0},
// D10: P1, UART2_RX, I2C2_SDA
{GPIO1, PIN_GPIO | PIN_IRQ | PIN_I2C | PIN_UART, PIN_NONE, 0},
// D11: P0, UART2_TX, I2C2_SCL
{GPIO0, PIN_GPIO | PIN_IRQ | PIN_I2C | PIN_UART, PIN_NONE, 0},
// D12: P21, I2C1_SDA, TMS, MCLK, ^FCS
{GPIO21, PIN_GPIO | PIN_IRQ | PIN_I2C | PIN_I2S | PIN_JTAG, PIN_NONE, 0},
// D13: P22, TDI, FSI
{GPIO22, PIN_GPIO | PIN_IRQ | PIN_JTAG, PIN_NONE, 0},
};
// clang-format on
} // extern "C"

41
boards/wb2s/variant.h Normal file
View File

@@ -0,0 +1,41 @@
/* This file was auto-generated from wb2s.json using boardgen */
#pragma once
#include <WVariant.h>
// clang-format off
// Pins
// ----
#define PINS_COUNT 14
#define NUM_DIGITAL_PINS 14
#define NUM_ANALOG_INPUTS 1
#define NUM_ANALOG_OUTPUTS 0
// Analog pins
// -----------
#define PIN_A0 3u // GPIO23
#define PIN_A0 3u // GPIO23
#define A0 PIN_A0
#define A0 PIN_A0
// SPI Interfaces
// --------------
#define SPI_INTERFACES_COUNT 0
// Wire Interfaces
// ---------------
#define WIRE_INTERFACES_COUNT 2
#define PIN_WIRE1_SCL 8u // GPIO20
#define PIN_WIRE1_SDA 12u // GPIO21
#define PIN_WIRE2_SCL 11u // GPIO0
#define PIN_WIRE2_SDA 10u // GPIO1
// Serial ports
// ------------
#define SERIAL_INTERFACES_COUNT 2
#define PIN_SERIAL1_RX 4u // GPIO10
#define PIN_SERIAL1_TX 5u // GPIO11
#define PIN_SERIAL2_RX 10u // GPIO1
#define PIN_SERIAL2_TX 11u // GPIO0

19
boards/wb3l.json Normal file
View File

@@ -0,0 +1,19 @@
{
"_base": [
"beken-72xx",
"beken-7231t",
"beken-7231t-tuya",
"pcb/ic-bk7231-qfn32",
"pcb/wb3l"
],
"build": {
"mcu": "bk7231t",
"variant": "wb3l"
},
"name": "WB3L Wi-Fi Module",
"url": "https://developer.tuya.com/en/docs/iot/wb3l-module-datasheet?id=K9duiggw2v8sp",
"vendor": "Tuya Inc.",
"pcb": {
"symbol": "WB3L"
}
}

66
boards/wb3l/README.md Normal file
View File

@@ -0,0 +1,66 @@
# WB3L Wi-Fi Module
*by Tuya Inc.*
[Product page](https://developer.tuya.com/en/docs/iot/wb3l-module-datasheet?id=K9duiggw2v8sp)
- [General info](../../docs/platform/beken-72xx/README.md)
- [Flashing guide](../../docs/platform/beken-72xx/flashing.md)
- [BkWriter v1.6.0](https://images.tuyacn.com/smart/bk_writer1.60/bk_writer1.60.exe)
Parameter | Value
-------------|----------------------------------
MCU | BK7231T
Manufacturer | Beken
Series | BK72XX
Frequency | 120 MHz
Flash size | 2 MiB
RAM size | 256 KiB
Voltage | 3.0V - 3.6V
I/O | 16x GPIO, 6x PWM, 2x UART, 1x ADC
Wi-Fi | 802.11 b/g/n
Bluetooth | BLE v4.2
## Pinout
![Pinout](pinout_wb3l.svg)
## Arduino Core pin mapping
No. | Pin | UART | I²C | SPI | PWM | Other
----|-----------|----------|----------|------|------|------
D0 | P23 | | | | | TDO
D1 | P14 | | | SCK | |
D2 | P26 | | | | PWM5 |
D3 | P24 | | | | PWM4 |
D4 | P6 | | | | PWM0 |
D5 | P9 | | | | PWM3 |
D6 | P0 | UART2_TX | I2C2_SCL | | |
D7 | P16 | | | MOSI | |
D8 | P8 | | | | PWM2 |
D9 | P7 | | | | PWM1 |
D10 | P10 | UART1_RX | | | |
D11 | P11 | UART1_TX | | | |
D12 | P22 | | | | | TDI
D13 | P21 | | I2C1_SDA | | | TMS
D14 | P20 | | I2C1_SCL | | | TCK
D15 | 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
TLV Store | 0x1E0000 | 4 KiB / 0x1000 | 0x1E1000
Network Data | 0x1E1000 | 8 KiB / 0x2000 | 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.

372
boards/wb3l/pinout_wb3l.svg Normal file
View File

@@ -0,0 +1,372 @@
<?xml version="1.0" encoding="utf-8" ?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="full" height="500" version="1.1" viewBox="0,0,85.33333333333333,41.666666666666664" width="1024">
<defs/>
<rect fill="white" height="41.666666666666664" stroke="black" stroke-width="0.1" width="85.33333333333333" x="0" y="0"/>
<linearGradient gradientUnits="objectBoundingBox" id="id1" x1="1.0" x2="0.0" y1="0.0" y2="1.0">
<stop offset="0%" stop-color="#f9f9f9"/>
<stop offset="100%" stop-color="#ededed"/>
</linearGradient>
<rect fill="url(#id1) none" height="23.9" stroke="#b5a739" stroke-width="0.1" width="15.9" x="37.29166666666666" y="5.433333333333331"/>
<rect fill="#e5b472" height="1.2" id="esp12e-21.front.left.pin1.trace" width="0.7" x="37.24166666666666" y="13.133333333333331"/>
<circle cx="37.24166666666666" cy="13.73333333333333" fill="#fff" id="esp12e-21.front.left.pin1.cast" r="0.35"/>
<rect fill="#e5b472" height="1.2" id="esp12e-21.front.left.pin2.trace" width="0.7" x="37.24166666666666" y="15.133333333333331"/>
<circle cx="37.24166666666666" cy="15.73333333333333" fill="#fff" id="esp12e-21.front.left.pin2.cast" r="0.35"/>
<rect fill="#e5b472" height="1.2" id="esp12e-21.front.left.pin3.trace" width="0.7" x="37.24166666666666" y="17.133333333333333"/>
<circle cx="37.24166666666666" cy="17.73333333333333" fill="#fff" id="esp12e-21.front.left.pin3.cast" r="0.35"/>
<rect fill="#e5b472" height="1.2" id="esp12e-21.front.left.pin4.trace" width="0.7" x="37.24166666666666" y="19.133333333333333"/>
<circle cx="37.24166666666666" cy="19.73333333333333" fill="#fff" id="esp12e-21.front.left.pin4.cast" r="0.35"/>
<rect fill="#e5b472" height="1.2" id="esp12e-21.front.left.pin5.trace" width="0.7" x="37.24166666666666" y="21.133333333333333"/>
<circle cx="37.24166666666666" cy="21.733333333333334" fill="#fff" id="esp12e-21.front.left.pin5.cast" r="0.35"/>
<rect fill="#e5b472" height="1.2" id="esp12e-21.front.left.pin6.trace" width="0.7" x="37.24166666666666" y="23.133333333333333"/>
<circle cx="37.24166666666666" cy="23.733333333333334" fill="#fff" id="esp12e-21.front.left.pin6.cast" r="0.35"/>
<rect fill="#e5b472" height="1.2" id="esp12e-21.front.left.pin7.trace" width="0.7" x="37.24166666666666" y="25.133333333333333"/>
<circle cx="37.24166666666666" cy="25.733333333333334" fill="#fff" id="esp12e-21.front.left.pin7.cast" r="0.35"/>
<rect fill="#e5b472" height="1.2" id="esp12e-21.front.left.pin8.trace" width="0.7" x="37.24166666666666" y="27.133333333333333"/>
<circle cx="37.24166666666666" cy="27.733333333333334" fill="#fff" id="esp12e-21.front.left.pin8.cast" r="0.35"/>
<rect fill="#e5b472" height="1.2" id="esp12e-21.front.right.pin1.trace" width="0.7" x="52.54166666666666" y="13.133333333333331"/>
<circle cx="53.24166666666666" cy="13.73333333333333" fill="#fff" id="esp12e-21.front.right.pin1.cast" r="0.35"/>
<rect fill="#e5b472" height="1.2" id="esp12e-21.front.right.pin2.trace" width="0.7" x="52.54166666666666" y="15.133333333333331"/>
<circle cx="53.24166666666666" cy="15.73333333333333" fill="#fff" id="esp12e-21.front.right.pin2.cast" r="0.35"/>
<rect fill="#e5b472" height="1.2" id="esp12e-21.front.right.pin3.trace" width="0.7" x="52.54166666666666" y="17.133333333333333"/>
<circle cx="53.24166666666666" cy="17.73333333333333" fill="#fff" id="esp12e-21.front.right.pin3.cast" r="0.35"/>
<rect fill="#e5b472" height="1.2" id="esp12e-21.front.right.pin4.trace" width="0.7" x="52.54166666666666" y="19.133333333333333"/>
<circle cx="53.24166666666666" cy="19.73333333333333" fill="#fff" id="esp12e-21.front.right.pin4.cast" r="0.35"/>
<rect fill="#e5b472" height="1.2" id="esp12e-21.front.right.pin5.trace" width="0.7" x="52.54166666666666" y="21.133333333333333"/>
<circle cx="53.24166666666666" cy="21.733333333333334" fill="#fff" id="esp12e-21.front.right.pin5.cast" r="0.35"/>
<rect fill="#e5b472" height="1.2" id="esp12e-21.front.right.pin6.trace" width="0.7" x="52.54166666666666" y="23.133333333333333"/>
<circle cx="53.24166666666666" cy="23.733333333333334" fill="#fff" id="esp12e-21.front.right.pin6.cast" r="0.35"/>
<rect fill="#e5b472" height="1.2" id="esp12e-21.front.right.pin7.trace" width="0.7" x="52.54166666666666" y="25.133333333333333"/>
<circle cx="53.24166666666666" cy="25.733333333333334" fill="#fff" id="esp12e-21.front.right.pin7.cast" r="0.35"/>
<rect fill="#e5b472" height="1.2" id="esp12e-21.front.right.pin8.trace" width="0.7" x="52.54166666666666" y="27.133333333333333"/>
<circle cx="53.24166666666666" cy="27.733333333333334" fill="#fff" id="esp12e-21.front.right.pin8.cast" r="0.35"/>
<rect fill="#e5b472" height="0.7" id="pins_horz5_2mm_0.7mm.pin1.trace" width="1.2" x="40.69166666666666" y="28.68333333333333"/>
<circle cx="41.29166666666666" cy="29.383333333333333" fill="#fff" id="pins_horz5_2mm_0.7mm.pin1.cast" r="0.35"/>
<rect fill="#e5b472" height="0.7" id="pins_horz5_2mm_0.7mm.pin2.trace" width="1.2" x="42.69166666666666" y="28.68333333333333"/>
<circle cx="43.29166666666666" cy="29.383333333333333" fill="#fff" id="pins_horz5_2mm_0.7mm.pin2.cast" r="0.35"/>
<rect fill="#e5b472" height="0.7" id="pins_horz5_2mm_0.7mm.pin3.trace" width="1.2" x="44.69166666666666" y="28.68333333333333"/>
<circle cx="45.29166666666666" cy="29.383333333333333" fill="#fff" id="pins_horz5_2mm_0.7mm.pin3.cast" r="0.35"/>
<rect fill="#e5b472" height="0.7" id="pins_horz5_2mm_0.7mm.pin4.trace" width="1.2" x="46.69166666666666" y="28.68333333333333"/>
<circle cx="47.29166666666666" cy="29.383333333333333" fill="#fff" id="pins_horz5_2mm_0.7mm.pin4.cast" r="0.35"/>
<rect fill="#e5b472" height="0.7" id="pins_horz5_2mm_0.7mm.pin5.trace" width="1.2" x="48.69166666666666" y="28.68333333333333"/>
<circle cx="49.29166666666666" cy="29.383333333333333" fill="#fff" id="pins_horz5_2mm_0.7mm.pin5.cast" r="0.35"/>
<rect fill="#4e4c4c" height="2.0" width="0.2" x="41.19166666666666" y="29.58333333333333"/>
<rect fill="#4e4c4c" height="0.2" width="0.2" x="40.99166666666666" y="31.383333333333333"/>
<rect height="0.0" id="esp12e-21.front.down.label1.anchor" width="0.0" x="41.49166666666666" y="31.483333333333334"/>
<rect fill="#4e4c4c" height="4.0" width="0.2" x="43.19166666666666" y="29.58333333333333"/>
<rect fill="#4e4c4c" height="0.2" width="2.2" x="40.99166666666666" y="33.38333333333333"/>
<rect height="0.0" id="esp12e-21.front.down.label2.anchor" width="0.0" x="41.49166666666666" y="33.483333333333334"/>
<rect fill="#4e4c4c" height="6.0" width="0.2" x="45.19166666666666" y="29.58333333333333"/>
<rect fill="#4e4c4c" height="0.2" width="4.2" x="40.99166666666666" y="35.38333333333333"/>
<rect height="0.0" id="esp12e-21.front.down.label3.anchor" width="0.0" x="41.49166666666666" y="35.483333333333334"/>
<rect fill="#4e4c4c" height="6.0" width="0.2" x="47.19166666666666" y="29.58333333333333"/>
<rect fill="#4e4c4c" height="0.2" width="4.2" x="47.29166666666666" y="35.38333333333333"/>
<rect height="0.0" id="esp12e-21.front.down.label4.anchor" width="0.0" x="50.99166666666666" y="35.483333333333334"/>
<rect fill="#4e4c4c" height="4.0" width="0.2" x="49.19166666666666" y="29.58333333333333"/>
<rect fill="#4e4c4c" height="0.2" width="2.2" x="49.29166666666666" y="33.38333333333333"/>
<rect height="0.0" id="esp12e-21.front.down.label5.anchor" width="0.0" x="50.99166666666666" y="33.483333333333334"/>
<linearGradient gradientUnits="objectBoundingBox" id="id2" x1="1.0" x2="0.0" y1="0.0" y2="1.0">
<stop offset="0%" stop-color="whitesmoke"/>
<stop offset="100%" stop-color="#999"/>
</linearGradient>
<rect fill="url(#id2) none" height="15.8" rx="0.5" ry="0.5" width="13.6" x="38.44166666666666" y="12.333333333333332"/>
<rect fill="#000" height="0.15" width="15.0" x="37.74166666666666" y="11.583333333333332"/>
<text fill="#000" font-family="Consolas" font-size="1.0" x="44.24166666666666" y="10.883333333333331">WB3L</text>
<rect fill="#e0e0e0" height="5.2" width="0.5" x="38.34166666666666" y="6.183333333333331"/>
<rect fill="#e0e0e0" height="0.5" width="4.6" x="38.34166666666666" y="6.183333333333331"/>
<rect fill="#e0e0e0" height="5.2" width="0.5" x="40.54166666666666" y="6.183333333333331"/>
<rect fill="#e0e0e0" height="3.0" width="0.5" x="42.44166666666666" y="6.183333333333331"/>
<rect fill="#e0e0e0" height="0.5" width="3.0" x="42.44166666666666" y="8.68333333333333"/>
<rect fill="#e0e0e0" height="3.0" width="0.5" x="44.94166666666666" y="6.183333333333331"/>
<rect fill="#e0e0e0" height="0.5" width="2.7" x="44.94166666666666" y="6.183333333333331"/>
<rect fill="#e0e0e0" height="3.0" width="0.5" x="47.14166666666666" y="6.183333333333331"/>
<rect fill="#e0e0e0" height="0.5" width="3.0" x="47.14166666666666" y="8.68333333333333"/>
<rect fill="#e0e0e0" height="3.0" width="0.5" x="49.64166666666666" y="6.183333333333331"/>
<rect fill="#e0e0e0" height="0.5" width="2.5" x="49.64166666666666" y="6.183333333333331"/>
<rect fill="#e0e0e0" height="4.4" width="0.5" x="51.64166666666666" y="6.183333333333331"/>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="34.14166666666666" y="13.633333333333331"/>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="34.14166666666666" y="15.633333333333331"/>
<g transform="translate(30.356026020611555,14.93333333333333)">
<rect fill="#800000" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="31.841666666666658" y="15.73333333333333">P23</text>
<g transform="translate(26.756026020611557,14.93333333333333)">
<rect fill="#8ad039" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="28.24166666666666" y="15.73333333333333">ADC3</text>
<g transform="translate(23.756026020611557,14.93333333333333)">
<rect fill="#99188d" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="24.94166666666666" y="15.73333333333333">D0</text>
<g transform="translate(20.756026020611557,14.93333333333333)">
<rect fill="#16a352" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="21.94166666666666" y="15.73333333333333">A0</text>
<g transform="translate(17.156026020611556,14.93333333333333)">
<rect fill="#ffe680" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="18.64166666666666" y="15.73333333333333">TDO</text>
<g transform="translate(13.556026020611556,14.93333333333333)">
<rect fill="#f68a1e" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="15.041666666666657" y="15.73333333333333">FSO</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="34.14166666666666" y="17.63333333333333"/>
<g transform="translate(30.356026020611555,16.93333333333333)">
<rect fill="#ed602e" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="31.841666666666658" y="17.73333333333333">CEN</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="34.14166666666666" y="19.63333333333333"/>
<g transform="translate(30.356026020611555,18.93333333333333)">
<rect fill="#800000" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="31.841666666666658" y="19.73333333333333">P14</text>
<g transform="translate(27.35602602061156,18.93333333333333)">
<rect fill="#99188d" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="28.54166666666666" y="19.73333333333333">D1</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="34.14166666666666" y="21.633333333333333"/>
<g transform="translate(30.356026020611555,20.933333333333334)">
<rect fill="#800000" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="31.841666666666658" y="21.733333333333334">P26</text>
<g transform="translate(27.35602602061156,20.933333333333334)">
<rect fill="#99188d" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="28.54166666666666" y="21.733333333333334">D2</text>
<g transform="translate(23.756026020611557,20.933333333333334)">
<rect fill="#aeafc1" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="25.24166666666666" y="21.733333333333334">IRDA</text>
<g transform="translate(20.15602602061156,20.933333333333334)">
<rect fill="#afa35e" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="21.641666666666662" y="21.733333333333334">PWM5</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="34.14166666666666" y="23.633333333333333"/>
<g transform="translate(30.356026020611555,22.933333333333334)">
<rect fill="#800000" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="31.841666666666658" y="23.733333333333334">P24</text>
<g transform="translate(27.35602602061156,22.933333333333334)">
<rect fill="#99188d" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="28.54166666666666" y="23.733333333333334">D3</text>
<g transform="translate(23.756026020611557,22.933333333333334)">
<rect fill="#afa35e" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="25.24166666666666" y="23.733333333333334">PWM4</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="34.14166666666666" y="25.633333333333333"/>
<g transform="translate(30.356026020611555,24.933333333333334)">
<rect fill="#800000" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="31.841666666666658" y="25.733333333333334">P6</text>
<g transform="translate(27.35602602061156,24.933333333333334)">
<rect fill="#99188d" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="28.54166666666666" y="25.733333333333334">D4</text>
<g transform="translate(23.756026020611557,24.933333333333334)">
<rect fill="#afa35e" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="25.24166666666666" y="25.733333333333334">PWM0</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="34.14166666666666" y="27.633333333333333"/>
<g transform="translate(30.356026020611555,26.933333333333334)">
<rect fill="#cd3c24" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="31.841666666666658" y="27.733333333333334">3V3</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="53.74166666666666" y="27.633333333333333"/>
<g transform="translate(57.15602602061156,26.933333333333334)">
<rect fill="#000" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="58.641666666666666" y="27.733333333333334">GND</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="53.74166666666666" y="25.633333333333333"/>
<g transform="translate(57.15602602061156,24.933333333333334)">
<rect fill="#800000" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="58.641666666666666" y="25.733333333333334">P9</text>
<g transform="translate(60.756026020611564,24.933333333333334)">
<rect fill="#99188d" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="61.94166666666666" y="25.733333333333334">D5</text>
<g transform="translate(63.756026020611564,24.933333333333334)">
<rect fill="#afa35e" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="65.24166666666666" y="25.733333333333334">PWM3</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="53.74166666666666" y="23.633333333333333"/>
<g transform="translate(57.15602602061156,22.933333333333334)">
<rect fill="#800000" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="58.641666666666666" y="23.733333333333334">P0</text>
<g transform="translate(60.756026020611564,22.933333333333334)">
<rect fill="#99188d" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="61.94166666666666" y="23.733333333333334">D6</text>
<g transform="translate(63.756026020611564,22.933333333333334)">
<rect fill="#dcd4ee" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="65.24166666666666" y="23.733333333333334">TX2</text>
<g transform="translate(67.35602602061155,22.933333333333334)">
<rect fill="#f95" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="68.84166666666665" y="23.733333333333334">SCL2</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="53.74166666666666" y="21.633333333333333"/>
<g transform="translate(57.15602602061156,20.933333333333334)">
<rect fill="#800000" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="58.641666666666666" y="21.733333333333334">P16</text>
<g transform="translate(60.756026020611564,20.933333333333334)">
<rect fill="#99188d" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="61.94166666666666" y="21.733333333333334">D7</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="53.74166666666666" y="19.63333333333333"/>
<g transform="translate(57.15602602061156,18.93333333333333)">
<rect fill="#800000" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="58.641666666666666" y="19.73333333333333">P8</text>
<g transform="translate(60.756026020611564,18.93333333333333)">
<rect fill="#99188d" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="61.94166666666666" y="19.73333333333333">D8</text>
<g transform="translate(63.756026020611564,18.93333333333333)">
<rect fill="#afa35e" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="65.24166666666666" y="19.73333333333333">PWM2</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="53.74166666666666" y="17.63333333333333"/>
<g transform="translate(57.15602602061156,16.93333333333333)">
<rect fill="#800000" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="58.641666666666666" y="17.73333333333333">P7</text>
<g transform="translate(60.756026020611564,16.93333333333333)">
<rect fill="#99188d" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="61.94166666666666" y="17.73333333333333">D9</text>
<g transform="translate(63.756026020611564,16.93333333333333)">
<rect fill="#afa35e" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="65.24166666666666" y="17.73333333333333">PWM1</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="53.74166666666666" y="15.633333333333331"/>
<g transform="translate(57.15602602061156,14.93333333333333)">
<rect fill="#800000" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="58.641666666666666" y="15.73333333333333">P10</text>
<g transform="translate(60.756026020611564,14.93333333333333)">
<rect fill="#99188d" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="61.94166666666666" y="15.73333333333333">D10</text>
<g transform="translate(63.756026020611564,14.93333333333333)">
<rect fill="#dcd4ee" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="65.24166666666666" y="15.73333333333333">RX1</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="53.74166666666666" y="13.633333333333331"/>
<g transform="translate(57.15602602061156,12.93333333333333)">
<rect fill="#800000" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="58.641666666666666" y="13.73333333333333">P11</text>
<g transform="translate(60.756026020611564,12.93333333333333)">
<rect fill="#99188d" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="61.94166666666666" y="13.73333333333333">D11</text>
<g transform="translate(63.756026020611564,12.93333333333333)">
<rect fill="#dcd4ee" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="65.24166666666666" y="13.73333333333333">TX1</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="38.39166666666666" y="31.383333333333333"/>
<g transform="translate(34.60602602061156,30.683333333333334)">
<rect fill="#800000" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="36.09166666666666" y="31.483333333333334">P23</text>
<g transform="translate(31.006026020611554,30.683333333333334)">
<rect fill="#8ad039" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="32.49166666666666" y="31.483333333333334">ADC3</text>
<g transform="translate(28.006026020611557,30.683333333333334)">
<rect fill="#99188d" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="29.19166666666666" y="31.483333333333334">D0</text>
<g transform="translate(25.006026020611557,30.683333333333334)">
<rect fill="#16a352" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="26.19166666666666" y="31.483333333333334">A0</text>
<g transform="translate(21.406026020611556,30.683333333333334)">
<rect fill="#ffe680" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="22.89166666666666" y="31.483333333333334">TDO</text>
<g transform="translate(17.806026020611554,30.683333333333334)">
<rect fill="#f68a1e" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="19.291666666666657" y="31.483333333333334">FSO</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="38.39166666666666" y="33.38333333333333"/>
<g transform="translate(34.60602602061156,32.68333333333334)">
<rect fill="#800000" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="36.09166666666666" y="33.483333333333334">P22</text>
<g transform="translate(31.606026020611555,32.68333333333334)">
<rect fill="#99188d" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="32.79166666666666" y="33.483333333333334">D12</text>
<g transform="translate(28.006026020611557,32.68333333333334)">
<rect fill="#ffe680" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="29.49166666666666" y="33.483333333333334">TDI</text>
<g transform="translate(24.406026020611556,32.68333333333334)">
<rect fill="#f68a1e" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="25.89166666666666" y="33.483333333333334">FSI</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="38.39166666666666" y="35.38333333333333"/>
<g transform="translate(34.60602602061156,34.68333333333334)">
<rect fill="#800000" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="36.09166666666666" y="35.483333333333334">P21</text>
<g transform="translate(31.606026020611555,34.68333333333334)">
<rect fill="#99188d" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="32.79166666666666" y="35.483333333333334">D13</text>
<g transform="translate(28.006026020611557,34.68333333333334)">
<rect fill="#f95" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="29.49166666666666" y="35.483333333333334">SDA1</text>
<g transform="translate(24.406026020611556,34.68333333333334)">
<rect fill="#ffe680" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="25.89166666666666" y="35.483333333333334">TMS</text>
<g transform="translate(20.806026020611558,34.68333333333334)">
<rect fill="#f68a1e" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="middle" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="22.29166666666666" y="34.47083333333334">___</text>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="22.29166666666666" y="35.58958333333334">FCS</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="51.49166666666666" y="35.38333333333333"/>
<g transform="translate(54.90602602061156,34.68333333333334)">
<rect fill="#800000" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="56.391666666666666" y="35.483333333333334">P20</text>
<g transform="translate(58.506026020611564,34.68333333333334)">
<rect fill="#99188d" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="59.69166666666666" y="35.483333333333334">D14</text>
<g transform="translate(61.506026020611564,34.68333333333334)">
<rect fill="#f95" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="62.99166666666667" y="35.483333333333334">SCL1</text>
<g transform="translate(65.10602602061155,34.68333333333334)">
<rect fill="#ffe680" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="66.59166666666665" y="35.483333333333334">TCK</text>
<g transform="translate(68.70602602061156,34.68333333333334)">
<rect fill="#f68a1e" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="70.19166666666666" y="35.483333333333334">FSCK</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="51.49166666666666" y="33.38333333333333"/>
<g transform="translate(54.90602602061156,32.68333333333334)">
<rect fill="#800000" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="56.391666666666666" y="33.483333333333334">P1</text>
<g transform="translate(58.506026020611564,32.68333333333334)">
<rect fill="#99188d" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="59.69166666666666" y="33.483333333333334">D15</text>
<g transform="translate(61.506026020611564,32.68333333333334)">
<rect fill="#dcd4ee" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="62.99166666666667" y="33.483333333333334">RX2</text>
<g transform="translate(65.10602602061155,32.68333333333334)">
<rect fill="#f95" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="66.59166666666665" y="33.483333333333334">SDA2</text>
</svg>

After

Width:  |  Height:  |  Size: 34 KiB

View File

@@ -0,0 +1 @@
#include "variant.h"

44
boards/wb3l/variant.cpp Normal file
View File

@@ -0,0 +1,44 @@
/* This file was auto-generated from wb3l.json using boardgen */
#include <Arduino.h>
extern "C" {
// clang-format off
PinInfo pinTable[PINS_COUNT] = {
// D0: P23, ADC3, TDO, FSO
{GPIO23, PIN_GPIO | PIN_IRQ | PIN_ADC | PIN_JTAG, PIN_NONE, 0},
// D1: P14, SD_CLK, SCK
{GPIO14, PIN_GPIO | PIN_IRQ | PIN_SPI, PIN_NONE, 0},
// D2: P26, PWM5, IRDA
{GPIO26, PIN_GPIO | PIN_IRQ | PIN_PWM, PIN_NONE, 0},
// D3: P24, PWM4
{GPIO24, PIN_GPIO | PIN_IRQ | PIN_PWM, PIN_NONE, 0},
// D4: P6, PWM0
{GPIO6, PIN_GPIO | PIN_IRQ | PIN_PWM, PIN_NONE, 0},
// D5: P9, PWM3
{GPIO9, PIN_GPIO | PIN_IRQ | PIN_PWM, PIN_NONE, 0},
// D6: P0, UART2_TX, I2C2_SCL
{GPIO0, PIN_GPIO | PIN_IRQ | PIN_I2C | PIN_UART, PIN_NONE, 0},
// D7: P16, SD_D0, MOSI
{GPIO16, PIN_GPIO | PIN_IRQ | PIN_SPI, PIN_NONE, 0},
// D8: P8, PWM2
{GPIO8, PIN_GPIO | PIN_IRQ | PIN_PWM, PIN_NONE, 0},
// D9: P7, PWM1
{GPIO7, PIN_GPIO | PIN_IRQ | PIN_PWM, PIN_NONE, 0},
// D10: P10, UART1_RX
{GPIO10, PIN_GPIO | PIN_IRQ | PIN_UART, PIN_NONE, 0},
// D11: P11, UART1_TX
{GPIO11, PIN_GPIO | PIN_IRQ | PIN_UART, PIN_NONE, 0},
// D12: P22, TDI, FSI
{GPIO22, PIN_GPIO | PIN_IRQ | PIN_JTAG, PIN_NONE, 0},
// D13: P21, I2C1_SDA, TMS, MCLK, ^FCS
{GPIO21, PIN_GPIO | PIN_IRQ | PIN_I2C | PIN_I2S | PIN_JTAG, PIN_NONE, 0},
// D14: P20, I2C1_SCL, TCK, FSCK
{GPIO20, PIN_GPIO | PIN_IRQ | PIN_I2C | PIN_JTAG, PIN_NONE, 0},
// D15: P1, UART2_RX, I2C2_SDA
{GPIO1, PIN_GPIO | PIN_IRQ | PIN_I2C | PIN_UART, PIN_NONE, 0},
};
// clang-format on
} // extern "C"

41
boards/wb3l/variant.h Normal file
View File

@@ -0,0 +1,41 @@
/* This file was auto-generated from wb3l.json using boardgen */
#pragma once
#include <WVariant.h>
// clang-format off
// Pins
// ----
#define PINS_COUNT 16
#define NUM_DIGITAL_PINS 16
#define NUM_ANALOG_INPUTS 1
#define NUM_ANALOG_OUTPUTS 0
// Analog pins
// -----------
#define PIN_A0 0u // GPIO23
#define PIN_A0 0u // GPIO23
#define A0 PIN_A0
#define A0 PIN_A0
// SPI Interfaces
// --------------
#define SPI_INTERFACES_COUNT 0
// Wire Interfaces
// ---------------
#define WIRE_INTERFACES_COUNT 2
#define PIN_WIRE1_SCL 14u // GPIO20
#define PIN_WIRE1_SDA 13u // GPIO21
#define PIN_WIRE2_SCL 6u // GPIO0
#define PIN_WIRE2_SDA 15u // GPIO1
// Serial ports
// ------------
#define SERIAL_INTERFACES_COUNT 2
#define PIN_SERIAL1_RX 10u // GPIO10
#define PIN_SERIAL1_TX 11u // GPIO11
#define PIN_SERIAL2_RX 15u // GPIO1
#define PIN_SERIAL2_TX 6u // GPIO0

19
boards/wb3s.json Normal file
View File

@@ -0,0 +1,19 @@
{
"_base": [
"beken-72xx",
"beken-7231t",
"beken-7231t-tuya",
"pcb/ic-bk7231-qfn32",
"pcb/wb3s"
],
"build": {
"mcu": "bk7231t",
"variant": "wb3s"
},
"name": "WB3S Wi-Fi Module",
"url": "https://developer.tuya.com/en/docs/iot/wb3s-module-datasheet?id=K9dx20n6hz5n4",
"vendor": "Tuya Inc.",
"pcb": {
"symbol": "WB3S"
}
}

65
boards/wb3s/README.md Normal file
View File

@@ -0,0 +1,65 @@
# WB3S Wi-Fi Module
*by Tuya Inc.*
[Product page](https://developer.tuya.com/en/docs/iot/wb3s-module-datasheet?id=K9dx20n6hz5n4)
- [General info](../../docs/platform/beken-72xx/README.md)
- [Flashing guide](../../docs/platform/beken-72xx/flashing.md)
- [BkWriter v1.6.0](https://images.tuyacn.com/smart/bk_writer1.60/bk_writer1.60.exe)
Parameter | Value
-------------|----------------------------------
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
## Pinout
![Pinout](pinout_wb3s.svg)
## Arduino Core pin mapping
No. | Pin | UART | I²C | SPI | PWM | Other
----|-----------|----------|----------|-----|------|------
D0 | P23 | | | | | TDO
D1 | P14 | | | SCK | |
D2 | P26 | | | | PWM5 |
D3 | P24 | | | | PWM4 |
D4 | P6 | | | | PWM0 |
D5 | P7 | | | | PWM1 |
D6 | P0 | UART2_TX | I2C2_SCL | | |
D7 | P1 | UART2_RX | I2C2_SDA | | |
D8 | P9 | | | | PWM3 |
D9 | P8 | | | | PWM2 |
D10 | P10 | UART1_RX | | | |
D11 | P11 | UART1_TX | | | |
D12 | P22 | | | | | TDI
D13 | P21 | | I2C1_SDA | | | TMS
D14 | P20 | | I2C1_SCL | | | TCK
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
TLV Store | 0x1E0000 | 4 KiB / 0x1000 | 0x1E1000
Network Data | 0x1E1000 | 8 KiB / 0x2000 | 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.

370
boards/wb3s/pinout_wb3s.svg Normal file
View File

@@ -0,0 +1,370 @@
<?xml version="1.0" encoding="utf-8" ?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:xlink="http://www.w3.org/1999/xlink" baseProfile="full" height="500" version="1.1" viewBox="0,0,85.33333333333333,41.666666666666664" width="1024">
<defs/>
<rect fill="white" height="41.666666666666664" stroke="black" stroke-width="0.1" width="85.33333333333333" x="0" y="0"/>
<linearGradient gradientUnits="objectBoundingBox" id="id1" x1="1.0" x2="0.0" y1="0.0" y2="1.0">
<stop offset="0%" stop-color="#47a8cd"/>
<stop offset="100%" stop-color="#008fb5"/>
</linearGradient>
<rect fill="url(#id1) none" height="23.9" stroke="#b5a739" stroke-width="0.1" width="15.9" x="37.79166666666666" y="5.433333333333331"/>
<rect fill="#e5b472" height="1.2" id="esp12e-22.front.left.pin1.trace" width="0.7" x="37.74166666666666" y="13.133333333333331"/>
<circle cx="37.74166666666666" cy="13.73333333333333" fill="#fff" id="esp12e-22.front.left.pin1.cast" r="0.35"/>
<rect fill="#e5b472" height="1.2" id="esp12e-22.front.left.pin2.trace" width="0.7" x="37.74166666666666" y="15.133333333333331"/>
<circle cx="37.74166666666666" cy="15.73333333333333" fill="#fff" id="esp12e-22.front.left.pin2.cast" r="0.35"/>
<rect fill="#e5b472" height="1.2" id="esp12e-22.front.left.pin3.trace" width="0.7" x="37.74166666666666" y="17.133333333333333"/>
<circle cx="37.74166666666666" cy="17.73333333333333" fill="#fff" id="esp12e-22.front.left.pin3.cast" r="0.35"/>
<rect fill="#e5b472" height="1.2" id="esp12e-22.front.left.pin4.trace" width="0.7" x="37.74166666666666" y="19.133333333333333"/>
<circle cx="37.74166666666666" cy="19.73333333333333" fill="#fff" id="esp12e-22.front.left.pin4.cast" r="0.35"/>
<rect fill="#e5b472" height="1.2" id="esp12e-22.front.left.pin5.trace" width="0.7" x="37.74166666666666" y="21.133333333333333"/>
<circle cx="37.74166666666666" cy="21.733333333333334" fill="#fff" id="esp12e-22.front.left.pin5.cast" r="0.35"/>
<rect fill="#e5b472" height="1.2" id="esp12e-22.front.left.pin6.trace" width="0.7" x="37.74166666666666" y="23.133333333333333"/>
<circle cx="37.74166666666666" cy="23.733333333333334" fill="#fff" id="esp12e-22.front.left.pin6.cast" r="0.35"/>
<rect fill="#e5b472" height="1.2" id="esp12e-22.front.left.pin7.trace" width="0.7" x="37.74166666666666" y="25.133333333333333"/>
<circle cx="37.74166666666666" cy="25.733333333333334" fill="#fff" id="esp12e-22.front.left.pin7.cast" r="0.35"/>
<rect fill="#e5b472" height="1.2" id="esp12e-22.front.left.pin8.trace" width="0.7" x="37.74166666666666" y="27.133333333333333"/>
<circle cx="37.74166666666666" cy="27.733333333333334" fill="#fff" id="esp12e-22.front.left.pin8.cast" r="0.35"/>
<rect fill="#e5b472" height="1.2" id="esp12e-22.front.right.pin1.trace" width="0.7" x="53.04166666666666" y="13.133333333333331"/>
<circle cx="53.74166666666666" cy="13.73333333333333" fill="#fff" id="esp12e-22.front.right.pin1.cast" r="0.35"/>
<rect fill="#e5b472" height="1.2" id="esp12e-22.front.right.pin2.trace" width="0.7" x="53.04166666666666" y="15.133333333333331"/>
<circle cx="53.74166666666666" cy="15.73333333333333" fill="#fff" id="esp12e-22.front.right.pin2.cast" r="0.35"/>
<rect fill="#e5b472" height="1.2" id="esp12e-22.front.right.pin3.trace" width="0.7" x="53.04166666666666" y="17.133333333333333"/>
<circle cx="53.74166666666666" cy="17.73333333333333" fill="#fff" id="esp12e-22.front.right.pin3.cast" r="0.35"/>
<rect fill="#e5b472" height="1.2" id="esp12e-22.front.right.pin4.trace" width="0.7" x="53.04166666666666" y="19.133333333333333"/>
<circle cx="53.74166666666666" cy="19.73333333333333" fill="#fff" id="esp12e-22.front.right.pin4.cast" r="0.35"/>
<rect fill="#e5b472" height="1.2" id="esp12e-22.front.right.pin5.trace" width="0.7" x="53.04166666666666" y="21.133333333333333"/>
<circle cx="53.74166666666666" cy="21.733333333333334" fill="#fff" id="esp12e-22.front.right.pin5.cast" r="0.35"/>
<rect fill="#e5b472" height="1.2" id="esp12e-22.front.right.pin6.trace" width="0.7" x="53.04166666666666" y="23.133333333333333"/>
<circle cx="53.74166666666666" cy="23.733333333333334" fill="#fff" id="esp12e-22.front.right.pin6.cast" r="0.35"/>
<rect fill="#e5b472" height="1.2" id="esp12e-22.front.right.pin7.trace" width="0.7" x="53.04166666666666" y="25.133333333333333"/>
<circle cx="53.74166666666666" cy="25.733333333333334" fill="#fff" id="esp12e-22.front.right.pin7.cast" r="0.35"/>
<rect fill="#e5b472" height="1.2" id="esp12e-22.front.right.pin8.trace" width="0.7" x="53.04166666666666" y="27.133333333333333"/>
<circle cx="53.74166666666666" cy="27.733333333333334" fill="#fff" id="esp12e-22.front.right.pin8.cast" r="0.35"/>
<rect fill="#e5b472" height="0.7" id="pins_horz6_2mm_0.7mm.pin1.trace" width="1.2" x="40.19166666666666" y="28.68333333333333"/>
<circle cx="40.79166666666666" cy="29.383333333333333" fill="#fff" id="pins_horz6_2mm_0.7mm.pin1.cast" r="0.35"/>
<rect fill="#e5b472" height="0.7" id="pins_horz6_2mm_0.7mm.pin2.trace" width="1.2" x="42.19166666666666" y="28.68333333333333"/>
<circle cx="42.79166666666666" cy="29.383333333333333" fill="#fff" id="pins_horz6_2mm_0.7mm.pin2.cast" r="0.35"/>
<rect fill="#e5b472" height="0.7" id="pins_horz6_2mm_0.7mm.pin3.trace" width="1.2" x="44.19166666666666" y="28.68333333333333"/>
<circle cx="44.79166666666666" cy="29.383333333333333" fill="#fff" id="pins_horz6_2mm_0.7mm.pin3.cast" r="0.35"/>
<rect fill="#e5b472" height="0.7" id="pins_horz6_2mm_0.7mm.pin4.trace" width="1.2" x="46.19166666666666" y="28.68333333333333"/>
<circle cx="46.79166666666666" cy="29.383333333333333" fill="#fff" id="pins_horz6_2mm_0.7mm.pin4.cast" r="0.35"/>
<rect fill="#e5b472" height="0.7" id="pins_horz6_2mm_0.7mm.pin5.trace" width="1.2" x="48.19166666666666" y="28.68333333333333"/>
<circle cx="48.79166666666666" cy="29.383333333333333" fill="#fff" id="pins_horz6_2mm_0.7mm.pin5.cast" r="0.35"/>
<rect fill="#e5b472" height="0.7" id="pins_horz6_2mm_0.7mm.pin6.trace" width="1.2" x="50.19166666666666" y="28.68333333333333"/>
<circle cx="50.79166666666666" cy="29.383333333333333" fill="#fff" id="pins_horz6_2mm_0.7mm.pin6.cast" r="0.35"/>
<rect fill="#4e4c4c" height="2.0" width="0.2" x="40.69166666666666" y="29.58333333333333"/>
<rect fill="#4e4c4c" height="0.2" width="0.2" x="40.49166666666666" y="31.383333333333333"/>
<rect height="0.0" id="esp12e-22.front.down.label1.anchor" width="0.0" x="40.99166666666666" y="31.483333333333334"/>
<rect fill="#4e4c4c" height="4.0" width="0.2" x="42.69166666666666" y="29.58333333333333"/>
<rect fill="#4e4c4c" height="0.2" width="2.2" x="40.49166666666666" y="33.38333333333333"/>
<rect height="0.0" id="esp12e-22.front.down.label2.anchor" width="0.0" x="40.99166666666666" y="33.483333333333334"/>
<rect fill="#4e4c4c" height="6.0" width="0.2" x="44.69166666666666" y="29.58333333333333"/>
<rect fill="#4e4c4c" height="0.2" width="4.2" x="40.49166666666666" y="35.38333333333333"/>
<rect height="0.0" id="esp12e-22.front.down.label3.anchor" width="0.0" x="40.99166666666666" y="35.483333333333334"/>
<rect fill="#4e4c4c" height="6.0" width="0.2" x="46.69166666666666" y="29.58333333333333"/>
<rect fill="#4e4c4c" height="0.2" width="4.2" x="46.79166666666666" y="35.38333333333333"/>
<rect height="0.0" id="esp12e-22.front.down.label4.anchor" width="0.0" x="50.49166666666666" y="35.483333333333334"/>
<rect fill="#4e4c4c" height="4.0" width="0.2" x="48.69166666666666" y="29.58333333333333"/>
<rect fill="#4e4c4c" height="0.2" width="2.2" x="48.79166666666666" y="33.38333333333333"/>
<rect height="0.0" id="esp12e-22.front.down.label5.anchor" width="0.0" x="50.49166666666666" y="33.483333333333334"/>
<rect fill="#4e4c4c" height="2.0" width="0.2" x="50.69166666666666" y="29.58333333333333"/>
<rect fill="#4e4c4c" height="0.2" width="0.2" x="50.79166666666666" y="31.383333333333333"/>
<rect height="0.0" id="esp12e-22.front.down.label6.anchor" width="0.0" x="50.49166666666666" y="31.483333333333334"/>
<linearGradient gradientUnits="objectBoundingBox" id="id2" x1="1.0" x2="0.0" y1="0.0" y2="1.0">
<stop offset="0%" stop-color="whitesmoke"/>
<stop offset="100%" stop-color="#999"/>
</linearGradient>
<rect fill="url(#id2) none" height="15.8" rx="0.5" ry="0.5" width="13.6" x="38.94166666666666" y="12.333333333333332"/>
<rect fill="#fff" height="0.15" width="15.0" x="38.24166666666666" y="11.583333333333332"/>
<text fill="#fff" font-family="Consolas" font-size="1.0" x="44.74166666666666" y="10.883333333333331">WB3S</text>
<rect fill="#58839b" height="5.2" width="0.5" x="38.84166666666666" y="6.183333333333331"/>
<rect fill="#58839b" height="0.5" width="4.6" x="38.84166666666666" y="6.183333333333331"/>
<rect fill="#58839b" height="5.2" width="0.5" x="41.04166666666666" y="6.183333333333331"/>
<rect fill="#58839b" height="3.0" width="0.5" x="42.94166666666666" y="6.183333333333331"/>
<rect fill="#58839b" height="0.5" width="3.0" x="42.94166666666666" y="8.68333333333333"/>
<rect fill="#58839b" height="3.0" width="0.5" x="45.44166666666666" y="6.183333333333331"/>
<rect fill="#58839b" height="0.5" width="2.7" x="45.44166666666666" y="6.183333333333331"/>
<rect fill="#58839b" height="3.0" width="0.5" x="47.64166666666666" y="6.183333333333331"/>
<rect fill="#58839b" height="0.5" width="3.0" x="47.64166666666666" y="8.68333333333333"/>
<rect fill="#58839b" height="3.0" width="0.5" x="50.14166666666666" y="6.183333333333331"/>
<rect fill="#58839b" height="0.5" width="2.5" x="50.14166666666666" y="6.183333333333331"/>
<rect fill="#58839b" height="4.4" width="0.5" x="52.14166666666666" y="6.183333333333331"/>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="34.64166666666666" y="13.633333333333331"/>
<g transform="translate(30.856026020611555,12.93333333333333)">
<rect fill="#ed602e" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="32.34166666666666" y="13.73333333333333">CEN</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="34.64166666666666" y="15.633333333333331"/>
<g transform="translate(30.856026020611555,14.93333333333333)">
<rect fill="#800000" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="32.34166666666666" y="15.73333333333333">P23</text>
<g transform="translate(27.256026020611557,14.93333333333333)">
<rect fill="#8ad039" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="28.74166666666666" y="15.73333333333333">ADC3</text>
<g transform="translate(24.256026020611557,14.93333333333333)">
<rect fill="#99188d" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="25.44166666666666" y="15.73333333333333">D0</text>
<g transform="translate(21.256026020611557,14.93333333333333)">
<rect fill="#16a352" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="22.44166666666666" y="15.73333333333333">A0</text>
<g transform="translate(17.656026020611556,14.93333333333333)">
<rect fill="#ffe680" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="19.14166666666666" y="15.73333333333333">TDO</text>
<g transform="translate(14.056026020611556,14.93333333333333)">
<rect fill="#f68a1e" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="15.541666666666657" y="15.73333333333333">FSO</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="34.64166666666666" y="17.63333333333333"/>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="34.64166666666666" y="19.63333333333333"/>
<g transform="translate(30.856026020611555,18.93333333333333)">
<rect fill="#800000" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="32.34166666666666" y="19.73333333333333">P14</text>
<g transform="translate(27.85602602061156,18.93333333333333)">
<rect fill="#99188d" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="29.04166666666666" y="19.73333333333333">D1</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="34.64166666666666" y="21.633333333333333"/>
<g transform="translate(30.856026020611555,20.933333333333334)">
<rect fill="#800000" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="32.34166666666666" y="21.733333333333334">P26</text>
<g transform="translate(27.85602602061156,20.933333333333334)">
<rect fill="#99188d" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="29.04166666666666" y="21.733333333333334">D2</text>
<g transform="translate(24.256026020611557,20.933333333333334)">
<rect fill="#aeafc1" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="25.74166666666666" y="21.733333333333334">IRDA</text>
<g transform="translate(20.65602602061156,20.933333333333334)">
<rect fill="#afa35e" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="22.141666666666662" y="21.733333333333334">PWM5</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="34.64166666666666" y="23.633333333333333"/>
<g transform="translate(30.856026020611555,22.933333333333334)">
<rect fill="#800000" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="32.34166666666666" y="23.733333333333334">P24</text>
<g transform="translate(27.85602602061156,22.933333333333334)">
<rect fill="#99188d" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="29.04166666666666" y="23.733333333333334">D3</text>
<g transform="translate(24.256026020611557,22.933333333333334)">
<rect fill="#afa35e" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="25.74166666666666" y="23.733333333333334">PWM4</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="34.64166666666666" y="25.633333333333333"/>
<g transform="translate(30.856026020611555,24.933333333333334)">
<rect fill="#800000" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="32.34166666666666" y="25.733333333333334">P6</text>
<g transform="translate(27.85602602061156,24.933333333333334)">
<rect fill="#99188d" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="29.04166666666666" y="25.733333333333334">D4</text>
<g transform="translate(24.256026020611557,24.933333333333334)">
<rect fill="#afa35e" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="25.74166666666666" y="25.733333333333334">PWM0</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="34.64166666666666" y="27.633333333333333"/>
<g transform="translate(30.856026020611555,26.933333333333334)">
<rect fill="#cd3c24" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="32.34166666666666" y="27.733333333333334">3V3</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="54.24166666666666" y="27.633333333333333"/>
<g transform="translate(57.65602602061156,26.933333333333334)">
<rect fill="#000" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="59.141666666666666" y="27.733333333333334">GND</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="54.24166666666666" y="25.633333333333333"/>
<g transform="translate(57.65602602061156,24.933333333333334)">
<rect fill="#800000" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="59.141666666666666" y="25.733333333333334">P7</text>
<g transform="translate(61.256026020611564,24.933333333333334)">
<rect fill="#99188d" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="62.44166666666666" y="25.733333333333334">D5</text>
<g transform="translate(64.25602602061156,24.933333333333334)">
<rect fill="#afa35e" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="65.74166666666666" y="25.733333333333334">PWM1</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="54.24166666666666" y="23.633333333333333"/>
<g transform="translate(57.65602602061156,22.933333333333334)">
<rect fill="#800000" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="59.141666666666666" y="23.733333333333334">P0</text>
<g transform="translate(61.256026020611564,22.933333333333334)">
<rect fill="#99188d" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="62.44166666666666" y="23.733333333333334">D6</text>
<g transform="translate(64.25602602061156,22.933333333333334)">
<rect fill="#dcd4ee" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="65.74166666666666" y="23.733333333333334">TX2</text>
<g transform="translate(67.85602602061155,22.933333333333334)">
<rect fill="#f95" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="69.34166666666665" y="23.733333333333334">SCL2</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="54.24166666666666" y="21.633333333333333"/>
<g transform="translate(57.65602602061156,20.933333333333334)">
<rect fill="#800000" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="59.141666666666666" y="21.733333333333334">P1</text>
<g transform="translate(61.256026020611564,20.933333333333334)">
<rect fill="#99188d" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="62.44166666666666" y="21.733333333333334">D7</text>
<g transform="translate(64.25602602061156,20.933333333333334)">
<rect fill="#dcd4ee" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="65.74166666666666" y="21.733333333333334">RX2</text>
<g transform="translate(67.85602602061155,20.933333333333334)">
<rect fill="#f95" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="69.34166666666665" y="21.733333333333334">SDA2</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="54.24166666666666" y="19.63333333333333"/>
<g transform="translate(57.65602602061156,18.93333333333333)">
<rect fill="#800000" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="59.141666666666666" y="19.73333333333333">P9</text>
<g transform="translate(61.256026020611564,18.93333333333333)">
<rect fill="#99188d" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="62.44166666666666" y="19.73333333333333">D8</text>
<g transform="translate(64.25602602061156,18.93333333333333)">
<rect fill="#afa35e" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="65.74166666666666" y="19.73333333333333">PWM3</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="54.24166666666666" y="17.63333333333333"/>
<g transform="translate(57.65602602061156,16.93333333333333)">
<rect fill="#800000" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="59.141666666666666" y="17.73333333333333">P8</text>
<g transform="translate(61.256026020611564,16.93333333333333)">
<rect fill="#99188d" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="62.44166666666666" y="17.73333333333333">D9</text>
<g transform="translate(64.25602602061156,16.93333333333333)">
<rect fill="#afa35e" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="65.74166666666666" y="17.73333333333333">PWM2</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="54.24166666666666" y="15.633333333333331"/>
<g transform="translate(57.65602602061156,14.93333333333333)">
<rect fill="#800000" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="59.141666666666666" y="15.73333333333333">P10</text>
<g transform="translate(61.256026020611564,14.93333333333333)">
<rect fill="#99188d" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="62.44166666666666" y="15.73333333333333">D10</text>
<g transform="translate(64.25602602061156,14.93333333333333)">
<rect fill="#dcd4ee" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="65.74166666666666" y="15.73333333333333">RX1</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="54.24166666666666" y="13.633333333333331"/>
<g transform="translate(57.65602602061156,12.93333333333333)">
<rect fill="#800000" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="59.141666666666666" y="13.73333333333333">P11</text>
<g transform="translate(61.256026020611564,12.93333333333333)">
<rect fill="#99188d" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="62.44166666666666" y="13.73333333333333">D11</text>
<g transform="translate(64.25602602061156,12.93333333333333)">
<rect fill="#dcd4ee" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="65.74166666666666" y="13.73333333333333">TX1</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="37.89166666666666" y="31.383333333333333"/>
<g transform="translate(34.10602602061156,30.683333333333334)">
<rect fill="#800000" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="35.59166666666666" y="31.483333333333334">P23</text>
<g transform="translate(30.506026020611554,30.683333333333334)">
<rect fill="#8ad039" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="31.991666666666656" y="31.483333333333334">ADC3</text>
<g transform="translate(27.506026020611557,30.683333333333334)">
<rect fill="#99188d" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="28.69166666666666" y="31.483333333333334">D0</text>
<g transform="translate(24.506026020611557,30.683333333333334)">
<rect fill="#16a352" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="25.69166666666666" y="31.483333333333334">A0</text>
<g transform="translate(20.906026020611556,30.683333333333334)">
<rect fill="#ffe680" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="22.39166666666666" y="31.483333333333334">TDO</text>
<g transform="translate(17.306026020611554,30.683333333333334)">
<rect fill="#f68a1e" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="18.791666666666657" y="31.483333333333334">FSO</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="37.89166666666666" y="33.38333333333333"/>
<g transform="translate(34.10602602061156,32.68333333333334)">
<rect fill="#800000" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="35.59166666666666" y="33.483333333333334">P22</text>
<g transform="translate(31.106026020611555,32.68333333333334)">
<rect fill="#99188d" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="32.29166666666666" y="33.483333333333334">D12</text>
<g transform="translate(27.506026020611557,32.68333333333334)">
<rect fill="#ffe680" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="28.99166666666666" y="33.483333333333334">TDI</text>
<g transform="translate(23.906026020611556,32.68333333333334)">
<rect fill="#f68a1e" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="25.39166666666666" y="33.483333333333334">FSI</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="37.89166666666666" y="35.38333333333333"/>
<g transform="translate(34.10602602061156,34.68333333333334)">
<rect fill="#800000" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="35.59166666666666" y="35.483333333333334">P21</text>
<g transform="translate(31.106026020611555,34.68333333333334)">
<rect fill="#99188d" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="32.29166666666666" y="35.483333333333334">D13</text>
<g transform="translate(27.506026020611557,34.68333333333334)">
<rect fill="#f95" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="28.99166666666666" y="35.483333333333334">SDA1</text>
<g transform="translate(23.906026020611556,34.68333333333334)">
<rect fill="#ffe680" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="25.39166666666666" y="35.483333333333334">TMS</text>
<g transform="translate(20.306026020611558,34.68333333333334)">
<rect fill="#f68a1e" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="middle" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="21.79166666666666" y="34.47083333333334">___</text>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="21.79166666666666" y="35.58958333333334">FCS</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="50.99166666666666" y="35.38333333333333"/>
<g transform="translate(54.40602602061156,34.68333333333334)">
<rect fill="#800000" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="55.891666666666666" y="35.483333333333334">P20</text>
<g transform="translate(58.006026020611564,34.68333333333334)">
<rect fill="#99188d" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="2.8" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="white" font-family="Consolas" font-size="1.2" text-anchor="middle" x="59.19166666666666" y="35.483333333333334">D14</text>
<g transform="translate(61.006026020611564,34.68333333333334)">
<rect fill="#f95" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="62.49166666666667" y="35.483333333333334">SCL1</text>
<g transform="translate(64.60602602061155,34.68333333333334)">
<rect fill="#ffe680" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="66.09166666666665" y="35.483333333333334">TCK</text>
<g transform="translate(68.20602602061156,34.68333333333334)">
<rect fill="#f68a1e" height="1.6" rx="0.3" ry="0.3" transform="skewX(-15)" width="3.4" x="0" y="0"/>
</g>
<text dominant-baseline="central" fill="#423F42" font-family="Consolas" font-size="1.2" text-anchor="middle" x="69.69166666666666" y="35.483333333333334">FSCK</text>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="50.99166666666666" y="33.38333333333333"/>
<rect fill="#4e4c4c" height="0.2" width="2.6" x="50.99166666666666" y="31.383333333333333"/>
</svg>

After

Width:  |  Height:  |  Size: 34 KiB

View File

@@ -0,0 +1 @@
#include "variant.h"

42
boards/wb3s/variant.cpp Normal file
View File

@@ -0,0 +1,42 @@
/* This file was auto-generated from wb3s.json using boardgen */
#include <Arduino.h>
extern "C" {
// clang-format off
PinInfo pinTable[PINS_COUNT] = {
// D0: P23, ADC3, TDO, FSO
{GPIO23, PIN_GPIO | PIN_IRQ | PIN_ADC | PIN_JTAG, PIN_NONE, 0},
// D1: P14, SD_CLK, SCK
{GPIO14, PIN_GPIO | PIN_IRQ | PIN_SPI, PIN_NONE, 0},
// D2: P26, PWM5, IRDA
{GPIO26, PIN_GPIO | PIN_IRQ | PIN_PWM, PIN_NONE, 0},
// D3: P24, PWM4
{GPIO24, PIN_GPIO | PIN_IRQ | PIN_PWM, PIN_NONE, 0},
// D4: P6, PWM0
{GPIO6, PIN_GPIO | PIN_IRQ | PIN_PWM, PIN_NONE, 0},
// D5: P7, PWM1
{GPIO7, PIN_GPIO | PIN_IRQ | PIN_PWM, PIN_NONE, 0},
// D6: P0, UART2_TX, I2C2_SCL
{GPIO0, PIN_GPIO | PIN_IRQ | PIN_I2C | PIN_UART, PIN_NONE, 0},
// D7: P1, UART2_RX, I2C2_SDA
{GPIO1, PIN_GPIO | PIN_IRQ | PIN_I2C | PIN_UART, PIN_NONE, 0},
// D8: P9, PWM3
{GPIO9, PIN_GPIO | PIN_IRQ | PIN_PWM, PIN_NONE, 0},
// D9: P8, PWM2
{GPIO8, PIN_GPIO | PIN_IRQ | PIN_PWM, PIN_NONE, 0},
// D10: P10, UART1_RX
{GPIO10, PIN_GPIO | PIN_IRQ | PIN_UART, PIN_NONE, 0},
// D11: P11, UART1_TX
{GPIO11, PIN_GPIO | PIN_IRQ | PIN_UART, PIN_NONE, 0},
// D12: P22, TDI, FSI
{GPIO22, PIN_GPIO | PIN_IRQ | PIN_JTAG, PIN_NONE, 0},
// D13: P21, I2C1_SDA, TMS, MCLK, ^FCS
{GPIO21, PIN_GPIO | PIN_IRQ | PIN_I2C | PIN_I2S | PIN_JTAG, PIN_NONE, 0},
// D14: P20, I2C1_SCL, TCK, FSCK
{GPIO20, PIN_GPIO | PIN_IRQ | PIN_I2C | PIN_JTAG, PIN_NONE, 0},
};
// clang-format on
} // extern "C"

41
boards/wb3s/variant.h Normal file
View File

@@ -0,0 +1,41 @@
/* This file was auto-generated from wb3s.json using boardgen */
#pragma once
#include <WVariant.h>
// 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 0u // GPIO23
#define PIN_A0 0u // GPIO23
#define A0 PIN_A0
#define A0 PIN_A0
// SPI Interfaces
// --------------
#define SPI_INTERFACES_COUNT 0
// Wire Interfaces
// ---------------
#define WIRE_INTERFACES_COUNT 2
#define PIN_WIRE1_SCL 14u // GPIO20
#define PIN_WIRE1_SDA 13u // GPIO21
#define PIN_WIRE2_SCL 6u // GPIO0
#define PIN_WIRE2_SDA 7u // GPIO1
// Serial ports
// ------------
#define SERIAL_INTERFACES_COUNT 2
#define PIN_SERIAL1_RX 10u // GPIO10
#define PIN_SERIAL1_TX 11u // GPIO11
#define PIN_SERIAL2_RX 7u // GPIO1
#define PIN_SERIAL2_TX 6u // GPIO0

View File

@@ -7,6 +7,9 @@ Name | MCU | Flash | RAM | Pin
**Tuya Inc.** | | | | | | | | **Tuya Inc.** | | | | | | | |
[CB2S](../boards/cb2s/README.md) | BK7231N | 2 MiB | 256 KiB | 11 (8 I/O) | ✔️ | ✔️ | ❌ | `beken-7231n` [CB2S](../boards/cb2s/README.md) | BK7231N | 2 MiB | 256 KiB | 11 (8 I/O) | ✔️ | ✔️ | ❌ | `beken-7231n`
[WB2L](../boards/wb2l/README.md) | BK7231T | 2 MiB | 256 KiB | 7 (5 I/O) | ✔️ | ✔️ | ❌ | `beken-7231t` [WB2L](../boards/wb2l/README.md) | BK7231T | 2 MiB | 256 KiB | 7 (5 I/O) | ✔️ | ✔️ | ❌ | `beken-7231t`
[WB2S](../boards/wb2s/README.md) | BK7231T | 2 MiB | 256 KiB | 11 (8 I/O) | ✔️ | ✔️ | ❌ | `beken-7231t`
[WB3L](../boards/wb3l/README.md) | BK7231T | 2 MiB | 256 KiB | 21 (17 I/O) | ✔️ | ✔️ | ❌ | `beken-7231t`
[WB3S](../boards/wb3s/README.md) | BK7231T | 2 MiB | 256 KiB | 22 (16 I/O) | ✔️ | ✔️ | ❌ | `beken-7231t`
[WR2](../boards/wr2/README.md) | RTL8710BN | 2 MiB | 256 KiB | 11 (8 I/O) | ✔️ | ❌ | ❌ | `realtek-ambz` [WR2](../boards/wr2/README.md) | RTL8710BN | 2 MiB | 256 KiB | 11 (8 I/O) | ✔️ | ❌ | ❌ | `realtek-ambz`
[WR2E](../boards/wr2e/README.md) | RTL8710BN | 2 MiB | 256 KiB | 11 (8 I/O) | ✔️ | ❌ | ❌ | `realtek-ambz` [WR2E](../boards/wr2e/README.md) | RTL8710BN | 2 MiB | 256 KiB | 11 (8 I/O) | ✔️ | ❌ | ❌ | `realtek-ambz`
[WR3](../boards/wr3/README.md) | RTL8710BN | 2 MiB | 256 KiB | 16 (12 I/O) | ✔️ | ❌ | ❌ | `realtek-ambz` [WR3](../boards/wr3/README.md) | RTL8710BN | 2 MiB | 256 KiB | 16 (12 I/O) | ✔️ | ❌ | ❌ | `realtek-ambz`

View File

@@ -19,9 +19,6 @@ CR2S | RTL8720CM | 4 MiB | 4 MiB | 11 | ✔️ | ✔️ | ❌
CR3L | RTL8720CM | 4 MiB | 4 MiB | 18 | ✔️ | ✔️ | ❌ CR3L | RTL8720CM | 4 MiB | 4 MiB | 18 | ✔️ | ✔️ | ❌
**WB Series** | | | | | | | **WB Series** | | | | | | |
WB1S | BK7231T | 2 MiB | 256 KiB | 18 | ✔️ | ✔️ | ❌ WB1S | BK7231T | 2 MiB | 256 KiB | 18 | ✔️ | ✔️ | ❌
WB2S | BK7231T | 2 MiB | 256 KiB | 11 | ✔️ | ✔️ | ❌
WB3L | BK7231T | 2 MiB | 256 KiB | 18 | ✔️ | ✔️ | ❌
WB3S | BK7231T | 2 MiB | 256 KiB | 22 | ✔️ | ✔️ | ❌
WB8P | BK7231T | 2 MiB | 256 KiB | 10 | ✔️ | ✔️ | ❌ WB8P | BK7231T | 2 MiB | 256 KiB | 10 | ✔️ | ✔️ | ❌
WBLC5 | BK7231T | 2 MiB | 256 KiB | 15 | ✔️ | ✔️ | ❌ WBLC5 | BK7231T | 2 MiB | 256 KiB | 15 | ✔️ | ✔️ | ❌
WBLC9 | BK7231T | 2 MiB | 256 KiB | 8 | ✔️ | ✔️ | ❌ WBLC9 | BK7231T | 2 MiB | 256 KiB | 8 | ✔️ | ✔️ | ❌

Submodule tools/boardgen updated: cff42b3da8...76d89af332