Introduction: Desenvolvendo Aplicações Analógicas Para Dragonboard 410c Com Linker Sprite Mezzanine

Picture of Desenvolvendo Aplicações Analógicas Para Dragonboard 410c Com Linker Sprite Mezzanine

Essa publicação tem como objetivo mostrar os passos necessários para desenvolver aplicações analógicas usando Dragonboard 410c e Linker Sprite Mezzanine.

Step 1: Pré Requisitos:

Step 2: Como Funciona a Comunicação Analógica Entre Dragonboard 410c E Linker Sprite Mezzanine

Picture of Como Funciona a Comunicação Analógica Entre Dragonboard 410c E Linker Sprite Mezzanine

O Linker Sprite Mezzanine tem um chip ADC integrado para que módulos analógicos possam ser usados através da Dragonboard 410c.

O chip ADC usado é o MCP3004 e comunica com a Dragonboard 410c através da interface SPI.

Step 3: Habilitando Interface SPI Na Dragonboard 410c

Você pode gerar um novo boot image para Dragonboard 410c com SPI habilitado, ou usar esse boot image já compilado e com SPI habilitado.

Como fleshar o boot image na Dragonboard 410c?

Após obter o boot image com SPI habilitado, o próximo passo é fleshar esse boot image na Dragonboard 410c.

Step 4: Biblioteca Libsoc

libsoc é a biblioteca que vamos usar para desenvolver aplicações analógicas na Dragonboard 410c com Linker Sprite Mezzanine.

As dependências da biblioteca libsoc são:

  • build-essential

  • autoconf

  • automake

  • libtool-bin

  • pkg-config

  • python-dev

sudo apt-get install build-essential autoconf automake libtool-bin pkg-config python-dev

Pronto! Feito isso, temos o ambiente preparado para instalar a biblioteca libsoc.

Step 5: Instalando Libsoc Na Dragonboard 410c

Seguem as etapas para instalar a biblioteca libsoc:

wget -c https://github.com/jackmitch/libsoc/archive/0.8.2.zip
unzip 0.8.2.zip cd libsoc-0.8.2 autoreconf -i ./configure --enable-python=2 --enable-board=dragonboard410c --with-board-configs make sudo make install sudo ldconfig /usr/local/lib sudo reboot

Step 6: Exemplo: Sliding Rheostat

Picture of Exemplo: Sliding Rheostat

Considerando que o módulo Sliding Rheostat esteja plugado na porta ADC1 do Linker Sprite Mezzanine, siga os próximos passos para executar o código.

Código:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <linux/spi/spidev.h>
#include <linux/types.h>
#include <inttypes.h>
 
#include "libsoc_spi.h"
#include "libsoc_gpio.h"
#include "libsoc_debug.h"
 
#define GPIO_CS 18
 
static uint8_t tx[3],rx[3];
 
int main() {
    int adc_value;
    gpio *gpio_cs;
    libsoc_set_debug(0);

    gpio_cs = libsoc_gpio_request(GPIO_CS,LS_SHARED);

    if(gpio_cs == NULL) {
    goto fail;
    }

    libsoc_gpio_set_direction(gpio_cs,OUTPUT);

    if(libsoc_gpio_get_direction(gpio_cs) != OUTPUT){
    printf("Failed to set direction to OUTPUT!\n");
    goto fail;  
    }
    
   spi *spi_dev = libsoc_spi_init(0,0);   
     
   if(!spi_dev){
    printf("Failed to get spidev device!\n");
    return EXIT_FAILURE;
   }


   libsoc_spi_set_mode(spi_dev,MODE_0);
   libsoc_spi_get_mode(spi_dev);
   libsoc_spi_set_speed(spi_dev,10000);
   libsoc_spi_get_speed(spi_dev);
   libsoc_spi_set_bits_per_word(spi_dev,BITS_8);
   libsoc_spi_get_bits_per_word(spi_dev);
 
   tx[0] = 0x01;
   tx[1] = 0x80;
   tx[2] = 0x00;
   while(1) {
    libsoc_gpio_set_level(gpio_cs,HIGH);
    usleep(10);
    libsoc_gpio_set_level(gpio_cs,LOW);
    libsoc_spi_rw(spi_dev,tx,rx,3);
    libsoc_gpio_set_level(gpio_cs,HIGH);
 
    adc_value = (rx[1]<<8)&0b1100000000;
    adc_value |= (rx[2]&0xff);
 
    printf("adc_value:%d\n",adc_value);
    sleep(1);
   }

   free:
   libsoc_spi_free(spi_dev);
   fail:
   if(gpio_cs) {
    libsoc_gpio_free(gpio_cs);
   }

   return EXIT_SUCCESS;
}

Salve o código como: slide.c

Compile o código:

gcc slide.c -o slide -lsoc

Execute o projeto:

sudo ./slide

Comments

Filipe Loyola Lopes (author)2017-12-10

Thank you man!

Carlos AlbertoP12 (author)2017-09-12

Olá, precisei fazer um upgrade e update antes de instalar as libs adicionais.

sudo apt-get update
sudo apt-get upgrade

sudo apt-get dist-upgrade

About This Instructable

159views

1favorite

Bio: Frederico Martins Pedroso Junior, 29 yo, Computer Engineer.
More by fredpedroso:Desenvolvendo Aplicações Analógicas Para Dragonboard 410c Com Linker Sprite MezzanineFleshando Boot Image Com SPI Habilitado Na Dragonboard 410cGerando Boot Image Com SPI Habilitado Para Dragonboard 410c
Add instructable to: