跳到主要内容

40Pin接口复用关系

40Pin连接器定义

表1 40Pin连接器定义

管脚号名称电平管脚名称电平
13.3V3.3V25.0V5V
3I2C7_SDA3.3V45.0V5V
5I2C7_SCL3.3V6GND-
7GPCLK03.3V8UART0_TX3.3V
9GND-10UART0_RX3.3V
11GPIO173.3V12PCM CLK3.3V
13GPIO273.3V14GND-
15GPIO223.3V16GPIO233.3V
173.3V3.3V18GPIO243.3V
19SPI0_MOSI3.3V20GND-
21SPI0_MISO3.3V22GPIO253.3V
23SPI0_SCLK3.3V24SPI0_CS03.3V
25GND-26GPIO73.3V
27I2C6_SDA3.3V28I2C6_SCL3.3V
29GPCLK13.3V30GND-
31GPIO63.3V32PWM03.3V
33GPIO133.3V34GND-
35PCM FS3.3V36GPIO163.3V
37GPIO263.3V38PCM DIN3.3V
39GND-40PCM DOUT3.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
13V3 POWER3.3V3V3电源--------
25V POWER5V5V电源--------
3I2C7_SDA3.3VI2C7数据信号,内部上拉4.7KGPIO2SDA7SPI6_SDOGPIO2_12UCTS2---
45V POWER5V5V电源--------
5I2C7_SCL3.3VI2C7时钟信号,内部上拉4.7KGPIO3SCL7SPI6_SCLKGPIO2_11URTS2---
6GND-GND--------
7GPCLK03.3V通用时钟输出0GPIO4I2S0_MCLKGPCLK0GPIO7_02UTXD7SPI7_CSN--
8UART0_TX3.3VUART数据发送GPIO14UTXD0DDR_UTXDSDA6GPIO0_14SPI5_SDO--
9GND-GND--------
10UART0_RX3.3VUART数据接收GPIO15URXD0DDR_UTXDSCL6GPIO0_15SPI5_SCLK--
11GPIO173.3V通用GPIO管脚17GPIO17URXD2CAN_RX3GPIO2_18----
12PCM CLK3.3VPCM CLK数据时钟信号GPIO18I2S0_BCLK_TXSPI8_CSNGPIO7_03----
13GPIO273.3V通用GPIO管脚27GPIO27PWR_SEQ4INT_TPM_NGPIO1_06TRAP_RSV11---
14GND-GND--------
15GPIO223.3V通用GPIO管脚22GPIO22UTXD1GPIO2_15-----
16GPIO233.3V通用GPIO管脚23GPIO23URXD1GPIO2_16-----
173.3V POWER3.3V3V3电源--------
18GPIO243.3V通用GPIO管脚24GPIO24PWM1_DETGPIO0_25TRAP_RSV13----
19SPI0_MOSI3.3VSPI0主机输出,从机输入GPIO10SPI2_SDOSPI5_SDOGPIO0_22MDC_DC_MD1---
20GND-GND--------
21SPI0_MISO3.3VSPI0主机输入,从机输出GPIO9SPI2_SDISPI5_SDISCL10GPIO0_23---
22GPIO253.3V通用GPIO管脚25GPIO25PERST2_NGPIO0_02TRAP_RSV1----
23SPI0_SCLK3.3VSPI0时钟信号GPIO11SPI2_SCLKSPI5_SCLKGPIO0_20MDC_DC_MD0---
24SPI0_CS03.3VSPI0片选信号GPIO8SPI2_CSNSPI5_CSNSDA10GPIO0_21---
25GND-GND--------
26GPIO73.3V通用GPIO管脚07GPIO7URTX2CAN_RX2GPIO2_19----
27I2C6_SDA3.3VI2C6数据信号,内部上拉4.7K--------
28I2C6_SCL3.3VI2C6时钟信号,内部上拉4.7K--------
29GPCLK13.3V通用时钟输出1GPIO5I2S1_MCLKI2S_MCLK_DBGGPCLK1GPIO7_07URXD7SPI7_SDI-
30GND-GND--------
31GPIO63.3V通用GPIO管脚06GPIO6UCTS2CAN_TX2GPIO2_20----
32PWM03.3VPWM0信号,预留功能,可用于调节Sensor光圈GPIO12PWM3DDR_URXDGPIO1_01----
33GPIO133.3V通用GPIO管脚13GPIO13GPIO4_00USB0_OVRCYRPRB_B[47]----
34GND-GND--------
35PCM FS3.3VPCM FS帧同步时钟信号GPIO19I2S0_WS_TXSPI8_SDIGPIO7_04----
36GPIO163.3V通用GPIO管脚16GPIO16UTXD2CAN_TX3GPIO2_17----
37GPIO263.3V通用GPIO管脚26GPIO26PERST3_NGPIO0_03TRAP_RSV2----
38PCM DIN3.3VPCM DIN接收数据信号GPIO20I2S0_SD_RXSPI8_SDOGPIO7_06GPCLK0---
39GND-GND--------
40PCM DOUT3.3VPCM DOUT发送数据信号GPIO21I2S0_SD_TXSPI8_SCLKGPIO7_05GPCLK1---

:::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接口

准备

获取源码

  1. 下载[软件包](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)。
  2. 解压后获取工具链安装包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 :::

工具链安装

  1. 登录Linux服务器。

  2. 执行如下命令,切换至root用户。

    su - root

  3. 执行如下命令,创建/opt/compiler目录。

    mkdir /opt/compiler

  4. 将交叉编译工具链包“toolchain.tar.gz”上传至/opt/compiler目录。详细操作请参见Windows与开发者套件的文件传输

  5. 进入到/opt/compiler目录。

    cd /opt/compiler

  6. 执行如下命令,解压交叉编译工具。

    tar -xvf toolchain.tar.gz -C ./

  7. 在配置文件中增加交叉编译工具链路径。

    echo "export PATH=/opt/compiler/toolchain/bin:$PATH: " >> /etc/profile

  8. 执行如下命令,使环境变量生效。

    source /etc/profile

  9. 执行如下命令,查看交叉编译工具链版本。

    aarch64-target-linux-gnu-gcc -v

    显示有版本信息,则表明安装工具链成功。

父主题: 接口复用操作

编译

  1. 登录Linux服务器。

  2. 执行如下命令,切换至root用户。

    su - root

  3. 将源码包“Ascend310B-source.tar.gz”上传至Linux系统root用户属组目录下,例如/opt。详细操作请参见传输文件

  4. 执行如下命令,进入源码包所在目录,例如/opt。

    cd /opt

  5. 执行如下命令,解压源码包“Ascend310B-source.tar.gz”。

    tar -xzvf Ascend310B-source.tar.gz

    tar -xzvf 源码包

  6. 执行如下命令,进入product目录。

    cd Ascend310B-source/dtb/dts/hi1910b/hi1910BL/product

  7. 执行如下命令编辑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

  8. (可选)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”目录下。 :::

  9. 按“Esc”键,再执行如下命令,保存修改并按“Enter”键退出。

    :wq!

  10. 执行以下命令,返回至opt目录。

    cd /opt

  11. 禁用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文件,禁用不使用的功能或添加新功能。 :::

  12. 按“Esc”键,再执行如下命令,保存修改并按“Enter”键退出。

    :wq!

  13. 执行如下命令,编译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目录下。 :::

父主题: 接口复用操作

在线提单