Displaycontrolling via Epson S1D13781 using XMC1300

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Not applicable
Hi,

I'm trying to control a 800x280 pixel TFT-display using an XMC1300 together with the S1D13781 controller from Epson.
As far is I saw in the graphics library available from epson it relies on the two apps "SPI_MASTER" and "DIGITAL_IO".

All available sample projects use the XMC4700, which is far to powerful for my application, therefore I decided to try it with the XMC1300.

I configured the necessary apps according to the "xmc4700_s1d13781_withapps"-project, except for the pin-mapping.

Unfortunately on initializing the Displaycontroller using the "void S1d13781::init()"-Method, the code loops forever at the point where it requests the PLL-lock. *
I always receive "0" for an answer, independent of the requested register, so it seems like SPI-Communication fails. Shouldn't this be possible using the XMC1300?

Thanks,
Domi


*while(!(regRead(REG10_PLL_0) & 0x8000)){
continue;
}
0 Likes
2 Replies
RValascho
Employee
Employee
First like received 5 questions asked First question asked
XMC1300 does not have a PLL. I think there is more code manipulation that is necessary to port from XMC4700 to XMC1300. I would start by creating a new XMC1300 project, and then manipulating apps to match XMC4700.
0 Likes
Not applicable
Sorry I may have been unclear, the XMC1300 waits for the lock of the PLL of the Displaycontroller. This lock is indicated by a special value returned over SPI. The library itself only relies on the two apps SPI_MASTER and DIGITAL_IO, which are both available for the XMC1300, therefore no adaption is needed.

I think I found the problem, it lies in the communication itself. I tried to connect a XMC1300 and a XMC1100 (XMC2Go) via SPI and it took me over a week to get it to work. There seems to be a problem within the SPI_MASTER app. I used the following code-snippet on the XMC1300 as master:

uint8_t data[2] = {1,2};
uint8_t rxdata[2] = {0};
SPI_MASTER_Transfer(&SPI_MASTER_0, data, rxdata, 2);

On the XMC1100 I use the following code snippet to receive the data:

uint8_t ReadData[2] = {0};
SPI_SLAVE_Receive(&SPI_SLAVE_0,ReadData, 2);

Then I always receive the first sent byte for both received bytes.

e.g.:
sent 1, 2 -> received 1,1
sent 3,4 -> received 3,3

If I now alter the sending code to:

uint8_t data[2] = {1,2};
uint8_t rxdata[2] = {0};
for(int i = 0; i SPI_MASTER_Transfer(&SPI_MASTER_0, (data+i), (rxdata+i), 1);
}

and the same code for the XMC1100 as in the previous example i receive the correct values

e.g.:

sent 1,2 -> received 1,2
sent 3,4 -> received 3,4

have you experienced something like that before, using the XMC1300? Is this really a problem in the app itself or am I just using it wrong?
0 Likes