Jump to content
  • 0

PMOD MTDS without using IP


ArnaldoM

Question

Hello,

I'm trying to use the PMOD MTDS without relying on Libraries. I understand that it's using the SPI Protocol for communication. Can anybody provide the target registers and maybe a startup sequence?
My initial goal would probably be to draw a square pixel by pixel and just adjust the backlighting.

Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 0

Hello @ArnaldoM,

It's not that simple as you thinks. It's not like you power up the pmod and write some values into some registers and your rectangle gets drawn on your display. First you can start by doing  some reverse engineering to see exactly how the display gets initialized. For this you probably need to start from this function : bool MYDISP::begin(), because this function creates the interface object and initializes the underlying MTDS library for access to the display device. Also it establish contact with the firmware running on the shield and initialize for operation. After you finish with this, you can create you own start up sequence, and you can start drawing your rectangle. For this you need to create a function that will send your data packets to the shield. As you may think, every data packet has it's own register value. For example if you want to draw an rectangle, your data packed needs to be equal with 0x38. Same logic with the back-light, but with different register value. For more info, you can check the Display Shield Communications Protocol Definitions file or ProtoDef.h from Arduino IDE. Please check the fallowing link https://reference.digilentinc.com/reference/software/mtds/start.  

For the hardware architecture, because you have the PMOD version of MTDS, it's more naturally to go with the pmod interface and not spi. For this you need to create your own IP core that creates the bridge between the pmod interface and Zinq AXI.

Considering how big the mtds libraries are, the discussion it's probably a little bigger than this :)

 

Best Regards,

Bogdan Vanca     

Link to comment
Share on other sites

  • 0
12 hours ago, BogdanVanca said:

Hello @ArnaldoM,

It's not that simple as you thinks. It's not like you power up the pmod and write some values into some registers and your rectangle gets drawn on your display. First you can start by doing  some reverse engineering to see exactly how the display gets initialized. For this you probably need to start from this function : bool MYDISP::begin(), because this function creates the interface object and initializes the underlying MTDS library for access to the display device. Also it establish contact with the firmware running on the shield and initialize for operation. After you finish with this, you can create you own start up sequence, and you can start drawing your rectangle. For this you need to create a function that will send your data packets to the shield. As you may think, every data packet has it's own register value. For example if you want to draw an rectangle, your data packed needs to be equal with 0x38. Same logic with the back-light, but with different register value. For more info, you can check the Display Shield Communications Protocol Definitions file or ProtoDef.h from Arduino IDE. Please check the fallowing link https://reference.digilentinc.com/reference/software/mtds/start.  

For the hardware architecture, because you have the PMOD version of MTDS, it's more naturally to go with the pmod interface and not spi. For this you need to create your own IP core that creates the bridge between the pmod interface and Zinq AXI.

Considering how big the mtds libraries are, the discussion it's probably a little bigger than this :)

 

Best Regards,

Bogdan Vanca     

Thanks for the reply.
I guess I should start reverse engineering first.

Link to comment
Share on other sites

  • 0

Hi @ArnaldoM,

how far did you get with your project?

I'd like to use the PMOD MTDS with the Zybo on a C baremetal project using Vitis so I thin that I can't use digilent C++ library.

Started reading the library functions and sniffing the SPI transactions and was wondering if you had further progressed with your reverse engineering.

Kind regards,
George

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...