[boards] Add initial support for BK7252
This commit is contained in:
@@ -13,6 +13,7 @@ enum ChipFamily {
|
||||
F_RTL8720D = 0x3379CFE2, // Realtek AmebaD
|
||||
F_BK7231U = 0x675A40B0, // Beken 7231U/7231T
|
||||
F_BK7231N = 0x7B3EF230, // Beken 7231N
|
||||
F_BK7251 = 0x6A82CC42, // Beken 7251/7252
|
||||
F_BL602 = 0xDE1270B7, // Boufallo 602
|
||||
F_XR809 = 0x51E903A8, // Xradiotech 809
|
||||
F_NATIVE = 0xDEADBEEF, // Host-native
|
||||
@@ -32,4 +33,5 @@ enum ChipType {
|
||||
BK7231T = CHIP_TYPE(F_BK7231U, 0x1A), // *SCTRL_CHIP_ID = 0x7231a
|
||||
BK7231N = CHIP_TYPE(F_BK7231N, 0x1C), // *SCTRL_CHIP_ID = 0x7231c
|
||||
BL2028N = CHIP_TYPE(F_BK7231N, 0x1C), // *SCTRL_CHIP_ID = 0x7231c
|
||||
BK7252 = CHIP_TYPE(F_BK7251, 0x00), // TODO
|
||||
};
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
- [Generic - BK7231N (Tuya QFN32)](../boards/generic-bk7231n-qfn32-tuya/README.md)
|
||||
- [Generic - BK7231T (Tuya QFN32)](../boards/generic-bk7231t-qfn32-tuya/README.md)
|
||||
- [Generic - BK7252](../boards/generic-bk7252/README.md)
|
||||
- [Generic - RTL8710BN (2M/468k)](../boards/generic-rtl8710bn-2mb-468k/README.md)
|
||||
- [Generic - RTL8710BN (2M/788k)](../boards/generic-rtl8710bn-2mb-788k/README.md)
|
||||
- [Generic - RTL8710BX (4M/980k)](../boards/generic-rtl8710bx-4mb-980k/README.md)
|
||||
|
||||
40
boards/_base/beken-7252.json
Normal file
40
boards/_base/beken-7252.json
Normal file
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"build": {
|
||||
"family": "BK7251",
|
||||
"f_cpu": "180000000L",
|
||||
"ldscript_sdk": "bk7231_bsp.ld",
|
||||
"ldscript_arduino": "bk7231_bsp.ld",
|
||||
"bkboot_version": "0.1.3-bk7252",
|
||||
"bkrbl_size_app": "0x1A0000"
|
||||
},
|
||||
"flash": {
|
||||
"bootloader": "0x000000+0x11000",
|
||||
"app": "0x011000+0x1BA000",
|
||||
"filesystem": "0x1CB000+0x119000",
|
||||
"kvs": "0x2E4000+0x8000",
|
||||
"download": "0x2EC000+0x112000",
|
||||
"calibration": "0x3FE000+0x1000",
|
||||
"tlv": "0x3FF000+0x1000"
|
||||
},
|
||||
"debug": {
|
||||
"gdb_init": [
|
||||
"mem 0x200000 0x400000 ro"
|
||||
]
|
||||
},
|
||||
"upload": {
|
||||
"maximum_ram_size": 524288,
|
||||
"flash_size": 4194304,
|
||||
"maximum_size": 1703936,
|
||||
"speed": 921600
|
||||
},
|
||||
"connectivity": [
|
||||
"ble"
|
||||
],
|
||||
"doc": {
|
||||
"params": {
|
||||
"extra": {
|
||||
"Bluetooth": "BLE v5.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
186
boards/_base/ic/bk7231-qfn40.json
Normal file
186
boards/_base/ic/bk7231-qfn40.json
Normal file
@@ -0,0 +1,186 @@
|
||||
{
|
||||
"pcb": {
|
||||
"ic": {
|
||||
"10": {
|
||||
"C_NAME": "GPIO25",
|
||||
"GPIO": "P25",
|
||||
"IRQ": null,
|
||||
"USB": "DP"
|
||||
},
|
||||
"11": {
|
||||
"C_NAME": "GPIO33",
|
||||
"GPIO": "P33",
|
||||
"IRQ": null,
|
||||
"DVP": "PD1"
|
||||
},
|
||||
"12": {
|
||||
"C_NAME": "GPIO32",
|
||||
"GPIO": "P32",
|
||||
"IRQ": null,
|
||||
"DVP": "PD0"
|
||||
},
|
||||
"13": {
|
||||
"C_NAME": "GPIO29",
|
||||
"GPIO": "P29",
|
||||
"IRQ": null,
|
||||
"DVP": "PCLK"
|
||||
},
|
||||
"14": {
|
||||
"C_NAME": "GPIO27",
|
||||
"GPIO": "P27",
|
||||
"IRQ": null,
|
||||
"DVP": "MCLK"
|
||||
},
|
||||
"15": {
|
||||
"C_NAME": "GPIO30",
|
||||
"GPIO": "P30",
|
||||
"IRQ": null,
|
||||
"DVP": "HSYNC"
|
||||
},
|
||||
"16": {
|
||||
"C_NAME": "GPIO31",
|
||||
"GPIO": "P31",
|
||||
"IRQ": null,
|
||||
"DVP": "VSYNC"
|
||||
},
|
||||
"17": {
|
||||
"C_NAME": "GPIO34",
|
||||
"GPIO": "P34",
|
||||
"IRQ": null,
|
||||
"DVP": "PD2"
|
||||
},
|
||||
"18": {
|
||||
"C_NAME": "GPIO35",
|
||||
"GPIO": "P35",
|
||||
"IRQ": null,
|
||||
"DVP": "PD3"
|
||||
},
|
||||
"19": {
|
||||
"C_NAME": "GPIO36",
|
||||
"GPIO": "P36",
|
||||
"IRQ": null,
|
||||
"DVP": "PD4"
|
||||
},
|
||||
"20": {
|
||||
"C_NAME": "GPIO37",
|
||||
"GPIO": "P37",
|
||||
"IRQ": null,
|
||||
"DVP": "PD5"
|
||||
},
|
||||
"21": {
|
||||
"C_NAME": "GPIO38",
|
||||
"GPIO": "P38",
|
||||
"IRQ": null,
|
||||
"DVP": "PD6"
|
||||
},
|
||||
"22": {
|
||||
"C_NAME": "GPIO39",
|
||||
"GPIO": "P39",
|
||||
"IRQ": null,
|
||||
"DVP": "PD7"
|
||||
},
|
||||
"23": {
|
||||
"C_NAME": "GPIO14",
|
||||
"GPIO": "P14",
|
||||
"IRQ": null,
|
||||
"SD": "CLK",
|
||||
"SPI": "SCK"
|
||||
},
|
||||
"24": {
|
||||
"C_NAME": "GPIO16",
|
||||
"GPIO": "P16",
|
||||
"IRQ": null,
|
||||
"SD": "D0",
|
||||
"SPI": "MOSI"
|
||||
},
|
||||
"25": {
|
||||
"C_NAME": "GPIO15",
|
||||
"GPIO": "P15",
|
||||
"IRQ": null,
|
||||
"SD": "CMD",
|
||||
"SPI": "CS"
|
||||
},
|
||||
"26": {
|
||||
"C_NAME": "GPIO17",
|
||||
"GPIO": "P17",
|
||||
"IRQ": null,
|
||||
"SD": "D1",
|
||||
"SPI": "MISO"
|
||||
},
|
||||
"27": {
|
||||
"C_NAME": "GPIO23",
|
||||
"GPIO": "P23",
|
||||
"IRQ": null,
|
||||
"ADC": 3,
|
||||
"JTAG": "TDO",
|
||||
"FLASH": "FSO"
|
||||
},
|
||||
"28": {
|
||||
"C_NAME": "GPIO22",
|
||||
"GPIO": "P22",
|
||||
"IRQ": null,
|
||||
"JTAG": "TDI",
|
||||
"FLASH": "FSI"
|
||||
},
|
||||
"29": {
|
||||
"C_NAME": "GPIO21",
|
||||
"GPIO": "P21",
|
||||
"IRQ": null,
|
||||
"I2C": "1_SDA",
|
||||
"JTAG": "TMS",
|
||||
"I2S": "MCLK",
|
||||
"FLASH": "^FCS"
|
||||
},
|
||||
"30": {
|
||||
"C_NAME": "GPIO20",
|
||||
"GPIO": "P20",
|
||||
"IRQ": null,
|
||||
"I2C": "1_SCL",
|
||||
"JTAG": "TCK",
|
||||
"FLASH": "FSCK"
|
||||
},
|
||||
"31": {
|
||||
"IO": "I",
|
||||
"CTRL": "CEN"
|
||||
},
|
||||
"32": {
|
||||
"C_NAME": "GPIO8",
|
||||
"GPIO": "P8",
|
||||
"IRQ": null,
|
||||
"PWM": 2
|
||||
},
|
||||
"33": {
|
||||
"C_NAME": "GPIO9",
|
||||
"GPIO": "P9",
|
||||
"IRQ": null,
|
||||
"PWM": 3
|
||||
},
|
||||
"34": {
|
||||
"C_NAME": "GPIO10",
|
||||
"GPIO": "P10",
|
||||
"IRQ": null,
|
||||
"UART": "1_RX"
|
||||
},
|
||||
"35": {
|
||||
"C_NAME": "GPIO11",
|
||||
"GPIO": "P11",
|
||||
"IRQ": null,
|
||||
"UART": "1_TX"
|
||||
},
|
||||
"36": {
|
||||
"C_NAME": "GPIO1",
|
||||
"GPIO": "P1",
|
||||
"IRQ": null,
|
||||
"UART": "2_RX",
|
||||
"I2C": "2_SDA"
|
||||
},
|
||||
"37": {
|
||||
"C_NAME": "GPIO0",
|
||||
"GPIO": "P0",
|
||||
"IRQ": null,
|
||||
"UART": "2_TX",
|
||||
"I2C": "2_SCL"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
259
boards/_base/ic/bk7252-qfn68.json
Normal file
259
boards/_base/ic/bk7252-qfn68.json
Normal file
@@ -0,0 +1,259 @@
|
||||
{
|
||||
"pcb": {
|
||||
"ic": {
|
||||
"13": {
|
||||
"C_NAME": "GPIO28",
|
||||
"GPIO": "P28",
|
||||
"IRQ": null,
|
||||
"USB": "DN"
|
||||
},
|
||||
"14": {
|
||||
"C_NAME": "GPIO25",
|
||||
"GPIO": "P25",
|
||||
"IRQ": null,
|
||||
"USB": "DP"
|
||||
},
|
||||
"16": {
|
||||
"C_NAME": "GPIO12",
|
||||
"GPIO": "P12",
|
||||
"IRQ": null,
|
||||
"ADC": 6,
|
||||
"UART": "1_CTS"
|
||||
},
|
||||
"17": {
|
||||
"C_NAME": "GPIO13",
|
||||
"GPIO": "P13",
|
||||
"IRQ": null,
|
||||
"ADC": 7,
|
||||
"UART": "1_RTS"
|
||||
},
|
||||
"18": {
|
||||
"C_NAME": "GPIO33",
|
||||
"GPIO": "P33",
|
||||
"IRQ": null,
|
||||
"DVP": "PD1"
|
||||
},
|
||||
"19": {
|
||||
"C_NAME": "GPIO32",
|
||||
"GPIO": "P32",
|
||||
"IRQ": null,
|
||||
"DVP": "PD0"
|
||||
},
|
||||
"20": {
|
||||
"C_NAME": "GPIO29",
|
||||
"GPIO": "P29",
|
||||
"IRQ": null,
|
||||
"DVP": "PCLK"
|
||||
},
|
||||
"21": {
|
||||
"C_NAME": "GPIO27",
|
||||
"GPIO": "P27",
|
||||
"IRQ": null,
|
||||
"DVP": "MCLK"
|
||||
},
|
||||
"22": {
|
||||
"C_NAME": "GPIO30",
|
||||
"GPIO": "P30",
|
||||
"IRQ": null,
|
||||
"DVP": "HSYNC"
|
||||
},
|
||||
"23": {
|
||||
"C_NAME": "GPIO31",
|
||||
"GPIO": "P31",
|
||||
"IRQ": null,
|
||||
"DVP": "VSYNC"
|
||||
},
|
||||
"24": {
|
||||
"C_NAME": "GPIO34",
|
||||
"GPIO": "P34",
|
||||
"IRQ": null,
|
||||
"DVP": "PD2"
|
||||
},
|
||||
"25": {
|
||||
"C_NAME": "GPIO35",
|
||||
"GPIO": "P35",
|
||||
"IRQ": null,
|
||||
"DVP": "PD3"
|
||||
},
|
||||
"26": {
|
||||
"C_NAME": "GPIO36",
|
||||
"GPIO": "P36",
|
||||
"IRQ": null,
|
||||
"DVP": "PD4"
|
||||
},
|
||||
"27": {
|
||||
"C_NAME": "GPIO37",
|
||||
"GPIO": "P37",
|
||||
"IRQ": null,
|
||||
"DVP": "PD5"
|
||||
},
|
||||
"28": {
|
||||
"C_NAME": "GPIO38",
|
||||
"GPIO": "P38",
|
||||
"IRQ": null,
|
||||
"DVP": "PD6"
|
||||
},
|
||||
"29": {
|
||||
"C_NAME": "GPIO39",
|
||||
"GPIO": "P39",
|
||||
"IRQ": null,
|
||||
"DVP": "PD7"
|
||||
},
|
||||
"30": {
|
||||
"C_NAME": "GPIO19",
|
||||
"GPIO": "P19",
|
||||
"IRQ": null,
|
||||
"SD": "D1"
|
||||
},
|
||||
"31": {
|
||||
"C_NAME": "GPIO17",
|
||||
"GPIO": "P17",
|
||||
"IRQ": null,
|
||||
"SD": "D1",
|
||||
"SPI": "MISO"
|
||||
},
|
||||
"32": {
|
||||
"C_NAME": "GPIO14",
|
||||
"GPIO": "P14",
|
||||
"IRQ": null,
|
||||
"SD": "CLK",
|
||||
"SPI": "SCK"
|
||||
},
|
||||
"33": {
|
||||
"C_NAME": "GPIO16",
|
||||
"GPIO": "P16",
|
||||
"IRQ": null,
|
||||
"SD": "D0",
|
||||
"SPI": "MOSI"
|
||||
},
|
||||
"34": {
|
||||
"C_NAME": "GPIO15",
|
||||
"GPIO": "P15",
|
||||
"IRQ": null,
|
||||
"SD": "CMD",
|
||||
"SPI": "CS"
|
||||
},
|
||||
"35": {
|
||||
"C_NAME": "GPIO18",
|
||||
"GPIO": "P18",
|
||||
"IRQ": null,
|
||||
"SD": "D2"
|
||||
},
|
||||
"36": {
|
||||
"C_NAME": "GPIO24",
|
||||
"GPIO": "P24",
|
||||
"IRQ": null,
|
||||
"PWM": 4
|
||||
},
|
||||
"37": {
|
||||
"C_NAME": "GPIO26",
|
||||
"GPIO": "P26",
|
||||
"IRQ": null,
|
||||
"PWM": 5,
|
||||
"IRDA": null
|
||||
},
|
||||
"38": {
|
||||
"C_NAME": "GPIO23",
|
||||
"GPIO": "P23",
|
||||
"IRQ": null,
|
||||
"ADC": 3,
|
||||
"JTAG": "TDO",
|
||||
"FLASH": "FSO"
|
||||
},
|
||||
"39": {
|
||||
"C_NAME": "GPIO22",
|
||||
"GPIO": "P22",
|
||||
"IRQ": null,
|
||||
"JTAG": "TDI",
|
||||
"FLASH": "FSI"
|
||||
},
|
||||
"40": {
|
||||
"C_NAME": "GPIO21",
|
||||
"GPIO": "P21",
|
||||
"IRQ": null,
|
||||
"I2C": "1_SDA",
|
||||
"JTAG": "TMS",
|
||||
"I2S": "MCLK",
|
||||
"FLASH": "^FCS"
|
||||
},
|
||||
"41": {
|
||||
"C_NAME": "GPIO20",
|
||||
"GPIO": "P20",
|
||||
"IRQ": null,
|
||||
"I2C": "1_SCL",
|
||||
"JTAG": "TCK",
|
||||
"FLASH": "FSCK"
|
||||
},
|
||||
"43": {
|
||||
"IO": "I",
|
||||
"CTRL": "CEN"
|
||||
},
|
||||
"45": {
|
||||
"C_NAME": "GPIO5",
|
||||
"GPIO": "P5",
|
||||
"IRQ": null,
|
||||
"ADC": 2,
|
||||
"I2S": "DOUT"
|
||||
},
|
||||
"46": {
|
||||
"C_NAME": "GPIO3",
|
||||
"GPIO": "P3",
|
||||
"IRQ": null,
|
||||
"ADC": 5,
|
||||
"I2S": "WS"
|
||||
},
|
||||
"47": {
|
||||
"C_NAME": "GPIO4",
|
||||
"GPIO": "P4",
|
||||
"IRQ": null,
|
||||
"ADC": 1,
|
||||
"I2S": "DIN"
|
||||
},
|
||||
"48": {
|
||||
"C_NAME": "GPIO2",
|
||||
"GPIO": "P2",
|
||||
"IRQ": null,
|
||||
"ADC": 4,
|
||||
"I2S": "SCK"
|
||||
},
|
||||
"49": {
|
||||
"C_NAME": "GPIO6",
|
||||
"GPIO": "P6",
|
||||
"IRQ": null,
|
||||
"PWM": 0
|
||||
},
|
||||
"50": {
|
||||
"C_NAME": "GPIO7",
|
||||
"GPIO": "P7",
|
||||
"IRQ": null,
|
||||
"PWM": 1
|
||||
},
|
||||
"62": {
|
||||
"C_NAME": "GPIO10",
|
||||
"GPIO": "P10",
|
||||
"IRQ": null,
|
||||
"UART": "1_RX"
|
||||
},
|
||||
"63": {
|
||||
"C_NAME": "GPIO11",
|
||||
"GPIO": "P11",
|
||||
"IRQ": null,
|
||||
"UART": "1_TX"
|
||||
},
|
||||
"64": {
|
||||
"C_NAME": "GPIO1",
|
||||
"GPIO": "P1",
|
||||
"IRQ": null,
|
||||
"UART": "2_RX",
|
||||
"I2C": "2_SDA"
|
||||
},
|
||||
"65": {
|
||||
"C_NAME": "GPIO0",
|
||||
"GPIO": "P0",
|
||||
"IRQ": null,
|
||||
"UART": "2_TX",
|
||||
"I2C": "2_SCL"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
193
boards/generic-bk7252.json
Normal file
193
boards/generic-bk7252.json
Normal file
@@ -0,0 +1,193 @@
|
||||
{
|
||||
"_base": [
|
||||
"generic",
|
||||
"beken-72xx",
|
||||
"beken-7252",
|
||||
"ic/bk7252-qfn68"
|
||||
],
|
||||
"build": {
|
||||
"mcu": "bk7252",
|
||||
"variant": "generic-bk7252"
|
||||
},
|
||||
"name": "Generic - BK7252",
|
||||
"symbol": "BK7252",
|
||||
"url": "https://kuba2k2.github.io/libretuya/boards/generic-bk7252/",
|
||||
"vendor": "Generic",
|
||||
"pcb": {
|
||||
"pinout": {
|
||||
"1": {
|
||||
"IC": 65,
|
||||
"ARD": "D0"
|
||||
},
|
||||
"2": {
|
||||
"IC": 64,
|
||||
"ARD": "D1"
|
||||
},
|
||||
"3": {
|
||||
"IC": 48,
|
||||
"ARD": [
|
||||
"D2",
|
||||
"A5"
|
||||
]
|
||||
},
|
||||
"4": {
|
||||
"IC": 46,
|
||||
"ARD": [
|
||||
"D3",
|
||||
"A4"
|
||||
]
|
||||
},
|
||||
"5": {
|
||||
"IC": 47,
|
||||
"ARD": [
|
||||
"D4",
|
||||
"A1"
|
||||
]
|
||||
},
|
||||
"6": {
|
||||
"IC": 45,
|
||||
"ARD": [
|
||||
"D5",
|
||||
"A2"
|
||||
]
|
||||
},
|
||||
"7": {
|
||||
"IC": 49,
|
||||
"ARD": "D6"
|
||||
},
|
||||
"8": {
|
||||
"IC": 50,
|
||||
"ARD": "D7"
|
||||
},
|
||||
"9": {
|
||||
"IC": 62,
|
||||
"ARD": "D8"
|
||||
},
|
||||
"10": {
|
||||
"IC": 63,
|
||||
"ARD": "D9"
|
||||
},
|
||||
"11": {
|
||||
"IC": 16,
|
||||
"ARD": [
|
||||
"D10",
|
||||
"A6"
|
||||
]
|
||||
},
|
||||
"12": {
|
||||
"IC": 17,
|
||||
"ARD": [
|
||||
"D11",
|
||||
"A7"
|
||||
]
|
||||
},
|
||||
"13": {
|
||||
"IC": 32,
|
||||
"ARD": "D12"
|
||||
},
|
||||
"14": {
|
||||
"IC": 34,
|
||||
"ARD": "D13"
|
||||
},
|
||||
"15": {
|
||||
"IC": 33,
|
||||
"ARD": "D14"
|
||||
},
|
||||
"16": {
|
||||
"IC": 31,
|
||||
"ARD": "D15"
|
||||
},
|
||||
"17": {
|
||||
"IC": 35,
|
||||
"ARD": "D16"
|
||||
},
|
||||
"18": {
|
||||
"IC": 30,
|
||||
"ARD": "D17"
|
||||
},
|
||||
"19": {
|
||||
"IC": 41,
|
||||
"ARD": "D18"
|
||||
},
|
||||
"20": {
|
||||
"IC": 40,
|
||||
"ARD": "D19"
|
||||
},
|
||||
"21": {
|
||||
"IC": 39,
|
||||
"ARD": "D20"
|
||||
},
|
||||
"22": {
|
||||
"IC": 38,
|
||||
"ARD": [
|
||||
"D21",
|
||||
"A3"
|
||||
]
|
||||
},
|
||||
"23": {
|
||||
"IC": 36,
|
||||
"ARD": "D22"
|
||||
},
|
||||
"24": {
|
||||
"IC": 14,
|
||||
"ARD": "D23"
|
||||
},
|
||||
"25": {
|
||||
"IC": 37,
|
||||
"ARD": "D24"
|
||||
},
|
||||
"26": {
|
||||
"IC": 21,
|
||||
"ARD": "D25"
|
||||
},
|
||||
"27": {
|
||||
"IC": 13,
|
||||
"ARD": "D26"
|
||||
},
|
||||
"28": {
|
||||
"IC": 20,
|
||||
"ARD": "D27"
|
||||
},
|
||||
"29": {
|
||||
"IC": 22,
|
||||
"ARD": "D28"
|
||||
},
|
||||
"30": {
|
||||
"IC": 23,
|
||||
"ARD": "D29"
|
||||
},
|
||||
"31": {
|
||||
"IC": 19,
|
||||
"ARD": "D30"
|
||||
},
|
||||
"32": {
|
||||
"IC": 18,
|
||||
"ARD": "D31"
|
||||
},
|
||||
"33": {
|
||||
"IC": 24,
|
||||
"ARD": "D32"
|
||||
},
|
||||
"34": {
|
||||
"IC": 25,
|
||||
"ARD": "D33"
|
||||
},
|
||||
"35": {
|
||||
"IC": 26,
|
||||
"ARD": "D34"
|
||||
},
|
||||
"36": {
|
||||
"IC": 27,
|
||||
"ARD": "D35"
|
||||
},
|
||||
"37": {
|
||||
"IC": 28,
|
||||
"ARD": "D36"
|
||||
},
|
||||
"38": {
|
||||
"IC": 29,
|
||||
"ARD": "D37"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
113
boards/generic-bk7252/README.md
Normal file
113
boards/generic-bk7252/README.md
Normal file
@@ -0,0 +1,113 @@
|
||||
# Generic - BK7252
|
||||
|
||||
*by Generic*
|
||||
|
||||
[Product page](https://kuba2k2.github.io/libretuya/boards/generic-bk7252/)
|
||||
|
||||
- [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
|
||||
-------------|----------------------------------
|
||||
Board code | `generic-bk7252`
|
||||
MCU | BK7252
|
||||
Manufacturer | Beken
|
||||
Series | BK72XX
|
||||
Frequency | 180 MHz
|
||||
Flash size | 4 MiB
|
||||
RAM size | 512 KiB
|
||||
Voltage | 3.0V - 3.6V
|
||||
I/O | 38x GPIO, 4x PWM, 2x UART, 7x ADC
|
||||
Wi-Fi | 802.11 b/g/n
|
||||
Bluetooth | BLE v5.0
|
||||
|
||||
## Usage
|
||||
|
||||
**Board code:** `generic-bk7252`
|
||||
|
||||
In `platformio.ini`:
|
||||
|
||||
```ini
|
||||
[env:generic-bk7252]
|
||||
platform = libretuya
|
||||
board = generic-bk7252
|
||||
framework = arduino
|
||||
```
|
||||
|
||||
In ESPHome YAML:
|
||||
|
||||
```yaml
|
||||
libretuya:
|
||||
board: generic-bk7252
|
||||
framework:
|
||||
version: dev
|
||||
```
|
||||
|
||||
## Arduino Core pin mapping
|
||||
|
||||
No. | Pin | UART | I²C | SPI | PWM | Other
|
||||
----|-----------|-----------|----------|------|------|----------
|
||||
D0 | P0 | UART2_TX | I2C2_SCL | | |
|
||||
D1 | P1 | UART2_RX | I2C2_SDA | | |
|
||||
D2 | P2 | | | | |
|
||||
D3 | P3 | | | | |
|
||||
D4 | P4 | | | | |
|
||||
D5 | P5 | | | | |
|
||||
D6 | P6 | | | | PWM0 |
|
||||
D7 | P7 | | | | PWM1 |
|
||||
D8 | P10 | UART1_RX | | | |
|
||||
D9 | P11 | UART1_TX | | | |
|
||||
D10 | P12 | UART1_CTS | | | |
|
||||
D11 | P13 | UART1_RTS | | | |
|
||||
D12 | P14 | | | SCK | |
|
||||
D13 | P15 | | | CS | |
|
||||
D14 | P16 | | | MOSI | |
|
||||
D15 | P17 | | | MISO | |
|
||||
D16 | P18 | | | | |
|
||||
D17 | P19 | | | | |
|
||||
D18 | P20 | | I2C1_SCL | | | TCK
|
||||
D19 | P21 | | I2C1_SDA | | | TMS
|
||||
D20 | P22 | | | | | TDI
|
||||
D21 | P23 | | | | | TDO
|
||||
D22 | P24 | | | | PWM4 |
|
||||
D23 | P25 | | | | |
|
||||
D24 | P26 | | | | PWM5 |
|
||||
D25 | P27 | | | | | DVP_MCLK
|
||||
D26 | P28 | | | | |
|
||||
D27 | P29 | | | | | DVP_PCLK
|
||||
D28 | P30 | | | | | DVP_HSYNC
|
||||
D29 | P31 | | | | | DVP_VSYNC
|
||||
D30 | P32 | | | | | DVP_PD0
|
||||
D31 | P33 | | | | | DVP_PD1
|
||||
D32 | P34 | | | | | DVP_PD2
|
||||
D33 | P35 | | | | | DVP_PD3
|
||||
D34 | P36 | | | | | DVP_PD4
|
||||
D35 | P37 | | | | | DVP_PD5
|
||||
D36 | P38 | | | | | DVP_PD6
|
||||
D37 | P39 | | | | | DVP_PD7
|
||||
A1 | P4, ADC1 | | | | |
|
||||
A2 | P5, ADC2 | | | | |
|
||||
A3 | P23, ADC3 | | | | |
|
||||
A4 | P3, ADC5 | | | | |
|
||||
A5 | P2, ADC4 | | | | |
|
||||
A6 | P12, ADC6 | | | | |
|
||||
A7 | P13, ADC7 | | | | |
|
||||
|
||||
## Flash memory map
|
||||
|
||||
Flash size: 4 MiB / 4,194,304 B / 0x400000
|
||||
|
||||
Hex values are in bytes.
|
||||
|
||||
Name | Start | Length | End
|
||||
----------------|----------|--------------------|---------
|
||||
Bootloader | 0x000000 | 68 KiB / 0x11000 | 0x011000
|
||||
App Image | 0x011000 | 1.7 MiB / 0x1BA000 | 0x1CB000
|
||||
File System | 0x1CB000 | 1.1 MiB / 0x119000 | 0x2E4000
|
||||
Key-Value Store | 0x2E4000 | 32 KiB / 0x8000 | 0x2EC000
|
||||
OTA Image | 0x2EC000 | 1.1 MiB / 0x112000 | 0x3FE000
|
||||
Calibration | 0x3FE000 | 4 KiB / 0x1000 | 0x3FF000
|
||||
TLV Store | 0x3FF000 | 4 KiB / 0x1000 | 0x400000
|
||||
|
||||
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.
|
||||
1
boards/generic-bk7252/pins_arduino.h
Normal file
1
boards/generic-bk7252/pins_arduino.h
Normal file
@@ -0,0 +1 @@
|
||||
#include "variant.h"
|
||||
88
boards/generic-bk7252/variant.cpp
Normal file
88
boards/generic-bk7252/variant.cpp
Normal file
@@ -0,0 +1,88 @@
|
||||
/* This file was auto-generated from generic-bk7252.json using boardgen */
|
||||
|
||||
#include <Arduino.h>
|
||||
|
||||
extern "C" {
|
||||
|
||||
// clang-format off
|
||||
PinInfo pinTable[PINS_COUNT] = {
|
||||
// D0: P0, UART2_TX, I2C2_SCL
|
||||
{GPIO0, PIN_GPIO | PIN_IRQ | PIN_I2C | PIN_UART, PIN_NONE, 0},
|
||||
// D1: P1, UART2_RX, I2C2_SDA
|
||||
{GPIO1, PIN_GPIO | PIN_IRQ | PIN_I2C | PIN_UART, PIN_NONE, 0},
|
||||
// D2: P2, ADC4, SCK
|
||||
{GPIO2, PIN_GPIO | PIN_IRQ | PIN_ADC | PIN_I2S, PIN_NONE, 0},
|
||||
// D3: P3, ADC5, WS
|
||||
{GPIO3, PIN_GPIO | PIN_IRQ | PIN_ADC | PIN_I2S, PIN_NONE, 0},
|
||||
// D4: P4, ADC1, DIN
|
||||
{GPIO4, PIN_GPIO | PIN_IRQ | PIN_ADC | PIN_I2S, PIN_NONE, 0},
|
||||
// D5: P5, ADC2, DOUT
|
||||
{GPIO5, PIN_GPIO | PIN_IRQ | PIN_ADC | PIN_I2S, PIN_NONE, 0},
|
||||
// D6: P6, PWM0
|
||||
{GPIO6, PIN_GPIO | PIN_IRQ | PIN_PWM, PIN_NONE, 0},
|
||||
// D7: P7, PWM1
|
||||
{GPIO7, PIN_GPIO | PIN_IRQ | PIN_PWM, PIN_NONE, 0},
|
||||
// D8: P10, UART1_RX
|
||||
{GPIO10, PIN_GPIO | PIN_IRQ | PIN_UART, PIN_NONE, 0},
|
||||
// D9: P11, UART1_TX
|
||||
{GPIO11, PIN_GPIO | PIN_IRQ | PIN_UART, PIN_NONE, 0},
|
||||
// D10: P12, ADC6, UART1_CTS
|
||||
{GPIO12, PIN_GPIO | PIN_IRQ | PIN_ADC | PIN_UART, PIN_NONE, 0},
|
||||
// D11: P13, ADC7, UART1_RTS
|
||||
{GPIO13, PIN_GPIO | PIN_IRQ | PIN_ADC | PIN_UART, PIN_NONE, 0},
|
||||
// D12: P14, SD_CLK, SCK
|
||||
{GPIO14, PIN_GPIO | PIN_IRQ | PIN_SPI, PIN_NONE, 0},
|
||||
// D13: P15, SD_CMD, CS
|
||||
{GPIO15, PIN_GPIO | PIN_IRQ | PIN_SPI, PIN_NONE, 0},
|
||||
// D14: P16, SD_D0, MOSI
|
||||
{GPIO16, PIN_GPIO | PIN_IRQ | PIN_SPI, PIN_NONE, 0},
|
||||
// D15: P17, SD_D1, MISO
|
||||
{GPIO17, PIN_GPIO | PIN_IRQ | PIN_SPI, PIN_NONE, 0},
|
||||
// D16: P18, SD_D2
|
||||
{GPIO18, PIN_GPIO | PIN_IRQ, PIN_NONE, 0},
|
||||
// D17: P19, SD_D1
|
||||
{GPIO19, PIN_GPIO | PIN_IRQ, PIN_NONE, 0},
|
||||
// D18: P20, I2C1_SCL, TCK, FSCK
|
||||
{GPIO20, PIN_GPIO | PIN_IRQ | PIN_I2C | PIN_JTAG, PIN_NONE, 0},
|
||||
// D19: P21, I2C1_SDA, TMS, MCLK, ^FCS
|
||||
{GPIO21, PIN_GPIO | PIN_IRQ | PIN_I2C | PIN_I2S | PIN_JTAG, PIN_NONE, 0},
|
||||
// D20: P22, TDI, FSI
|
||||
{GPIO22, PIN_GPIO | PIN_IRQ | PIN_JTAG, PIN_NONE, 0},
|
||||
// D21: P23, ADC3, TDO, FSO
|
||||
{GPIO23, PIN_GPIO | PIN_IRQ | PIN_ADC | PIN_JTAG, PIN_NONE, 0},
|
||||
// D22: P24, PWM4
|
||||
{GPIO24, PIN_GPIO | PIN_IRQ | PIN_PWM, PIN_NONE, 0},
|
||||
// D23: P25, DP
|
||||
{GPIO25, PIN_GPIO | PIN_IRQ, PIN_NONE, 0},
|
||||
// D24: P26, PWM5, IRDA
|
||||
{GPIO26, PIN_GPIO | PIN_IRQ | PIN_PWM, PIN_NONE, 0},
|
||||
// D25: P27, DVP_MCLK
|
||||
{GPIO27, PIN_GPIO | PIN_IRQ, PIN_NONE, 0},
|
||||
// D26: P28, DN
|
||||
{GPIO28, PIN_GPIO | PIN_IRQ, PIN_NONE, 0},
|
||||
// D27: P29, DVP_PCLK
|
||||
{GPIO29, PIN_GPIO | PIN_IRQ, PIN_NONE, 0},
|
||||
// D28: P30, DVP_HSYNC
|
||||
{GPIO30, PIN_GPIO | PIN_IRQ, PIN_NONE, 0},
|
||||
// D29: P31, DVP_VSYNC
|
||||
{GPIO31, PIN_GPIO | PIN_IRQ, PIN_NONE, 0},
|
||||
// D30: P32, DVP_PD0
|
||||
{GPIO32, PIN_GPIO | PIN_IRQ, PIN_NONE, 0},
|
||||
// D31: P33, DVP_PD1
|
||||
{GPIO33, PIN_GPIO | PIN_IRQ, PIN_NONE, 0},
|
||||
// D32: P34, DVP_PD2
|
||||
{GPIO34, PIN_GPIO | PIN_IRQ, PIN_NONE, 0},
|
||||
// D33: P35, DVP_PD3
|
||||
{GPIO35, PIN_GPIO | PIN_IRQ, PIN_NONE, 0},
|
||||
// D34: P36, DVP_PD4
|
||||
{GPIO36, PIN_GPIO | PIN_IRQ, PIN_NONE, 0},
|
||||
// D35: P37, DVP_PD5
|
||||
{GPIO37, PIN_GPIO | PIN_IRQ, PIN_NONE, 0},
|
||||
// D36: P38, DVP_PD6
|
||||
{GPIO38, PIN_GPIO | PIN_IRQ, PIN_NONE, 0},
|
||||
// D37: P39, DVP_PD7
|
||||
{GPIO39, PIN_GPIO | PIN_IRQ, PIN_NONE, 0},
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
} // extern "C"
|
||||
119
boards/generic-bk7252/variant.h
Normal file
119
boards/generic-bk7252/variant.h
Normal file
@@ -0,0 +1,119 @@
|
||||
/* This file was auto-generated from generic-bk7252.json using boardgen */
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <WVariant.h>
|
||||
|
||||
// clang-format off
|
||||
|
||||
// Pins
|
||||
// ----
|
||||
#define PINS_COUNT 38
|
||||
#define NUM_DIGITAL_PINS 38
|
||||
#define NUM_ANALOG_INPUTS 7
|
||||
#define NUM_ANALOG_OUTPUTS 0
|
||||
|
||||
// Analog pins
|
||||
// -----------
|
||||
#define PIN_A5 2u // GPIO2
|
||||
#define PIN_A4 3u // GPIO3
|
||||
#define PIN_A1 4u // GPIO4
|
||||
#define PIN_A2 5u // GPIO5
|
||||
#define PIN_A6 10u // GPIO12
|
||||
#define PIN_A7 11u // GPIO13
|
||||
#define PIN_A3 21u // GPIO23
|
||||
#define A5 PIN_A5
|
||||
#define A4 PIN_A4
|
||||
#define A1 PIN_A1
|
||||
#define A2 PIN_A2
|
||||
#define A6 PIN_A6
|
||||
#define A7 PIN_A7
|
||||
#define A3 PIN_A3
|
||||
|
||||
// SPI Interfaces
|
||||
// --------------
|
||||
#define SPI_INTERFACES_COUNT 0
|
||||
|
||||
// Wire Interfaces
|
||||
// ---------------
|
||||
#define WIRE_INTERFACES_COUNT 2
|
||||
#define PIN_WIRE1_SCL 18u // GPIO20
|
||||
#define PIN_WIRE1_SDA 19u // GPIO21
|
||||
#define PIN_WIRE2_SCL 0u // GPIO0
|
||||
#define PIN_WIRE2_SDA 1u // GPIO1
|
||||
|
||||
// Serial ports
|
||||
// ------------
|
||||
#define SERIAL_INTERFACES_COUNT 2
|
||||
#define PIN_SERIAL1_CTS 10u // GPIO12
|
||||
#define PIN_SERIAL1_RTS 11u // GPIO13
|
||||
#define PIN_SERIAL1_RX 8u // GPIO10
|
||||
#define PIN_SERIAL1_TX 9u // GPIO11
|
||||
#define PIN_SERIAL2_RX 1u // GPIO1
|
||||
#define PIN_SERIAL2_TX 0u // GPIO0
|
||||
|
||||
// Pin function macros
|
||||
// -------------------
|
||||
#define PIN_FUNCTION_ADC1 4u // GPIO4
|
||||
#define PIN_FUNCTION_ADC2 5u // GPIO5
|
||||
#define PIN_FUNCTION_ADC3 21u // GPIO23
|
||||
#define PIN_FUNCTION_ADC4 2u // GPIO2
|
||||
#define PIN_FUNCTION_ADC5 3u // GPIO3
|
||||
#define PIN_FUNCTION_ADC6 10u // GPIO12
|
||||
#define PIN_FUNCTION_ADC7 11u // GPIO13
|
||||
#define PIN_FUNCTION_CS 13u // GPIO15
|
||||
#define PIN_FUNCTION_CTS1 10u // GPIO12
|
||||
#define PIN_FUNCTION_MISO 15u // GPIO17
|
||||
#define PIN_FUNCTION_MOSI 14u // GPIO16
|
||||
#define PIN_FUNCTION_P0 0u // GPIO0
|
||||
#define PIN_FUNCTION_P1 1u // GPIO1
|
||||
#define PIN_FUNCTION_P2 2u // GPIO2
|
||||
#define PIN_FUNCTION_P3 3u // GPIO3
|
||||
#define PIN_FUNCTION_P4 4u // GPIO4
|
||||
#define PIN_FUNCTION_P5 5u // GPIO5
|
||||
#define PIN_FUNCTION_P6 6u // GPIO6
|
||||
#define PIN_FUNCTION_P7 7u // GPIO7
|
||||
#define PIN_FUNCTION_P10 8u // GPIO10
|
||||
#define PIN_FUNCTION_P11 9u // GPIO11
|
||||
#define PIN_FUNCTION_P12 10u // GPIO12
|
||||
#define PIN_FUNCTION_P13 11u // GPIO13
|
||||
#define PIN_FUNCTION_P14 12u // GPIO14
|
||||
#define PIN_FUNCTION_P15 13u // GPIO15
|
||||
#define PIN_FUNCTION_P16 14u // GPIO16
|
||||
#define PIN_FUNCTION_P17 15u // GPIO17
|
||||
#define PIN_FUNCTION_P18 16u // GPIO18
|
||||
#define PIN_FUNCTION_P19 17u // GPIO19
|
||||
#define PIN_FUNCTION_P20 18u // GPIO20
|
||||
#define PIN_FUNCTION_P21 19u // GPIO21
|
||||
#define PIN_FUNCTION_P22 20u // GPIO22
|
||||
#define PIN_FUNCTION_P23 21u // GPIO23
|
||||
#define PIN_FUNCTION_P24 22u // GPIO24
|
||||
#define PIN_FUNCTION_P25 23u // GPIO25
|
||||
#define PIN_FUNCTION_P26 24u // GPIO26
|
||||
#define PIN_FUNCTION_P27 25u // GPIO27
|
||||
#define PIN_FUNCTION_P28 26u // GPIO28
|
||||
#define PIN_FUNCTION_P29 27u // GPIO29
|
||||
#define PIN_FUNCTION_P30 28u // GPIO30
|
||||
#define PIN_FUNCTION_P31 29u // GPIO31
|
||||
#define PIN_FUNCTION_P32 30u // GPIO32
|
||||
#define PIN_FUNCTION_P33 31u // GPIO33
|
||||
#define PIN_FUNCTION_P34 32u // GPIO34
|
||||
#define PIN_FUNCTION_P35 33u // GPIO35
|
||||
#define PIN_FUNCTION_P36 34u // GPIO36
|
||||
#define PIN_FUNCTION_P37 35u // GPIO37
|
||||
#define PIN_FUNCTION_P38 36u // GPIO38
|
||||
#define PIN_FUNCTION_P39 37u // GPIO39
|
||||
#define PIN_FUNCTION_PWM0 6u // GPIO6
|
||||
#define PIN_FUNCTION_PWM1 7u // GPIO7
|
||||
#define PIN_FUNCTION_PWM4 22u // GPIO24
|
||||
#define PIN_FUNCTION_PWM5 24u // GPIO26
|
||||
#define PIN_FUNCTION_RTS1 11u // GPIO13
|
||||
#define PIN_FUNCTION_RX1 8u // GPIO10
|
||||
#define PIN_FUNCTION_RX2 1u // GPIO1
|
||||
#define PIN_FUNCTION_SCK 12u // GPIO14
|
||||
#define PIN_FUNCTION_SCL1 18u // GPIO20
|
||||
#define PIN_FUNCTION_SCL2 0u // GPIO0
|
||||
#define PIN_FUNCTION_SDA1 19u // GPIO21
|
||||
#define PIN_FUNCTION_SDA2 1u // GPIO1
|
||||
#define PIN_FUNCTION_TX1 9u // GPIO11
|
||||
#define PIN_FUNCTION_TX2 0u // GPIO0
|
||||
@@ -5,6 +5,7 @@ Name | MCU
|
||||
**Generic** | | | | | | | |
|
||||
[BK7231N (Tuya QFN32)](../../boards/generic-bk7231n-qfn32-tuya/README.md) | BK7231N | 2 MiB | 256 KiB | 19 (19 I/O) | ✔️ | ✔️ | ❌ | `beken-7231n`
|
||||
[BK7231T (Tuya QFN32)](../../boards/generic-bk7231t-qfn32-tuya/README.md) | BK7231T | 2 MiB | 256 KiB | 19 (19 I/O) | ✔️ | ✔️ | ❌ | `beken-7231u`
|
||||
[BK7252](../../boards/generic-bk7252/README.md) | BK7252 | 4 MiB | 512 KiB | 38 (38 I/O) | ✔️ | ✔️ | ❌ | `beken-7251`
|
||||
[RTL8710BN (2M/468k)](../../boards/generic-rtl8710bn-2mb-468k/README.md) | RTL8710BN | 2 MiB | 256 KiB | 18 (18 I/O) | ✔️ | ❌ | ❌ | `realtek-ambz`
|
||||
[RTL8710BN (2M/788k)](../../boards/generic-rtl8710bn-2mb-788k/README.md) | RTL8710BN | 2 MiB | 256 KiB | 18 (18 I/O) | ✔️ | ❌ | ❌ | `realtek-ambz`
|
||||
[RTL8710BX (4M/980k)](../../boards/generic-rtl8710bx-4mb-980k/README.md) | RTL8710BX | 4 MiB | 256 KiB | 17 (17 I/O) | ✔️ | ❌ | ❌ | `realtek-ambz`
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
- BK7231S
|
||||
- BK7231T
|
||||
- BK7231U
|
||||
- BK7251
|
||||
- BK7252
|
||||
- BL2028N
|
||||
- NATIVE
|
||||
- RTL8710BN
|
||||
|
||||
@@ -8,6 +8,7 @@ Realtek Ameba1 | `-`
|
||||
Realtek AmebaD | `-` | `-` | `RTL8720D` (0x3379CFE2) | ❌ | -
|
||||
[Beken 7231U/7231T](http://www.bekencorp.com/en/goods/detail/cid/13.html) | `beken-7231u` (`beken-72xx`) | `bk7231u` (`bk72xx`) | `BK7231U` (0x675A40B0) | ✔️ | `framework-beken-bdk` ([bdk_freertos](https://github.com/bekencorp/bdk_freertos))
|
||||
[Beken 7231N](http://www.bekencorp.com/en/goods/detail/cid/39.html) | `beken-7231n` (`beken-72xx`) | `bk7231n` (`bk72xx`) | `BK7231N` (0x7B3EF230) | ✔️ | `framework-beken-bdk` ([bdk_freertos](https://github.com/bekencorp/bdk_freertos))
|
||||
[Beken 7251/7252](http://www.bekencorp.com/en/goods/detail/cid/21.html) | `beken-7251` (`beken-72xx`) | `bk7251` (`bk72xx`) | `BK7251` (0x6A82CC42) | ✔️ | `framework-beken-bdk` ([bdk_freertos](https://github.com/bekencorp/bdk_freertos))
|
||||
Boufallo 602 | `-` | `-` | `BL602` (0xDE1270B7) | ❌ | -
|
||||
Xradiotech 809 | `-` | `-` | `XR809` (0x51E903A8) | ❌ | -
|
||||
Native host architecture | `host-native` | `native` | `NATIVE` (0xDEADBEEF) | ❌ | -
|
||||
|
||||
@@ -68,6 +68,7 @@ def get_board_mcus(boards: List[Board]) -> Set[str]:
|
||||
|
||||
|
||||
def get_enum_keys(code: str, name: str) -> Set[str]:
|
||||
code = code.replace("\t", " ")
|
||||
code = code.partition(f"enum {name}")[2]
|
||||
code = code.partition(";")[0]
|
||||
code = code.strip().strip("{}").strip()
|
||||
|
||||
@@ -73,6 +73,22 @@
|
||||
"BL2028N"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "0x6A82CC42",
|
||||
"short_name": "BK7251",
|
||||
"description": "Beken 7251/7252",
|
||||
"name": "beken-7251",
|
||||
"parent": "beken-72xx",
|
||||
"code": "bk7251",
|
||||
"parent_code": "bk72xx",
|
||||
"url": "http://www.bekencorp.com/en/goods/detail/cid/21.html",
|
||||
"sdk": "https://github.com/bekencorp/bdk_freertos",
|
||||
"framework": "framework-beken-bdk",
|
||||
"mcus": [
|
||||
"BK7251",
|
||||
"BK7252"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "0xDE1270B7",
|
||||
"short_name": "BL602",
|
||||
|
||||
Submodule tools/boardgen updated: 0cff15ab4e...7d6a23672b
Reference in New Issue
Block a user