mirror of
git://projects.qi-hardware.com/nn-usb-fpga.git
synced 2025-04-21 12:27:27 +03:00
Fixing ADC on high frequency.
This commit is contained in:
Binary file not shown.
@@ -13,9 +13,9 @@ ADCw::ADCw()
|
||||
void ADCw::testADC()
|
||||
{
|
||||
/****************Configure ADC register on FPGA RAM memory*****************/
|
||||
jz_adc_config(ADCBuffer, 0x01, ADC_SPI_CLKDIV_MAX, ADC_CMD_SET_SPI_CLKDIV);
|
||||
jz_adc_config(ADCBuffer, 0x00, ADC_SPI_CLKDIV_MAX, ADC_CMD_SET_SPI_CLKDIV);
|
||||
usleep (1000);
|
||||
jz_adc_config(ADCBuffer, 0x01, ADC_SPI_CLKDIV_MAX, ADC_CMD_SET_FAST_CONV);
|
||||
jz_adc_config(ADCBuffer, 0x00, ADC_SPI_CLKDIV_MAX, ADC_CMD_SET_FAST_CONV);
|
||||
usleep (1000);
|
||||
printf("\nADC in Fast Convertion Mode (10us) and Fs=9.8KHz (Min)\n");
|
||||
|
||||
@@ -23,34 +23,37 @@ void ADCw::testADC()
|
||||
|
||||
/******************************* TEST 1 ***********************************/
|
||||
printf("\nINIT TEST1: Autoselft {(Vref+) - (Vref-)}/2 -> Return 0x0200 \n");
|
||||
jz_adc_config(ADCBuffer, 0x01, ADC_SPI_CLKDIV_MAX, ADC_CMD_SET_AUTOSELFT_1);
|
||||
jz_adc_config(ADCBuffer, 0x00, ADC_SPI_CLKDIV_MAX, ADC_CMD_SET_AUTOSELFT_1);
|
||||
printf("[%08X]", ADCBuffer[0]);fflush (stdout);
|
||||
usleep (1000);
|
||||
jz_adc_config(ADCBuffer, LENB, ADC_SPI_CLKDIV_MAX, ADC_CMD_READ_AUTOSELFT_1);
|
||||
printf("[%08X]", ADCBuffer[0]);fflush (stdout);
|
||||
while(jz_adc_check_buffer(ADCBuffer)){usleep (10);}
|
||||
for(int i=1; i< LENB/2+1; i++)
|
||||
for(int i=1; i< 512; i++)
|
||||
printf("[%08X]", ADCBuffer[i]);
|
||||
fflush (stdout);
|
||||
|
||||
/******************************* TEST 2 ***********************************/
|
||||
printf("\n\nINIT TEST2: Autoselft (Vref-) -> Return 0x0000 \n");
|
||||
jz_adc_config(ADCBuffer, 0x01, ADC_SPI_CLKDIV_MAX, ADC_CMD_SET_AUTOSELFT_2);
|
||||
jz_adc_config(ADCBuffer, 0x00, ADC_SPI_CLKDIV_MAX, ADC_CMD_SET_AUTOSELFT_2);
|
||||
printf("[%08X]", ADCBuffer[0]);fflush (stdout);
|
||||
usleep (1000);
|
||||
jz_adc_config(ADCBuffer, LENB, ADC_SPI_CLKDIV_MAX, ADC_CMD_READ_AUTOSELFT_2);
|
||||
printf("[%08X]", ADCBuffer[0]);fflush (stdout);
|
||||
while(jz_adc_check_buffer(ADCBuffer)){usleep (10);}
|
||||
for(int i=1; i< LENB/2+1; i++)
|
||||
for(int i=1; i< 512; i++)
|
||||
printf("[%08X]", ADCBuffer[i]);
|
||||
fflush (stdout);
|
||||
|
||||
/******************************* TEST 3 ***********************************/
|
||||
printf("\n\nINIT TEST3: Autoselft (Vref+) -> Return 0x03FF \n");
|
||||
jz_adc_config(ADCBuffer, 0x01, ADC_SPI_CLKDIV_MAX, ADC_CMD_SET_AUTOSELFT_3);
|
||||
jz_adc_config(ADCBuffer, 0x00, ADC_SPI_CLKDIV_MAX, ADC_CMD_SET_AUTOSELFT_3);
|
||||
printf("[%08X]", ADCBuffer[0]);fflush (stdout);
|
||||
usleep (1000);
|
||||
jz_adc_config(ADCBuffer, LENB, ADC_SPI_CLKDIV_MAX, ADC_CMD_READ_AUTOSELFT_3);
|
||||
printf("[%08X]", ADCBuffer[0]);fflush (stdout);
|
||||
while(jz_adc_check_buffer(ADCBuffer)){usleep (10);}
|
||||
for(int i=1; i< LENB/2+1; i++)
|
||||
for(int i=1; i< 512; i++)
|
||||
printf("[%08X]", ADCBuffer[i]);
|
||||
fflush (stdout);
|
||||
|
||||
@@ -59,13 +62,13 @@ void ADCw::testADC()
|
||||
|
||||
void ADCw::powerDownADC()
|
||||
{
|
||||
jz_adc_config(ADCBuffer, 0x01, ADC_SPI_CLKDIV_MAX, ADC_CMD_SET_POWER_DOWN);
|
||||
jz_adc_config(ADCBuffer, 0x00, ADC_SPI_CLKDIV_MAX, ADC_CMD_SET_POWER_DOWN);
|
||||
printf("\nADC in Power Down Mode \n");
|
||||
}
|
||||
|
||||
JZ_REG* ADCw::takeSamplesADC(int LENB, uchar CLKDIV, int CHANNEL)
|
||||
{
|
||||
jz_adc_config(ADCBuffer, 0x01, CLKDIV, ADC_CMD_SET_CHANNEL0+CHANNEL);
|
||||
jz_adc_config(ADCBuffer, 0x00, CLKDIV, ADC_CMD_SET_CHANNEL0+CHANNEL);
|
||||
usleep (1000);
|
||||
jz_adc_config(ADCBuffer, LENB, CLKDIV, ADC_CMD_READ_CHANNEL0+CHANNEL);
|
||||
//while(jz_adc_check_buffer(ADCBuffer)){usleep (400000);printf("[%08X]", ADCBuffer[0]);fflush (stdout);}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#############################################################################
|
||||
# Makefile for building: ADC
|
||||
# Generated by qmake (2.01a) (Qt 4.6.2) on: Mon Apr 5 13:58:40 2010
|
||||
# Generated by qmake (2.01a) (Qt 4.6.2) on: Wed Apr 7 21:11:41 2010
|
||||
# Project: ADC1.pro
|
||||
# Template: app
|
||||
# Command: /home/juan64bits/ebd/ECB/openwrt-xburst/build_dir/target-mipsel_uClibc-0.9.30.1/qt-everywhere-opensource-src-4.6.2/bin/qmake -spec ../../../../openwrt-xburst/build_dir/target-mipsel_uClibc-0.9.30.1/qt-everywhere-opensource-src-4.6.2/mkspecs/qws/linux-openwrt-g++ -unix -o Makefile ADC1.pro
|
||||
|
||||
@@ -1,108 +0,0 @@
|
||||
/*
|
||||
JZ47xx GPIO at userspace
|
||||
|
||||
Copyright (C) 2010 Andres Calderon andres.calderon@emqbit.com
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include <jz47xx_gpio.h>
|
||||
#include <jz47xx_mmap.h>
|
||||
|
||||
|
||||
#define JZ_GPIO_BASE 0x10010000
|
||||
|
||||
void
|
||||
jz_gpio_as_output (JZ_PIO * pio, unsigned int o)
|
||||
{
|
||||
pio->PXFUNC = (1 << (o));
|
||||
pio->PXSELC = (1 << (o));
|
||||
pio->PXDIRS = (1 << (o));
|
||||
}
|
||||
|
||||
void
|
||||
jz_gpio_as_input (JZ_PIO * pio, unsigned int o)
|
||||
{
|
||||
pio->PXFUNC = (1 << (o));
|
||||
pio->PXSELC = (1 << (o));
|
||||
pio->PXDIRC = (1 << (o));
|
||||
}
|
||||
|
||||
void
|
||||
jz_gpio_set_pin (JZ_PIO * pio, unsigned int o)
|
||||
{
|
||||
pio->PXDATS = (1 << (o));
|
||||
}
|
||||
|
||||
void
|
||||
jz_gpio_clear_pin (JZ_PIO * pio, unsigned int o)
|
||||
{
|
||||
pio->PXDATC = (1 << (o));
|
||||
}
|
||||
|
||||
void
|
||||
jz_gpio_out (JZ_PIO * pio, unsigned int o, unsigned int val)
|
||||
{
|
||||
if (val == 0)
|
||||
pio->PXDATC = (1 << (o));
|
||||
else
|
||||
pio->PXDATS = (1 << (o));
|
||||
}
|
||||
|
||||
unsigned int
|
||||
jz_gpio_get_pin (JZ_PIO * pio, unsigned int o)
|
||||
{
|
||||
return (pio->PXPIN & (1 << o)) ? 1 : 0;
|
||||
}
|
||||
|
||||
int
|
||||
jz_gpio_as_func (JZ_PIO * pio, unsigned int o, int func)
|
||||
{
|
||||
switch (func)
|
||||
{
|
||||
case 0:
|
||||
pio->PXFUNS = (1 << o);
|
||||
pio->PXTRGC = (1 << o);
|
||||
pio->PXSELC = (1 << o);
|
||||
return 1;
|
||||
|
||||
case 1:
|
||||
pio->PXFUNS = (1 << o);
|
||||
pio->PXTRGC = (1 << o);
|
||||
pio->PXSELS = (1 << o);
|
||||
return 1;
|
||||
|
||||
case 2:
|
||||
pio->PXFUNS = (1 << o);
|
||||
pio->PXTRGS = (1 << o);
|
||||
pio->PXSELC = (1 << o);
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
JZ_PIO *
|
||||
jz_gpio_map (int port)
|
||||
{
|
||||
JZ_PIO *pio;
|
||||
|
||||
pio = (JZ_PIO *) jz_mmap (JZ_GPIO_BASE);
|
||||
pio = (JZ_PIO *) ((unsigned int) pio + port * 0x100);
|
||||
|
||||
return pio;
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
/*
|
||||
* JZ47xx GPIO lines
|
||||
*
|
||||
* Written 2010 by Andres Calderon andres.calderon@emqbit.com
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <sys/mman.h>
|
||||
#include <fcntl.h>
|
||||
#include <stdlib.h>
|
||||
#include <termios.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include <jz47xx_mmap.h>
|
||||
|
||||
|
||||
void *
|
||||
jz_mmap (off_t address)
|
||||
{
|
||||
int fd;
|
||||
|
||||
void *pio;
|
||||
|
||||
if ((fd = open ("/dev/mem", O_RDWR | O_SYNC)) == -1)
|
||||
{
|
||||
fprintf (stderr, "Cannot open /dev/mem.\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
pio = (void *) mmap (0, getpagesize (), PROT_READ | PROT_WRITE, MAP_SHARED, fd, address);
|
||||
|
||||
if (pio == (void *) -1)
|
||||
{
|
||||
fprintf (stderr, "Cannot mmap.\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
return pio;
|
||||
}
|
||||
@@ -1,36 +0,0 @@
|
||||
/* ADC Peripheral.c
|
||||
|
||||
Copyright (C) 2010 Carlos Camargo cicamargoba@unal.edu.co
|
||||
Andres Calderon andres.calderon@emqbit.com
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
||||
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "jz_adc_peripheral.h"
|
||||
|
||||
void
|
||||
jz_adc_config(JZ_REG * addr, uchar BUFFER, uchar CLK_DIV, uchar CMD)
|
||||
{
|
||||
addr[0] = (BUFFER << 16) + (CLK_DIV<<8) + CMD;
|
||||
}
|
||||
|
||||
int
|
||||
jz_adc_check_buffer(JZ_REG * addr)
|
||||
{
|
||||
return addr[0]&0x00FF0000;
|
||||
}
|
||||
|
||||
@@ -55,5 +55,5 @@ jz_adc_config(JZ_REG * addr, int BUFFER, uchar CLK_DIV, uchar CMD)
|
||||
int
|
||||
jz_adc_check_buffer(JZ_REG * addr)
|
||||
{
|
||||
return addr[0]&0x00FF0000;
|
||||
return addr[0]&0x00000010;
|
||||
}
|
||||
|
||||
@@ -26,47 +26,47 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
||||
#define ADC_CMD_NONE 0x00 /* Nothing to do */
|
||||
#define ADC_CMD_SET_SPI_CLKDIV 0x90 /* Set clock divider for ADC sclk */
|
||||
|
||||
#define ADC_CMD_SET_CHANNEL0 0x50 /* Set channel 0 */
|
||||
#define ADC_CMD_READ_CHANNEL0 0x60 /* Read channel 0 */
|
||||
#define ADC_CMD_SET_CHANNEL0 0x30 /* Set channel 0 */
|
||||
#define ADC_CMD_READ_CHANNEL0 0x20 /* Read channel 0 */
|
||||
|
||||
#define ADC_CMD_SET_CHANNEL1 0x51 /* Set channel 1 */
|
||||
#define ADC_CMD_READ_CHANNEL1 0x61 /* Read channel 1 */
|
||||
#define ADC_CMD_SET_CHANNEL1 0x31 /* Set channel 1 */
|
||||
#define ADC_CMD_READ_CHANNEL1 0x21 /* Read channel 1 */
|
||||
|
||||
#define ADC_CMD_SET_CHANNEL2 0x52 /* Set channel 2 */
|
||||
#define ADC_CMD_READ_CHANNEL2 0x62 /* Read channel 2 */
|
||||
#define ADC_CMD_SET_CHANNEL2 0x32 /* Set channel 2 */
|
||||
#define ADC_CMD_READ_CHANNEL2 0x22 /* Read channel 2 */
|
||||
|
||||
#define ADC_CMD_SET_CHANNEL3 0x53 /* Set channel 3 */
|
||||
#define ADC_CMD_READ_CHANNEL3 0x63 /* Read channel 3 */
|
||||
#define ADC_CMD_SET_CHANNEL3 0x33 /* Set channel 3 */
|
||||
#define ADC_CMD_READ_CHANNEL3 0x23 /* Read channel 3 */
|
||||
|
||||
#define ADC_CMD_SET_CHANNEL4 0x54 /* Set channel 4 */
|
||||
#define ADC_CMD_READ_CHANNEL4 0x64 /* Read channel 4 */
|
||||
#define ADC_CMD_SET_CHANNEL4 0x34 /* Set channel 4 */
|
||||
#define ADC_CMD_READ_CHANNEL4 0x24 /* Read channel 4 */
|
||||
|
||||
#define ADC_CMD_SET_CHANNEL5 0x55 /* Set channel 5 */
|
||||
#define ADC_CMD_READ_CHANNEL5 0x65 /* Read channel 5 */
|
||||
#define ADC_CMD_SET_CHANNEL5 0x35 /* Set channel 5 */
|
||||
#define ADC_CMD_READ_CHANNEL5 0x25 /* Read channel 5 */
|
||||
|
||||
#define ADC_CMD_SET_CHANNEL6 0x56 /* Set channel 6 */
|
||||
#define ADC_CMD_READ_CHANNEL6 0x66 /* Read channel 6 */
|
||||
#define ADC_CMD_SET_CHANNEL6 0x36 /* Set channel 6 */
|
||||
#define ADC_CMD_READ_CHANNEL6 0x26 /* Read channel 6 */
|
||||
|
||||
#define ADC_CMD_SET_CHANNEL7 0x57 /* Set channel 7 */
|
||||
#define ADC_CMD_READ_CHANNEL7 0x67 /* Read channel 8 */
|
||||
#define ADC_CMD_SET_CHANNEL7 0x37 /* Set channel 7 */
|
||||
#define ADC_CMD_READ_CHANNEL7 0x27 /* Read channel 8 */
|
||||
|
||||
#define ADC_CMD_SET_POWER_DOWN 0X58 /* Set ADC power down mode (1uA) */
|
||||
#define ADC_CMD_SET_POWER_DOWN 0X38 /* Set ADC power down mode (1uA) */
|
||||
|
||||
#define ADC_CMD_SET_FAST_CONV 0X59 /* Initialize ADC Fast Convertion(<10us)*/
|
||||
#define ADC_CMD_SET_FAST_CONV 0X39 /* Initialize ADC Fast Convertion(<10us)*/
|
||||
|
||||
#define ADC_CMD_SET_LOW_CONV 0X5A /* Initialize ADC Fast Convertion(<40us)*/
|
||||
#define ADC_CMD_SET_LOW_CONV 0X3A /* Initialize ADC Fast Convertion(<40us)*/
|
||||
|
||||
#define ADC_CMD_SET_AUTOSELFT_1 0x5B /* Set Autoselft ADC {(Vref+)-(Vref-)}/2*/
|
||||
#define ADC_CMD_READ_AUTOSELFT_1 0x6B /* Read Autoselft ADC 1 (0x0200) */
|
||||
#define ADC_CMD_SET_AUTOSELFT_1 0x3B /* Set Autoselft ADC {(Vref+)-(Vref-)}/2*/
|
||||
#define ADC_CMD_READ_AUTOSELFT_1 0x2B /* Read Autoselft ADC 1 (0x0200) */
|
||||
|
||||
#define ADC_CMD_SET_AUTOSELFT_2 0x5C /* Set Autoselft ADC (Vref-) */
|
||||
#define ADC_CMD_READ_AUTOSELFT_2 0x6C /* Read Autoselft ADC 2 (0x0000) */
|
||||
#define ADC_CMD_SET_AUTOSELFT_2 0x3C /* Set Autoselft ADC (Vref-) */
|
||||
#define ADC_CMD_READ_AUTOSELFT_2 0x2C /* Read Autoselft ADC 2 (0x0000) */
|
||||
|
||||
#define ADC_CMD_SET_AUTOSELFT_3 0x5D /* Set Autoselft ADC (Vref+) */
|
||||
#define ADC_CMD_READ_AUTOSELFT_3 0x6D /* Read Autoselft ADC 3 (0x03FF) */
|
||||
#define ADC_CMD_SET_AUTOSELFT_3 0x3D /* Set Autoselft ADC (Vref+) */
|
||||
#define ADC_CMD_READ_AUTOSELFT_3 0x2D /* Read Autoselft ADC 3 (0x03FF) */
|
||||
|
||||
#define ADC_SPI_CLKDIV_MIN 0x14 /* 50/(2*20) -> 1.25MHz (MAX=2.8MHz) */
|
||||
#define ADC_SPI_CLKDIV_MAX 0xFF /* 50/(2*255) -> 98.04KHz */
|
||||
#define ADC_SPI_CLKDIV_MIN 0x08 /* 50/(2*9) -> 2.78MHz (MAX=2.8MHz) */
|
||||
#define ADC_SPI_CLKDIV_MAX 0xFF /* 50/(2*256) -> 97.65KHz */
|
||||
|
||||
#define ADC_MAX_BUFFER 0x3FE/* 1022 reads/commands */
|
||||
|
||||
|
||||
@@ -1,110 +0,0 @@
|
||||
/* ADC TEST
|
||||
|
||||
Copyright (C) 2010 Carlos Camargo cicamargoba@unal.edu.co
|
||||
Andres Calderon andres.calderon@emqbit.com
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
||||
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "jz47xx_gpio.h"
|
||||
#include "jz47xx_mmap.h"
|
||||
#include "jz_adc_peripheral.h"
|
||||
|
||||
#define TEST_PORT JZ_GPIO_PORT_B
|
||||
#define TEST_PIN 26
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
int i,j;
|
||||
JZ_PIO *pio;
|
||||
JZ_REG *virt_addr;
|
||||
|
||||
pio = jz_gpio_map (TEST_PORT);
|
||||
jz_gpio_as_func (pio, TEST_PIN, 0);
|
||||
|
||||
virt_addr = (JZ_REG *) (jz_mmap (0x13010000) + 0x18);
|
||||
|
||||
if (*virt_addr != 0x0FFF7700)
|
||||
{
|
||||
*virt_addr = 0x0FFF7700;
|
||||
printf ("Configuring CS2 32 bits and 0 WS: %08X\n", *virt_addr);
|
||||
}
|
||||
else
|
||||
printf ("CS2, already configured: %08X\n", *virt_addr);
|
||||
|
||||
virt_addr = (JZ_REG *) jz_mmap (0x14000000);
|
||||
|
||||
/*************************Clean FPGA RAM memory****************************/
|
||||
for (i = 0; i < 512; i++) //RAMB16_s9_s9 has 2048 bytes 8-bit
|
||||
{
|
||||
virt_addr[i] = 0x00000000; //Clean 4 register by cicle
|
||||
}
|
||||
|
||||
/****************Configure ADC register on FPGA RAM memory*****************/
|
||||
uchar LENB = 0x01; // 1 read/cmd
|
||||
jz_adc_config(virt_addr, LENB, ADC_SPI_CLKDIV_MAX, ADC_CMD_SET_SPI_CLKDIV);
|
||||
usleep (100);
|
||||
jz_adc_config(virt_addr, LENB, ADC_SPI_CLKDIV_MAX, ADC_CMD_SET_FAST_CONV);
|
||||
usleep (100);
|
||||
printf("\nADC in Fast Convertion Mode (10us) and Fs=9.8KHz (Min)\n");
|
||||
|
||||
LENB = ADC_MAX_BUFFER; // 254 read/cmd
|
||||
|
||||
/******************************* TEST 1 ***********************************/
|
||||
printf("\nINIT TEST1: Autoselft {(Vref+) - (Vref-)}/2 -> Return 0x0200 \n");
|
||||
jz_adc_config(virt_addr, LENB, ADC_SPI_CLKDIV_MAX, ADC_CMD_SET_AUTOSELFT_1);
|
||||
usleep (100);
|
||||
jz_adc_config(virt_addr, LENB, ADC_SPI_CLKDIV_MAX, ADC_CMD_READ_AUTOSELFT_1);
|
||||
printf("[%08X]", virt_addr[0]);
|
||||
while(jz_adc_check_buffer(virt_addr))
|
||||
{
|
||||
printf("[%08X]-", virt_addr[0]);
|
||||
fflush (stdout);
|
||||
usleep (10000);
|
||||
}
|
||||
for(i=1; i< LENB/2+1; i++)
|
||||
printf("[%08X]", virt_addr[i]);
|
||||
|
||||
/******************************* TEST 2 ***********************************/
|
||||
printf("\n\nINIT TEST2: Autoselft (Vref-) -> Return 0x0000 \n");
|
||||
jz_adc_config(virt_addr, LENB, ADC_SPI_CLKDIV_MAX, ADC_CMD_SET_AUTOSELFT_2);
|
||||
usleep (100);
|
||||
jz_adc_config(virt_addr, LENB, ADC_SPI_CLKDIV_MAX, ADC_CMD_READ_AUTOSELFT_2);
|
||||
while(jz_adc_check_buffer(virt_addr)){usleep (100);}
|
||||
for(i=1; i< LENB/2+1; i++)
|
||||
printf("[%08X]", virt_addr[i]);
|
||||
|
||||
/******************************* TEST 3 ***********************************/
|
||||
printf("\n\nINIT TEST3: Autoselft (Vref+) -> Return 0x03FF \n");
|
||||
jz_adc_config(virt_addr, LENB, ADC_SPI_CLKDIV_MAX, ADC_CMD_SET_AUTOSELFT_3);
|
||||
usleep (100);
|
||||
jz_adc_config(virt_addr, LENB, ADC_SPI_CLKDIV_MAX, ADC_CMD_READ_AUTOSELFT_3);
|
||||
while(jz_adc_check_buffer(virt_addr)){usleep (100);}
|
||||
for(i=1; i< LENB/2+1; i++)
|
||||
printf("[%08X]", virt_addr[i]);
|
||||
|
||||
printf("\n\nTESTS complete\n");
|
||||
|
||||
LENB = 0x01; // 1 read/cmd
|
||||
jz_adc_config(virt_addr, LENB, ADC_SPI_CLKDIV_MAX, ADC_CMD_SET_POWER_DOWN);
|
||||
printf("\nADC in Power Down Mode \n");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ MainWindow::MainWindow(QWidget *parent)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
connect(this,SIGNAL(refresh()),ui->Graph, SLOT(repaint()));
|
||||
ui->Graph->setPointsPerPlot(250);
|
||||
ui->Graph->setPointsPerPlot(300);
|
||||
ui->Graph->setVoltsPerDiv(102);
|
||||
|
||||
timer1 = new QTimer(this);
|
||||
@@ -29,16 +29,18 @@ MainWindow::~MainWindow()
|
||||
|
||||
void MainWindow::updateGraph()
|
||||
{
|
||||
JZ_REG * dataADC =ADC1->takeSamplesADC(250, 0xFF, 1);
|
||||
JZ_REG * dataADC =ADC1->takeSamplesADC(300, 0x08, 1);
|
||||
int tempD;
|
||||
|
||||
for(int i=1; i< 250/2+1; i++)
|
||||
for(int i=1; i< 300/2+1; i++)
|
||||
{
|
||||
tempD = dataADC[i]&0xFFFF; //printf("[%08X]",tempD);
|
||||
//printf("[%08X]",dataADC[i]);
|
||||
tempD = dataADC[i]&0xFFFF;
|
||||
ui->Graph->addPoint(tempD);
|
||||
tempD = dataADC[i]>>16; //printf("[%08X]",tempD);
|
||||
tempD = dataADC[i]>>16;
|
||||
ui->Graph->addPoint(tempD);
|
||||
}
|
||||
//printf("\n \n *************************************************************** \n\n");
|
||||
//fflush (stdout);
|
||||
/*for(int i = 0; i<100;i++)
|
||||
ui->Graph->addPoint(20*sin(6.2832*i/100)+20);*/
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
SignalDisplay::SignalDisplay(QWidget *&parent):QWidget(parent)
|
||||
{
|
||||
colorTrace = Qt::blue;
|
||||
colorTrace = Qt::black;
|
||||
secsPerDiv = 1.0/600.0;
|
||||
voltsPerDiv = 20;
|
||||
setPointsPerPlot(10);
|
||||
@@ -34,11 +34,11 @@ void SignalDisplay::paintEvent(QPaintEvent *event){
|
||||
h = height();
|
||||
ox = w;
|
||||
oy = h;
|
||||
painter.fillRect(0,0,w,h,Qt::gray);
|
||||
painter.setPen(Qt::white);
|
||||
painter.fillRect(0,0,w,h,Qt::white);
|
||||
//painter.setPen(Qt::white);
|
||||
//painter.drawLine(secsIdx*w/10/60.0/pointsPerPlot/secsPerDiv,0, \
|
||||
// secsIdx*w/10/60.0/pointsPerPlot/secsPerDiv,h);
|
||||
drawGrid(painter, Qt::darkGray,0,0,w,h,4, 10);
|
||||
drawGrid(painter, Qt::lightGray,0,0,w,h,5, 10);
|
||||
|
||||
/*for(int i = 0; i < pointsPerPlot; i++)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user