回答編集履歴

5

修正

2017/12/08 01:54

投稿

mt08
mt08

スコア1825

test CHANGED
@@ -26,7 +26,7 @@
26
26
 
27
27
 
28
28
 
29
- ということなので、感じなので、CSのGPIO制御としては、
29
+ ということなので、CSのGPIO制御としては、
30
30
 
31
31
  - 1バイト転送(=wiringPiSPIDataRWの呼び出し)前にCSピンををLOW、後にHIGHにする。
32
32
 

4

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

2017/12/08 01:54

投稿

mt08
mt08

スコア1825

test CHANGED
@@ -54,7 +54,13 @@
54
54
 
55
55
  wp.pinMode(PIN_CS_3, 1)
56
56
 
57
+ # 未使用時、初期設定、出力HIGH
57
58
 
59
+ wp.digitalWrite(PIN_CS_1, 1)
60
+
61
+ wp.digitalWrite(PIN_CS_2, 1)
62
+
63
+ wp.digitalWrite(PIN_CS_3, 1)
58
64
 
59
65
  ...
60
66
 

3

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

2017/12/08 01:30

投稿

mt08
mt08

スコア1825

test CHANGED
@@ -66,17 +66,11 @@
66
66
 
67
67
  bydata = struct.pack("B", data)
68
68
 
69
-
70
-
71
69
  wp.digitalWrite(pin_cs, 0) # LOW 出力
72
70
 
73
71
  time.sleep(0.001) # 1msウェイト
74
72
 
75
-
76
-
77
73
  wp.wiringPiSPIDataRW(channel, bydata)
78
-
79
-
80
74
 
81
75
  wp.digitalWrite(pin_cs, 1) # HIGH 出力
82
76
 

2

Code修正: wiringpi => wp

2017/12/08 00:59

投稿

mt08
mt08

スコア1825

test CHANGED
@@ -48,11 +48,11 @@
48
48
 
49
49
  #使用するCS pinを出力設定にする
50
50
 
51
- wiringpi.pinMode(PIN_CS_1, 1)
51
+ wp.pinMode(PIN_CS_1, 1)
52
52
 
53
- wiringpi.pinMode(PIN_CS_2, 1)
53
+ wp.pinMode(PIN_CS_2, 1)
54
54
 
55
- wiringpi.pinMode(PIN_CS_3, 1)
55
+ wp.pinMode(PIN_CS_3, 1)
56
56
 
57
57
 
58
58
 
@@ -68,7 +68,7 @@
68
68
 
69
69
 
70
70
 
71
- wiringpi.digitalWrite(pin_cs, 0) # LOW 出力
71
+ wp.digitalWrite(pin_cs, 0) # LOW 出力
72
72
 
73
73
  time.sleep(0.001) # 1msウェイト
74
74
 
@@ -78,7 +78,7 @@
78
78
 
79
79
 
80
80
 
81
- wiringpi.digitalWrite(pin_cs, 1) # HIGH 出力
81
+ wp.digitalWrite(pin_cs, 1) # HIGH 出力
82
82
 
83
83
  time.sleep(0.001) # 1msウェイト
84
84
 

1

途中で送信してしまった

2017/12/08 00:56

投稿

mt08
mt08

スコア1825

test CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
 
12
12
 
13
- CSをLOWにして通信開始。(= アクティブLOW)
13
+ - CSをLOWにして通信開始。(= アクティブLOW)
14
14
 
15
15
 
16
16
 
@@ -18,11 +18,11 @@
18
18
 
19
19
 
20
20
 
21
- 1バイト転送毎に、CSは、少なくともtdisCS時間(>800ns)、HIGHを保持すること。その間にデバイスが受信コマンドをデコードして、シフトレジスタに返す値をセットする。
21
+ - 1バイト転送毎に、CSは、少なくともtdisCS時間(>800ns)、HIGHを保持すること。その間にデバイスが受信コマンドをデコードして、シフトレジスタに返す値をセットする。
22
22
 
23
23
 
24
24
 
25
- あと、CSが下りてから、CK開始まで、tsetCS(Chip select setup time) > 350ns。
25
+ - あと、CSが下りてから、CK開始まで、tsetCS(Chip select setup time) > 350ns。
26
26
 
27
27
 
28
28
 
@@ -31,3 +31,59 @@
31
31
  - 1バイト転送(=wiringPiSPIDataRWの呼び出し)前にCSピンををLOW、後にHIGHにする。
32
32
 
33
33
  - もしかしたら、CSの設定後にWait(1msくらい)が必要かも?
34
+
35
+
36
+
37
+ あとは、wiringPiのGPIO制御に従って、↓のようにしてみるのはどうでしょうか
38
+
39
+
40
+
41
+ ```py
42
+
43
+ import time # sleepを使う。
44
+
45
+
46
+
47
+
48
+
49
+ #使用するCS pinを出力設定にする
50
+
51
+ wiringpi.pinMode(PIN_CS_1, 1)
52
+
53
+ wiringpi.pinMode(PIN_CS_2, 1)
54
+
55
+ wiringpi.pinMode(PIN_CS_3, 1)
56
+
57
+
58
+
59
+ ...
60
+
61
+
62
+
63
+
64
+
65
+ def L6470_write_with_cs_control(channel, data, pin_cs):
66
+
67
+ bydata = struct.pack("B", data)
68
+
69
+
70
+
71
+ wiringpi.digitalWrite(pin_cs, 0) # LOW 出力
72
+
73
+ time.sleep(0.001) # 1msウェイト
74
+
75
+
76
+
77
+ wp.wiringPiSPIDataRW(channel, bydata)
78
+
79
+
80
+
81
+ wiringpi.digitalWrite(pin_cs, 1) # HIGH 出力
82
+
83
+ time.sleep(0.001) # 1msウェイト
84
+
85
+
86
+
87
+ ...
88
+
89
+ ```