Ativando a interface SPI na placa NanoPI NEO

Entre as centenas de pequenas placas de CPU com suporte a GNU/Linux®, uma das mais baratas é a NanoPI NEO, fabricada pela FriendlyELEC. A partir de U$9,99 é uma relação custo/beneficio muito atrativa.

Tem lá seus problemas, mas que não vou discutir agora, porque o artigo é para me lembrar, no futuro, de como ativar interface SPI.

Não usei o sistema operacional modificado pela Allwinner, que fabrica a CPU H3 usada na placa, nem o fornecido pela FriendlyELEC. Para ter uma versão atualizada do kernel, baixei a última imagem disponível do projeto armbian.

Os detalhes de instalação, gravação da imagem e “setup” inicial estão muito bem explicados no site do projeto e não são o assunto de hoje.

Placa NanoPi NEO, da FriendlyELEC

Apenas a interface SPI0 está disponível nos conectores de expansão e para ativar o driver spidev, tive que pesquisar bastante no fórum do projeto armbian.

Considerando a imagem com Armbian Buster, kernel 5.4, a receita de bolo é a seguinte:

1. Verificando a existência do driver

Confira se o driver foi compilado e está disponível no diretório de módulos.

Repare que o diretório pode mudar. Eu já recompilei o kernel e, por isso, o subdiretório tem o nome “acme28062020” no meio.

2. Configurando com o aplicativo armbian-config

Execute o programa armbian-config e navegue por System->Hardware->spi-spidev.

Ative essa opção, navegue de volta até sair do script e reinicie a placa.

3. Modificando os parâmetros de inicialização

No diretório /boot, edite o arquivo armbianEnv.txt e adicione duas linhas:

param_spidev_spi_bus=0
param_spidev_max_freq=100000000

E na linha iniciada por “overlays=”, tenha certeza de estar adicionado o texto “spi-spidev”. Como exemplo, no meu arquivo esta linha está assim:

overlays=analog-codec spi-spidev usbhost1 usbhost2

Reinicie a placa.

4. Testando

Se tudo correu bem, você deve ver um nó spidev0.0 no diretório /dev

Eu usei um osciloscópio para ter certeza de que o estado dos pinos da SPI realmente mudavam. Considerando a pinagem da placa, liguei uma ponta de prova ao pino PC2/CLK (o primeiro ao lado do conector RJ45).

Pinagem da placa NanoPi NEO. Atente para a versão, pois há pequenas mudanças no layout.

Baixe um aplicativo de teste da interface SPI:

git clone https://github.com/rm-hull/spidev-test
cd spidev-test/
gcc spidev_test.c -o spidev_test.exe
./spidev_test.exe
spi mode: 0x0
bits per word: 8
max speed: 500000 Hz (500 KHz)
RX | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  | ................................
root@nanopineo:~/spidev-test#

E na tela do osciloscópio surgiu o sinal de clock em todo seu esplendor e glória!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *