1_移植CircuitPython
参考这两篇博客
https://learn.adafruit.com/adding-a-single-board-computer-to-platformdetect-for-blinka
https://learn.adafruit.com/adding-a-single-board-computer-to-blinka
1.1_第一部分
sudo apt-get install -y python3 git python3-pip
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.7 1
sudo update-alternatives --config python
升级
sudo pip3 install --upgrade setuptools
查看板子名称和芯片名称
cat /etc/armbian-release
git clone https://github.com/adafruit/Adafruit_Python_PlatformDetect.git
cd ~/Adafruit_Python_PlatformDetect/adafruit_platformdetect/constants
修改boards.py
sudo nano boards.py
# Nano Pi boards
NANO_PI_DUO2 = "NANO_PI_DUO2"
# NanoPI
_NANO_PI_IDS = (NANO_PI_DUO2,)
修改board.py
cd ~/Adafruit_Python_PlatformDetect/adafruit_platformdetect
sudo nano board.py
if board_value == "nanopiduo2":
board = boards.NANO_PI_DUO2
@property
def any_nano_pi(self):
"""Check whether the current board is any defined Nano Pi."""
return self.id in boards._NANO_PI_IDS
self.any_nano_pi,
修改detect.py
cd ~/Adafruit_Python_PlatformDetect/bin/
sudo nano detect.py
if detector.board.any_nano_pi:
print("Nano Pi detected.")
sudo pip3 install --upgrade Adafruit-PlatformDetect
sudo cp -R ~/Adafruit_Python_PlatformDetect/adafruit_platformdetect /usr/local/lib/python3.7/dist-packages
cd ~/Adafruit_Python_PlatformDetect/bin
sudo python3 detect.py
1.2_第二部分
安装adafruit_blinka
sudo pip3 install adafruit-blinka
安装libgpiod
sudo apt-cache search gpiod
安装以下三个
sudo apt-get install libgpiod2 python3-libgpiod gpiod
安装I2C工具
sudo apt-get install -y python3-smbus python3-dev i2c-tools
sudo adduser pi i2c
cd /usr/local/lib/python3.7/dist-packages/adafruit_blinka/microcontroller/allwinner/h3
sudo nano pin.py
PL11 = Pin((1, 11))
uartPorts = (
(1,UART1_TX, UART1_RX),
(3, UART3_TX, UART3_RX),
)
添加板文件
cd /usr/local/lib/python3.7/dist-packages/adafruit_blinka/board
sudo mkdir nanopi
cd nanopi
sudo nano nanopiduo2.py
"""Pin definitions for the Nano Pi Duo2."""
from adafruit_blinka.microcontroller.allwinner.h3 import pin
PL11 = pin.PL11
PG11 = pin.PG11
SCL = pin.PA11
SDA = pin.PA12
PA13 = pin.PA13
SCLK = pin.SPI1_SCLK
MISO = pin.SPI1_MISO
MOSI = pin.SPI1_MOSI
PG7 = pin.PG7
PG6 = pin.PG6
TX = pin.PG6
RX = pin.PG7
sudo nano __init__.py
"""Boards definition from Youshan Nano Pi"""
cd /usr/local/lib/python3.7/dist-packages
sudo nano board.py
elif board_id == ap_board.NANO_PI_DUO2:
from adafruit_blinka.board.nanopi.nanopiduo2 import *
编辑/boot/armbianEnv.txt并在最后添加这些行
sudo nano /boot/armbianEnv.txt
overlays=uart1 i2c0 spi-spidev
param_spidev_spi_bus=1
重启
sudo reboot
验证是否拥有I2C和SPI设备
ls /dev/i2c* /dev/spi*
cd /usr/local/lib/python3.7/dist-packages
sudo nano busio.py
elif detector.board.any_nano_pi and detector.chip.id == ap_chip.SUN8I:
from adafruit_blinka.microcontroller.allwinner.h3.pin import Pin
from adafruit_blinka.microcontroller.generic_linux.spi import SPI as _SPI
1.3_检测gpio和i2c和spi
sudo nano main.py
import board
import digitalio
import busio
print("Hello blinka!")
# Try to great a Digital input
pin = digitalio.DigitalInOut(board.PL11)
print("Digital IO ok!")
# Try to create an I2C device
i2c = busio.I2C(board.SCL, board.SDA)
print("I2C ok!")
# Try to create an SPI device
spi = busio.SPI(board.SCLK, board.MOSI, board.MISO)
print("SPI ok!")
print("done!")
sudo python3 main.py