我是新來的,拼命尋找解決方案來解決我的問題。我目前正在試圖使我的Raspberry Pi與使用Python的AD7705 16位ADC進行通信。但不幸的是,正如預期的東西都不會...... 電路看起來是這樣的:AD7705 CircuitAD7705 - 在Python中通過bitbanged SPI設置和與Raspberry Pi進行通信的問題
我做了很多的研究和仔細研究的數據表來選擇配件,以滿足所有的AD7705的要求。所有東西都焊接在一個條板上。
爲了保持我的PCB儘可能簡單,我不能使用硬件SPI,所以我必須進行bitbanging。由於CS連接到GND,所以通信減少到MOSI,MISO和CLK。我想我在爲AD7705實現SPI方面犯了一個錯誤。在使用bitbanged SPI之前,我已經使用了MPC3008,並使其正常工作,所以我認爲在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
這是非常相似的「流程設置和從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
拉特·ER 副詞 用於表示某人在某件事情中的偏好。寧可發送b00001100比「更換芯片」 –