hybridgroup.gobot/platforms/nanopi/README.md

87 lines
2.7 KiB
Markdown
Raw Normal View History

2023-02-04 21:42:57 +08:00
# NanoPi Boards
The FriendlyARM NanoPi Boards are single board SoC computers with different hardware design. It has built-in GPIO, PWM,
SPI, and I2C interfaces.
For more info about the NanoPi Boards, go to [https://wiki.friendlyelec.com/wiki/index.php/Main_Page](https://wiki.friendlyelec.com/wiki/index.php/Main_Page).
## How to Install
Please refer to the main [README.md](https://github.com/hybridgroup/gobot/blob/release/README.md)
2023-02-04 21:42:57 +08:00
Tested OS:
* [armbian](https://www.armbian.com/nanopi-neo/) with Debian or Ubuntu
### System access and configuration basics
Please follow the installation instructions for the chosen OS.
### Enabling hardware drivers
Please follow the configuration instructions for the chosen OS.
E.g. for armbian:
```sh
sudo armbian-config
```
After configuration was changed, an reboot is necessary.
```sh
sudo reboot
```
## How to Use
The pin numbering used by your Gobot program should match the way your board is labeled right on the board itself.
```go
r := nanopi.NewNeoAdaptor()
led := gpio.NewLedDriver(r, "7")
```
## How to Connect
### Compiling
Compile your Gobot program on your workstation like this:
```sh
GOARM=7 GOARCH=arm GOOS=linux go build examples/nanopi_blink.go
```
Once you have compiled your code, you can upload your program and execute it on the board from your workstation
using the `scp` and `ssh` commands like this:
```sh
scp nanopi_blink nan@nanopineo:~
ssh -t nan@nanopineo "./nanopi_blink"
```
## GPIO's
At least for NEO, nearly all 14 GPIO's supports the advanced pin options "bias", "drive", "debounce" and "edge detection".
> Configure of edge detection will cause an initial event. GPIO header pins 19, 21, 23, 24 - do NOT support "debounce" and
> "edge detection" for NEO. Using unsupported options leads to reconfigure errors with text "no such device or address".
## PWM
A single PWM output is available at UART0-RX (UART_RXD0, internal PA5). So the UART0 needs to be disabled. The sunxi-
overlay (e.g. for armbian) disables the UART0 and the kernel console at ttyS0. The related kernel module needs to be
loaded: `sudo modprobe pwm-sun4i`. The default frequency is 100Hz.
## I2C
The default bus number is set to 0, which is connected to header pins 3 (PA12-SDA) and 5 (PA11-SCL). At least for NEO
rev.1.4 it is possible to activate bus 1, which is connected to "USB/Audio/IR" header pins 9 "PCM0_CLK/I2S0_BCK"
(PA19-SDA) and 8 "PCM0_SYNC/I2S0_LRC" (PA18-SCL). Armbian allows to activate bus 2 (PE12-SCL, PE13-SDA), which pins are
not wired for NEO and NEO2, but we do not block it at adaptor side.
## SPI
There is a known issue on [armbian](https://forum.armbian.com/topic/20033-51525-breaks-spi-on-nanopi-neo-and-does-not-create-devspidev00/)
for later Kernels.