ページ 11

【トラ技】MARM1114MBの技術的な質問(IOピン)【ARMマイコン】

Posted: 2013年4月24日(水) 10:37
by ホヅミ
お世話になっております。

トランジスタ技術で紹介されたこともあるMARM1114-MBのIOピンについて相談したいことが御座います。
(トラ技では基板の技術的なの質問は受け付けてないとのことでした)
SPI通信にてチップセレクトピンであるPIO0_2のSSEL0を割り当てて通信を行いますが
他のピンに移すこと、増やすことはできるでしょうか。
現在は別のピンで実験を行っているのですが見かけ上は通信を行っているピン、何も起こらないピンの二つがあり
プログラムの所為かわからないですがボードが発熱し1枚壊してしまいました。

質問をまとめますが
・本基板での割り当て機能を無視し独自でピンを割り当てることができるのか。
・SPI通信を行うためのチップセレクトピンだけでも増やせないか。(現在はSPIは1chですが最低でも3chまで増やしたい)
・独自で割り当てることは安全か。

ちなみに、トラ技についてきた基板は2枚ですが、今回は1枚のみを使う縛りとなっております。

Re: 【トラ技】MARM1114MBの技術的な質問(IOピン)【ARMマイコン】

Posted: 2013年4月24日(水) 11:47
by softya(ソフト屋)
その号持ってませんね。
使われているARMマイコンの型番はなんでしょうか?

・本基板での割り当て機能を無視し独自でピンを割り当てることができるのか。

出来るはずですが回路図がないと分かりません。
回路図がほしいです。

・SPI通信を行うためのチップセレクトピンだけでも増やせないか。(現在はSPIは1chですが最低でも3chまで増やしたい)

SPI通信はしたことないですが、OUTPUTピンならどれでも使える気がします。

・独自で割り当てることは安全か。

ちゃんと回路を把握しているなら安全です。

【補足】
もしかして、この基盤ですかね?
「【増刊】超小型ARMマイコン基板 特設ページ | トランジスタ技術」
http://toragi.cqpub.co.jp/tabid/412/Default.aspx

Re: 【トラ技】MARM1114MBの技術的な質問(IOピン)【ARMマイコン】

Posted: 2013年4月24日(水) 12:37
by ホヅミ
ソフト屋さん
まさにその基盤です。
ARMに興味があり2枚ついてて比較的安価だったので(ピンは別売りでしたが^^;)実験用に買ったのですがさっそく1枚破壊と……

回路図ですが、取説についてきた大まかな回路図は持っているのですが、中身の詳しいものは持っておりません。
回路の部分ですが、勉強不足で把握しきれておりません。
現在考えているものは
チップ1:元から割り当てられているSSEL0
チップ2:PIO1_4(デフォルト無、機能:WAKEUP、B1_MAT3、AD5)
チップ3:PIO1_11(デフォルト無、機能:AD6)
の計3ピンを考えております。
直接何かをするようなピンではないはずなので安全だとは思いますが……

Re: 【トラ技】MARM1114MBの技術的な質問(IOピン)【ARMマイコン】

Posted: 2013年4月24日(水) 13:04
by softya(ソフト屋)
SSEL0がハード的にレジスタなどの資源が割り当てられているみたいので、ライブラリ的にどう初期化されているかが問題ですかね。
あとSPIは デイジーチェーン接続 する方法もあるので それなら1本で済みますよ。

「SPIデバイスのデイジーチェーン接続 - アプリケーションノート - Maxim」
http://japan.maximintegrated.com/app-no ... vp/id/3947

スレーブ側がデイジーチェーン接続 に対応している必要はあると思いますが。

Re: 【トラ技】MARM1114MBの技術的な質問(IOピン)【ARMマイコン】

Posted: 2013年4月24日(水) 13:35
by softya(ソフト屋)
そういえば、
チップ2:PIO1_4(デフォルト無、機能:WAKEUP、B1_MAT3、AD5)
チップ3:PIO1_11(デフォルト無、機能:AD6)
は信号を出せているのは確認済みでしょうか?
それと、この図のどのコネクタになるんでしょうか?
画像


【追記】
出ている信号をデジタルオシロやロジックアナライザで確認はできませんか?

Re: 【トラ技】MARM1114MBの技術的な質問(IOピン)【ARMマイコン】

Posted: 2013年4月24日(水) 16:43
by ホヅミ
どうやらスレーブ側はデイジーチェーンを採用しているようでした。
URLを参考にして挑戦をしてみます。

PIO1_4,11はCN2から出力されます。
オシロやアナライザは持ち合わせておりませんが、
ちょうどスレーブに信号を送って動きを見るテストを行ったところ信号が届いていませんでした。(プログラム側の問題?)
プログラムの問題かもしれませんが、ピンの管理も3本分に増えるよりもデイジーチェーンを使った方がチップも僕自身もきっと健康的だと思うのでそちらから攻めてみます。

デイジーチェーンで組んでみて相談しながらも解決の糸口(良くも悪くも)が見つかり次第解決にしたいと思います。
それまで、ここのトピックがチラシの裏扱いになってしまうかもしれませんがお許しください。

Re: 【トラ技】MARM1114MBの技術的な質問(IOピン)【ARMマイコン】

Posted: 2013年4月24日(水) 17:44
by ホヅミ
デイジーチェーンの項目を読んで勝手にイメージをつかんでみたのですが確認のために教えていただきたいです。

スレーブ番号はMOSI→S1DI→S1DO→S2DI→……S3DO→MISOとつないだ順番に割り振る(られる?)。
クロック・スレーブセレクトの線はスレーブそれぞれにつなぐ。
信号はスレーブ番号が若いデバイスから送る度に昇順でシフトしていく。

こういった認識でよろしいのでしょうか?
スレーブの番号は繋いだ順番に自動的に割り振られるものなのでしょうか?

Re: 【トラ技】MARM1114MBの技術的な質問(IOピン)【ARMマイコン】

Posted: 2013年4月24日(水) 17:51
by softya(ソフト屋)
イメージで見る限り、割り振られるというかCS信号がローの間通過していくだけと言うかって感じでしょうか。
私の印象ではシフトレジスタを繋いでいるだけという印象です。
まぁ、試してみたほうが早いと思います。

Re: 【トラ技】MARM1114MBの技術的な質問(IOピン)【ARMマイコン】

Posted: 2013年4月25日(木) 11:24
by ホヅミ
IOピンについては粗方理解はできたのですが、SPIコマンドのシフトされる動きがうまく想像つきません。
というのもスレーブ先がSPIコマンド1バイトを4回貰って(1バイト目がコマンド、2~4バイト目がパラメータ)一つの命令とされるものだからです。
本トピックタイトルとは趣旨がズレてしまっておりますが、SPI通信について知恵を貸していただきたいです。
cmdimage.jpg
cmdimage.jpg (24.46 KiB) 閲覧数: 6236 回
信号を1~12の順へ送った結果は スレーブ1には9~12、スレーブ2は8~5、スレーブ3は4~1でいいのでしょうか?
それとも、4回目を送るとスレーブ3の1回目の信号がなくなってしまったりはあるのでしょうか?
参考に教えていただいたURL先の信号イメージが1バイトずつシフトしていってたので、その辺が少し気になりました。

Re: 【トラ技】MARM1114MBの技術的な質問(IOピン)【ARMマイコン】

Posted: 2013年4月25日(木) 13:45
by softya(ソフト屋)
スレーブ側の仕様というかスレーブ側ICの仕様が分からないの答えようがないですかね。
ただ、LPC1114のユーザーマニュアルによるとSPIの最大送出ビットは16bitなので4byte=32bitは一度に送信できないと思います。

Re: 【トラ技】MARM1114MBの技術的な質問(IOピン)【ARMマイコン】

Posted: 2013年4月26日(金) 08:48
by ホヅミ
齟齬がありましたね
8ビットずつを4回送って1つのコマンドという意味になります。

SPI通信を行うサンプルには1つのコマンドを送る度にSSEL0を上げ下げしてましたが、SSEL0はコマンドを送信したいチップにシフトするために上げ下げをするんですよね?
しかし、デイジーチェーンで行うということは1byteを4回送ってSSEL0を上げ下げするという解釈で大丈夫でしょうか?
それとも1byte送る度にSSEL0は上下させるのでしょうか?そうするとコマンドが送りきる前に流れきってしまわないでしょうか?

Re: 【トラ技】MARM1114MBの技術的な質問(IOピン)【ARMマイコン】

Posted: 2013年4月26日(金) 09:47
by softya(ソフト屋)
ホヅミ さんが書きました:齟齬がありましたね
8ビットずつを4回送って1つのコマンドという意味になります。

SPI通信を行うサンプルには1つのコマンドを送る度にSSEL0を上げ下げしてましたが、SSEL0はコマンドを送信したいチップにシフトするために上げ下げをするんですよね?
しかし、デイジーチェーンで行うということは1byteを4回送ってSSEL0を上げ下げするという解釈で大丈夫でしょうか?
それとも1byte送る度にSSEL0は上下させるのでしょうか?そうするとコマンドが送りきる前に流れきってしまわないでしょうか?
そういう意味なら、全部のスレーブ毎にSSEL0を上げ下げだと思います。
SSEL0を下げて コマンド4-1 コマンド3-1 コマンド2-1 コマンド1-1 と送出してからSSEL0を上げでしょう。
※ コマンド(スレーブ番号)-(バイト目)

Re: 【トラ技】MARM1114MBの技術的な質問(IOピン)【ARMマイコン】

Posted: 2013年4月26日(金) 10:05
by ホヅミ
>>SSEL0を下げて コマンド4-1 コマンド3-1 コマンド2-1 コマンド1-1 と送出してからSSEL0を上げでしょう。

つまり、コマンドを
SSEL0 High (~CS:Low)
4-1,3-1,2-1,1-1
SSEL0 Low (~CS:High)

SSEL0 High (~CS:Low)
4-2,3-2……
~~~~

と並列(平行?)に送っていくわけですね。
見えてきた気がします。

Re: 【トラ技】MARM1114MBの技術的な質問(IOピン)【ARMマイコン】

Posted: 2013年4月26日(金) 10:16
by softya(ソフト屋)
そんな感じだと思います。
実際には試してみないとわかんないですけどね。

Re: 【トラ技】MARM1114MBの技術的な質問(IOピン)【ARMマイコン】

Posted: 2013年4月26日(金) 10:31
by ホヅミ
ありがとうございました!
SPI通信、デイジーチェーンの必要最低限の知識だと思ったので、ある程度理解していないと残り一枚の基板も焼切ってしまうのではないかとナイーブになってました^^;
本トピックの情報を参考にしコードを組んでみます。
今回使っている基板(MARM1114-MB)はサンプルコードやオプションが充実しすぎてる所為かわからないのですが、何でも簡単に出来過ぎて深い部分を調べてもなかなか出てきてくれませんでした。

大変お世話になりました、本トピックはこの辺で解決とさせていただきます。
ありがとうございました。