板级配置文件使用说明
更新时间:2018-09-18 10:14:14
名词解释
board.json 文件: 对于每一个 TinyEngine 应用,都有一个名为 board.json 的板级配置文件,用于描述对应的板级硬件配置,如 UART、I2C、GPIO、ADC 等的配置。
board.json 语法:使用 json 字段描述,其中有 type,port 等硬件描述概念,对于每一款硬件(通常是芯片/模组/开发板)该配置文件均可能不同。
用途
不同的模组/芯片,各个端口和管脚的映射可能是不一样的,有的厂家或板型,会将 ESP32 的 PIN1,PIN2,PIN3,PIN4 映射成 UART1,而有的映射成 UART2,甚至有的会映射成 GPIO1,GPIO2,GPIO3,GPIO4。TinyEngine 的板型配置文件主要是将硬件(芯片)的物理端口映射成为统一的应用层逻辑端口。这样映射的好处是在替换不同的硬件或者芯片时,只需要替换 board.json 而不用修改应用程序或设备程序,从而便于应用的跨平台运行。
如何配置及使用说明
前面了解到 board.json 文件是用于跟硬件板级相关的配置的,那么该如何去配置其中的字段呢? 是否每一种硬件版型该配置都不一样?以及在哪里打开及修改该文件呢?下面将针对以上几个问题介绍。
1 board.json 的语法描述
从 board.json 的后缀可以看出,其使用json语法进行描述。格式通常如下:
{
"objectid":{
"type":"GPIO",
"port":12,
"dir":2,
"pull":1
}
}
解释:
objectid:定义了一个对象,后面大括号里面则描述了该对象的类型。 定义后可以在 JS 中直接使用。
type: 描述了该对象的类型,可以是 TinyEngine 支持的硬件扩展类型,如 GPIO,I2C,ADC 等。
port:描述了该对象的端口,这里需要根据实际硬件连接及芯片的PIN 脚映射关系来填写。
dir, pull: 是 GPIO 类型特有的,用于描述 GPIO 输出输出及上拉下拉,其他如ADC类型则有sampling采样频率这种类型描述。
2 板级支持 “Type” 列表及相关属性描述
board.json 的 type 用于描述该对象是什么硬件端口类型,而每一种 type 也拥有不同的属性字段,如GPIO 与 ADC 的属性字段是不一样的,如下将介绍每一种type类型的属性。
type类型 | 属性字段及含义 | 类型 |
---|---|---|
GPIO | port : 端口值,这里跟芯片datasheet上的管脚PIN一一对应 | Number |
dir: 方向; 0="output" 1="input" 2="irq" 3="analog"; | Number | |
pull: 上拉下拉; 0="pulldown" 1="pullup" 2="open"; | Number |
type类型 | 属性字段及含义 | 类型 |
---|---|---|
ADC | port : 端口值,这里跟芯片datasheet上的管脚PIN一一对应 | Number |
sampling: 采样率; 数值 | Number |
type类型 | 属性字段及含义 | 类型 |
---|---|---|
DAC | port : 端口值,这里跟芯片datasheet上的管脚PIN一一对应 | Number |
voltage: 默认输出电压 , 取值: 0 - 255 整数。 | Number |
type类型 | 属性字段及含义 | 类型 |
---|---|---|
I2C | port : 端口值,这里跟芯片datasheet上的管脚PIN一一对应 | Number |
address_width: 设备I2C地址宽度; | Number | |
freq: I2C总线速率; 该值一般在100000-400000范围; | Number | |
mode: 声明I2C的主从模式; 1=master,2=slave; | Number | |
dev_addr: 声明I2C的外设的I2C地址; | Number |
type类型 | 描述字段及含义 | 类型 |
---|---|---|
UART | port : 端口值,这里跟芯片datasheet上的管脚PIN一一对应 | Number |
data_width: 串口数据宽度值; 0=5bit;1=6bit;2=7bit;3=8bit; 4=9bit; | Number | |
baud_rate: 串口波特率; | Number | |
stop_bits: 串口停止位; 0=1bit停止位; 1=2bit停止位; 一般是1bit停止位 | Number | |
flow_control: 串口流控制; 0=禁止流控; 1=使能cts流控;2=使能rts流控;3=使能cts和rts流控; | Number | |
parity_config: 串口奇偶校验 ; 0=无校验;1=奇校验;2=偶校验; | Number |
type类型 | 属性字段及含义 | 类型 |
---|---|---|
PWM | port : 端口值,这里跟芯片datasheet上的管脚PIN一一对应 | Number |
freq: 频率值; | Number | |
duty: 占空比; | Number |
3 芯片/模组的硬件资源对应表 esp32+developerkit
ESP32Devkitc 布局图
ESP32Devkitc(STM32)的硬件资源 | ||
---|---|---|
功能/接口 | PIN/IO/资源映射 | TinyEnine Port 配置 |
I2C1 | SDA(IO2) SCL(IO4) | port=1 |
I2C2 | SDA(IO5) SCL(IO12) | port=2 |
ADC1 | SVP=channel0 SVN=channel3 IO32=channel4 IO33=channel5 IO34=channel6 IO35=channel7 |
SVP:port=36 SVN :port=37 IO32:port=32 IO33:port=33 IO34:port=34 IO35:port=35 |
ADC2 | GPIO2=channel0 GPIO4=channel1 |
GPIO2:port=2 GPIO4:port=4 |
UART0 | 默认板级log打印 | port=0 |
UART1 | TXD(IO17) RXD(IO16) CTS(IO15) RTS(IO14) | port=1 |
UART2 | TXD(IO32) RXD(IO33) | port=2 |
GPIO | GPIO19(IO19) GPIO21(IO21) GPIO22(IO22) GPIO23(IO23) | GPIO19:port=19 GPIO21:port=21 GPIO22:port=22 GPIO23:port=23 |
DAC1 | IO25=channel1 | port=25 |
DAC2 | IO26=channel2 | port=26 |
| PWM0 |IO5=channel0
IO17=channel1
IO4=channel2
IO16=channel3
| IO5 :port=5
IO17:port=17
IO4 :port=4
IO16:port=16 |
| WIFI | 内置 | 内置 |
| BT | 内置 | 内置 |
| WDG | 内置 | 内置 |
| SD | SD0(SD0) SD1(SD1) SD2(SD2) SD3(SD3) CMD(CMD) CLK(CLK) | |
| SPI | 待定 | 待定 |
DeveloperKit 硬件原理图(节选)
Developkit 的硬件资源 | ||
---|---|---|
功能/接口 | PIN/IO/资源映射 | TinyEngine Port 配置 |
I2C1 | SCL(PB6) SDA(PB9) | port=1 |
I2C2 | SCL(PB13) SDA(PB14) | port=2 |
I2C3 | SCL(PC0) SDA(PC1) | port=3 |
ADC3 | 暂不支持 | 暂不支持 |
ADC4 | 暂不支持 | 暂不支持 |
UART1 | TX(PA2) RX(PA3) | port=1 |
UART3 | TX(PC4) RX(PC5) | port=3 |
CAN1 | TX(PD1) RX(PD0) | port=1 |
IIS | FS(PB12) DA(PB15) MCLK(PC6) BCLK(PD10) | |
IR | SCL(PD6) SDA(PD5) | SCL:port=54 SDA:port=53 |
GPIO | developerkit 使用的是STM32系列,有特定的 port 映射关系 点击stm32port表 | 见 stm32 管脚 映射关闭表点击stm32 管脚 PIN 表 |
STM32 系列芯片的管脚 PIN 映射表
说明:适用于 Developerkit 及其他 STM32 系列芯片/模组
STM32 上的管脚名称 (每16个为一组) | TinyEngine 映射的PORT值 |
---|---|
PA0 - PA15 | 0 - 15 |
PB0 - PB15 | 16 - 31 |
PC0 - PC15 | 32 - 47 |
PD0 - PD15 | 48 - 63 |
PE0 - PE15 | 64 - 79 |
PF0 - PF15 | 80 - 95 |
PG0 - PG15 | 96 - 111 |
PH0 - PH15 | 112 - 127 |
举例:PD15对应的 PIN 值为63,PE9 对应 PIN 值为73 |
示例
{
"rgbled.r": {
"type": "GPIO",
"port": 27,
"dir": 3,
"pull": 1
},
"rgbled.g": {
"type": "GPIO",
"port": 33,
"dir": 3,
"pull": 1
},
"rgbled.b": {
"type": "GPIO",
"port": 32,
"dir": 3,
"pull": 1
},
"touchkey.key0": {
"type": "ADC",
"port": 4,
"sampling": 12000000
},
"touchkey.key1": {
"type": "ADC",
"port": 2,
"sampling": 12000000
},
"spk.dac1": {
"type": "DAC",
"port": 1,
"voltage": 255
},
"key": {
"type": "GPIO",
"port": 23,
"dir": 2,
"pull": 1
},
"gy30": {
"type": "I2C",
"port": 1,
"address_width": 7,
"freq": 100000,
"mode": 1,
"dev_addr": 70
},
"uart2": {
"type": "UART",
"port": 2,
"data_width": 3,
"baud_rate": 115200,
"stop_bits": 0,
"flow_control": 0,
"parity_config": 0
},
"buzzer": {
"type": "PWM",
"port": 4,
"freq": 5000,
"duty": 50
},
"hxd019.sda": {
"type": "GPIO",
"port": 26,
"dir": 3,
"pull": 1
},
"hxd019.scl": {
"type": "GPIO",
"port": 25,
"dir": 3,
"pull": 1
},
"hxd019.busy": {
"type": "GPIO",
"port": 21,
"dir": 1,
"pull": 1
}
}