1、概述
HaaS EDU K1 作为一款专用于教育的开发套件,整体配置的的资源非常丰富。其内置了高性能MCU-HaaS1000,集成了超大大容量的存储,高达18MB的RAM以及16M的flash,并且支持扩展卡,配备了丰富的外设以及传感器。关于整体硬件介绍,有兴趣可参考HaaS EDU K1硬件介绍。
HaaS1000 是一颗专为IoT智能硬件打造的SoC。如图1所示,HaaS1000 集成了 Wi-Fi 802.11 b/g/n 和蓝牙5.0的MAC、PHY和射频单元,也集成了音频编解码器,以及双核Cortex-M33 Star的MCU子系统和双核Cortex-A7的AP子系统,另外还支持 OPI PSRAM 和 QSPI NOR Flash。具体可参考HaaS1000 芯片手册。
图1 HaaS1000 架构图
2、内存以及存储
板子集成了boot ROM, SRAM, 片上PSRAM 和片上 NOR flash.
- 64KB boot ROM
- 2.5MB SRAM, MCU和AP可以通过以下组合共享SRAM,以支持多种应用场景(MCU/AP)
- 256KB/2.25MB
- 512KB/2MB
- 1MB/1.5MB
- 1.5MB/1MB
- 2MB/512KB
- 2.5MB/0KB
- 16MB 片上 16位 PSRAM
- 16MB 片上 NOR flash
分区表
16M的flash共分为十一个分区,每个分区均可读写。具体信息如下:
序号 | 分区名 | 起始地址 | 长度 | 读写权限 | 说明 |
1 | boot1 | 0x0 | 0x10000 | 读写 | 一级引导区 |
2 | boot_info | 0x10000 | 0x2000 | 读写 | 引导信息 |
3 | boot2A | 0x12000 | 0x18000 | 读写 | 二级引导区A |
4 | RTOSA | 0x2A000 | 0x578000 | 读写 | 文件系统A |
5 | boot2B | 0x5A2000 | 0x18000 | 读写 | 二级引导区B |
6 | RTOSB | 0x5BA000 | 0x578000 | 读写 | 文件系统B |
7 | littleFS | 0xB32000 | 0x4AE000 | 读写 | 用户空间文件系统 |
8 | boot1_sec | 0xFE0000 | 0x10000 | 读写 | 一级引导区sec |
9 | boot2_info | 0xFF0000 | 0x1000 | 读写 | boot2信息区 |
10 | KV | 0xFF1000 | 0xD000 | 读写 | kv分区 |
11 | factory | 0xFFE000 | 0x2000 | 读写 | 工厂区 |
3、外设资源
板卡 集成了各种外围接口。
- 1路USB 2.0 高速接口
- 1路eMMC4.41/SD3.0/SDIO3.0 主机接口, 单数据速率高达50MHz
- 3路UART接口,支持流控和波特率可配置,最高6Mbps
- 2路 SPI主模式接口,支持串行LCD,速率最高50MHz
- 2路I2C主模式接口,速率最高1.4M bps
- 4通道I2S或8通道TDM接口
- 4路I2S或者 8路 TDM 接口
- 1路SPDIF 接口 (包含发送和接收)
- 4个PWM
- 40个带有独立中断的GPIO(有些和外设共用相同的pin脚)
- 3路10 bit GPADC
3.1、GPIO
HaaS1000共有P0~P4共5组,每组8个,共40个GPIO,每根GPIO都可以通过PUNMAX自由配置,每个GPIO包含6个可选function。具体可选功能列表如下所示:
绝大多数IO都进行了分配,可供外部扩展直接使用的只有直接有6个;
功能模块 | 原理图网络名 | 管脚名称 | GPIO MAPPING | ||
Function | Function 1 | Function 2 | |||
OLED | SPI1_DIO | Y11 | SPI1_DIO | pwm3 | SPI0_CS1 |
SPI1_CLK | V11 | SPI1_CLK | pwm1 | SPI0_CS2 | |
SPI1_DI0 | W10 | SPI1_DI0 | pwm2 | SPI0_DI1 | |
OLED_RST | U10 | SPI1_CS0 | pwm0 | SPI0_DI2 | |
AP3216C_INT | T5 | GPIO_P4_7 | WF_UART_RTS |
| |
I2C_SCL1 | F11 | GPIO_P0_2 | I2S0_WS | I2C_M1_SCL | |
I2C_SDA1 | E12 | GPIO_P0_3 | I2S0_SCK | I2C_M1_SDA | |
SPI0_CS0 | B9 | GPIO_P0_6 | SDMMC_DATA5 | SPI0_CS0 | |
SD卡 | SDMMC0_D2 | F7 | GPIO_P1_0 | SDMMC_DATA2 |
|
SDMMC0_D3 | E6 | GPIO_P1_1 | SDMMC_DATA3 |
| |
SDMMC0_CMD | M12 | GPIO_P1_2 | SDMMC_CMD |
| |
SDMMC0_CLK | N12 | GPIO_P1_3 | SDMMC_CLK | I2S_MCLK | |
SDMMC0_D0 | D9 | GPIO_P1_4 | SDMMC_DATA0 |
| |
SDMMC0_D1 | C7 | GPIO_P1_5 | SDMMC_DATA1 |
| |
SDMMC0_DET_L | Y6 | GPIO_P3_1 | SPI1_CS2 |
| |
蜂鸣器 | PWM0 | N10 | GPIO_P2_6 | pwm0 | SPI1_DI1 |
LED | LED3 | AA5 | GPIO_P4_2 | I2S0_DI1 |
|
LED4 | AA4 | GPIO_P4_3 | I2S0_DI0 |
| |
LED5 | R4 | GPIO_P4_4 | WF_UART_RX |
| |
KEY | KEY1 | M13 | GPIO_P2_7 | pwm1 | SPI1_CS1 |
KEY2 | D7 | GPIO_P2_4 | pwm2 | CLK_REQ_OUT | |
KEY3 | E8 | GPIO_P2_5 | pwm3 | CLK_REQ_IN | |
KEY4 | W6 | GPIO_P3_2 | SPI1_CS3 |
| |
MPU6050 | MPU6050_INT | Y9 | GPIO_P4_1 | I2S0_DI2 | UART2_RTS |
| QMC5883L_INT | T4 | GPIO_P4_6 | WF_UART_CTS |
|
| AP3216C_INT | T5 | GPIO_P4_7 | WF_UART_RTS |
|
| BMI160_INT1 | W8 | GPIO_P4_0 | I2S0_DI3 | UART2_CTS |
| BMI160_INT2 | V7 | GPIO_P3_3 | SPI1_DI3 |
|
UART串口 | UART_RX | U12 | GPIO_P1_6 | UART0_RXD | I2C_M0_SCL |
UART_TX | V13 | GPIO_P1_7 | UART0_TXD | I2C_M0_SDA | |
扩展接口 | I2C_SCL1 | F11 | GPIO_P0_2 | I2S0_WS | I2C_M1_SCL |
I2C_SDA1 | E12 | GPIO_P0_3 | I2S0_SCK | I2C_M1_SDA | |
UART2_RXD | D11 | GPIO_P2_2 | I2C_M1_SCL | UART2_RXD | |
UART2_TXD | C12 | GPIO_P2_3 | I2C_M1_SDA | UART2_TXD | |
SPI0_DI0 | B10 | GPIO_P0_4 | SDMMC_DATA7 | SPI0_DI0 | |
SPI0_CLK | E10 | GPIO_P0_5 | SDMMC_DATA6 | SPI0_CLK | |
SPI0_CS0 | B9 | GPIO_P0_6 | SDMMC_DATA5 | SPI0_CS0 | |
SPI0_DIO | C10 | GPIO_P0_7 | SDMMC_DATA4 | SPI0_DIO | |
SWDIO | C8 | GPIO_P0_0 | I2S0_SDI | UART2_RXD | |
SWCLK | F9 | GPIO_P0_1 | I2S0_SDO | UART2_TXD |
3.2、KEY
HaaS EDU k1板载了四个可编程按键,分别是K1,k2, K3,K4。
四个按键对应的GPIO分别是:
按键名称 | 对应的GPIO映射 | GPIO模式 |
K1 | GPIO_P2_7 | 输入模式 |
K2 | GPIO_P2_4 | 输入模式 |
K3 | GPIO_P2_5 | 输入模式 |
K4 | GPIO_P3_2 | 输入模式 |
3.3、LED
HaaS EDU k1板载了三个可编程led,分别是L1,L2,L3,分别为红、绿、蓝三个单色灯。
对应的GPIO分别是:
LED名称 | 对应的GPIO映射 | GPIO模式 |
L1 | GPIO_P4_4 | 输出模式 |
L2 | GPIO_P4_3 | 输出模式 |
L3 | GPIO_P4_2 | 输出模式 |
3.4、Watchdog
看门狗用到的是外置的,芯片用到的是ADM706S。
图 2 ADM706S引脚图
默认的超时周期为1.6s, WDI管脚有电平转换就会重置定时器(喂狗成功,否则就会重启主MCU)。
3.5、ADC
HaaS EDK K1的ADC有3路,分别是GPADC0,GPADC1,GPADC2。
引脚 | 引脚编号 | 说明 |
GPADC0 | M4 | ADC输入引脚0 |
GPADC1 | F5 | ADC输入引脚1 |
GPADC2 | G6 | ADC输入引脚2 |
其中两路已经分配,GADC0用于测量模拟麦克风音量,如下图:
图 3 GADC0连接示意图
GADC1用于检测电池电压,如下图:
图 4 GADC1连接示意图
GADC2外接备用,如下图:
图 5 GADC2连接示意图
三路ADC 均为7通道 10bit。精度为1/1024。
3.6、PWM
HaaS1000芯片内内置了4个PWM管脚,分别是:
引脚名 | 复用GPIO | 描述 |
PWM0 | P2_6 | PWM0管脚 |
PWM1 | P2_7 | 未使用 |
PWM2 | P2_4 | 未使用 |
PWM3 | P2_5 | 未使用 |
其中只有PWM0配成了PWM模式,其他均作为普通GPIO,如下图所示:
图 6 PWM0接口示意图
3.7、SPI
HaaS EDU k1 包含了两路主模式SPI接口,支持串行LCD,速率最高50MHz。
其中一路SPI1接到了OLED屏幕上,另一路SPI0接到扩展口备用。
原理图如下:
SPI1 接口示意图
SPI0 接口示意图
3.8、I2C
HaaS100包含2路I2C主模式接口,速率最高1.4M bps,但是HaaS EDU k1 只接出来1路I2C1,遇板子上的I2C器件相连,具体请参考个原理图,为了方便扩展,并且30pin扩展口也已经引出来。
从地址占用:
I2C器件 | 从地址 | 说明 |
MPU6050 | 0X69 | 6轴陀螺仪加速度传感器 |
QMC5883L | 0X0d | 磁力计 |
SPL06 | 0X76 | 气压传感器 |
Si7006 | 0x40 | 温湿度传感器 |
AP3216C | 0X1e | 光线接近传感器 |
注:如果通过扩展口接入新的I2C器件是,请注意I2C从地址不要冲突。
3.9、SD卡
HaaS EDU k1 包含了一个SD卡接口,位于设备正面左侧。最大支持64GB,依托于芯片的eMMC4.41/SD3.0/SDIO3.0 主机接口, 单数据速率高达可50MHz。
3.10、timer
系统定时器分为两种,一种是硬件定时器,一种是软件定时器。
本产品只提供软件定时器供开发者使用,每个软件定时器都保存着自己的到期时间即时间超时处理函数。软件定时器管理模块会需要扫描所有的软件定时器设定,每个timer到期之后呼叫其预设的时间超时处理函数。
3.11、中断
程序运行过程中,系统外部、系统内部或者现行程序本身若出现紧急事件,CPU暂停当前程序的运行,自动转入预先设定好的的中断服务程序,处理完后,再返回原来的程序继续运行,这整个过程称为中断。
HaaS EDU K1系统中用到的中断很多,比如UART的接收中断、GPIO输入中断、DMA传输中断等等。
3.12、WIFI
HaaS EDU K1的Haas1000芯片自带的WIFI功能,支持2.4G/5G,WIFI天线巧妙的隐藏在壳体内部。
Wi-Fi支持如下特性:
- Wi-Fi® IEEE 802.11 a/b/g/n
- 支持 2.4GHz Wi-Fi
- 支持 20MHz, 40MHz 带宽模式
- 支持Wi-Fi 和Bluetooth 共存
3.13、OLED
HaaS EDU K1 自带了一块1.3寸132*64的OLED屏幕,黑底白字。芯片采用SH1106,使用SPI驱动。
开发者技术支持
如需更多技术支持,可加入钉钉开发者群,或者关注微信公众号
更多技术与解决方案介绍,请访问阿里云AIoT首页https://iot.aliyun.com/