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

回答編集履歴

3

誤字の修正など

2015/11/12 14:04

投稿

T.Kanno
T.Kanno

スコア915

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

サンプルの追記

2015/11/12 14:04

投稿

T.Kanno
T.Kanno

スコア915

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

追記します

2015/11/12 13:59

投稿

T.Kanno
T.Kanno

スコア915

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
+