(質問)LDC1000というデバイスと通信したいのですが、、、
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)
一番したいセンサーの出力値 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.
Re: (質問)LDC1000というデバイスと通信したいのですが、、、
基本的な所が違っていませんでしょうか?
10b10000000→0b100000010に書き換え
8bit -> 9bit になってます.
参考になりそうなリンクです.
https://forum.mikroe.com/viewtopic.php?t=63521
10b10000000→0b100000010に書き換え
8bit -> 9bit になってます.
参考になりそうなリンクです.
https://forum.mikroe.com/viewtopic.php?t=63521
Re: (質問)LDC1000というデバイスと通信したいのですが、、、
コメントありがとうございます。 9bitのところは誤記です申し訳ございません。 しかしながらPythonのサンプルっぽいのが見つかったのは助かります早速試してみたところ以下のようなエラーを吐いてます。
これの意味と対策はどのようにすればよいでしょうか?
エラー文
pull_up_down parameter is not valid for outputs
作成したコード
これの意味と対策はどのようにすればよいでしょうか?
エラー文
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()Re: (質問)LDC1000というデバイスと通信したいのですが、、、
エラー文 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
これはエラー文で処理を受け付けないのでしょうか?
実際のポート状態は,プログラム記述に従って制御できているのでしょうか?
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
Re: (質問)LDC1000というデバイスと通信したいのですが、、、
教えて頂きありがとうございました!!
エラーは儚くコンパイル出来たんですが、やはり0x100000000と入力してもデバイスUDの正しい値も出ず。
試しに、一番やりたいProximity値の値を読み込むために取得のアドレスを書き込んでも値が0でかえって来てないです...
いろいろと試す中で何となく気づいてきたのがPythonのSPIライブラリーでCS値の制御が上手く本デバイスとあって気ないのではというのが強くなってきました。
今はデバイスによってProximity値の取得が出来ないと思いRaspberry pi pico で picoの持つSPIライブラリーでCS値を手動で書いたコードを作成し始めました。
raspberry pi Bとpythonの書き方も異なっているのでPico用で再度Pythonを書き直しかつCS値の制御をライブラリに頼らずに手動で書いたプログラム製作のをしていますので再度もしエラーが出ましたご相談出来ると凄く助かります。
わたし自身Raspberry Piのコーディングが初めてで話が二転三転してしまい申し訳ございませんがお付き合い頂けると大変助かります。
エラーは儚くコンパイル出来たんですが、やはり0x100000000と入力してもデバイスUDの正しい値も出ず。
試しに、一番やりたいProximity値の値を読み込むために取得のアドレスを書き込んでも値が0でかえって来てないです...
いろいろと試す中で何となく気づいてきたのがPythonのSPIライブラリーでCS値の制御が上手く本デバイスとあって気ないのではというのが強くなってきました。
今はデバイスによってProximity値の取得が出来ないと思いRaspberry pi pico で picoの持つSPIライブラリーでCS値を手動で書いたコードを作成し始めました。
raspberry pi Bとpythonの書き方も異なっているのでPico用で再度Pythonを書き直しかつCS値の制御をライブラリに頼らずに手動で書いたプログラム製作のをしていますので再度もしエラーが出ましたご相談出来ると凄く助かります。
わたし自身Raspberry Piのコーディングが初めてで話が二転三転してしまい申し訳ございませんがお付き合い頂けると大変助かります。
Jump to
- Community
- General discussion
- Announcements
- Other languages
- Deutsch
- Español
- Français
- Italiano
- Nederlands
- 日本語
- Polski
- Português
- Русский
- Türkçe
- User groups and events
- Raspberry Pi Official Magazine
- Using the Raspberry Pi
- Beginners
- Troubleshooting
- Advanced users
- Assistive technology and accessibility
- Education
- Picademy
- Teaching and learning resources
- Staffroom, classroom and projects
- Astro Pi
- Mathematica
- High Altitude Balloon
- Weather station
- Programming
- C/C++
- Java
- Python
- Scratch
- Other programming languages
- Windows 10 for IoT
- Wolfram Language
- Bare metal, Assembly language
- Graphics programming
- OpenGLES
- OpenVG
- OpenMAX
- General programming discussion
- Projects
- Networking and servers
- Automation, sensing and robotics
- Graphics, sound and multimedia
- Other projects
- Gaming
- Media centres
- AIY Projects
- Hardware and peripherals
- Camera board
- Compute Module
- Official Display
- HATs and other add-ons
- Device Tree
- Interfacing (DSI, CSI, I2C, etc.)
- Keyboard computers (400, 500, 500+)
- Raspberry Pi Pico
- General
- SDK
- MicroPython
- Other RP2040 boards
- Zephyr
- Rust
- AI Accelerator
- AI Camera - IMX500
- Hailo
- Software
- Raspberry Pi OS
- Raspberry Pi Connect
- Raspberry Pi Desktop for PC and Mac
- Beta testing
- Other
- Android
- Debian
- FreeBSD
- Gentoo
- Linux Kernel
- NetBSD
- openSUSE
- Plan 9
- Puppy
- Arch
- Pidora / Fedora
- RISCOS
- Ubuntu
- Ye Olde Pi Shoppe
- For sale
- Wanted
- Off topic
- Off topic discussion