STM32 MCU - WILK - REVA0
Customers may request access to the source-code of the firmware to modify it for their needs.
Commands & Registers (I2C)
I2C-Address: 0x40 (7-bit) | ||||
Register | Name | Access | Description | Default Value |
0x01 | REG_ID | read | ID-Register | 0x96 |
0x02 | REG_CONTROL | write | Restart and boot with BOOT_MODE= 0x04 - Shutdown (Hard) | - |
0x03 | REG_CONFIG | - | - | - |
0x04 | REG_PIN_CONFIG | write | <Pin> <Parameter> 1: Input, NoPull 20: Output PushPull, init low level | - |
0x05 | REG_PIN_SET | write | <Pin> <Level> | - |
0x06 | REG_PIN_GET | write | <Pin> | - |
0x07 | REG_PWM_CONFIG | write | <Pin> <Duty Cycle [%]> | - |
0x08 | REG_SECO_CODE | read | Read SECO_CODE | - |
0x09 | REG_INT_STATUS | read | Read INT_STATUS register, clear it and reset EC_IRQ#_OD to “1” 0x01: RTC_INT# | 0x00 |
0x0A | REG_INT_ENABLE | write | Enable or disable interrupts. 0x01: RTC_INT# | - |
0x0B | REG_ALTERNATE_ | write | Set Pin to specific alternate function. <Pin> <Alternate Function> Alternate Functions: | - |
0x0C | REG_RAM_CODE | read | Read RAM_CODE 0x4 - 4GB RAM | - |
0xF0 | REG_VERSION | read | Read firmware version | 0x01 |
Configurable GPIO Pins (I2C)
The following Pins are configurable via I2C:
Pin# | Name | Default Configuration | Alternate Function |
|
---|---|---|---|---|
4 | GPIO4 | Input, NoPull |
|
|
5 | GPIO5 | Input, NoPull | PWM |
|
6 | GPIO6 | Input, NoPull |
|
|
7 | GPIO7 | Input, NoPull |
|
|
8 | GPIO8 | Input, NoPull |
|
|
9 | GPIO9 | Input, NoPull |
|
|
10 | GPIO10 | Input, NoPull |
|
|
11 | GPIO11 | Input, NoPull |
|
|
12 | GPIO12 | Input, NoPull |
|
|
13 | GPIO13 | Input, NoPull |
|
|
20 | USB0_EN_OC# | Output, OpenDrain, init low level |
|
|
21 | USB1_EN_OC# | Output, OpenDrain, init low level |
|
|
23 | USB3_EN_OC# | Output, OpenDrain, init low level |
|
|
26 | USB_HUB_RST#_1V8 | Output, PushPull, init low level |
|
|
37 | WIFI_CLK_EN | Output, PushPull, init low level |
|
|
38 | WIFI_PWRDWN#_1V8 | Output, PushPull, init low level |
|
|
39 | BATLOW# | Input, NoPull |
|
|
40 | CHARGING# | Input, NoPull |
|
|
41 | CHARGER_PRSNT# | Input, NoPull |
|
|
42 | RESET_OUT# | Output, PushPull, init low level, set high ~100ms after startup (-> SMARC Spec.) |
|
|
Carrier board BOOT_SEL configuration
RevA0:
Note: On PCB RevA0 BOOT_SEL does not work. Instead the system enters serial download mode when “TEST#” (S157 on the SMARC connector) is low:
TEST# | KPCOL0 | Boot Device |
---|---|---|
0 | 0 | Serial Download Mode |
1 | 1 | Module eMMC |
Future hardware revisions:
The BOOT_SEL[2:0] Configuration on the carrier board is used to determine whether the system will boot into serial download mode or attempt to boot from eMMC:
BOOT_SEL[2:0]# | KPCOL0 | Boot Device |
---|---|---|
1 0 1 | 0 | Serial Download Mode |
1 1 0 | 1 | Module eMMC (default) |
Any other BOOT_SEL configuration will be treated like the default option.
Other Functions
Pressing the POWER button for <10 seconds while the system is running (if 1V8_RUN is enabled and Linux is running) triggers a soft shutdown.
Holding the POWER button for >= 10 seconds will cause the system to shut down hard.
Holding the RESET button for >= 10 seconds will cause the system to reboot into serial download mode rather than rebooting into the mode selected by the BOOT_SEL configuration of the carrier board.
The “RESET” button is automatically enabled when booting into Linux.