W600是最新发布的一个国产wifi芯片,价格便宜量又足,并且充分开放。所以乘着周末就玩了一下。
VSF的移植部分倒是非常简单,本身arch下已经有了cortexm的支持,基本直接可以跑起多任务。不过驱动移植倒是有些头疼,目前没有寄存器文档,不能调试,只有一个构架非常不合理的SDK,不过姑且还可以参考。
项目位于:https://gitee.com/versaloon/vsf_open
工程位于:vsf/example/vsfaio/proj/EWARM_W600
移植了GPIO驱动和串口驱动(虽然还有一些问题,不是非常确定串口的FIFO机制和中断机制):
https://gitee.com/versaloon/vsf_open/blob/master/vsf/hal/cpu/W600/gpio/W600_GPIO.c
https://gitee.com/versaloon/vsf_open/blob/master/vsf/hal/cpu/W600/usart/W600_USART.c
测试应用如下:
#include "vsf.h"
#include "usrapp.h"
struct usrapp_t usrapp =
{
.debug.uart_stream.index = DEBUG_UART_INDEX,
.debug.uart_stream.mode = VSFHAL_USART_STOPBITS_1 | VSFHAL_USART_PARITY_NONE,
.debug.uart_stream.int_priority = 0xFF,
.debug.uart_stream.baudrate = 115200,
.debug.uart_stream.stream_tx = &usrapp.debug.stream_tx.stream,
.debug.uart_stream.stream_rx = &usrapp.debug.stream_rx.stream,
.debug.stream_tx.stream.op = &vsf_fifostream_op,
.debug.stream_tx.mem.buffer.buffer = (uint8_t *)&usrapp.debug.txbuff,
.debug.stream_tx.mem.buffer.size = sizeof(usrapp.debug.txbuff),
.debug.stream_rx.stream.op = &vsf_fifostream_op,
.debug.stream_rx.mem.buffer.buffer = (uint8_t *)&usrapp.debug.rxbuff,
.debug.stream_rx.mem.buffer.size = sizeof(usrapp.debug.rxbuff),
};
static void usrapp_heart_beat(void *p)
{
vsfdbg_printf("app: heartbeat %d" VSFCFG_DEBUG_LINEEND, vsfhal_tickclk_get_ms());
}
void usrapp_srt_init(struct usrapp_t *app)
{
VSFSTREAM_INIT(&app->debug.stream_rx);
VSFSTREAM_INIT(&app->debug.stream_tx);
vsf_usart_stream_init(&app->debug.uart_stream);
vsfdbg_init((struct vsf_stream_t *)&app->debug.stream_tx);
vsfdbg_printf("app: system started..." VSFCFG_DEBUG_LINEEND);
vsftimer_create_cb(1000, -1, usrapp_heart_beat, app);
}
void usrapp_initial_init(struct usrapp_t *app){}
也只是每隔1s,从串口打印一次数据。
|