95 lines
3.2 KiB
ReStructuredText
95 lines
3.2 KiB
ReStructuredText
.. _up_squared gpio_counter:
|
|
|
|
UP Squared GPIO Counter
|
|
#######################
|
|
|
|
Overview
|
|
********
|
|
This sample provides an example of how to configure GPIO input and output to
|
|
the UP Squared board.
|
|
|
|
The sample enables a pin as GPIO input (active high) that triggers the increment
|
|
of a counter (range is 0x0 to 0xf). The counter increments for
|
|
each change from 0 to 1 on HAT Pin 16 (BIOS Pin 19). The value of the counter is
|
|
represented on GPIO output (active high) as a 4-bit value
|
|
(bin 0, 1, 2, 3 -> HAT Pin 35, 37, 38, 40).
|
|
|
|
+------------+-----------------------------+
|
|
| Element | Mapping (by column) |
|
|
+============+=====+=====+=====+=====+=====+
|
|
| Bit (bin) | n/a | 3 | 2 | 1 | 0 |
|
|
+------------+-----+-----+-----+-----+-----+
|
|
| HAT Pin | 16 | 40 | 39 | 37 | 35 |
|
|
+------------+-----+-----+-----+-----+-----+
|
|
| BIOS Pin | 19 | 38 | 27 | 15 | 14 |
|
|
+------------+-----+-----+-----+-----+-----+
|
|
| Direction | IN | OUT | OUT | OUT | OUT |
|
|
+------------+-----+-----+-----+-----+-----+
|
|
| Active | H | H | H | H | H |
|
|
+------------+-----+-----+-----+-----+-----+
|
|
|
|
For example, a counter value of 0xc (hex) is represented in 0b1100 (binary)
|
|
on the GPIO output pins.
|
|
|
|
Requirements
|
|
************
|
|
|
|
The application requires an UP Squared board connected to the PC through USB
|
|
for serial console. The BIOS settings must be updated as specified in the
|
|
source code comments for HAT Configurations (see table above).
|
|
|
|
|
|
References
|
|
**********
|
|
|
|
- :ref:`up_squared` board documentation
|
|
|
|
|
|
Building and Running
|
|
********************
|
|
|
|
Build the sample in the following way:
|
|
|
|
.. zephyr-app-commands::
|
|
:zephyr-app: samples/boards/up_squared/gpio_counter
|
|
:board: up_squared
|
|
:goals: build
|
|
|
|
Prepare the boot device (USB storage drive) as described for the :ref:`UP Squared <up_squared>`
|
|
board. Insert the USB boot device containing the prepared software binary of the sample.
|
|
|
|
Connect the board to a host computer and open a serial connection for serial
|
|
console interface::
|
|
|
|
$ minicom -D <tty_device> -b 115200
|
|
|
|
Replace :code:`<tty_device>` with the port where the UP Squared board
|
|
can be found. For example, under Linux, :code:`/dev/ttyUSB0`.
|
|
The ``-b`` option sets baud rate.
|
|
|
|
Power On the board. The board will boot then enter GRUB boot loader unless BIOS
|
|
option is selected. Enter the BIOS configuration menu, modify the required HAT
|
|
configurations (above) and then select to save the BIOS settings and reset.
|
|
|
|
The board will reboot and then enter GRUB boot loader. Select to boot Zephyr and
|
|
the board will start to execute the sample. Apply input to trigger the increment
|
|
of the value of the counter.
|
|
|
|
There are several ways to observe the sample behavior in addition to serial
|
|
console display of the counter value. For example, the input signal can be
|
|
implemented with an analog button on a breakout breadboard, or with a basic pulse
|
|
provided by a GPIO output (active High) pin of another GPIO device (eg Arduino
|
|
Uno). The Up Squared GPIO output signals can each be connected to a simple LED
|
|
circuit on a breakout breadboard to illuminate the 4-bit counter value, as
|
|
shown in the example below::
|
|
|
|
o----> to Up Squared
|
|
| GPIO Output Pin
|
|
_|_
|
|
\ /
|
|
---
|
|
|
|
|
R1
|
|
|
|
|
+---> GND
|