Я новичок здесь и отчаянно ищу решение для моей проблемы. В настоящее время я пытаюсь заставить мою малину Pi общаться с AD-7705 16-бит-АЦП с Python. К сожалению, хотя, дела идут не так, как ожидалось ... схема выглядит следующим образом: AD7705 CircuitAD7705 - Проблемы с настройкой и связью с Raspberry Pi через bitbanged SPI в Python
Я сделал много исследований и тщательно изучил таблицу, чтобы выбрать части, чтобы удовлетворить все требования AD7705 в. Все припаивается к разделочной доске.
Чтобы моя PCB была как можно более простой, я не могу использовать аппаратный SPI, поэтому я обязан бить. Поскольку CS привязан к GND, связь сокращается до MOSI, MISO и CLK. Я полагаю, что я ошибся в реализации SPI для AD7705. Я работал с MPC3008 перед использованием bitbanged SPI и заработал его должным образом, поэтому я полагаю, что у меня огромная логическая ошибка в моей реализации для AD7705.
На данный момент, моя процедура выглядит следующим образом:
send 0010 0000 -> request write access to clock register
send 0000 0100 -> configure clock register for 2.4576MHz operation
send 0001 0000 -> request write access to setup register
send 0100 0010 -> set gain = 1, buffered mode and perform self-calibration
send 0000 1000 -> request read access to communiation register
read 1 byte
Это очень похоже на «Flowchart для Настройка и чтение из AD7705» из таблицы, с небольшими различиями в письменных данных в регистр часов (я использую резонатор с другой частотой).
Проблема в том, что я получаю только случайные и не воспроизводимые байты. И я даже не пытаюсь читать фактические данные. Вы можете заметить какую-либо ошибку?
Я попытался предоставить всю информацию о моем методе, хотя я не могу объяснить все техническое описание. Однако проблема не должна быть аппаратно-сторонней.
def send(sendcmd):
for i in range(8):
GPIO.output(CLK, 0)
time.sleep(0.0001)
if (sendcmd & 0x80):
GPIO.output(MOSI, 1)
else:
GPIO.output(MOSI, 0)
GPIO.output(CLK, 1)
time.sleep(0.0001)
sendcmd <<= 1
def read():
readbyte=0
for i in range(8):
GPIO.output(CLK, 0)
time.sleep(0.0001)
GPIO.output(CLK, 1)
time.sleep(0.0001)
readbit = GPIO.input(MISO)
readbyte |= readbit
readbyte <<= 1
return readbyte >> 1
Что вы имеете в виду «а отправить» – ElectroBit
Рат · эр наречие использовано для обозначения предпочтений в конкретном вопросе. Скорее отправьте b00001100, чем «заменить чип» –