We use some essential cookies to make our website work.

We use optional cookies, as detailed in our cookie policy, to remember your settings and understand how you use our website.

5 posts • Page 1 of 1
bokugare
Posts: 3
Joined: Wed Aug 24, 2022 8:47 am

(質問)LDC1000というデバイスと通信したいのですが、、、

Wed Aug 24, 2022 8:55 am

LDC1000というデバイス(以下参照)をraspberry pi 3 BとSPI通信したくまずは以下のようなphyonでコードを作りいろいろと試しているのですが
一番したいセンサーの出力値 Proximity を取得しようとすると値が一切かえってきません。

センサーのProximity値を取得したいのですが何がエラーかわからず原因が分かりません。

大変お手数おかけしますがどなたかpythonのSPI通信について詳しい方教えて頂けないでしょうか?

LDC1000のURL:https://media.digikey.com/pdf/Data%20Sh ... LDC1000.pd

LDC1000ボードURL↓
https://jp.rs-online.com/web/p/sensor-d ... lsrc=aw.ds

PIN
raspberry LCD1000ボード
Pin2 5V
Pin6 GND
Pin19 SDI
Pin21 SDO
Pin23 SCK
Pin24 CS
未接続 3.3V

補足情報
10b10000000→0b10000010に書き換えてコードすると説明書のデフォルト値がかえってきます。 どうも、R/Wは上手く読み取れるようでRオンリーに成ると正しい値がかえって来ないようです。

以下Pyhonコード
import spidev

#初期設定
spi = spidev.SpiDev()
spi.open(0,0)
spi.mode = 3 #このデバイスはSPI mode3で動作
spi.max_speed_hz = 4000000

read_data = spi.xfer2([0b10000000,0x00,0x00])
print(read_data)
Last edited by bokugare on Thu Aug 25, 2022 9:47 am, edited 1 time in total.

otani
Posts: 102
Joined: Fri Dec 13, 2013 4:18 am

Re: (質問)LDC1000というデバイスと通信したいのですが、、、

Thu Aug 25, 2022 2:58 am

基本的な所が違っていませんでしょうか?
10b10000000→0b100000010に書き換え
8bit -> 9bit になってます.

参考になりそうなリンクです.
https://forum.mikroe.com/viewtopic.php?t=63521

bokugare
Posts: 3
Joined: Wed Aug 24, 2022 8:47 am

Re: (質問)LDC1000というデバイスと通信したいのですが、、、

Thu Aug 25, 2022 9:49 am

コメントありがとうございます。 9bitのところは誤記です申し訳ございません。 しかしながらPythonのサンプルっぽいのが見つかったのは助かります早速試してみたところ以下のようなエラーを吐いてます。

これの意味と対策はどのようにすればよいでしょうか?

エラー文
pull_up_down parameter is not valid for outputs


作成したコード

Code: Select all

import spidev as SPI
import RPi.GPIO as GPIO
CS = 24
def spi_write(register, data):
 GPIO.output(CS, GPIO.LOW)
 resp = spi.xfer2([register, data], 2000000)
 
 GPIO.output(CS, GPIO.HIGH)
def spi_read(register):
 GPIO.output(CS, GPIO.LOW)
 resp = spi.xfer2([register | 0x80, 0], 2000000)
 
 GPIO.output(CS, GPIO.HIGH)
 
 return resp[1]
 
try:
 spi = SPI.SpiDev()
 spi.open(0, 0)
 
 GPIO.setmode(GPIO.BOARD) 
 GPIO.setup(CS, GPIO.OUT, GPIO.HIGH)
 
 spi_write(0x0B, 0)
 
 for d in [0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25]:
 resp = spi_read(d)
 print (resp)
 spi_write(0x0B, 1)
 
except Exception as x:
 print (x)
#GPIO.cleanup()
spi.close()

otani
Posts: 102
Joined: Fri Dec 13, 2013 4:18 am

Re: (質問)LDC1000というデバイスと通信したいのですが、、、

Thu Aug 25, 2022 12:19 pm

エラー文 pull_up_down parameter is not valid for outputs
これはエラー文で処理を受け付けないのでしょうか?
実際のポート状態は,プログラム記述に従って制御できているのでしょうか?

GPIO.setup(24, GPIO.OUT, initial=GPIO.HIGH) # make pin initially high output
のような初期値記述をしたら状況が変わりませんか?

https://qiita.com/gnk263/items/b4dfa4be94b1b3e116f8

https://raspberrypi.stackexchange.com/q ... output-pin

bokugare
Posts: 3
Joined: Wed Aug 24, 2022 8:47 am

Re: (質問)LDC1000というデバイスと通信したいのですが、、、

Fri Aug 26, 2022 10:56 pm

教えて頂きありがとうございました!!

エラーは儚くコンパイル出来たんですが、やはり0x100000000と入力してもデバイスUDの正しい値も出ず。
試しに、一番やりたいProximity値の値を読み込むために取得のアドレスを書き込んでも値が0でかえって来てないです...

いろいろと試す中で何となく気づいてきたのがPythonのSPIライブラリーでCS値の制御が上手く本デバイスとあって気ないのではというのが強くなってきました。

今はデバイスによってProximity値の取得が出来ないと思いRaspberry pi pico で picoの持つSPIライブラリーでCS値を手動で書いたコードを作成し始めました。

raspberry pi Bとpythonの書き方も異なっているのでPico用で再度Pythonを書き直しかつCS値の制御をライブラリに頼らずに手動で書いたプログラム製作のをしていますので再度もしエラーが出ましたご相談出来ると凄く助かります。

わたし自身Raspberry Piのコーディングが初めてで話が二転三転してしまい申し訳ございませんがお付き合い頂けると大変助かります。

5 posts • Page 1 of 1

Return to "日本語"

AltStyle によって変換されたページ (->オリジナル) /