mirror of
https://github.com/openshwprojects/OpenBK7231T_App.git
synced 2025-10-29 11:33:20 +00:00
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:
parent
36218fd38e
commit
9adcd9950f
10
Makefile
10
Makefile
@ -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
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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")
|
||||
|
||||
@ -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);
|
||||
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user