AVR32の

S

sebmaster

Guest
こんにちは、

私はCPLDにある)miniumum(必要に送る21ビットワードをAVR32のです。

私は、バスを使用してSPIのしようとするこれをすべて設定している管理する、ビットサイズの11単語です。

アイデアはSPIであるビットを上位11私が取る取る整数を、(得たそれらをシフト私は逆の順序は、左11の値を送信する2つの場所を取る上して11ビットを再度)のデータをLSBファースト送信されます。

しかし、私のプログラムが動作していないと私はゼロ常にです)することができますは送信されません(スコープLSBの理解をなぜ、そうはでのSPI出力ビットは最初の21。

私のテスト値は確かです0xFFFFFFFFのように最大の値ビットシフトを前に16か私は必要がある以下に低下単語低い開始?

ここでコードが私:
コード:

spi_status_t応答;

unsigned short型word_high =(データ&0xFFE0);

データ=データ<は<11 / / 11場所によって次の11ビットワードを得るために左にシフトします。

unsigned short型word_low =(データ&0xFFE0);応答= spi_write(spiの、word_low);(応答== SPI_OK場合)

中に((spi_writeEndCheck(SPI)を== 0)()

戻りspi_write(spiの、word_high);





戻り値の応答;
 
私はビットと仮定'unsigned short型、'は16?

)の場合のビットデータが0xffffffffを、(64 -
次に
word_high =(unsigned short型)(データ&0xffe00000);

データ<<= 11;

word_low =(unsigned short型)(データ&0xffe00000);

 
こんにちはbtbass、

私は)0xffe0/0xffe00000間違い自分のためにハード蹴りながら(提案された変更を、あなたが作ったが、今もパンツは、デバッガで0の値を示しています。

私は短い変更0xFFE0000F読むマスクを15の値を取ります。

私はアトメルからと確信ドキュメント私のデバイスは、このですの大きな5ページエンディアン確か:言うようhttp://www.atmel.com/dyn/resources/prod_documents/doc32000.pdf、押し出しのデータはまだ何とバスのSPI LSBはそれを最初に(ときにMSBを示した私がされたことを図は、データシートの最初の疑問を開始イム)。

ですが可能¥性は私のデバイスは、コンパイラ/ことがビッグエンディアン、まだ、デバイス(タイプはキャストに小さいタイプ?))LSBの起動で最上位アドレス(?

編集:はい、私は変更ので、行く病気だと思う)が結果と思ったもの!wouldntの作品をこれまで書き込みがすべてのプログラミング私はまず半分の何のため(の言語は、世界切り捨てではなく、個のLSBをのキャストを個のMSBダウンサイジングて私がする前に私のプログラムは、自身が愚かに見える以上!

ありがとうございました!

 
イムは確かにコンパイラがendinessの世話をする必要がありますかかりますか?
もう一つのアプローチは、

word_high =(uint16_tに)(0xffe0&(データ>> 16));
word_low =(uint16_tに)(0xffe0&データ);

 
こんにちはbtbass、

私は考えなければならないことは。ん)そこから私はここで知って描いていない(私はまだないキャストを切り捨てるのLSBを16歳だけだったので、私は混乱して考えています。

今マスクオフのすべてのIが、それらの値をシフトアウト、右シフト11の場所は、仕事が表¥示されますに行うことは、同じものをもう一度見てスコープで。

使用して、それがバスは、SPIの前に私が収集されますMSBが最初とは違ってために間違い私の前のため、他のされた時点の混乱。

これは、MSBファーストデータを送信さに、値の個のMSBを切り捨てますので、ビットを5カットオフではトップ11に送信、残りのMSB最初のサイズを持つ単語の私は。

今私は....をご希望の最初のLSBを受け入れる私はなかったにプログラムを修正私のCPLD

ヘルプおおかげで、私が周りいけない方法を知ってまごついているような長い私は!

 

Welcome to EDABoard.com

Sponsor

Back
Top