这次有幸试用御芯微WIoTa开发套件,官方很大气,套件里面包含一拖二开发板及配件:
大一些的一块板子,是基站板,为WIOTA AP 评估板。
小一些的两块板子,是终端板,为WIOTA IOTE 评估板。
在套间里面,三块板子均准备好了天线,以及为基站板准备了电源(三板通用),为终端板准备了两个18650锂电池,另外还有一个专用烧写器。
WIOTA AP 评估板为UM202,内置两个MCU,分别是UC8088和UC8288。
WIOTA IOTE 评估板为UM200,核心是UC8288。
这用烧写器,可以为三块板子进行烧写,用于烧写的同时,还可以用做调试串口,非常方便。
拿到板子后,第一件事情,就是点灯。
经过一些基本的了解,在WIOTA AP 评估板上,有4个板载LED可以控制:
这4个LED,对应的GPIO口,也有标注,具体对应关系如下:
D12:GPIO5
D13:GPIO28
D14:GPIO7
D15:GPIO6
在WIOTA IOTE 评估板上,有5个LED可以控制:
这5个LED对应关系:
D15:GPIO2
D14:GPIO3
D2:GPIO7
D10:GPIO16
D11:GPIO17
了解以上对应关系后,我们就可以参考御芯微官方提供的demo,来控制这些LED了。
在具体编码之前,我们还需要了解一下,主要的接口。
首先,可以查看官方wiki中的说明,AP板基本接口标注如下:
在以上接口中,两个烧录口中,缺口右边到头的第一个引脚,是GND。如果没有烧录,那么这个引脚,可以直接当作GND,供外设使用。
IOTE板基本接口标注如下:
IOTE板上,没有留出单独的GND引脚,只要焊点。参考AP板,烧录口不用的时候,缺口右则第一个引脚,一样可用做GND。
在我的使用过程中,仅使用烧写器连接开发板,供电不足,需要单独给开发板供电才好使。单独供电,可以用官方配的锂电池,也可以用microusb连接电脑usb口或者手机电源,也可以用官方配的电源。
然后,开始实际的开发工作了。
参考官方文档:UCCHIP IDE 安装 - UCchip Docs (ucthings.com),安装好UCCHIP IDE,以及相关的驱动。
安装驱动的时候,需要先把烧写器连接到电脑,然后在安装。
安装完驱动后,在设备管理器中,可以看到如下的信息:
说明驱动安装正确,可以进行下一步操作了。
然后,从官方编译下载 - UCchip Docs (ucthings.com)页面,下载UC8088例程代码和UC8288例程代码。
在参考该页面的指导,打开UC8088的gpio工程。
上面的截图中,我自己复制了一份gpio为gpio_led,所以打开的是gpio_led。
然后,将src/main.c,替换为下面的代码:
static void delay_ms(uint32_t nms)
{
for(int i=0;i<nms;i )
{
for(int j=0;j<4500*3;j )
{
asm("nop");
}
}
}
GPIO_PIN leds[] = {GPIO_PIN_3, GPIO_PIN_4, GPIO_PIN_5, GPIO_PIN_28, GPIO_PIN_6, GPIO_PIN_7}; //WIOTA IOTE 评估板 8088
GPIO_PIN leds[] = {GPIO_PIN_7, GPIO_PIN_15, GPIO_PIN_17}; //WIOTA AP 评估板 8288
GPIO_PIN leds[] = {GPIO_PIN_2, GPIO_PIN_3, GPIO_PIN_7, GPIO_PIN_16, GPIO_PIN_17}; //WIOTA IOTE 评估板 8288
GPIO_PIN leds[] = {GPIO_PIN_2, GPIO_PIN_3, GPIO_PIN_7, GPIO_PIN_16, GPIO_PIN_17}; //WIOTA IOTE 评估板 8288
int main(int argc, char **argv)
{
//open sim ldo power
// uint32_t * ptr = (uint32_t *)(0x1a10422c);
// *ptr |= 1<<23;
//
// *ptr |= 1<<22;
// *ptr |= 1<<21;
// *ptr &= ~(1<<21);
int len = sizeof(leds)/sizeof(leds[0]);
for(GPIO_PIN i=0;i<len;i ) {
gpio_set_pin_direction(UC_GPIO, leds[i], GPIO_DIR_OUT);
}
int led = 0;
while(1) {
printf("LED %d
", led);
for(GPIO_PIN i=0;i<len;i ) {
gpio_set_pin_value(UC_GPIO, leds[i], GPIO_VALUE_LOW);
}
gpio_set_pin_value(UC_GPIO, leds[(len-1)-led%len], GPIO_VALUE_HIGH);
gpio_set_pin_value(UC_GPIO, leds[led%len], GPIO_VALUE_HIGH);
delay_ms(0.1*(led%len/2 1)*1000);
led ;
}
return 0;
}
要测试LED功能,唯一需要修改的就是WIOTA_TYPE的定义值,具体对应如下:
-
0,对应AP开发板的8088
-
1,对应AP开发板的8288
-
2,对应IOTE开发板的8288
-
3,对应IOTE开发板的8288
其中,2为LED正序依次闪动,3为倒序依次闪动。因为有两块IOTE开发板,所以做了一点点小小的差异化处理。
以上代码,可以通用于AP开发板和IOTE开发板,注意修改对应的WIOTA_TYPE值即可。
御芯微的封装做的非常不错,所以上述代码的逻辑,非常简单,都是最基础操作了,就不详细说明了。
编译以上代码,然后点击上述IDE界面的纸飞机图标,即可下载到开发板。如果没有看到纸飞机图标,点击最右则的向下指示符,即可看到并点击下载。
AP开发板,可以先只下载8088的程序。如果要给8288下载,请查看 WIOTA AP 评估板 - UCchip Docs (ucthings.com) 中关于跳线帽的说明。
IOTE开发板,下载8288的程序即可。
下载完成后,对应的LED就会自动点亮了,最终的效果,如视频所示。在视频中,我还接了一个红绿灯模块,所以效果更赞。