Потыкался, вроде бы включил SPI (прописал eEnv.txt: optargs=quiet capemgr.disable_partno=BB-BONELT-HDMI,BB-BONELT-HDMIN capemgr.enable_partno=BB-SPI0-01,BB-SPI1-01 )
Но проблемы.
1. Иногда не появляется SPI2. А иногда появляется) Так и не понял от чего зависит, перезагружался, то есть, то нет. SPI1 вроде нормально.
2. После включения D1 работает на передачу. Т.е. получается, что D1 - MOSI. В описании вроде наоборот?
2. SPI2 включил, осцилом смотрю -- передает. Опрашиваю раз в секудну. По 4 байта. Сделал перемычку которую включаю в питание или в землю. По умолчанию в питании, читает все 4 байта 255, нормально, достаю, включаю в землю, приходят все байты одиноковые(второй столбик первые два байта выведено)
TransferOK <97> returned:<254 254>
TransferOK <97> returned:<252 252>
TransferOK <97> returned:<248 248>
TransferOK <97> returned:<240 240>
TransferOK <97> returned:<224 224>
TransferOK <97> returned:<192 192>
TransferOK <97> returned:<128 128>
TransferOK <97> returned:<0 0>
Узнаете? Каждое число отличается от соседнего сдвигом влево на 1. Что это за бред?)
Подаю ему MISO на MOSI читает 255.
SPI1 работает четко!
Код
uint8_t BBSpiManager::readByte(){
struct spi_ioc_transfer xfer[2];
string inp, outp;
outp = "abcd";
inp = "0000";
//inp.resize( outp.size() );
int res=0;
memset(xfer, 0, sizeof xfer);
xfer[0].tx_buf = (unsigned long)outp.data();
xfer[0].rx_buf = (unsigned long)inp.data();
xfer[0].len = inp.size();
xfer[0].speed_hz = 100000;
xfer[0].cs_change = 1;
xfer[0].bits_per_word = 8;
xfer[0].delay_usecs= 10;
res = ioctl(spiDev, SPI_IOC_MESSAGE(1), &xfer);
usleep(10000);
return 0;
}
struct spi_ioc_transfer xfer[2];
string inp, outp;
outp = "abcd";
inp = "0000";
//inp.resize( outp.size() );
int res=0;
memset(xfer, 0, sizeof xfer);
xfer[0].tx_buf = (unsigned long)outp.data();
xfer[0].rx_buf = (unsigned long)inp.data();
xfer[0].len = inp.size();
xfer[0].speed_hz = 100000;
xfer[0].cs_change = 1;
xfer[0].bits_per_word = 8;
xfer[0].delay_usecs= 10;
res = ioctl(spiDev, SPI_IOC_MESSAGE(1), &xfer);
usleep(10000);
return 0;
}