回答編集履歴
3
誤字の修正など
answer
CHANGED
@@ -55,12 +55,10 @@
|
|
55
55
|
}
|
56
56
|
|
57
57
|
```
|
58
|
-
SSの制御は
|
58
|
+
SSの制御は上位で行ってください。
|
59
|
-
SPIの制御は、いくつかパターンがあります
|
59
|
+
SPIの制御は、いくつかパターンがあります。センサーに合わせて実装する必要がありますので注意してください。上記は、あくまで一例です。
|
60
60
|
|
61
61
|
ソフトによるSPI通信は、検索すればいろいろ転がっているようですので、調べてみるのも面白いでしょう。
|
62
62
|
|
63
63
|
|
64
64
|
|
65
|
-
|
66
|
-
|
2
サンプルの追記
answer
CHANGED
@@ -26,9 +26,41 @@
|
|
26
26
|
|
27
27
|
SPIのソフトウェア実装については、それほど難しくは無いと思います。おそらく100行前後で出来ると思います。
|
28
28
|
|
29
|
+
---
|
30
|
+
サンプル(すみません、コンパイルもしていません)例
|
29
31
|
|
32
|
+
```C
|
30
33
|
|
34
|
+
#define SS_CLK ...
|
35
|
+
#define SS_MOSI ...
|
36
|
+
#define SS_MISO ...
|
31
37
|
|
38
|
+
unsigned char ss_transfer(unsigned char write_data)
|
39
|
+
{
|
40
|
+
unsigned char i;
|
41
|
+
unsigned char input_data;
|
32
42
|
|
43
|
+
SS_CLK = 0; /* アイドル時は CLK = L */
|
44
|
+
for(i = 0; i < 8; i++)
|
45
|
+
{
|
46
|
+
SS_MOSI = (write_data & 0x80) ? 1 : 0;
|
47
|
+
SS_CLK = 1; /* CLK = H */
|
48
|
+
delay(); /* 必用ならディレイ */
|
49
|
+
SS_CLK = 0; /* CLK = L */
|
50
|
+
input_data <<= 1;
|
51
|
+
input_data += SS_MISO;
|
52
|
+
write_data >>= 1;
|
53
|
+
}
|
54
|
+
return input_data;
|
55
|
+
}
|
33
56
|
|
57
|
+
```
|
58
|
+
SSの制御は用意で行ってください。
|
59
|
+
SPIの制御は、いくつかパターンがありますのでセンサーに合わせて実装する必要がありますので注意してください。上記は、あくまで一例です。
|
34
60
|
|
61
|
+
ソフトによるSPI通信は、検索すればいろいろ転がっているようですので、調べてみるのも面白いでしょう。
|
62
|
+
|
63
|
+
|
64
|
+
|
65
|
+
|
66
|
+
|
1
追記します
answer
CHANGED
@@ -7,4 +7,28 @@
|
|
7
7
|
|
8
8
|
の記述がありますので、USBを使うのなら、ホスト間通信でSPIが使用されてしまいますので、センサのI/Oに利用できない気がします。
|
9
9
|
|
10
|
-
おそらく、現状はセンサ側の CS をアサートした瞬間にセンサがバスを操作してしまい、その結果、同じSPI回線を使用しているUSBが切断されてしまっている状況だと思います。
|
10
|
+
おそらく、現状はセンサ側の CS をアサートした瞬間にセンサがバスを操作してしまい、その結果、同じSPI回線を使用しているUSBが切断されてしまっている状況だと思います。
|
11
|
+
|
12
|
+
---
|
13
|
+
対策?を追記
|
14
|
+
|
15
|
+
|
16
|
+
現状の構成や部材のままの前提で、対策を考えると、
|
17
|
+
|
18
|
+
プロセッサで使用可能な残りのリソースは TWI と I2C ですが、どれも8回線分には無理があると思います。
|
19
|
+
センサー側の仕様を見ると確かに I2C には2個までしかぶら下げられないようですね。
|
20
|
+
|
21
|
+
となると、GPIOポートを使ってソフトウェアでI2CかSPIを実現する位しか思い浮かびませんが、I2Cはいろいろ面倒になりそうなので、SPIを1回線3本分と SSが8つで、合計 11本のGPIOを確保すれば実現できると思います。それぐらいは、あまっていますよね?
|
22
|
+
|
23
|
+
応用がわからないのですが、ハード駆動の通信を、ソフト駆動の通信に変更しても、応答速度はそれほど劣化しないと思いますが、問題になるでしょうか?
|
24
|
+
|
25
|
+
また、写真を拝見すると、SSが繋がっていないようですが、デバッグ用に1本だけ? それとも、見えないところにデコーダーがある?
|
26
|
+
|
27
|
+
SPIのソフトウェア実装については、それほど難しくは無いと思います。おそらく100行前後で出来ると思います。
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
|
34
|
+
|