回答編集履歴
5
修正
answer
CHANGED
@@ -12,7 +12,7 @@
|
|
12
12
|
|
13
13
|
- あと、CSが下りてから、CK開始まで、tsetCS(Chip select setup time) > 350ns。
|
14
14
|
|
15
|
-
ということなので、
|
15
|
+
ということなので、CSのGPIO制御としては、
|
16
16
|
- 1バイト転送(=wiringPiSPIDataRWの呼び出し)前にCSピンををLOW、後にHIGHにする。
|
17
17
|
- もしかしたら、CSの設定後にWait(1msくらい)が必要かも?
|
18
18
|
|
4
コード追記: 未使用時、初期設定、出力HIGH
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
コードの関数内、改行削除
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
answer
CHANGED
@@ -23,9 +23,9 @@
|
|
23
23
|
|
24
24
|
|
25
25
|
#使用するCS pinを出力設定にする
|
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
|
|
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
|
-
|
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
|
-
|
41
|
+
wp.digitalWrite(pin_cs, 1) # HIGH 出力
|
42
42
|
time.sleep(0.001) # 1msウェイト
|
43
43
|
|
44
44
|
...
|
1
途中で送信してしまった
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
|
+
```
|