У меня следующая проблема: я хочу считывать датчик движения из Invensense (ICM-20602) через интерфейс spi с конвертером FTDI USB Spi, подключенным к системе Debian linux с программой python3.Я установил все необходимые библиотеки и драйверы, и я могу установить линию CS, а также проверил свои выходные сигналы MOSI, Clock и CS линии с помощью осциллографа.Есть также вход MISO от устройства, но не то, что я ожидал.Я отправляю адрес регистра в whois-регистр, чтобы получить идентификатор устройства, чтобы убедиться, что чтение / запись работает.Я не понимаю, почему устройство не отвечает должным образом.Это мой код на данный момент:
#pyspi - pyftdi
from pyftdi.spi import SpiController, SpiIOError
from struct import *
ctrl= SpiController()#spi
ctrl.configure('ftdi://ftdi:232h/1') # Assuming there is only one FT232H.
spi = ctrl.get_port(cs=0, freq=1E6, mode=0)# Assuming D3 is used for chip select.
write_buf = b'\x75\0xdf'
spi.write(write_buf,True,False)
read_1= spi.read(2, start=False, stop=True).tobytes()
id = spi.exchange([0x75,0xff,],2).tobytes()
#ctrl.get_port(cs=1, freq=1E6, mode=1)
print(read_1)
print(id)
Нет ошибки кода - только буфер чтения равен 0x00 или иногда 0x10, но не то, что я ожидал: идентификатор устройства: 0xAF
Кто-нибудь знает, как заставить устройство отвечать правильно?
Кстати: устройство работает правильно с оценочной платой Invensense - значит, устройство должно работать правильно.