Root/Examples/sram_gpio/QT_src/mainwindow.cpp

1#include "mainwindow.h"
2#include "ui_mainwindow.h"
3
4MainWindow::MainWindow(QWidget *parent) :
5    QMainWindow(parent),
6    ui(new Ui::MainWindow)
7{
8    ui->setupUi(this);
9    RAM=initFPGA_RAM();
10    LED=initGPIO_LED();
11    iter=0;
12
13    startTimer(1000);
14}
15
16MainWindow::~MainWindow()
17{
18    delete ui;
19}
20
21JZ_PIO *
22MainWindow::initGPIO_LED()
23{
24    JZ_PIO *pio;
25
26    pio = jz_gpio_map (LED_PORT);
27    jz_gpio_as_output (pio, LED_PIN);
28    jz_gpio_clear_pin (pio, LED_PIN);
29
30    return pio;
31}
32
33JZ_REG *
34MainWindow::initFPGA_RAM()
35{
36    JZ_PIO *pio;
37    JZ_REG *virt_addr;
38
39    pio = jz_gpio_map (CS2_PORT);
40    jz_gpio_as_func (pio, CS2_PIN, 0);
41
42    virt_addr = (JZ_REG *) (jz_mmap(0x13010000) + 0x18);
43
44    if (*virt_addr != 0x0FFF7700)
45    {
46        *virt_addr = 0x0FFF7700;
47        printf ("ADC: Configuring CS2 8 bits and 0 WS: %08X\n", *virt_addr);
48    }
49    else
50        printf ("ADC: CS2, already configured: %08X\n", *virt_addr);
51
52    virt_addr = (JZ_REG *) jz_mmap (0x14000000);
53
54    return virt_addr;
55}
56
57
58void
59MainWindow::timerEvent(QTimerEvent*)
60{
61    QString plain_text;
62
63    jz_gpio_out (LED, LED_PIN, iter&0b1);
64
65    if(iter&0b1) plain_text = "[ON]"; else plain_text = "[OFF]";
66    ui->label_2->setText("LED is " + plain_text);
67    iter++;
68
69    /* Escribiendo en RAM */
70    plain_text="\t**Iteration: "+QString::number(iter)+"**\nW:";
71    for(int i = 0; i<14; i++)
72    {
73        RAM[i]= i & 0xFF;
74        plain_text+="["+QString::number(i&0xFF)+"]";
75    }
76
77    /* Leyendo de RAM */
78    int temp;
79    plain_text+="\nR:";
80    for(int i = 0; i<14; i++)
81    {
82        temp=RAM[i];
83        plain_text+="["+QString::number(temp)+"]";
84    }
85    ui->plainTextEdit->appendPlainText(plain_text);
86}
87

Archive Download this file

Branches:
master



interactive