Thank you for your interest in the Intel Edison Board.
Could you please confirm that this is the code that you have been using: https://github.com/intel-iot-devkit/upm/blob/master/src/ili9341/ili9341.cxx ?
Also, please let me know if you have tested it with a longer delay (like 2s or 5s) to see if the extra clock pulse becomes shorter?
Thank you in advance and looking forward to hear from you,
Initially I took the library mentioned by you, then use its code as templete for proof of concept code shown in previous post. Right now after discovering the issue with SPI I believe the library itself might be fine, mraa library is a wrapper opening linux device and just sending IOCTLs to the drive and also might be perfecly fine, so problem is with spidev driver or some other kernel driver.
In the meantime I discovered this thread SPI (Adafruit 2.8" TFT) not working on R2 Beta - Arduino breakout board I have same conclusion that problem looks like connected with powering down the SPI controller.
I have tested with longer and slower delay between repetition of shown code, without any change. What I can say when I send bytes very frequent there were NEVER additionale clock pulse between them. Other observation is, the lenght of this "evil" clock pulse is random, but ussually within same range shown in scope capture attached to previous post. This variance of lenght is not a problem, but the existance of this pulse after setting CS totally desynchronises SPI communication.
Thank you for your patience.
We were able to reproduce your issue, and indeed, it seems to be a problem with the SPI driver. We would recommend to flash the board using a previous release (maybe ww05 or 3.0) and check if you see the same extra clock pulse. Could you please let me know the outcome of this?
Also, you might want to check the below links below:
- https://www.raspberrypi.org/forums/viewtopic.php?t=19489 - as a solution you can can schedule the first byte for SPI (by adding it to the HW-FIFO) only a few cycles after you start the SPI HW.
- https://tinkerboarding.co.uk/forum/thread-484.html - you can send command/data one byte per tr(spi_ioc_transfer) in your test program. It's easy that call transfer() and put only one byte in .tx_buf.