Realtek/BL602 spi led (#1763)

* realtek spi led

* fix RTL_A and RTL_B

* fix esp version

* Update docs
add missing esp8266 pins

* bl602 spi led

* fix

* deinit

* bl602 miso swap
This commit is contained in:
NonPIayerCharacter 2025-08-18 21:37:18 +03:00 committed by GitHub
parent 36218fd38e
commit 9adcd9950f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
12 changed files with 324 additions and 57 deletions

View File

@ -560,13 +560,13 @@ OpenRTL8710A: prebuild_OpenRTL8710A
.PHONY: OpenRTL8720D
OpenRTL8720D: prebuild_OpenRTL8720D
$(MAKE) -C sdk/OpenRTL8720D/project/OpenBeken/GCC-RELEASE/project_hp APP_VERSION=$(APP_VERSION) OBK_VARIANT=$(OBK_VARIANT)
$(MAKE) -C sdk/OpenRTL8720D/project/OpenBeken/GCC-RELEASE/project_lp APP_VERSION=$(APP_VERSION) OBK_VARIANT=$(OBK_VARIANT)
$(MAKE) -C sdk/OpenRTL8720D/project/OpenBeken/GCC-RELEASE/project_hp --no-print-directory APP_VERSION=$(APP_VERSION) OBK_VARIANT=$(OBK_VARIANT)
$(MAKE) -C sdk/OpenRTL8720D/project/OpenBeken/GCC-RELEASE/project_lp --no-print-directory APP_VERSION=$(APP_VERSION) OBK_VARIANT=$(OBK_VARIANT)
mkdir -p output/$(APP_VERSION)
touch output/$(APP_VERSION)/OpenRTL8720D_$(APP_VERSION).bin
dd conv=notrunc bs=1 if=sdk/OpenRTL8720D/project/OpenBeken/GCC-RELEASE/project_lp/asdk/image/km0_boot_all.bin of=output/$(APP_VERSION)/OpenRTL8720D_$(APP_VERSION).bin seek=0
dd conv=notrunc bs=1 if=sdk/OpenRTL8720D/project/OpenBeken/GCC-RELEASE/project_hp/asdk/image/km4_boot_all.bin of=output/$(APP_VERSION)/OpenRTL8720D_$(APP_VERSION).bin seek=$(shell printf "%d" 0x4000)
dd conv=notrunc bs=1 if=sdk/OpenRTL8720D/project/OpenBeken/GCC-RELEASE/project_hp/asdk/image/km0_km4_image2.bin of=output/$(APP_VERSION)/OpenRTL8720D_$(APP_VERSION).bin seek=$(shell printf "%d" 0x6000)
dd conv=notrunc bs=1K if=sdk/OpenRTL8720D/project/OpenBeken/GCC-RELEASE/project_lp/asdk/image/km0_boot_all.bin of=output/$(APP_VERSION)/OpenRTL8720D_$(APP_VERSION).bin seek=0
dd conv=notrunc bs=1K if=sdk/OpenRTL8720D/project/OpenBeken/GCC-RELEASE/project_hp/asdk/image/km4_boot_all.bin of=output/$(APP_VERSION)/OpenRTL8720D_$(APP_VERSION).bin seek=16
dd conv=notrunc bs=1K if=sdk/OpenRTL8720D/project/OpenBeken/GCC-RELEASE/project_hp/asdk/image/km0_km4_image2.bin of=output/$(APP_VERSION)/OpenRTL8720D_$(APP_VERSION).bin seek=24
cp sdk/OpenRTL8720D/project/OpenBeken/GCC-RELEASE/project_lp/asdk/image/OTA_All.bin output/$(APP_VERSION)/OpenRTL8720D_$(APP_VERSION)_ota.img
.PHONY: OpenRTL8721DA

View File

@ -1,29 +1,29 @@
| Platform | Family | Wi-Fi 5GHz | WPA3 | OTA | GPIO | GPIO IRQ | UART | PWM | ADC | Deep sleep | WDT | SPI LED |
|---------------------------------------------------------|-----------------|------------|------|--------|------|----------|------|------|-----|------------|-----|---------|
| BK7231T | Beken | ❌ | ✅¹² | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅¹² |
| BK7231N | Beken | ❌ | ✅¹² | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| BK7231S/BK7231U | Beken | ❌ | ✅ | ✅¹ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| BK7238 | Beken | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| BK7252 | Beken | ❌ | ✅ | ✅¹ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| BK7252N | Beken | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| XR809 | XRadio | ❌ | ❌ | ❌⁵ | ✅ | ✅ | ✅ | ✅⁸ | ✅ | ✅ | ✅ | ❌ |
| XR806 | XRadio | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅⁸ | ✅ | ✅ | ✅ | ❌ |
| XR872/XF16 | XRadio | ❌ | ✅ | ✅² | ✅ | ✅ | ✅ | ✅⁸ | ✅ | ✅ | ✅ | ❌ |
| BL602/LF686 | Bouffalo Lab | ❌ | ✅ | ✅⁴ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | |
| W800/W801 | WinnerMicro | ❌ | ❌ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ |
| W600/W601 | WinnerMicro | ❌ | ❌ | ✅ | ✅ | ✅ | ❓ | ✅ | ✅ | ❌ | ✅ | ❌ |
| LN882H | Lightning Semi | ❌ | ✅ | ✅⁴ | ✅ | ✅ | ❌ | ✅ | ⚠️ | ❌ | ✅ | ✅ |
| ESP8285/ESP8266 | Espressif | ❌ | ⚠️¹⁴ | ✅²'⁴ | ✅ | ✅ | ✅ | ✅⁷ | ❌ | ⚠️ | ❓⁹ | ❌ |
| ESP32<br>-C2<br>-C3<br>-C5<br>-C6<br>-C61<br>-S2<br>-S3 | Espressif | ⚠️¹³ | ⚠️¹⁴ | ✅⁴ | ✅ | ✅ | ✅ | ✅ | ❓ | ✅¹⁰ | ✅ | ✅ |
| TR6260 | Transa Semi | ❌ | ❌ | ⚠️³'⁴ | ✅ | ❌ | ❌ | ✅⁸ | ❌ | ❌ | ✅⁹ | ❌ |
| RTL8711AM (Ameba1) | Realtek | ❌ | ⚠️ | ✅⁴ | ✅ | ✅ | ✅ | ✅⁸ | ❌ | ❌ | ✅ | |
| RTL8710B (AmebaZ) | Realtek | ❌ | ✅ | ✅⁴ | ✅ | ✅ | ✅ | ✅⁸ | ❌ | ❌ | ✅ | |
| RTL8710C/RTL8720C (AmebaZ2) | Realtek | ❌ | ✅ | ✅⁴ | ✅ | ✅ | ✅ | ✅⁸ | ❌ | ❌ | ✅ | |
| RTL8720D (AmebaD)<br>RTL872xCSM/RTL8720CS (AmebaCS) | Realtek | ✅ | ✅ | ✅⁴ | ✅ | ✅ | ✅ | ✅⁸ | ❌ | ❌ | ✅ | ❌ |
| RTL8721DA/RTL8711DAF (AmebaDplus) | Realtek | ✅ | ✅ | ✅⁶ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | |
| RTL8720E/RTL8710ECF (AmebaLite) | Realtek | ✅ | ✅ | ✅⁶ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | |
| ECR6600 | ESWIN | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅⁸ | ⚠️ | ⚠️¹¹ | ✅ | ❌ |
| Platform | Family | Wi-Fi 5GHz | WPA3 | OTA | GPIO | GPIO IRQ | UART | PWM | ADC | Deep sleep | WDT | SPI LED | IR |
|---------------------------------------------------------|-----------------|------------|------|--------|------|----------|------|------|-----|------------|-----|---------|----|
| BK7231T | Beken | ❌ | ✅¹² | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅¹² | ✅ |
| BK7231N | Beken | ❌ | ✅¹² | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| BK7231S<br>BK7231U | Beken | ❌ | ✅ | ✅¹ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| BK7238 | Beken | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| BK7252 | Beken | ❌ | ✅ | ✅¹ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| BK7252N | Beken | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| XR809 | XRadio | ❌ | ❌ | ❌⁵ | ✅ | ✅ | ✅ | ✅⁸ | ✅ | ✅ | ✅ | ❌ | ❌ |
| XR806 | XRadio | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅⁸ | ✅ | ✅ | ✅ | ❌ | ❌ |
| XR872/XF16 | XRadio | ❌ | ✅ | ✅² | ✅ | ✅ | ✅ | ✅⁸ | ✅ | ✅ | ✅ | ❌ | ❌ |
| BL602/LF686 | Bouffalo Lab | ❌ | ✅ | ✅⁴ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ |
| W800/W801 | Winner Micro | ❌ | ❌ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ |
| W600/W601 | Winner Micro | ❌ | ❌ | ✅ | ✅ | ✅ | ❓ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ |
| LN882H | Lightning Semi | ❌ | ✅ | ✅⁴ | ✅ | ✅ | ❌ | ✅ | ⚠️ | ❌ | ✅ | ✅ | ❌ |
| ESP8266<br>ESP8285 | Espressif | ❌ | ⚠️¹⁴ | ✅²'⁴ | ✅ | ✅ | ✅ | ✅⁷ | ❌ | ⚠️ | ❓⁹ | ❌ | ❌ |
| ESP32<br>-C2<br>-C3<br>-C5<br>-C6<br>-C61<br>-S2<br>-S3 | Espressif | ⚠️¹³ | ⚠️¹⁴ | ✅⁴ | ✅ | ✅ | ✅ | ✅ | ❓ | ✅¹⁰ | ✅ | ✅ | ❌ |
| TR6260 | Transa Semi | ❌ | ❌ | ⚠️³'⁴ | ✅ | ❌ | ❌ | ✅⁸ | ❌ | ❌ | ✅⁹ | ❌ | ❌ |
| RTL8711AM (Ameba1) | Realtek | ❌ | ⚠️ | ✅⁴ | ✅ | ✅ | ✅ | ✅⁸ | ❌ | ❌ | ✅ | ✅ | ❌ |
| RTL8710B (AmebaZ) | Realtek | ❌ | ✅ | ✅⁴ | ✅ | ✅ | ✅ | ✅⁸ | ❌ | ❌ | ✅ | ✅ | ❌ |
| RTL8710C<br>RTL8720C (AmebaZ2) | Realtek | ❌ | ✅ | ✅⁴ | ✅ | ✅ | ✅ | ✅⁸ | ❌ | ❌ | ✅ | ✅ | ⚠️ |
| RTL8720D (AmebaD)<br>RTL872xCSM<br>RTL8720CS (AmebaCS) | Realtek | ✅¹⁵ | ✅ | ✅⁴ | ✅ | ✅ | ✅ | ✅⁸ | ❌ | ❌ | ✅ | ✅ | ⚠️ |
| RTL8721DA<br>RTL8711DAF (AmebaDplus) | Realtek | ✅ | ✅ | ✅⁶ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ⚠️ |
| RTL8720E<br>RTL8710ECF (AmebaLite) | Realtek | ✅ | ✅ | ✅⁶ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ⚠️ |
| ECR6600 | ESWIN | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅⁸ | ⚠️ | ⚠️¹¹ | ✅ | ❌ | ❌ |
✅ - Works
❓ - Not tested
@ -35,7 +35,7 @@
³ Implemented, but no tool to generate the file<br>
⁴ No HTTP OTA, only in Web App<br>
⁵ OTA attempt leads to device crash<br>
⁶ Web App OTA may be unstable, HTTP OTA is preferable<br>
⁶ Web App OTA is broken, use HTTP OTA<br>
⁷ Software PWM, expect flickering<br>
⁸ Be careful with pin assignments, some PWM channels overlap<br>
⁹ WDT is configured in SDK<br>
@ -44,3 +44,4 @@
¹² Only in _ALT builds<br>
¹³ ESP32-C5 only<br>
¹⁴ Must be manually enabled (CONFIG_ESP8266_WIFI_ENABLE_WPA3_SAE/CONFIG_ESP_WIFI_ENABLE_WPA3_SAE to y in sdkconfig.defaults)<br>
¹⁵ Not on AmebaCS<br>

View File

@ -2,11 +2,7 @@ cmake_minimum_required(VERSION 3.16.0)
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
add_compile_definitions(PLATFORM_ESPIDF=1)
add_compile_definitions(LWIP_NOASSERT=1)
if (DEFINED $ENV{APP_VERSION})
add_definitions( -DUSER_SW_VER="$ENV{APP_VERSION}" )
endif()
add_definitions( -DOBK_VARIANT=$ENV{OBK_VARIANT} )
include_directories("$ENV{IDF_PATH}/../../libraries/berry/src")
include_directories("$ENV{IDF_PATH}/../../include")

View File

@ -37,7 +37,7 @@ int main(void)
wlan_network();
hal_misc_swd_pin_ctrl(0);
hal_misc_jtag_pin_ctrl(0);
efuse_logical_read(0x11A, 6, (uint8_t*)wmac);

View File

@ -424,7 +424,7 @@ void BL0942_SPI_Init(void) {
cfg.wire_mode = SPI_3WIRE_MODE;
cfg.baud_rate = BL0942_SPI_BAUD_RATE;
cfg.bit_order = SPI_MSB_FIRST;
SPI_Init(&cfg);
OBK_SPI_Init(&cfg);
SPI_WriteReg(BL0942_REG_USR_WRPROT, BL0942_USR_WRPROT_DISABLE);
SPI_WriteReg(BL0942_REG_MODE,

View File

@ -49,7 +49,7 @@ int SPI_DriverDeinit(void) {
#endif
}
int SPI_Init(const spi_config_t *config) {
int OBK_SPI_Init(const spi_config_t *config) {
#if PLATFORM_BK7231N || PLATFORM_BK7238 || PLATFORM_BK7252N
#if PLATFORM_BEKEN_NEW
struct spi_message msg;

View File

@ -49,7 +49,7 @@ typedef struct {
int SPI_DriverInit(void);
int SPI_DriverDeinit(void);
int SPI_Init(const spi_config_t *config);
int OBK_SPI_Init(const spi_config_t *config);
int SPI_Deinit(void);
int SPI_WriteBytes(const void *data, uint32_t size);
int SPI_ReadBytes(void *data, uint32_t size);

View File

@ -75,8 +75,9 @@ void translate_byte(uint8_t input, uint8_t *dst) {
}
spiLED_t spiLED;
#if PLATFORM_REALTEK
byte* orig_ptr = NULL;
#endif
void SPILED_InitDMA(int numBytes) {
int i;
@ -84,13 +85,23 @@ void SPILED_InitDMA(int numBytes) {
if (spiLED.ready) {
SPILED_Shutdown();
}
#if PLATFORM_BEKEN
spiLED.padding = 64;
#elif PLATFORM_REALTEK
// size for dma must be multiple of 32
spiLED.padding = (spiLED.ofs + (numBytes * 4)) % 32;
#else
spiLED.padding = 0;
#endif
// Prepare buffer
uint32_t buffer_size = spiLED.ofs + (numBytes * 4) + spiLED.padding; //Add `spiLED.ofs` bytes for "Reset"
#if PLATFORM_ESPIDF
spiLED.buf = heap_caps_malloc(sizeof(byte) * (buffer_size), MALLOC_CAP_INTERNAL | MALLOC_CAP_DMA);
#elif PLATFORM_REALTEK
// memory for dma must be aligned to 32 bytes
orig_ptr = (byte*)os_malloc((sizeof(byte) * (buffer_size)) + 32 - 1);
uint32_t misalignment = (uint32_t)orig_ptr % 32;
spiLED.buf = (orig_ptr + 32 - misalignment);
#else
spiLED.buf = (byte *)os_malloc(sizeof(byte) * (buffer_size)); //18LEDs x RGB x 4Bytes
#endif
@ -163,11 +174,16 @@ int spidma_led_pin = -1;
void SPILED_Shutdown() {
spiLED.ready = 0;
if (spiLED.buf) {
free(spiLED.buf);
#if PLATFORM_REALTEK
os_free(orig_ptr);
orig_ptr = NULL;
#else
os_free(spiLED.buf);
#endif
spiLED.buf = 0;
}
if (spiLED.msg) {
free(spiLED.msg);
os_free(spiLED.msg);
spiLED.msg = 0;
}
SPIDMA_Deinit();

View File

@ -676,6 +676,253 @@ void SPIDMA_Deinit(void)
hal_gpio_pin_afio_en(pin->base, pin->pin, HAL_DISABLE);
}
#elif PLATFORM_REALTEK
#include "../hal/realtek/hal_pinmap_realtek.h"
#include "drv_spidma.h"
#include "spi_api.h"
#include "spi_ex_api.h"
static spi_t spi_master;
extern int spidma_led_pin;
rtlPinMapping_t* rtl_mosi;
bool is_init = false;
void SPIDMA_Init(struct spi_message* msg)
{
is_init = false;
PinName mosi = NC, miso = NC, sclk = NC, ssel = NC;
rtl_mosi = g_pins + spidma_led_pin;
#if PLATFORM_RTL8710A
#define SPI_FREQ 4000000
switch(rtl_mosi->pin)
{
case PE_2:
sys_jtag_off();
mosi = PE_2;
miso = PE_3;
break;
case PC_2:
mosi = PC_2;
miso = PC_3;
break;
default: return;
}
pin_mode(mosi, PullDown);
#elif PLATFORM_RTL8710B
#define SPI_FREQ 3777777
switch(rtl_mosi->pin)
{
case PA_4:
spi_master.spi_idx = MBED_SPI0;
mosi = PA_4;
miso = PA_3;
sclk = PA_1;
ssel = PA_2;
break;
case PA_23:
spi_master.spi_idx = MBED_SPI1;
mosi = PA_23;
miso = PA_22;
sclk = PA_18;
ssel = PA_19;
break;
case PB_3:
spi_master.spi_idx = MBED_SPI1;
mosi = PB_3;
miso = PB_2;
sclk = PB_1;
ssel = PB_0;
break;
default: return;
}
pin_mode(mosi, PullDown);
#elif PLATFORM_RTL87X0C
#define SPI_FREQ 3000000
// those pins aren't wired out on BW15, and, except for A7, on WBR3
// they must be set, otherwise spi init will fail
miso = PA_10;
ssel = PA_7;
sclk = PA_8;
switch(rtl_mosi->pin)
{
case PA_4:
mosi = PA_4;
break;
case PA_9:
mosi = PA_9;
break;
case PA_19:
mosi = PA_19;
break;
default: return;
}
#elif PLATFORM_RTL8720D
#define SPI_FREQ 3000000
switch(rtl_mosi->pin)
{
case PB_18:
spi_master.spi_idx = MBED_SPI0;
mosi = PB_18;
break;
case PA_16:
spi_master.spi_idx = MBED_SPI0;
mosi = PA_16;
break;
case PA_12:
spi_master.spi_idx = MBED_SPI1;
mosi = PA_12;
break;
case PB_4:
spi_master.spi_idx = MBED_SPI1;
mosi = PB_4;
break;
default: return;
}
#elif PLATFORM_REALTEK_NEW
#define SPI_FREQ 3000000
spi_master.spi_idx = MBED_SPI1;
mosi = rtl_mosi->pin;
#endif
spi_init(&spi_master, mosi, miso, sclk, ssel);
spi_format(&spi_master, 8, 0, 0);
spi_frequency(&spi_master, SPI_FREQ);
is_init = true;
}
void SPIDMA_StartTX(struct spi_message* msg)
{
if(is_init) spi_master_write_stream_dma(&spi_master, (char*)msg->send_buf, msg->send_len);
//if(is_init) spi_master_write_stream(&spi_master, (char*)msg->send_buf, msg->send_len);
}
void SPIDMA_StopTX(void)
{
}
void SPIDMA_Deinit(void)
{
if(is_init) spi_free(&spi_master);
}
#elif PLATFORM_BL602
#include "drv_spidma.h"
#include "hosal_spi.h"
#include "hosal_dma.h"
#include "bl602_dma.h"
#include "bl602_gpio.h"
#include "bl602_glb.h"
#include "bl602_spi.h"
#include "bl_irq.h"
#include "bl_dma.h"
extern int spidma_led_pin;
static hosal_dma_chan_t spidma_ch;
static DMA_LLI_Ctrl_Type spi_dma_lli[2];
bool is_init = false;
void SPIDMA_Init(struct spi_message* msg)
{
is_init = false;
switch(spidma_led_pin)
{
case 0:
case 4:
case 8:
case 12:
case 16:
case 20:
GLB_Swap_SPI_0_MOSI_With_MISO(DISABLE);
break;
case 1:
case 5:
case 9:
case 13:
case 17:
case 21:
GLB_Swap_SPI_0_MOSI_With_MISO(ENABLE);
break;
default: return;
}
GLB_GPIO_Func_Init(GPIO_FUN_SPI, (GLB_GPIO_Type*)&spidma_led_pin, 1);
GLB_Set_SPI_0_ACT_MOD_Sel(GLB_SPI_PAD_ACT_AS_MASTER);
SPI_CFG_Type spiCfg =
{
DISABLE,
ENABLE,
SPI_BYTE_INVERSE_BYTE0_FIRST,
SPI_BIT_INVERSE_MSB_FIRST,
SPI_CLK_PHASE_INVERSE_0,
SPI_CLK_POLARITY_LOW,
SPI_FRAME_SIZE_8
};
SPI_FifoCfg_Type fifoCfg =
{
1,
0,
ENABLE,
DISABLE
};
spidma_ch = hosal_dma_chan_request(0);
SPI_Disable(0, SPI_WORK_MODE_MASTER);
SPI_Init(0, &spiCfg);
SPI_FifoConfig(0, &fifoCfg);
SPI_SetClock(0, 3000000);
SPI_Enable(0, SPI_WORK_MODE_MASTER);
DMA_LLI_Cfg_Type llicfg =
{
DMA_TRNS_M2P,
DMA_REQ_NONE,
DMA_REQ_SPI_TX,
};
DMA_LLI_Init(spidma_ch, &llicfg);
struct DMA_Control_Reg dmactrl =
{
.TransferSize = msg->send_len,
.SBSize = DMA_BURST_SIZE_1,
.DBSize = DMA_BURST_SIZE_1,
.SWidth = DMA_TRNS_WIDTH_8BITS,
.DWidth = DMA_TRNS_WIDTH_8BITS,
.SLargerD = 0,
.SI = DMA_MINC_ENABLE,
.DI = DMA_MINC_DISABLE,
.Prot = 0,
.I = 0,
};
spi_dma_lli[0].srcDmaAddr = (uint32_t)(msg->send_buf);
spi_dma_lli[0].destDmaAddr = (uint32_t)(SPI_BASE + SPI_FIFO_WDATA_OFFSET);
spi_dma_lli[0].dmaCtrl = dmactrl;
spi_dma_lli[0].nextLLI = 0;
is_init = true;
}
void SPIDMA_StartTX(struct spi_message* msg)
{
if(is_init)
{
DMA_LLI_Update(spidma_ch, (uint32_t)spi_dma_lli);
hosal_dma_chan_start(spidma_ch);
}
}
void SPIDMA_StopTX(void)
{
}
void SPIDMA_Deinit(void)
{
if(is_init) hosal_dma_chan_release(spidma_ch);
}
#else
#include "drv_spidma.h"

View File

@ -318,10 +318,13 @@ espPinMapping_t g_pins[] = {
{ "IO3", GPIO_NUM_3, false },
{ "IO4", GPIO_NUM_4, false },
{ "IO5", GPIO_NUM_5, false },
{ "IO9", GPIO_NUM_9, false },
{ "IO10", GPIO_NUM_10, false },
{ "IO12", GPIO_NUM_12, false },
{ "IO13", GPIO_NUM_13, false },
{ "IO14", GPIO_NUM_14, false },
{ "IO15", GPIO_NUM_15, false },
{ "IO16", GPIO_NUM_15, false },
};
#else

View File

@ -1051,7 +1051,7 @@ typedef enum channelType_e {
#define PLATFORM_GPIO_MAX 0
#endif
#elif PLATFORM_ESP8266
#define PLATFORM_GPIO_MAX 10
#define PLATFORM_GPIO_MAX 13
#elif PLATFORM_TR6260
#define PLATFORM_GPIO_MAX 25
#elif PLATFORM_RTL87X0C

View File

@ -4,15 +4,15 @@
#ifndef OBK_CONFIG_H
#define OBK_CONFIG_H
#define OBK_VARIANT_DEFAULT 0
#define OBK_VARIANT_BERRY 1
#define OBK_VARIANT_TUYAMCU 2
#define OBK_VARIANT_POWERMETERING 3
#define OBK_VARIANT_IRREMOTEESP 4
#define OBK_VARIANT_SENSORS 5
#define OBK_VARIANT_ESP2M 1
#define OBK_VARIANT_ESP4M 2
#define OBK_VARIANT_ESP2M_BERRY 3
#define OBK_VARIANT_DEFAULT 0
#define OBK_VARIANT_BERRY 1
#define OBK_VARIANT_TUYAMCU 2
#define OBK_VARIANT_POWERMETERING 3
#define OBK_VARIANT_IRREMOTEESP 4
#define OBK_VARIANT_SENSORS 5
#define OBK_VARIANT_ESP2M 1
#define OBK_VARIANT_ESP4M 2
#define OBK_VARIANT_ESP2M_BERRY 3
// Starts with all driver flags undefined
@ -206,9 +206,11 @@
#define ENABLE_OBK_SCRIPTING 1
// #define ENABLE_I2C 1
#define ENABLE_ADVANCED_CHANNELTYPES_DISCOVERY 1
#define ENABLE_DRIVER_SM16703P 1
#define ENABLE_DRIVER_PIXELANIM 1
#if (OBK_VARIANT == OBK_VARIANT_BERRY)
#define ENABLE_OBK_BERRY 1
#define ENABLE_OBK_BERRY 1
#endif
#elif PLATFORM_BEKEN
@ -440,9 +442,11 @@
#define ENABLE_DRIVER_SSDP 1
#define ENABLE_OBK_SCRIPTING 1
#define ENABLE_DRIVER_TCL 1
#define ENABLE_DRIVER_SM16703P 1
#define ENABLE_DRIVER_PIXELANIM 1
#ifndef PLATFORM_RTL8710B
#define ENABLE_OBK_BERRY 1
#define ENABLE_OBK_BERRY 1
#endif
#if PLATFORM_RTL87X0C || PLATFORM_REALTEK_NEW || PLATFORM_RTL8720D