IOIO appears to lock up while attempting SPI transaction to Digital POT

23 views
Skip to first unread message

Hartley Saunders II

unread,
Oct 31, 2019, 5:53:22 PM10/31/19
to ioio-users

I am attempting to using an IOIO-RTG board to control a MCP-4131 digital potentiometer via SPI. I'm new to SPI but I believe that I've followed the SPI example. I'm able to set a resistance apparently but IOIO remains stuck afterwards. The only way to continue is to disconnect and reconnect to the board. I note that the SPI example expects a MISO and MOSI pin whereas the pot has a combined SDI/SDO pin. Is this difference the source of my issue? I've tried to implement asynchronous transactions to not wait for a response but the end result is the same. I've called the highgear function from within the Looper class and outside with no change.


IOIO RTG

IOIOLIb 0326

Application Firmware 0506

Bootloader Firmware 0402

Hardware Sprk    0020


class Looper extends BaseIOIOLooper

 {

SpiMaster spi;


protected void setup() throws ConnectionLostException

{

            int clkPin = 39;//left side = 36

            int misoPin = 38;//left side = 33, not expecting output

            int mosiPin = 38;//left side = 35


spi = ioio_.openSpiMaster(new DigitalInput.Spec(misoPin,

Mode.PULL_UP), new DigitalOutput.Spec(mosiPin),

  new DigitalOutput.Spec(clkPin),

  new DigitalOutput.Spec[] { new DigitalOutput.Spec(40), new DigitalOutput.Spec(37), },

  new SpiMaster.Config(Rate.RATE_125k, true, true));

}


public void highgear()

        {

            byte[] request = new byte[] {0,0,0,0,0,5,5,5};

            byte[] response = new byte[4];

            try {

                SpiMaster.Result result = spi.writeReadAsync(0, request, request.length, 7, response, 0);               

            } catch (ConnectionLostException e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            }

        }

}

IMG_20191016_192351228.jpg
Reply all
Reply to author
Forward
0 new messages