我正在尝试使用IOIO-RTG板通过SPI控制MCP-4131数字电位器。我是SPI的新手,但我相信我已经遵循了SPI的例子。我显然可以设置一个阻力,但IOIO之后仍然卡住了。继续的唯一方法是断开连接并重新连接到电路板。我注意到SPI示例需要一个MISO和MOSI引脚,而pot有一个组合的SDI/SDO引脚。这是我的问题的根源吗?
IOIO IOIOLIb 0326应用固件0506引导加载程序固件0402硬件Sprk 0020
我尝试实现异步事务以不等待响应,但最终结果是相同的。我已经在Looper类内部和外部调用了highgear函数,没有做任何更改。
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将可用于进一步的指挥。没有错误,因为电路板只是在其设置的配置中冻结。
发布于 2019-12-19 21:38:48
MCP-4131的共享SDO/SDI引脚应该不是问题。
从第31页的数据手册中可以看到:“8引线单电位计器件受到引脚限制,因此SDO引脚与SDI引脚(SDI/SDO引脚)多路复用。收到地址/命令(前6位)后,如果请求了有效的读取命令,则SDO引脚开始将请求的读取数据驱动到SDI/SDO引脚上。”
只要您只向数字电位器写入,一切都应该与其他SPI设备相同。
您是否尝试过使用其他SPI设备或甚至不连接其他SPI设备来使用您的代码?
https://stackoverflow.com/questions/58492505
复制相似问题