IOIO блокируется во время транзакции SPI с MCP-4131 какие-либо решения? - PullRequest
0 голосов
/ 21 октября 2019

Я пытаюсь использовать плату IOIO-RTG для управления цифровым потенциометром MCP-4131 через SPI. Я новичок в SPI, но я считаю, что я последовал примеру SPI. Я могу установить сопротивление, но IOIO остается застрявшим после этого. Единственный способ продолжить - это отключиться и снова подключиться к плате. Я отмечаю, что в примере SPI ожидается вывод MISO и MOSI, тогда как банк имеет комбинированный вывод SDI / SDO. Является ли эта разница источником моей проблемы?

IOIO RTG IOIOLIb 0326 Прошивка приложения 0506 Прошивка загрузчика 0402 Аппаратное обеспечение Sprk 0020

Я пытался реализовать асинхронные транзакции, чтобы не ожидать ответа, но конечный результат остается тем же. Я вызвал функцию highgear из класса Looper и снаружи без изменений.

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();
            }
        }
}

Ожидаемый результат - MCP с желаемым сопротивлением и IOIO будут доступны для дальнейшего командования. Там нет ошибок, так как плата просто зависает в установленной конфигурации.

...