Hi Everyone!
I've been working with a Vidor template, together with a Purisame project that uses the SDRAM to send image trough the vidor hdmi port.
I removed the HDMI part, and modified a little the SDRAM driver, and added a UART_TX module.
Code is intended to write the memory address LSB to every location, once memory is filled, it starts reading the data and then send it to Vidor digital pin 10, configured as a UART_RX.
Sadly, when I load everything to the board, I can't see anything on the serial monitor.
I'd like to know what could be wrong with this idea
As the MKRVIDOR.top template gives the option to add a file named user.v, I'm posting my code files on a zip
SSAnd here's my Arduino Sketch, that loads the app.h generated from the vidorcvt.exe with the Quartus output files:
#include <Arduino.h>
#include <wiring_private.h>
#include "jtag.h"
#define TDI 12
#define TDO 15
#define TCK 13
#define TMS 14
#define MB_INT 28
#define MB_INT_PIN 31
#define SIGNAL_OUT 41 //B5 L16
#define SIGNAL_IN 33 //B2 N2
#define no_data 0xFF, 0xFF, 0xFF, 0xFF, \
0xFF, 0xFF, 0xFF, 0xFF, \
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, \
0xFF, 0xFF, 0xFF, 0xFF, \
0x00, 0x00, 0x00, 0x00 \
#define NO_BOOTLOADER no_data
#define NO_APP no_data
#define NO_USER_DATA no_data
__attribute__ ((used, section(".fpga_bitstream_signature")))
const unsigned char signatures[4096] = {
//#include "signature.ttf"
NO_BOOTLOADER,
0x00, 0x00, 0x08, 0x00,
0xA9, 0x6F, 0x1F, 0x00, // Don't care.
0x20, 0x77, 0x77, 0x77, 0x2e, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x65, 0x73, 0x2d, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x71, 0x75, 0x65, 0x73, 0x2e, 0x66, 0x72, 0x20, 0x00, 0x00, 0xff, 0xf0, 0x0f,
0x01, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, // Force
NO_USER_DATA,
};
__attribute__ ((used, section(".fpga_bitstream")))
const unsigned char bitstream[] = {
#include "app.h"
};
// Declaracion de constantes (editable)
const int PULSE=6;
const int SUBPULSE = 7;
// the setup function runs once when you press reset or power the board
Uart Serial2 (&sercom3, 10, 11, SERCOM_RX_PAD_1, UART_TX_PAD_0);
void setup() {
int ret;
uint32_t ptr[1];
//enableFpgaClock();
pinPeripheral(30, PIO_AC_CLK);
clockout(0, 1);
delay(1000);
//Init Jtag Port
ret = jtagInit();
mbPinSet();
// Load FPGA user configuration
ptr[0] = 0 | 3;
mbEveSend(ptr, 1);
// Give it delay
delay(1000);
// Disable all JTAG Pins (usefull for USB BLASTER connection)
pinMode(TDO, INPUT);
pinMode(TMS, INPUT);
pinMode(TDI, INPUT);
pinMode(TCK, INPUT);
// Configure other share pins as input too
pinMode(SIGNAL_IN, INPUT); // oSAM_INT
pinMode(MB_INT_PIN, INPUT);
pinMode(MB_INT, INPUT);
//Esto es editable
pinMode(PULSE, OUTPUT);
pinMode(SUBPULSE, OUTPUT);
Serial.begin(115200);
Serial2.begin(115200);
// Assign pins 10 & 11 SERCOM functionality
pinPeripheral(10, PIO_SERCOM);
pinPeripheral(11, PIO_SERCOM);
pinMode(0,INPUT);
pinMode(1,INPUT);
}
int flag=0;
int done=0;
int ByteRead;
void loop() {
flag = digitalRead(0);
done = digitalRead(1);
if (Serial2.available())
{
ByteRead = Serial2.read();
if (flag == 0 && done ==1);{
Serial.print(ByteRead, BIN);
}
}
Serial.println();
}
void SERCOM3_Handler()
{
Serial2.IrqHandler();
}
I created the Sercom using a MKR1000 example, because I couldn't find any info on UART on MKRVIDOR 4000
I would apreciate any feedback, or advice, or help to notice something that I could be missing
My BR
Jesus Abimael López