1.2.3.5 板级配置文件使用说明

优质
小牛编辑
120浏览
2023-12-01

更新时间: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类型属性字段及含义类型
GPIOport : 端口值,这里跟芯片datasheet上的管脚PIN一一对应Number
dir: 方向; 0="output" 1="input" 2="irq" 3="analog";Number
pull: 上拉下拉; 0="pulldown" 1="pullup" 2="open";Number
type类型属性字段及含义类型
ADCport : 端口值,这里跟芯片datasheet上的管脚PIN一一对应Number
sampling: 采样率; 数值Number
type类型属性字段及含义类型
DACport : 端口值,这里跟芯片datasheet上的管脚PIN一一对应Number
voltage: 默认输出电压 , 取值: 0 - 255 整数。Number
type类型属性字段及含义类型
I2Cport : 端口值,这里跟芯片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类型描述字段及含义类型
UARTport : 端口值,这里跟芯片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类型属性字段及含义类型
PWMport : 端口值,这里跟芯片datasheet上的管脚PIN一一对应Number
freq: 频率值;Number
duty: 占空比;Number

3 芯片/模组的硬件资源对应表 esp32+developerkit

ESP32Devkitc 布局图

undefined

ESP32Devkitc(STM32)的硬件资源
功能/接口PIN/IO/资源映射TinyEnine Port 配置
I2C1SDA(IO2) SCL(IO4)port=1
I2C2SDA(IO5) SCL(IO12)port=2
ADC1SVP=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
ADC2GPIO2=channel0
GPIO4=channel1
GPIO2:port=2
GPIO4:port=4
UART0默认板级log打印port=0
UART1TXD(IO17) RXD(IO16) CTS(IO15) RTS(IO14)port=1
UART2TXD(IO32) RXD(IO33)port=2
GPIOGPIO19(IO19) GPIO21(IO21) GPIO22(IO22) GPIO23(IO23)GPIO19:port=19
GPIO21:port=21
GPIO22:port=22
GPIO23:port=23
DAC1IO25=channel1port=25
DAC2IO26=channel2port=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 硬件原理图(节选)

undefined

Developkit 的硬件资源
功能/接口PIN/IO/资源映射TinyEngine Port 配置
I2C1SCL(PB6) SDA(PB9)port=1
I2C2SCL(PB13) SDA(PB14)port=2
I2C3SCL(PC0) SDA(PC1)port=3
ADC3暂不支持暂不支持
ADC4暂不支持暂不支持
UART1TX(PA2) RX(PA3)port=1
UART3TX(PC4) RX(PC5)port=3
CAN1TX(PD1) RX(PD0)port=1
IISFS(PB12) DA(PB15) MCLK(PC6) BCLK(PD10)
IRSCL(PD6) SDA(PD5)SCL:port=54
SDA:port=53
GPIOdeveloperkit 使用的是STM32系列,有特定的 port 映射关系 点击stm32port表见 stm32 管脚 映射关闭表点击stm32 管脚 PIN 表

STM32 系列芯片的管脚 PIN 映射表

说明:适用于 Developerkit 及其他 STM32 系列芯片/模组

STM32 上的管脚名称 (每16个为一组)TinyEngine 映射的PORT值
PA0 - PA150 - 15
PB0 - PB1516 - 31
PC0 - PC1532 - 47
PD0 - PD1548 - 63
PE0 - PE1564 - 79
PF0 - PF1580 - 95
PG0 - PG1596 - 111
PH0 - PH15112 - 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
  }
}