5 Replies Latest reply on Jan 26, 2015 5:38 AM by jwestervelt

    OLED - works on arduino edison - at 300 baud


      Ok a bit facetious but whilst it works out of the box, my freetronics 128x128 oled 128x128 Pixel OLED Module | Freetronics

      works perfectly but very very slow;


      I am in the process of writing the UPM module for this display and just for grins I plugged it into my Arduino Edison, ran up the Intel arduino ide and ran some of the supplied examples. All except one worked out of the box - the one that would not compile complained about min and max functions - but at this stage I am not looking at debugging/fixing this.


      The real issue however is the slowness of writing to the display - on a pure text example, it is about the speed of a 300baud modem! (BTW - I did previous tests on a UNO and it ran very well and very fast)


      The device attaches via SPI and uses a few digital IO's for specific control functions such as CS, reset and DCS (Data or control).


      I had thought I had seen something about the speed of setting pins being very slow (or it may have been something about SPI).


      Is anyone able to offer advice before I plug in ye old trust logic analyser to see if I can see where the slowdown is (either SPI xfer or toggling the pins?)



        • 1. Re: OLED - works on arduino edison - at 300 baud

          Hello Stan_Gifford,


          Have you tried to change the SPI clock speed using Arduino - SPISetClockDivider?

          Also the user KurtE created Support for the Adafruit 2.8" TFT display for Arduino Edison to show his advances in one of his projects using a different display that also communicates through SPI, why don't you take a look at it? I think it might help you in your project.



          1 of 1 people found this helpful
          • 2. Re: OLED - works on arduino edison - at 300 baud



            The simple answer is with the current kernel..., the SPI speed is really slow.  The SPI speed appears to be setup for a max of 6.25Mhz, which is bad enough, but then there are gaps of time between each byte output.  The gap is at lest as long as it actually takes to output a byte... So throughput is maybe 2-3mhz... Versus Teensy 3.1 where it runs at full speed.  I have not tried on UNO, but it probably also drives the display at 8mhz... If you look at posting 22 in the thread that Intel_Peter mentions, you will see that the Teensy is running a lot faster.  In that same posting you will see the timings for running on ODroid C1 as well. Again in User mode through SPI.  It is maybe 2.5-3 times faster.  They are also talking about releasing a set of drivers for the displays in the next couple of days, so it will be interesting to see the speed once they do that.


            Hopefully Intel will release a new kernel soon with some SPI improvements!  Also maybe Intel will release some protect mode drivers?



            1 of 1 people found this helpful
            • 3. Re: OLED - works on arduino edison - at 300 baud

              Hi Stan_Gifford;


              Do you have more questions related to this? Did the information from Kurt and Peter were useful for you?




              • 4. Re: OLED - works on arduino edison - at 300 baud

                I don't have any more questions - Kurt has given the correct answer - however I have posted a new question in regard to the new kernel which we were led to believe was going to happen at the end of the year (and I at least assumed year was 2014). The questions I asked were 1. Will this new kernel rectify the SPI speed issues - and 2 - when will new kernel come out?

                • 5. Re: OLED - works on arduino edison - at 300 baud

                  If the performance of the SPI peripheral via the intel provided kernel code is any indication, it will likely be another year before we get that kernel update.  It could be worse though, it could be I2C.  I've been informed that any time a pin is toggled between input and output, as is needed for I2C, all of the GPIO pins get driven low during the transition.  I have not tested that, but it is pretty lousy if that is the case.