04-27-2017 03:56 AM
SPI制御が必要なデバイスの制御をUSB-8452とLabviewで行おうとしています.
SPIについても,Labviewについても初心者なので手間取っております.
USB-8452のLabviewライブラリを使用しているのですが,制御したいデバイスは10bit/sampleのデータ構造になっています.
そこで,ライブラリの中にあった,"Bits Per sample"コンポーネントで10bitを指定しようと思ったのですが,どうも8bitまでしか動かないようでした.簡単に10bit/sampleの設定をする方法がありましたら教えて頂ければと思います.
よろしくお願いいたします.
解決済! 解決策の投稿を見る。
05-02-2017 12:09 AM
SPI通信のそもそもの規格が8bitデータなので、10bitのものはあまり存じません。
どなたかご存じの方いらっしゃいますか?
このあたりを見ると、byte操作が必要そうですね
Controlling a 10-bit Digital Potentiometer via SPI with Arduino
05-02-2017 12:10 PM
こんにちは。
以下のプロパティノードで変更出来ると思います。
ni-845x > SPI Streaming > Stream node > Number of bits per sample
USB-8452の仕様を調べると、4-64bitsの間であれば設定できるようなので問題ないはずです。
NI-845x Hardware and Software Manual - National Instruments
http://www.ni.com/pdf/manuals/371746e.pdf#page=496
05-02-2017 06:28 PM
05-07-2017 11:23 PM
Pignite様,
doriaconta様,
ご教授ありがとうございます.
早速,Number of bits per sampleを試したところ,仰るとおり,10bit分のクロックを生成できました.
ただ,このStrimingコンポーネントを使用した場合,クロック周波数,タイミング等の設定が思うとおりに行かないので,
いろいろ試しながら希望の制御信号をつくれるようになるためには,もうしばらく時間がかかりそうです.
ともかく一歩前進しました.
ありがとうございました.
05-08-2017 02:55 AM
dotriaconta様
立て続けに申し訳ありません.
教えて頂いたSPI Stream Configurationを使用して,CLK周波数やタイミングがいじれる事を確認できたのですが,
Chip Selectのポート設定をどうすればよいのか模索中です.
特になにもしなければ,SPI Stream ConfigurationでいじれるのはCS0の設定のようです.
これを所望のCS(CS1とかCS2など)に対して制御したいのですがなかなかうまくいきません.
なにかご存じでしたら教えて頂ければと思います.
05-08-2017 05:45 AM
Chip selectのポート設定に関しては、以下のプロパティノードで変更できます。
NI-845x > SPI basic > SPI node > ChipSelect
サンプルがあるのでそちらを参考にされると有用かもしれません。
NIサンプルファインダ > ハードウェア入力と出力 > I2CとSPI > SPI基本 > General SPI Write.vi
正直、どこにどのような設定(プロパティ・メソッド)があるか分かりにくいですよね。
あまり有用ではないかもしれませんが、クラスブラウザを使うと検索に役立つかもしれません。(私もたまに使用してます)
ツールバー > 表示 > クラスブラウザ
オブジェクトライブラリに使用するライブラリ(例えば、LabVIEW自体のプロパティなどだったらVIサーバー、DAQであればDAQmx、など)を選択すれば、どのライブラリで使用できるプロパティやメソッドがまとめられてますし、検索もできます。
(検索できるので、どの階層に目的のプロパティがあるか簡単にわかります)
あとは詳細ヘルプを見ながら地道にプロパティを見ていくしかないかもしれません。
05-09-2017 01:38 AM
dotriaconta様
いろいろありがとうございます.
NI-845x > SPI basic > SPI node > ChipSelectで所望のChipSelectを制御できました.
ただ,NI-845x > SPI basicでせっかく,ChipSelectを設定しても,そのあとで,SPI StreamingによりBits per sample等を設定すると
ここではCS0と同期をとってしまい,悪戦苦闘中です.
なかなかうまくいきませんが,地道に調べてみます.
05-09-2017 07:40 AM
すみません。私の案内の仕方が悪かったですね。
SPI node内にも"Number of Bits per sample"のプロパティがあると思います。
まず、Chip selectをSPI nodeの中で選択し、同じSPI node内で(下に引き伸ばすとさらにプロパティを設定・読み取りができます)上記Number of Bits per sampleで希望のビット数を指定すると希望の動作になると思います。
選択したChip selectに対するプロパティ(例えば、今回のようなデータビット数など)を変更したい場合は、同じプロパティノード内で指定してください。
別のChip selectに対して別の設定を反映させたい場合は、別にプロパティノードを用意する必要があります。
05-11-2017 01:58 AM - 編集済み 05-11-2017 02:00 AM
ありがとうございます.早速試してみました.
10bit設定にしてデータを”1100111001としたのですが,今度はWirteコンポーネントに8bit縛りがあるのか
所望のデータが得られませんでした.
次にNumBitsSampleの設定を5bitにしたところ,1101と1101の間にスペースができましたが,
データは所望のデータが得られました.(これでデバイスが動くのか不明ですが…)とりあえずこれで試してみようかと思います.