目录
引言
在使用润和 WS63 开发板(星闪派物联网套件)进行项目开发时,由于其采用 Hi3861 开发板的底板,常常会遇到查找 I/O 管脚困难的问题。这一问题给开发者带来诸多不便。今天分享一下如何通过阅读星闪WS63的开发板原理图,高效地查找设备的I/O控制管脚,方便将hi3861的程序移植到星闪派来。
开发板和底板的原理图
有关开发板和底板的原理图可以参考:fbb_ws63: fbb_ws63仓是星闪ws63和ws63e解决方案代码仓,搭载LiteOS系统,主要用于智慧家居、IoT网关、电子消费类等应用场景。技术论坛:https://developers.hisilicon.com/forum/0133146886267870001 - Gitee.com
-
HIHOPE_NEARLINK_DK_3863E_V03.pdf:WS63核心板的原理图
-
HiSpark_WiFi_IoT_EM_VER.A.pdf:温湿度传感器开发板,和hi3861相同
-
HiSpark_WiFi_IoT_EXB_VER.A.pdf:底板原理图,和hi3861相同
-
HiSpark_WiFi_IoT_OLED_VER.A.pdf:OLED显示板原理图,和hi3861相同
-
HiSpark_WiFi_IoT_SSL_VER.A.pdf:红绿灯板,和hi3861相同
为了降低成本,润和的星闪派套件除了核心板之外,都是和hi3861共用底板和外设子板,以上资料不全,其实最全的hi3861的资料参见:src/vendor/hihope/hispark_pegasus/docs/HiSpark_WiFi_IoT智能开发套件_原理图硬件资料.rar · HiSpark/hi3861_hdu_iot_application - Gitee.com
如果查看I/O地址
星闪的WS63核心板虽然可以插入hi3861的底板进行工作,但是它不是和hi3861的核心板完全兼容的,需要修改程序里面的I/O地址才能工作(都让星闪WS63的API和hi3861也不一样,实际需要修改的地方还是比较多的)。不能像hi3861那样看底板上的丝印就能知道GPIO管脚是哪个。现在以NFC传感器为例说明如何看丝印和查找对应的WS63管脚。
NFC传感器开发板
下面是NFC传感器开发板原理图中J1部分:
NFC传感器的J1部分是插在底板的J3上面的。
底板原理图
下面是底板J3的原理图:
我们很容易看到,NFC的I2C接口的SCL、SDA和底板的I2C0SCL、I2C0SDA是对应的,NFC的CSN、IRQ和底板的GPIO09、GPIO10对应的。这些丝印都是针对hi3861的,如果使用hi3861芯片直接从丝印上就可以读到这些信息,使用起来比较方便。但是WS63中不能直接使用这些信息,需要查额外的资料才能知道WS63内部对应的I/O资源是什么。
我们还需要看看底板的J1,它是hi3861和WS63模块共用的底座:
从这里可以看出,I2C0的SCL/SDA对应着J1的RX/TX,而GPIO09和GPIO10对应着J1的A9和D10。
WS63核心板
WS63核心板原理图中和底板J1插座对应的部分是这样的:
如果我们希望在WS63中控制NFC开发板,I2C的两个管脚对应的是UART1_RX和UART1_TX,而CSN对应的是GPIO09,而IRQ对应的是GPIO07。
我们再看看WS63的I/O复用表(docs/zh-CN/software/IO复用关系.md · HiSpark/fbb_ws63 - Gitee.com)
IO/MODE | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|---|
GPIO_00 | GPIO_00 | PWM0 | DIAG[0] | SPI1_CSN | JTAG_TDI | |||
GPIO_01 | GPIO_01 | PWM1 | DIAG[1] | SPI1_IO0 | JTAG_MODE | BT_SAMPLE | ||
GPIO_02 | GPIO_02 | PWM2 | DIAG[2] | SPI1_IO3 | WIFI_TSF_SYNC | WL_GLP_SYNC_PULSE | BGLE_GLP_SYNC_PULSE | |
GPIO_03 | GPIO_03 | PWM3 | PMU_32K_TEST | SPI1_IO1 | HW_ID[0] | DIAG[3] | ||
GPIO_04 | SSI_CLK | PWM4 | GPIO_04 | SPI1_IO1 | JTAG_ENABLE | DFT_JTAG_TMS | ||
GPIO_05 | SSI_DATA | PWM5 | UART2_CTS | SPI1_IO2 | GPIO_05 | SPI0_IN | DFT_JTAG_TCK | |
GPIO_06 | GPIO_06 | PWM6 | UART2_RTS | SPI1_SCK | REFCLK_FREQ_STATUS | DIAG[4] | SPIO0_OUT | DFT_JTAG_TDI |
GPIO_07 | GPIO_07 | PWM7 | UART2_RXD | SPI0_SCK | I2S_MCLK | DIAG[5] | ||
GPIO_08 | GPIO_08 | PWM0 | UART2_TXD | SPI0_CS1_N | DIAG[6] | |||
GPIO_09 | GPIO_09 | PWM1 | RADAR_ANT0_SW | SPI0_OUT | I2S_DO | HW_ID[1] | DIAG[7] | JTAG_TD0 |
GPIO_10 | GPIO_10 | PWM2 | ANT0_SW | SPI0_CS0_N | I2S_SCLK | DIAG[0] | ||
GPIO_11 | GPIO_11 | PWM3 | RADAR_ANT1_SW | SPI0_IN | I2S_LRCLK | DIAG[1] | HW_ID[2] | |
GPIO_12 | GPIO_12 | PWM4 | ANT1_SW | I2S_DI | HW_ID[3] | |||
GPIO_13 | GPIO_13 | UART1_CTS | RADAR_ANT0_SW | DFT_JTAG_TD0 | JTAG_TMS | |||
GPIO_14 | GPIO_14 | UART1_RTS | RADAR_ANT1_SW | DFT_JTAG_TRSTN | JTAG_TCK | |||
UART1_TXD | GPIO_15 | UART1_TXD | I2C1_SDA | |||||
UART1_RXD | GPIO_16 | UART1_RXD | I2C1_SCL | |||||
UART0_TXD | GPIO_17 | UART0_TXD | I2C0_SDA | |||||
UART0_RXD | GPIO_18 | UART0_RXD | I2C0_SCL |
从上表可以看出,UART1_RX和UART1_TX对应的是WS63的I2C1而不是I2C0,所以在移植程序时要讲hi3861访问的I2C的bus id修改一下。
结束语
以上就是通过原理图查找星闪 WS63 开发板 I/O 控制管脚的方法啦。按照这个思路,无论是 NFC 传感器还是其他外设,都能高效定位对应的管脚信息,为 hi3861 程序向星闪派的移植扫清障碍。如果在实际操作中还有其他疑问,欢迎在评论区交流,也可以去文中提到的技术论坛或代码仓获取更多细节。希望这份分享能帮到正在开发的你,祝项目顺利!