这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 板卡试用 » 【星闪模组开发板WS8204SLE&BLEModule试用】3、点灯

共2条 1/1 1 跳转至

【星闪模组开发板WS8204SLE&BLEModule试用】3、点灯

助工
2025-03-06 13:41:11     打赏

经过几天的煎熬,已经确认WS8204是RS21E芯片方案。

对应海思H2812系列大概可能是P352813N 1100E,也就是说有1M flash,而非512k。

7.png

海思H2812方案SDK目前处于半开源状态,同为H2812方案的小熊派BearPi-Pico H2821,安信可Ai-BS21-32S芯片是RS21(P352813 N1100)方案,与WS8204不同。也就是说如果直接拿这两个开发板的SDK开发的固件是不能运行在WS8204的。

由于授权的原因,官方没有提供SDK。这可以理解,因为目前海思只向合作厂商提供H2812的SDK,并且签署了协议,厂商也不便向外提供SDK。

那么只能自己东拼西凑弄了一个RS21E的SDK,来点一下灯。

由于个人也没有海思授权,更不想介入麻烦,只是基于研究的心态做一些尝试,所以请不要向我要SDK。

关于如何搭建环境请查询小熊派BearPi-Pico H2821,安信可Ai-BS21-32S官网有详细的安装步骤,但是SDK不适用。

1、app_os_init入口程序

void app_os_init(void)
{
    uapi_pin_set_mode(6, HAL_PIO_FUNC_GPIO);

    uapi_gpio_set_dir(6, GPIO_DIRECTION_OUTPUT);
    uapi_gpio_set_val(6, GPIO_LEVEL_HIGH);

    uapi_pin_set_mode(5, HAL_PIO_FUNC_GPIO);

    uapi_gpio_set_dir(5, GPIO_DIRECTION_OUTPUT);
    uapi_gpio_set_val(5, GPIO_LEVEL_LOW);

    uint32_t ret;
    uint32_t taskId;
    TSK_INIT_PARAM_S taskParam = {
        .usTaskPrio = 10,          // 优先级
        .uwStackSize = 0x1000,     // 栈大小
        .pcName = "demoTask",       // 任务名
        .pfnTaskEntry = (TSK_ENTRY_FUNC)taskEntryFunc, // 入口函数
    };
    ret = LOS_TaskCreate(&taskId, &taskParam);
    if (ret != LOS_OK) {
        // 错误处理
    }
}

初始化P05、P06,建立liteOS task。(板上P05、P06标反了)。

2、taskEntryFunc

void taskEntryFunc(void) {
    while (1) {
        // 任务执行逻辑
        osal_msleep(1000);
        uapi_gpio_toggle(6);
        uapi_gpio_toggle(5);
    }
}

3、运行效果


tutieshi_640x360_5s.gif


4、DEMO

#include "common_def.h"
#include "osal_debug.h"
#include "cmsis_os2.h"
#include "app_init.h"

#define TASKS_TEST_TASK_STACK_SIZE    0x1000
#define TASKS_TEST_TASK_PRIO          (osPriority_t)(17)
#define TASKS_TEST_DURATION_MS        1000

static void *tasks_test_task(const char *arg)
{
    unused(arg);

    while (1) {
        osal_printk("Hello World  WS8204\r\n");
        osDelay(TASKS_TEST_DURATION_MS);
    }

    return NULL;
}

static void tasks_test_entry(void)
{
    osThreadAttr_t attr;

    attr.name = "TasksTask";
    attr.attr_bits = 0U;
    attr.cb_mem = NULL;
    attr.cb_size = 0U;
    attr.stack_mem = NULL;
    attr.stack_size = TASKS_TEST_TASK_STACK_SIZE;
    attr.priority = TASKS_TEST_TASK_PRIO;

    if (osThreadNew((osThreadFunc_t)tasks_test_task, NULL, &attr) == NULL) {
        /* Create task fail. */
    }
}

/* Run the tasks_test_entry. */
app_run(tasks_test_entry);


void app_os_init(void)
{
    app_tasks_init();
}


8.png





关键词: 星闪     WS8204    

助工
2025-03-08 07:47:45     打赏
2楼

感谢分享。


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]