Utilizar GPIOs em aplicações com capacidade em tempo real
O Azure Sphere suporta GPIOs (entrada/saída para fins gerais). Um GPIO é um tipo de pin digital programável num circuito integrado. Os GPIOs não têm uma funcionalidade predefinida e o respetivo comportamento pode ser personalizado por uma aplicação. Algumas utilizações comuns para GPIOs são para alterar o estado dos dispositivos de hardware, controlar os LEDs e ler o estado dos comutadores.
Este tópico descreve como utilizar GPIOs numa aplicação com capacidade em tempo real (RTApp). Para obter informações sobre como utilizar GPIOs em aplicações de alto nível, veja Utilizar GPIOs em aplicações de alto nível.
Uma RTApp pode utilizar qualquer um dos GPIOs no dispositivo do Azure Sphere. As seguintes operações são suportadas para GPIO:
- Ler entrada
- Definir a saída para alta ou baixa
- Interrupções do software de consulta
Nota
O SO do Azure Sphere não repõe periféricos no arranque. As aplicações devem garantir que os periféricos estão num bom estado de arranque e após o reinício.
Suporte de MT3620 para GPIOs nos núcleos em tempo real
No MT3620, a maioria dos GPIOs são mapeados para núcleos em tempo real em blocos de quatro, começando com GPIO 0; no entanto, os blocos ISU 0 a 4 têm cinco GPIOs. Como resultado, os pedidos RTApp GPIO podem falhar se uma aplicação de alto nível (ou outra RTApp) pedir um GPIO no mesmo bloco. Por exemplo, se uma aplicação de alto nível pedir GPIO 8 e uma RTApp pedir GPIO 9, a segunda aplicação devolve um erro na implementação.
Cada LED no RDB MT3620 mapeia para três GPIOs: um para cada um para canais vermelhos, verdes e azuis.
Para registar endereços base, números de interrupção, velocidade do relógio, frequência de amostragem e outros detalhes sobre o MT3620, consulte a Folha de Dados MT3620 e o Manual de Utilizador mt3620 M4; Se as perguntas permanecerem, pode pedir detalhes à Avnet ao enviar um e-mail para Azure.Sphere@avnet.com.
Requisitos de GPIO
O código da aplicação precisa de uma forma de identificar o GPIO e os respetivos registos. Pode encontrar o endereço base do registo na documentação de hardware do fabricante. Antes de o RTApp poder utilizar um GPIO, tem de inicializar os blocos que vai utilizar. A inicialização só é necessária uma vez para cada bloco que a aplicação utiliza.
Para obter detalhes sobre o MT3620, veja Suporte de MT3620 para GPIOs nos núcleos em tempo real.
Definições do manifesto da aplicação
Para utilizar um GPIO, um RTApp tem de listá-lo na secção Capacidades do manifesto da aplicação. Identifique o GPIO com o "AppManifestValue" definido para o mesmo no ficheiro JSON para o hardware de destino. Por exemplo, a linha seguinte reserva GPIOs 8 e 12:
"Capabilities": {
"Gpio": [ 8, 12 ]
}
A aplicação de exemplo GPIO
O exemplo gpIO demonstra como utilizar GPIOs numa RTApp. Os ficheiros README fornecem detalhes e instruções.