40Pin接口复用关系
40Pin连接器定义
表1 40Pin连接器定义
| 管脚号 | 名称 | 电平 | 管脚 | 名称 | 电平 |
|---|---|---|---|---|---|
| 1 | 3.3V | 3.3V | 2 | 5.0V | 5V |
| 3 | I2C7_SDA | 3.3V | 4 | 5.0V | 5V |
| 5 | I2C7_SCL | 3.3V | 6 | GND | - |
| 7 | GPCLK0 | 3.3V | 8 | UART0_TX | 3.3V |
| 9 | GND | - | 10 | UART0_RX | 3.3V |
| 11 | GPIO17 | 3.3V | 12 | PCM CLK | 3.3V |
| 13 | GPIO27 | 3.3V | 14 | GND | - |
| 15 | GPIO22 | 3.3V | 16 | GPIO23 | 3.3V |
| 17 | 3.3V | 3.3V | 18 | GPIO24 | 3.3V |
| 19 | SPI0_MOSI | 3.3V | 20 | GND | - |
| 21 | SPI0_MISO | 3.3V | 22 | GPIO25 | 3.3V |
| 23 | SPI0_SCLK | 3.3V | 24 | SPI0_CS0 | 3.3V |
| 25 | GND | - | 26 | GPIO7 | 3.3V |
| 27 | I2C6_SDA | 3.3V | 28 | I2C6_SCL | 3.3V |
| 29 | GPCLK1 | 3.3V | 30 | GND | - |
| 31 | GPIO6 | 3.3V | 32 | PWM0 | 3.3V |
| 33 | GPIO13 | 3.3V | 34 | GND | - |
| 35 | PCM FS | 3.3V | 36 | GPIO16 | 3.3V |
| 37 | GPIO26 | 3.3V | 38 | PCM DIN | 3.3V |
| 39 | GND | - | 40 | PCM DOUT | 3.3V |
:::note 说明
- NC插针在板内无连接。
- 1.8V输出电流最大为500mA,3.3V输出电流最大为500mA,5V输出电流最大为1A。 :::
UART
UART0是8脚和10脚,用于Ascend AI处理器的默认调试串口(console),波特率115200。
UART2是26脚和31脚,可以用于扩展及与其他模块通信。
图1 调试串口示意图
SPI
SPI-CS0、SPI-CLK、SPI-MISO、SPI-MOSI四线SPI接口可以外接各种传感器,只支持master模式。
I2C
I2C2-SCL和I2C2-SDA组成I2C接口,40Pin连接器共有I2C6和I2C7两组接口,可以用来外接传感器,与其他模块通信等,速率最高支持400KHz。
GPIO
GPIO0、GPIO1、GPIO2管脚作为输出管脚,必须外置上拉电阻增加驱动能力,建议上拉电阻的值为1K~10K。
开发者套件有9个独立的GPIO管脚可以使用。
父主题: 使用40Pin接口
40Pin接口介绍
开发者套件提供了40Pin低速GPIO接口,包括UART、SPI、I2C等接口,40Pin接口的管脚名称、电平、功能描述、复用关系如表1所示。
表1 40Pin扩展接口定义
| 管脚号 | 名称 | 电平 | 默认功能描述 | GPIO位号 | 复用信号1 | 复用信号2 | 复用信号3 | 复用信号4 | 复用信号5 | 复用信号6 | 复用信号7 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 3V3 POWER | 3.3V | 3V3电源 | - | - | - | - | - | - | - | - |
| 2 | 5V POWER | 5V | 5V电源 | - | - | - | - | - | - | - | - |
| 3 | I2C7_SDA | 3.3V | I2C7数据信号,内部上拉4.7K | GPIO2 | SDA7 | SPI6_SDO | GPIO2_12 | UCTS2 | - | - | - |
| 4 | 5V POWER | 5V | 5V电源 | - | - | - | - | - | - | - | - |
| 5 | I2C7_SCL | 3.3V | I2C7时钟信号,内部上拉4.7K | GPIO3 | SCL7 | SPI6_SCLK | GPIO2_11 | URTS2 | - | - | - |
| 6 | GND | - | GND | - | - | - | - | - | - | - | - |
| 7 | GPCLK0 | 3.3V | 通用时钟输出0 | GPIO4 | I2S0_MCLK | GPCLK0 | GPIO7_02 | UTXD7 | SPI7_CSN | - | - |
| 8 | UART0_TX | 3.3V | UART数据发送 | GPIO14 | UTXD0 | DDR_UTXD | SDA6 | GPIO0_14 | SPI5_SDO | - | - |
| 9 | GND | - | GND | - | - | - | - | - | - | - | - |
| 10 | UART0_RX | 3.3V | UART数据接收 | GPIO15 | URXD0 | DDR_UTXD | SCL6 | GPIO0_15 | SPI5_SCLK | - | - |
| 11 | GPIO17 | 3.3V | 通用GPIO管脚17 | GPIO17 | URXD2 | CAN_RX3 | GPIO2_18 | - | - | - | - |
| 12 | PCM CLK | 3.3V | PCM CLK数据时钟信号 | GPIO18 | I2S0_BCLK_TX | SPI8_CSN | GPIO7_03 | - | - | - | - |
| 13 | GPIO27 | 3.3V | 通用GPIO管脚27 | GPIO27 | PWR_SEQ4 | INT_TPM_N | GPIO1_06 | TRAP_RSV11 | - | - | - |
| 14 | GND | - | GND | - | - | - | - | - | - | - | - |
| 15 | GPIO22 | 3.3V | 通用GPIO管脚22 | GPIO22 | UTXD1 | GPIO2_15 | - | - | - | - | - |
| 16 | GPIO23 | 3.3V | 通用GPIO管脚23 | GPIO23 | URXD1 | GPIO2_16 | - | - | - | - | - |
| 17 | 3.3V POWER | 3.3V | 3V3电源 | - | - | - | - | - | - | - | - |
| 18 | GPIO24 | 3.3V | 通用GPIO管脚24 | GPIO24 | PWM1_DET | GPIO0_25 | TRAP_RSV13 | - | - | - | - |
| 19 | SPI0_MOSI | 3.3V | SPI0主机输出,从机输入 | GPIO10 | SPI2_SDO | SPI5_SDO | GPIO0_22 | MDC_DC_MD1 | - | - | - |
| 20 | GND | - | GND | - | - | - | - | - | - | - | - |
| 21 | SPI0_MISO | 3.3V | SPI0主机输入,从机输出 | GPIO9 | SPI2_SDI | SPI5_SDI | SCL10 | GPIO0_23 | - | - | - |
| 22 | GPIO25 | 3.3V | 通用GPIO管脚25 | GPIO25 | PERST2_N | GPIO0_02 | TRAP_RSV1 | - | - | - | - |
| 23 | SPI0_SCLK | 3.3V | SPI0时钟信号 | GPIO11 | SPI2_SCLK | SPI5_SCLK | GPIO0_20 | MDC_DC_MD0 | - | - | - |
| 24 | SPI0_CS0 | 3.3V | SPI0片选信号 | GPIO8 | SPI2_CSN | SPI5_CSN | SDA10 | GPIO0_21 | - | - | - |
| 25 | GND | - | GND | - | - | - | - | - | - | - | - |
| 26 | GPIO7 | 3.3V | 通用GPIO管脚07 | GPIO7 | URTX2 | CAN_RX2 | GPIO2_19 | - | - | - | - |
| 27 | I2C6_SDA | 3.3V | I2C6数据信号,内部上拉4.7K | - | - | - | - | - | - | - | - |
| 28 | I2C6_SCL | 3.3V | I2C6时钟信号,内部上拉4.7K | - | - | - | - | - | - | - | - |
| 29 | GPCLK1 | 3.3V | 通用时钟输出1 | GPIO5 | I2S1_MCLK | I2S_MCLK_DBG | GPCLK1 | GPIO7_07 | URXD7 | SPI7_SDI | - |
| 30 | GND | - | GND | - | - | - | - | - | - | - | - |
| 31 | GPIO6 | 3.3V | 通用GPIO管脚06 | GPIO6 | UCTS2 | CAN_TX2 | GPIO2_20 | - | - | - | - |
| 32 | PWM0 | 3.3V | PWM0信号,预留功能,可用于调节Sensor光圈 | GPIO12 | PWM3 | DDR_URXD | GPIO1_01 | - | - | - | - |
| 33 | GPIO13 | 3.3V | 通用GPIO管脚13 | GPIO13 | GPIO4_00 | USB0_OVRCYR | PRB_B[47] | - | - | - | - |
| 34 | GND | - | GND | - | - | - | - | - | - | - | - |
| 35 | PCM FS | 3.3V | PCM FS帧同步时钟信号 | GPIO19 | I2S0_WS_TX | SPI8_SDI | GPIO7_04 | - | - | - | - |
| 36 | GPIO16 | 3.3V | 通用GPIO管脚16 | GPIO16 | UTXD2 | CAN_TX3 | GPIO2_17 | - | - | - | - |
| 37 | GPIO26 | 3.3V | 通用GPIO管脚26 | GPIO26 | PERST3_N | GPIO0_03 | TRAP_RSV2 | - | - | - | - |
| 38 | PCM DIN | 3.3V | PCM DIN接收数据信号 | GPIO20 | I2S0_SD_RX | SPI8_SDO | GPIO7_06 | GPCLK0 | - | - | - |
| 39 | GND | - | GND | - | - | - | - | - | - | - | - |
| 40 | PCM DOUT | 3.3V | PCM DOUT发送数据信号 | GPIO21 | I2S0_SD_TX | SPI8_SCLK | GPIO7_05 | GPCLK1 | - | - | - |
:::note 说明
- NC插针在板内无连接。
- 3.3V输出电流最大为500mA,5V输出电流最大为1A。
- 表格中包括复用寄存器基地址,各个GPIO管脚对应寄存器的偏移地址,以及各管脚可以复用的功能。
- 40Pin接口配置复用功能时需查询本表格,找到对应管脚的地址,修改寄存器后即可配置成功。 :::
UART
UART0是8脚和10脚,用于昇腾AI处理器的默认调试串口(console),波特率115200。
图1 调试串口示意图
SPI
SPI-CS0、SPI-CLK、SPI-MISO、SPI-MOSI四线SPI接口可以外接各种传感器。
I2C
I2C2-SCL和I2C2-SDA组成I2C接口,40Pin连接器共有I2C6和I2C7两组接口,可以用来外接传感器,与其他模块通信等,速率最高支持400KHz。
PCM
PCM-CLK、PCM FS、PCM DIN、PCM DOUT四线PCM接口可以外接各种音频设备。
GPIO
Atlas 200I DK A2 开发者套件有11个管脚默认为GPIO。
父主题: 使用40Pin接口
40Pin接口复用关系
开发者套件的40Pin接口中共有26个功能管脚可复用,复用关系如表1所示。
开发者套件的40Pin扩展接口涉及4组复用寄存器组,每组的复用寄存器基地址以及对应的管脚号、GPIO位号、复用寄存器取值等信息如表1所示。
其中Pad信号是端口的引脚名称,复用信号X是该端口所支持的复用功能。
表1 复用寄存器信息
复用寄存器基地址 | 管脚号 | GPIO位号 | 控制器偏移地址 | Pad信号 | 复用寄存器取值:复用信号1 | 复用寄存器取值:复用信号2 | 复用寄存器取值:复用信号3 | 复用寄存器取值:复用信号4 | 复用寄存器取值:复用信号5 | 复用寄存器取值:复用信号6 | 复用寄存器取值:复用信号7 |
|---|---|---|---|---|---|---|---|---|---|---|---|
0x00C4000000 | 32 | GPIO12 | 0x0D0 | PWM3 | 0x0:pad_pwm3 | 0x1:pad_ddr_urxd | 0x3:pad_gpio1_01 | 0x7:pad_prb_a[29] | - | - | - |
8 | GPIO14 | 0x0B4 | UTXD0 | 0x0:pad_utxd0 | 0x1:pad_ddr_utxd | 0x2:pad_sda6 | 0x3:pad_gpio0_14 | 0x4:pad_spi5_sdo | 0x7:pad_prb_a[22] | - | |
10 | GPIO15 | 0x0B8 | URXD0 | 0x0:pad_urxd0 | 0x1:pad_ddr_urxd | 0x2:pad_scl6 | 0x3:pad_gpio0_15 | 0x4:pad_spi5_sclk | 0x7:pad_prb_a[23] | - | |
18 | GPIO24 | 0x100 | PWM1_DET | 0x0:pad_pwm1_det | 0x3:pad_gpio0_25 | 0x6:pad_trap_rsv13 | 0x7:pad_prb_a[40] | - | - | - | |
22 | GPIO25 | 0x018 | PERST2_N | 0x0:pad_perst2_n | 0x3:pad_gpio0_02 | 0x6:pad_trap_rsv1 | 0x7:pad_prb_a[2] | - | - | - | |
37 | GPIO26 | 0x01C | PERST3_N | 0x0:pad_perst3_n | 0x3:pad_gpio0_03 | 0x6:pad_trap_rsv2 | 0x7:pad_prb_a[3] | - | - | - | |
13 | GPIO27 | 0x0F4 | PWR_SEQ4 | 0x0:pad_pwr_seq4 | 0x2:pad_int_tpm_n | 0x3:pad_gpio1_06 | 0x6:pad_trap_rsv11 | 0x7:pad_prb_a[37] | - | - | |
0x0082320000 | 24 | GPIO8 | 0x064 | SPI0_CSN | 0x0:pad_spi0_csn | 0x2:pad_sda11 | 0x3:pad_gpio2_26 | 0x4:pad_utxd3 | 0x7:pad_prb_e[15] | - | - |
23 | GPIO11 | 0x060 | SPI0_SCLK | 0x0:pad_spi0_sclk | 0x2:pad_scl12 | 0x3:pad_gpio2_25 | 0x4:pad_urts3 | 0x7:pad_prb_e[14] | - | - | |
19 | GPIO10 | 0x068 | SPI0_SDO | 0x0:pad_spi0_sdo | 0x2:pad_sda12 | 0x3:pad_gpio2_27 | 0x4:pad_ucts3 | 0x7:pad_prb_e[16] | - | - | |
21 | GPIO9 | 0x06C | SPI0_SDI | 0x0:pad_spi0_sdi | 0x2:pad_scl11 | 0x3:pad_gpio2_28 | 0x4:pad_urxd3 | 0x7:pad_prb_e[17] | - | - | |
31 | GPIO6 | 0x04C | UCTS2 | 0x0:pad_ucts2 | 0x1:pad_can_tx2 | 0x3:pad_gpio2_20 | 0x7:pad_prb_e[9] | - | - | - | |
26 | GPIO7 | 0x048 | URTS2 | 0x0:pad_urts2 | 0x1:pad_can_rx2 | 0x3:pad_gpio2_19 | 0x7:pad_prb_e[8] | - | - | - | |
3 | GPIO2 | 0x02C | SDA7 | 0x0:pad_sda7 | 0x1:pad_spi6_sdo | 0x3:pad_gpio2_12 | 0x4:pad_ucts2 | 0x7:pad_prb_e[1] | - | - | |
5 | GPIO3 | 0x028 | SCL7 | 0x0:pad_scl7 | 0x1:pad_spi6_sclk | 0x3:pad_gpio2_11 | 0x4:pad_urts2 | 0x7:pad_prb_e[0] | - | - | |
36 | GPIO16 | 0x040 | UTXD2 | 0x0:pad_utxd2 | 0x1:pad_can_tx3 | 0x3:pad_gpio2_17 | 0x7:pad_prb_e[6] | - | - | - | |
11 | GPIO17 | 0x044 | URXD2 | 0x0:pad_urxd2 | 0x1:pad_can_rx3 | 0x3:pad_gpio2_18 | 0x7:pad_prb_e[7] | - | - | - | |
15 | GPIO22 | 0x038 | UTXD1 | 0x0:pad_utxd1 | 0x3:pad_gpio2_15 | 0x7:pad_prb_e[4] | - | - | - | - | |
16 | GPIO23 | 0x03C | URXD1 | 0x0:pad_urxd1 | 0x3:pad_gpio2_16 | 0x7:pad_prb_e[5] | - | - | - | - | |
0x0400140000 | 7 | GPIO4 | 0x030 | I2S0_MCLK | 0x0:pad_i2s0_mclk | 0x2:pad_gpclk0 | 0x3:pad_gpio7_02 | 0x4:pad_utxd7 | 0x5:pad_spi7_csn | 0x7:pad_prb_d[2] | - |
29 | GPIO5 | 0x044 | I2S1_MCLK | 0x0:pad_i2s1_mclk | 0x1:pad_i2s_mclk_dbg | 0x2:pad_gpclk1 | 0x3:pad_gpio7_07 | 0x4:pad_urxd7 | 0x5:pad_spi7_sdi | 0x7:pad_prb_d[7] | |
12 | GPIO18 | 0x034 | I2S0_BCLK_TX | 0x0:pad_i2s0_bclk_tx | 0x2:pad_spi8_csn | 0x3:pad_gpio7_03 | 0x7:pad_prb_d[3] | - | - | - | |
35 | GPIO19 | 0x038 | I2S0_WS_TX | 0x0:pad_i2s0_ws_tx | 0x2:pad_spi8_sdi | 0x3:pad_gpio7_04 | 0x7:pad_prb_d[4] | - | - | - | |
40 | GPIO21 | 0x03C | I2S0_SD_TX | 0x0:pad_i2s0_sd_tx | 0x2:pad_spi8_sclk | 0x3:pad_gpio7_05 | 0x4:pad_gpclk1 | 0x7:pad_prb_d[5] | - | - | |
38 | GPIO20 | 0x040 | I2S0_SD_RX | 0x0:pad_i2s0_sd_rx | 0x2:pad_spi8_sdo | 0x3:pad_gpio7_06 | 0x4:pad_gpclk0 | 0x7:pad_prb_d[6] | - | - | |
0x00A0140000 | 33 | GPIO13 | 0x0BC | GPIO4_00 | 0x0:pad_gpio4_00 | 0x2:pad_usb0_ovrcur | 0x7:pad_prb_b[47] | - | - | - | - |
父主题: 使用40Pin接口
准备
获取源码
- 下载[软件包](https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/Ascend HDK/Ascend HDK 23.0.RC3/Ascend-hdk-310b-sdk-soc_23.0.rc3.zip)。
- 解压后获取工具链安装包toolchain.tar.gz与源码包Ascend310B-source tar.gz。
环境准备
- 一台带网络端口且操作系统为Ubuntu 22.04的x86 Linux服务器。
- Linux服务器已安装python、make、gcc、unzip、pigz、bison、flex、libncurses-dev、squashfs-tools、bc、device-tree-compiler、libssl-dev、cmake与交叉编译工具链。
:::note 说明
-
所有的依赖必须用root用户进行安装。
-
用户可以通过如下命令进行安装上述依赖。
apt-get install -y python3 make gcc unzip pigz bison flex libncurses-dev squashfs-tools bc device-tree-compiler libssl-dev cmake :::
工具链安装
-
登录Linux服务器。
-
执行如下命令,切换至root用户。
su - root
-
执行如下命令,创建/opt/compiler目录。
mkdir /opt/compiler
-
将交叉编译工具链包“toolchain.tar.gz”上传至/opt/compiler目录。详细操作请参见Windows与开发者套件的文件传输。
-
进入到/opt/compiler目录。
cd /opt/compiler
-
执行如下命令,解压交叉编译工具。
tar -xvf toolchain.tar.gz -C ./
-
在配置文件中增加交叉编译工具链路径。
echo "export PATH=/opt/compiler/toolchain/bin:$PATH: " >> /etc/profile
-
执行如下命令,使环境变量生效。
source /etc/profile
-
执行如下命令,查看交叉编译工具链版本。
aarch64-target-linux-gnu-gcc -v
显示有版本信息,则表明安装工具链成功。
父主题: 接口复用操作
编译
-
登录Linux服务器。
-
执行如下命令,切换至root用户。
su - root
-
将源码包“Ascend310B-source.tar.gz”上传至Linux系统root用户属组目录下,例如/opt。详细操作请参见传输文件。
-
执行如下命令,进入源码包所在目录,例如/opt。
cd /opt
-
执行如下命令,解压源码包“Ascend310B-source.tar.gz”。
tar -xzvf Ascend310B-source.tar.gz
tar -xzvf 源码包
-
执行如下命令,进入product目录。
cd Ascend310B-source/dtb/dts/hi1910b/hi1910BL/product
-
执行如下命令编辑hi1910B-pinctrl-M100-B51.dtsi文件。
vim hi1910B-pinctrl-M100-B51.dtsi
根据表格表1管脚19、21、23与24的端口复用寄存器基地址为0x0082320000,管脚19、21、23与24的复用寄存器偏移地址分别为0x068、0x06c、0x060和0x064。
找到pinmux@82320000节点,修改SPI0节点的复用寄存器的值即可。
当前寄存器值0x0为SPI功能,将其更改为0x3,0x3为gpio功能。
更改后如下图所示,图中红色方框内为修改内容。

用户可根据自身需要配置端口复用寄存器的值,寄存器的值与复用功能的对应关系请参见表1。
-
(可选)hi1910B-pinctrl-M100-B51.dtsi文件未全部包含表1中涉及的管脚,当用户需要复用文件中未涉及的管脚,可参考此步骤添加。
-
当管脚的复用寄存器基地址为0x00C4000000、0x0082320000或0x0400140000时,可在hi1910B-pinctrl-M100-B51.dtsi文件中对应节点下参考如下格式进行配置。
示例:在0x00C4000000节点下新增配置,将管脚22复用为gpio0_02,红框内为新增内容。

-
当管脚的复用寄存器基地址为0x00A0140000时,hi1910B-pinctrl-M100-B51.dtsi文件中无此节点,此时可参考hi1910B-pinctrl-M150-B50.dtsi中的配置。

:::note 说明 hi1910B-pinctrl-M150-B50.dtsi在“Ascend310B-source/dtb/dts/hi1910b/hi1910BL/product”目录下。 :::
-
-
按“Esc”键,再执行如下命令,保存修改并按“Enter”键退出。
:wq!
-
执行以下命令,返回至opt目录。
cd /opt
-
禁用SPI0功能。
由于SPI0的管脚被改成GPIO功能,SPI0的驱动无法使用,需要将其功能进行屏蔽。
执行以下命令,打开Ascend310B-source/dtb/dts/hi1910b/hi1910BL/base路径下的“hi1910B-spi.dtsi”文件。
vim Ascend310B-source/dtb/dts/hi1910b/hi1910BL/base/hi1910B-spi.dtsi
在SPI0设备节点中添加语句“status = "disabled";”以禁用SPI0管脚的主功能。修改完成后如下图所示,图中红色方框内为新增内容。

:::note 说明 本节以SPI0为例,修改dts文件,若复用其他管脚功能,请根据实际情况修改dts文件,禁用不使用的功能或添加新功能。 :::
-
按“Esc”键,再执行如下命令,保存修改并按“Enter”键退出。
:wq!
-
执行如下命令,编译dtb文件。
c****d /opt/Ascend310B-source
bash build.sh dtb
出现如下回显,表示编译内核dtb文件成功。
generate /opt/Ascend310B-source/output/dt.img success!sign /opt/Ascend310B-source/output/dt.img success!:::note 说明 编译后的dt.img文件会自动存放于output目录下。 :::
父主题: 接口复用操作
在线提单