STM32MP157 Discovery Kit๐
Introduction๐
The PAN9019A requires a fairly powerful host processor that executes the low-level Wi-Fiยฎ and Bluetoothยฎ drivers as well as some high-level Wi-Fi application software and a Bluetooth stack.
As an evaluation platform you can use the STM32MP157 Discovery Kit.
It does not have an on-board M.2 Key E slot for the PAN9019A M.2 device, but an additional SDIO interface and other peripherals can be enabled on the 40-pin expansion header.
To bring the PAN9019A M.2 device and the STM32MP157 Discovery Kit together, you can use the M.2 to Raspberry Pi Adapter.
This guide shows you how to evaluate a Panasonic PAN9019A M.2 device on a STM32MP157 Discovery Kit with the help of the M.2 to Raspberry Pi Adapter. But you have to be aware that only the basic bring-up is explained, not any advanced usage.
Hardware Modifications๐
You have to do some hardware modification to the PAN9019A M.2 device before you can use it together with the STM32MP157 Discovery Kit.
The following requirement must be met:
- You have a PAN9019A M.2 device.
SDIO and IO Reference Voltages๐
The interfaces on the 40-pin expansion header of the STM32MP157 Discovery Kit operate with 3.3 V signal level, while the PAN9019A M.2 device operates with 1.8 V instead.
Because of this you have to modify the PAN9019A M.2 device as explained in Hardware Modifications in order to change the SDIO and IO reference voltages to 3.3 V.
Note
A signal level of 3.3 V limits the SDIO clock speed to 50 MHz, which also limits the maximum achievable data rate severely.
For further information please refer to the module product specification at
I2C GPIO Expander Signal Voltages๐
The PAN9019A module contains an I2C GPIO Expander chipset whose signal levels on the clock and data lines are tied to 1.8 V using pull-up resistors. You have to remove these pull-up resistors so that the PAN9019A M.2 device can interface with 3.3 V signal levels instead.
You have to do the following steps to remove the pull-up resistors.
-
Unsolder the resistor R12.
-
Unsolder the resistor R13.
Signal Level Mismatch
You cannot easily change the input reference voltage of the I2C GPIO Expander chipset to 3.3 V as well. Because of this there is a mismatch regarding the input voltages.
The I2C GPIO Expander expects 1.8 V signal levels, while the I2C clock and data lines are operated with 3.3 V instead.
Nevertheless no communication problems were observed during the evaluation of this setup.
Host System Assembly๐
The following requirements must be met:
- You have a STM32MP157 Discovery Kit (host system).
- You have a M.2 to Raspberry Pi Adapter.
- You have a modified PAN9019A M.2 device.
You have to do the following steps to assemble the system.
-
Mount the PAN9019A M.2 device 3 onto the M.2 to Raspberry Pi Adapter 2 as explained in First Steps.
-
Mount the M.2 to Raspberry Pi Adapter 2 onto the 40-pin expansion header of the STM32MP157 Discovery Kit 1.
-
Power the M.2 to Raspberry Pi Adapter through the USB-C connector 4, otherwise the adapter is non-functional.
Host System Setup๐
Note
Please note that you need an myST account to be able to access any of the mentioned documents.
Initial Bring-Up๐
You have to follow the Let's start guide in the STM32 MPU Ecosystem User Guide to bring up your STM32MP157 Discovery Kit.
This includes the following steps:
-
Setting up the development system
-
Installing the necessary tools
-
Downloading an image binary
-
Populating the SD card of the STM32MP157 Discovery Kit
-
Booting the STM32MP157 Discovery Kit
This guide is based on the following versions:
en.flash-stm32mp1-openstlinux-6.1-yocto-mickledore-mpu-v24.06.26.tar.gz
Network Connectivity๐
You have to make sure that the STM32MP157 Discovery Kit is on the same network as your development system, because you need to interact with your host system and maybe transfer files to it in later steps.
You have to check and remember the IP address of your host system for later use.
-
On your host system, retrieve the current network configuration for the on-board Ethernet port in a Terminal window.
ip addr show eth0
The output should look something like this:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff inet 192.168.187.100/24 brd 192.168.187.255 scope global dynamic noprefixroute eth0 valid_lft 86089sec preferred_lft 86089sec inet6 fe80::xxxx:xxxx:xxxx:xxxx/64 scope link noprefixroute valid_lft forever preferred_lft forever
The IP address of your host system is 192.168.187.100
Host System IP Address
For this host system the IP address is 192.168.187.100, but it may be different for yours.
In any case you have to use this IP address to communicate with your host system for the remainder of this document.
You have to follow Check the host computer Internet access to make sure that your host system has access to the Internet.
Host System Remote Access
If you do not have any application for the SSH protocol yet, you can try the OpenSSH protocol suite.
It also includes tools for remote file operations like ssh
and scp
.
At the end of this process you should have a fully working system you can remotely log into.
Host System Configuration๐
The following requirements must be met:
- You have brought up your STM32MP157 Discovery Kit as explained in Host System Setup.
- You can access your STM32MP157 Discovery Kit remotely.
Install Additional Packages๐
You have to install the following packages on your host system for later use:
- device tree compiler package that provides tools for device tree handling, like
fdtput
anddtc
- nano package that provides the
nano
text editor - git package that provides the
git
version control system
-
Update the package index on the host system.
apt update
-
Install the additional packages.
apt install dtc nano git
Enable Peripheral Interfaces๐
You have to enable additional peripheral interfaces on the 40-pin expansion header.
-
Enable and configure an additional SDIO interface.
fdtput -d /boot/stm32mp157d-dk1.dtb /soc/etzpc@5c007000/mmc@48004000 status fdtput -t s /boot/stm32mp157d-dk1.dtb /soc/etzpc@5c007000/mmc@48004000 status okay fdtput /boot/stm32mp157d-dk1.dtb /soc/etzpc@5c007000/mmc@48004000 no-1-8-v fdtput /boot/stm32mp157d-dk1.dtb /soc/etzpc@5c007000/mmc@48004000 broken-cd
Non-recommended Setting
Setting the option
broken-cd
(for broken card detect) is not recommended and you should never use it in a product.It makes the Linux kernel poll the interface regularly and can disturb the operation of the device if it happens at the wrong time.
However, in this setup, it makes the reset button on the M.2 to Raspberry Pi Adapter work and helps you during the evaluation.
-
Enable an additional UART interface.
fdtput -d /boot/stm32mp157d-dk1.dtb /soc/etzpc@5c007000/serial@4000f000 status fdtput -t s /boot/stm32mp157d-dk1.dtb /soc/etzpc@5c007000/serial@4000f000 status okay
-
Enable an additional I2C interface.
fdtput -d /boot/stm32mp157d-dk1.dtb /soc/etzpc@5c007000/i2c@40015000 status fdtput -t s /boot/stm32mp157d-dk1.dtb /soc/etzpc@5c007000/i2c@40015000 status okay
-
Enable an additional SPI interface.
fdtput -d /boot/stm32mp157d-dk1.dtb /soc/etzpc@5c007000/spi@44009000 status fdtput -t s /boot/stm32mp157d-dk1.dtb /soc/etzpc@5c007000/spi@44009000 status okay
Enable I2C GPIO Expander Expander๐
You have to enable support for the I2C GPIO Expander in the device tree of the STM32MP157 Discovery Kit.
-
Navigate to the directory that contains the device tree.
cd /boot/
-
Decompile the currently used device tree.
dtc -I dtb -O dts stm32mp157d-dk1.dtb -o tree.dts
-
Open the decompiled device tree with the
nano
editor.nano tree.dts
-
Locate the node named
i2c@40015000
and add the following information at the end of the section before the closing parenthesis.m2_expander: pcal6408@20 { compatible = "nxp,pcal6408"; reg = <0x20>; gpio-controller; #gpio-cells = <2>; gpio-line-names = "UNUSED", "IND_RST_15.4", "WL_WAKE_IN", "BT_WAKE_IN", "RST_IND", "UNUSED", "UNUSED", "UNUSED"; };
-
Locate the node named
spi@44009000
and add the following information at the end of the section before the closing parenthesis.cs-gpios = <0x8a 0x06 1>; spidev0: spi@0 { reg = <0>; compatible = "rohm,dh2228fv"; spi-max-frequency = <10000000>; };
-
Assemble the modified device tree.
dtc -I dts -O dtb tree.dts -o stm32mp157d-dk1.dtb
System Reboot
You have to reboot the host system for these changes to take effect.
reboot
Development System Setup๐
Note
This guide assumes that you follow the recommendations for the directory structure as explained in Example of directory structure for Packages.
Setup Development Environment๐
You have to setup the development environment on your development system and follow the Develop on Armยฎ Cortexยฎ-A7 guide.
This includes the following steps:
-
Installing some extra packages
-
Downloading the SDK
-
Running the installation script
-
Starting the SDK
Note
You can skip the step to create a simple application and you don't need to rebuild the Linux kernel.
Setup Linux Kernel Build Environment๐
You have to setup the build environment for the Linux kernel and follow the Modify, rebuild and reload the Linuxยฎ kernel guide.
This includes the following steps:
-
Downloading the BSP that contains the Linux kernel source code
-
Preparing the Linux kernel source code
You don't have to build the Linux kernel, however, you need to prepare the kernel.
- In the Linux kernel directory, execute the following statement to prepare the kernel.
make O=${OUTPUT_BUILD_DIR} prepare
This guide is based on the following versions:
en.sdk-x86_64-stm32mp1-openstlinux-6.1-yocto-mickledore-mpu-v24.06.26.tar.gz
en.sources-stm32mp1-openstlinux-6.1-yocto-mickledore-mpu-v24.06.26.tar.gz
rgpower Files๐
Before you can fully operate the PAN9019A, a set of so-called rgpower files is required. These files contain channel tables and regulatory parameters of the PAN9019A for a specific region it operates in.
For further information on this topic refer to rgpower Files in the Software Guide for the PAN9019A.
Since these files are provided by Panasonic you need to transfer them to the system manually in a later step.
To gain access to the rgpower files you have to go through an uncomplicated approval process that you can find directly on the following pages.
Warning
The PAN9019A is a radio certified module. There are conditions on hardware and software which must be met for the modular approval to be valid.
For detailed information please refer to the PAN9019A Module Integration Guide at
However, if you want to continue right away you can also start with the single world-wide (WW) rgpower file, which is the fall-back regulatory file for all regions the module is certified for.
The world-wide rgpower file has a couple restrictions compared to the region-specific rgpower files:
- Support for channels 1 to 11 in 2.4 GHz band only
- No support for 5 GHz band
- Overall reduced output power
For the initial evaluation of the PAN9019A module the world-wide rgpower file is available from the Downloads section.
You can download it directly when you setup your host system as explained in Install rgpower Files in a later step.
Host System Software Installation๐
The following requirement must be met:
- You have brought up your development system as explained in Development System Setup.
You have to make sure that the development environment is initialized.
- Execute the initialization script of the SDK.
. ~/STM32MPU_workspace/STM32MPU-Ecosystem-v5.1.0/Developer-Package/SDK/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi
Compile Missing Kernel Module๐
The default kernel lacks support for the I2C GPIO Expander chipset that is present on the PAN9019A M.2 device, so you have to compile the driver manually.
-
Navigate to the base directory of the Linux kernel.
cd ~/STM32MPU_workspace/STM32MPU-Ecosystem-v5.1.0/Developer-Package/stm32mp1-openstlinux-6.1-yocto-mickledore-mpu-v24.06.26/sources/arm-ostl-linux-gnueabi/linux-stm32mp-6.1.82-stm32mp-r2-r0/linux-6.1.8
-
Download a configuration fragment from the Development Hub.
wget -O ./st-gpio-expander-fragment.cfg \ https://pideu.panasonic.de/development-hub/pan9019/downloads/st-gpio-expander-fragment.cfg
-
Merge the configuration fragment into the Linux kernel configuration.
scripts/kconfig/merge_config.sh -m -r -O ${OUTPUT_BUILD_DIR} ${OUTPUT_BUILD_DIR}/.config ~/st-gpio-expander-fragment.cfg yes '' | make oldconfig O=${OUTPUT_BUILD_DIR}
-
Compile all kernel driver modules.
make O=${OUTPUT_BUILD_DIR} modules
-
Copy the missing driver to your host system.
scp ${OUTPUT_BUILD_DIR}/drivers/gpio/gpio-pca953x.ko root@192.168.187.100:/lib/modules/6.1.82/extra/
Compile the Device Driver๐
You have to download the PAN9019A module device driver, compile it and transfer it to the host system.
-
Navigate to the base of your working environment.
cd ~/STM32MPU_workspace/STM32MPU-Ecosystem-v5.1.0/
-
Clone the driver repository from NXP's GitHub space.
git clone https://github.com/nxp-imx/mwifiex.git cd mwifiex/ git checkout lf-6.6.23_2.0.0 cd mxm_wifiex/wlan_src/
-
You have to disable support for some unused devices inside the driver.
Use the
nano
editor to open the file and change it as described.nano Makefile
Makefile 32 33 34 35 36 37 38 39 40 41 42 43 44 45
# Multi-chipsets [...] CONFIG_SD8997=y CONFIG_USB8997=n CONFIG_PCIE8997=n CONFIG_SD8987=y CONFIG_SD9097=n [...] CONFIG_SD9098=y CONFIG_USB9098=n CONFIG_PCIE9098=n CONFIG_SDIW624=n CONFIG_SDAW693=n [...]
-
You have to download and apply a custom patch from the Development Hub to fix an incorrect version check in the driver.
wget -O ./nxp-fix-version-check.patch \ https://pideu.panasonic.de/development-hub/pan9019/downloads/nxp-fix-version-check.patch patch -p1 < ./nxp-fix-version-check.patch
-
Compile the device driver.
make O="${OUTPUT_BUILD_DIR}" KERNELDIR=~/STM32MPU_workspace/STM32MPU-Ecosystem-v5.1.0/Developer-Package/stm32mp1-openstlinux-6.1-yocto-mickledore-mpu-v24.06.26/sources/arm-ostl-linux-gnueabi/linux-stm32mp-6.1.82-stm32mp-r2-r0/linux-6.1.82 build
-
Copy the device driver to your host system.
scp mlan.ko moal.ko root@192.168.187.100:/lib/modules/6.1.82/extra/
Install the Firmware๐
You have to download and install the firmware for the PAN9019A module.
-
Create the destination directory for the firmware and configuration files.
mkdir -p /lib/firmware/nxp/
-
Clone the firmware repository from NXP's GitHub space.
cd ~ git clone https://github.com/nxp-imx/imx-firmware.git cd imx-firmware/ git checkout lf-6.6.23_2.0.0
-
Copy the firmware to the global firmware directory.
cd ~/imx-firmware cp nxp/FwImage_IW612_SD/sduart_nw61x_v1.bin.se /lib/firmware/nxp/
-
Copy the configuration file
wifi_mod_para.conf
to the global firmware directory.cd ~/imx-firmware cp nxp/wifi_mod_para.conf /lib/firmware/nxp/
-
Edit the
SDIW612
section in the filewifi_mod_para.conf
using thenano
editor to contain the following settings.nano /lib/firmware/nxp/wifi_mod_para.conf
wifi_mod_para.confSDIW612 = { cal_data_cfg=none fw_name=nxp/sduart_nw61x_v1.bin.se cntry_txpwr=2 }
Install rgpower Files๐
As explained in rgpower Files the PAN9019A module needs proper rgpower files to operate.
If you already have your set of rgpower files, you have to copy them to the /lib/firmware/nxp/
directory on your host system.
If you do not have your set of rgpower files yet and want to use the single world-wide (WW) rgpower file instead, you can download it directly to the host system.
- Download the rgpower file to the global firmware directory.
wget -O /lib/firmware/nxp/rgpower_WW.bin \ https://pideu.panasonic.de/development-hub/pan9019/downloads/rgpower_WW.bin
Wi-Fi๐
Bring Up๐
The newly compiled device drivers are not loaded into the Linux kernel automatically, you have to manually load them into the kernel prior to operation.
-
Make sure that Linux kernel module dependency database is up-to-date.
depmod -a
-
Load the modules into the Linux kernel.
modprobe mlan modprobe moal mod_para=nxp/wifi_mod_para.conf
-
Check the Linux kernel log.
dmesg
The output should look something like this:
[ 263.436351] Request firmware: nxp/sduart_nw61x_v1.bin.se [ 263.852847] Wlan: FW download over, firmwarelen=1038668 downloaded 936668 [ 264.256233] WLAN FW is active [ 264.300156] on_time is 264296058797 [ 264.374828] VDLL image: len=102000 [ 264.376130] fw_cap_info=0x487cff03, dev_cap_mask=0xffffffff [ 264.376158] uuid: 068bfcc4ba1d528786ce818360ed4555 [ 264.376162] max_p2p_conn = 8, max_sta_conn = 16 [ 264.389119] Trying download country_power_tble: nxp/rgpower_WW.bin [ 264.463300] Request firmware: nxp/rgpower_WW.bin [ 264.629607] call regulatory_set_wiphy_regd WW [ 264.663429] Register NXP 802.11 Adapter mlan0 [ 264.767939] wlan: uap%d set max_mtu 2000 [ 264.819529] Register NXP 802.11 Adapter uap0 [ 264.884398] call regulatory_set_wiphy_regd WW [ 264.896841] Register NXP 802.11 Adapter wfd0 [ 265.000308] wlan: version = SDIW612---18.99.3.p10.1-MM6X18437.p21-GPL-(FP92) [ 265.125657] uap0: Skip change virtual intf type on uap: from 3 to 2
Note
If you can't see that the PAN9019A M.2 device was detected, press the reset button 6 button of the M.2 to Raspberry Pi Adapter briefly once.
This resets the PAN9019A module, but also triggers the detection in the Linux kernel again.
You can now check the functionality of the driver.
-
Use the
ip
command to verify that themlan0
network interface for the PAN9019A is now available.ip addr show mlan0
The output should look something like this:
3: mlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000 link/ether 34:32:e6:xx:xx:xx brd ff:ff:ff:ff:ff:ff
Usage๐
You have to follow these steps to check if Wi-Fi is functional.
-
Bring up the Wi-Fi interface.
ip link set dev mlan0 up
-
Execute a Wi-Fi scan.
iw dev mlan0 scan
You can see that nearby Wi-Fi networks are discovered successfully.
Bluetooth๐
The following requirement must be met:
- You have successfully brought up the Wi-Fi portion as explained in Wi-Fi.
Bring Up๐
You have to follow these steps to bring up the Bluetooth interface.
-
Initialize the Bluetooth interface.
hciattach /dev/ttySTM1 any 115200 flow
The output should look something like this:
Device setup complete
-
Bring up the Bluetooth interface.
hciconfig hci0 up
Usage๐
You have to follow these steps to check if Bluetooth is functional.
-
Execute a Bluetooth scan.
bluetoothctl scan on
You can see that nearby Bluetooth devices that are advertising are discovered successfully.
802.15.4๐
The following requirement must be met:
- You have successfully brought up the Wi-Fi portion as explained in Wi-Fi.
Software Setup๐
There is no integrated support for OpenThread using the 802.15.4 radio portion of the PAN9019A, so you have to compile the necessary software on your development system.
-
Navigate to the base of your working environment.
cd ~/STM32MPU_workspace/STM32MPU-Ecosystem-v5.1.0/
-
Clone the official OpenThread repository and checkout a version that matches the driver version.
git clone https://github.com/openthread/openthread.git cd openthread git checkout 5beae143700db54c6e9bd4b15a568abe2f305723 cd ..
-
Clone NXP's
meta-matter
repository and checkout a version that matches the driver version, too.git clone https://github.com/nxp-imx/meta-matter.git cd meta-matter git checkout imx_matter_2024_q1 cd ..
-
The official OpenThread stack does not work out-of-the-box with the PAN9019A module yet.
Apply an NXP-specific patch from the
meta-matter
repository to make the OpenThread stack fully work.cd openthread patch -p1 < ../meta-matter/recipes-openthread/openthread/files/0001-Apply-IW612-change-to-openthread.patch
-
Compile the OpenThread stack.
./script/cmake-build posix -GNinja -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \ -DOT_COMPILE_WARNING_AS_ERROR=OFF -DOT_PLATFORM=posix -DOT_SLAAC=ON \ -DOT_BORDER_AGENT=ON -DOT_BORDER_ROUTER=ON -DOT_COAP=ON -DOT_COAP_BLOCK=ON \ -DOT_COAP_OBSERVE=ON -DOT_COAPS=ON -DOT_COMMISSIONER=ON -DOT_CHANNEL_MANAGER=ON \ -DOT_CHANNEL_MONITOR=ON -DOT_CHILD_SUPERVISION=ON -DOT_DATASET_UPDATER=ON \ -DOT_DHCP6_CLIENT=ON -DOT_DHCP6_SERVER=ON -DOT_DIAGNOSTIC=ON -DOT_DNS_CLIENT=ON \ -DOT_ECDSA=ON -DOT_IP6_FRAGM=ON -DOT_JAM_DETECTION=ON -DOT_JOINER=ON \ -DOT_LEGACY=ON -DOT_MAC_FILTER=ON -DOT_NETDIAG_CLIENT=ON \ -DOT_NEIGHBOR_DISCOVERY_AGENT=ON -DOT_PING_SENDER=ON -DOT_REFERENCE_DEVICE=ON \ -DOT_SERVICE=ON -DOT_SNTP_CLIENT=ON -DOT_SRP_CLIENT=ON -DOT_COVERAGE=OFF \ -DOT_LOG_LEVEL_DYNAMIC=ON -DOT_RCP_RESTORATION_MAX_COUNT=2 \ -DOT_LOG_OUTPUT=PLATFORM_DEFINED -DOT_POSIX_MAX_POWER_TABLE=ON -DOT_DAEMON=ON \ -DOT_THREAD_VERSION=1.3 -DCMAKE_BUILD_TYPE=Release -DOT_POSIX_CONFIG_RCP_BUS=SPI
-
Transfer the application files to the host system.
scp ./build/posix/src/posix/ot-daemon ./build/posix/src/posix/ot-ctl \ root@192.168.187.100:~
Bring Up๐
The reset function of the 802.15.4 subsystem of the PAN9019A module is controlled using the I2C GPIO Expander on the PAN9019A M.2 device.
It is important that the I2C GPIO Expander is correctly recognized by the STM32MP157 Discovery Kit during boot, otherwise it cannot be used by the OpenThread stack later.
You have to follow these steps to verify that the I2C GPIO Expander is really available.
-
Reboot the host system.
reboot
-
Check if an additional I2C GPIO Expander with the signature
[1-0020]
is present.gpiodetect
The output should look something like this:
[...] gpiochip10 [1-0020] (8 lines) [...]
The I2C GPIO Expander
gpiochip10
is present in the host system.
You can verify that the OpenThread stack starts correctly as follows.
-
Start the OpenThread daemon
ot-daemon
with the following configuration to run in the background.cd ~ ./ot-daemon -v "spinel+spi:///dev/spidev0.0?gpio-int-device=/dev/gpiochip5&gpio-int-line=3&gpio-reset-device=/dev/gpiochip10&gpio-reset-line=1&spi-mode=0&spi-speed=500000&spi-reset-delay=500" &
The output should look something like this:
./ot-daemon[608]: Running OPENTHREAD/thread-reference-20230706-12-g5beae1437-dirty; POSIX; May 22 2024 13:50:08 ./ot-daemon[608]: Thread version: 4 ./ot-daemon[608]: Thread interface: wpan0 ./ot-daemon[608]: RCP version: OPENTHREAD/thread-reference-20180926-4730-gad808304f; IWX12; Dec 15 2023 12:28:58
The version information of the OpenThread stack is shown correctly.
Usage๐
You can verify that the OpenThread stack operates correctly as follows.
-
Perform a factory reset to verify the communication.
./ot-ctl factoryreset
The output should look something like this:
./ot-daemon[608]: Running OPENTHREAD/thread-reference-20230706-12-g5beae1437-dirty; POSIX; May 22 2024 13:50:08 ./ot-daemon[608]: Thread version: 4 ./ot-daemon[608]: Thread interface: wpan0 ./ot-daemon[608]: RCP version: OPENTHREAD/thread-reference-20180926-4730-gad808304f; IWX12; Dec 15 2023 12:28:58
The version information of the OpenThread stack is shown correctly.
Appendix๐
The PAN9019A module has a couple of special function pins that are routed to the 40-pin expansion header as follows.
Chip / Line | STM32MP157 | Pin Header | M.2 Specification | PAN9019A | Description |
---|---|---|---|---|---|
6 / 2 | PG2 | GPIO 5 | W_DISABLE1# | PDn | Power Down |
7 / 11 | PH11 | GPIO 6 | W_DISABLE#2 | IND_RST_BT | Bluetooth reset |
0 / 8 | PA8 | GPIO 4 | SDIO_RST# | IND_RST_WL | Wi-Fi reset |
You can manually control the special function pins using the gpioset
tool. For example:
-
Apply GND to GPIO 5 to signal power down to the module.
gpioset -c 6 2=0
-
Apply VCC to GPIO 5 to enable the module again.
gpioset -c 6 2=1
Some more special function pins of the PAN9019A module are routed to the I2C GPIO Expander as follows.
I2C GPIO Expander | PAN9019A | Description |
---|---|---|
3 | IND_RST_14.4 | 802.15.4 reset |
7 | RST_IND | Reset indicator |