質問するログイン新規登録

回答編集履歴

5

修正

2017/12/08 01:54

投稿

mt08
mt08

スコア1825

answer CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
  - あと、CSが下りてから、CK開始まで、tsetCS(Chip select setup time) > 350ns。
14
14
 
15
- ということなので、感じなので、CSのGPIO制御としては、
15
+ ということなので、CSのGPIO制御としては、
16
16
  - 1バイト転送(=wiringPiSPIDataRWの呼び出し)前にCSピンををLOW、後にHIGHにする。
17
17
  - もしかしたら、CSの設定後にWait(1msくらい)が必要かも?
18
18
 

4

コード追記: 未使用時、初期設定、出力HIGH

2017/12/08 01:54

投稿

mt08
mt08

スコア1825

answer CHANGED
@@ -26,7 +26,10 @@
26
26
  wp.pinMode(PIN_CS_1, 1)
27
27
  wp.pinMode(PIN_CS_2, 1)
28
28
  wp.pinMode(PIN_CS_3, 1)
29
-
29
+ # 未使用時、初期設定、出力HIGH
30
+ wp.digitalWrite(PIN_CS_1, 1)
31
+ wp.digitalWrite(PIN_CS_2, 1)
32
+ wp.digitalWrite(PIN_CS_3, 1)
30
33
  ...
31
34
 
32
35
 

3

コードの関数内、改行削除

2017/12/08 01:30

投稿

mt08
mt08

スコア1825

answer CHANGED
@@ -32,12 +32,9 @@
32
32
 
33
33
  def L6470_write_with_cs_control(channel, data, pin_cs):
34
34
  bydata = struct.pack("B", data)
35
-
36
35
  wp.digitalWrite(pin_cs, 0) # LOW 出力
37
36
  time.sleep(0.001) # 1msウェイト
38
-
39
37
  wp.wiringPiSPIDataRW(channel, bydata)
40
-
41
38
  wp.digitalWrite(pin_cs, 1) # HIGH 出力
42
39
  time.sleep(0.001) # 1msウェイト
43
40
 

2

Code修正: wiringpi => wp

2017/12/08 00:59

投稿

mt08
mt08

スコア1825

answer CHANGED
@@ -23,9 +23,9 @@
23
23
 
24
24
 
25
25
  #使用するCS pinを出力設定にする
26
- wiringpi.pinMode(PIN_CS_1, 1)
26
+ wp.pinMode(PIN_CS_1, 1)
27
- wiringpi.pinMode(PIN_CS_2, 1)
27
+ wp.pinMode(PIN_CS_2, 1)
28
- wiringpi.pinMode(PIN_CS_3, 1)
28
+ wp.pinMode(PIN_CS_3, 1)
29
29
 
30
30
  ...
31
31
 
@@ -33,12 +33,12 @@
33
33
  def L6470_write_with_cs_control(channel, data, pin_cs):
34
34
  bydata = struct.pack("B", data)
35
35
 
36
- wiringpi.digitalWrite(pin_cs, 0) # LOW 出力
36
+ wp.digitalWrite(pin_cs, 0) # LOW 出力
37
37
  time.sleep(0.001) # 1msウェイト
38
38
 
39
39
  wp.wiringPiSPIDataRW(channel, bydata)
40
40
 
41
- wiringpi.digitalWrite(pin_cs, 1) # HIGH 出力
41
+ wp.digitalWrite(pin_cs, 1) # HIGH 出力
42
42
  time.sleep(0.001) # 1msウェイト
43
43
 
44
44
  ...

1

途中で送信してしまった

2017/12/08 00:56

投稿

mt08
mt08

スコア1825

answer CHANGED
@@ -4,14 +4,42 @@
4
4
 
5
5
  > The communication starts when CS is forced low.
6
6
 
7
- CSをLOWにして通信開始。(= アクティブLOW)
7
+ - CSをLOWにして通信開始。(= アクティブLOW)
8
8
 
9
9
  > After each byte transmission the CS input must be raised and be kept high for at least tdisCS in order to allow the device to decode the received command and put the return value into the SHIFT register.
10
10
 
11
- 1バイト転送毎に、CSは、少なくともtdisCS時間(>800ns)、HIGHを保持すること。その間にデバイスが受信コマンドをデコードして、シフトレジスタに返す値をセットする。
11
+ - 1バイト転送毎に、CSは、少なくともtdisCS時間(>800ns)、HIGHを保持すること。その間にデバイスが受信コマンドをデコードして、シフトレジスタに返す値をセットする。
12
12
 
13
- あと、CSが下りてから、CK開始まで、tsetCS(Chip select setup time) > 350ns。
13
+ - あと、CSが下りてから、CK開始まで、tsetCS(Chip select setup time) > 350ns。
14
14
 
15
15
  ということなので、感じなので、CSのGPIO制御としては、
16
16
  - 1バイト転送(=wiringPiSPIDataRWの呼び出し)前にCSピンををLOW、後にHIGHにする。
17
- - もしかしたら、CSの設定後にWait(1msくらい)が必要かも?
17
+ - もしかしたら、CSの設定後にWait(1msくらい)が必要かも?
18
+
19
+ あとは、wiringPiのGPIO制御に従って、↓のようにしてみるのはどうでしょうか
20
+
21
+ ```py
22
+ import time # sleepを使う。
23
+
24
+
25
+ #使用するCS pinを出力設定にする
26
+ wiringpi.pinMode(PIN_CS_1, 1)
27
+ wiringpi.pinMode(PIN_CS_2, 1)
28
+ wiringpi.pinMode(PIN_CS_3, 1)
29
+
30
+ ...
31
+
32
+
33
+ def L6470_write_with_cs_control(channel, data, pin_cs):
34
+ bydata = struct.pack("B", data)
35
+
36
+ wiringpi.digitalWrite(pin_cs, 0) # LOW 出力
37
+ time.sleep(0.001) # 1msウェイト
38
+
39
+ wp.wiringPiSPIDataRW(channel, bydata)
40
+
41
+ wiringpi.digitalWrite(pin_cs, 1) # HIGH 出力
42
+ time.sleep(0.001) # 1msウェイト
43
+
44
+ ...
45
+ ```