Top Page [◀◀]  2   3   4   5   6   7   8   9   ... [▶▶Last Page

RX621マイコンで、割り込みを使用して、MCP3208とspi通信をさせたい

こんにちは。

現在秋月のRX621マイコンの勉強をしております。表題の通り、AD変換のMCP3208をマイコンの機能を使用して、通信させたいと思っております。

この場合、全二重通信で、24ビット長での通信をさせればよいのでしょうか?送信データが半端なため、何バイトなのか、よくわからず、色々なサイトを参考にしているのですが、IOやメモリなど、1バイトずつ区切れるものが多く、実際どうなのかな?と思い、質問させて頂きます。よろしくお願いいたします。(モノは近日中にてに入れるつもりです)

  • MCP3208 のデータシートは参照されてますか?

  • In reply to fujita nozomu:

    はい、3バイトで通信とあるのですが、最初の5ビット送信が終わったら、すぐに受信になるのかな?と疑問になり、質問させて頂きました。
  • In reply to えるん:

    MCP3204/3208 日本語データシートの「5.0 シリアル通信」に結構詳しく書かれていると思いますが、これ以上の情報を求められているのであれば MICROCHIP の技術サポートに問い合わされるべきと思います。
  • In reply to えるん:

    MCP3208 日本語データシートの「6 使用方法について」に3バイトで通信する方法が書いてありますよ。先行ゼロを入れるのがポイントのようです。
  • えるんさん
    24ビット長でも可能とは思いますが
    まずは8ビット長で
    チャンネル1の場合
    0x06,0x40,0x00 を送信すると
    受信データは下位から12ビットのようです

    CSの設定やCLKのHi/Low設定お忘れなく

  • mbed、Arduinoなどのコードを移植するのが簡単だと思います。
    検索するとかなり色々と出てくるようです。
  • 皆さん、お返事ありがとうございます。
    アルディーノなどのコードが参考になるとのことなので、調べてみます。
    今はイニシャライズで各レジスタが正しいのか、わからない状態です。
    SPPCR.MOIFV = 0 SPPCR.MOIFE =1
    シングルマスタ、シングルスレーブで、
    SPDCR.BYTE =0x04

    SPCMD0.WORD = 0xEB83

    コマンドレジスタ1~7
    SPCMDn.WORD = 0x070D

    の状態で、プログラムを流してもクロックがハイに張り付いてる状態です。
    特にクロック遅延の部分のレジスタの設定が、1.5クロックで変換とあるのですが、正しいのかわかりません。
  • In reply to えるん:

    こんにちは。
    MCP3208は先頭の"1"を検出してそこから先のデータを使用するみたいですね。
    なので、ビット数についてはそれほど気にしなくても、末尾からのビット数が合っていればよさそうです。
    RSPIについては、どこに接続しているのでしょうか?
    ピン名に-Aとか-Bとか付いている場合は、どちらを使用するか設定が必要です。
    ポートCを使い、SSLA0を使用する場合は、ポートファンクションレジスタGを、IOPORT.PFGSPI.BYTE = 0x1e;とします。
    あとは、モジュールストップを解除するMSTP_RSPI0 = 0;などを忘れがちなことや、データ長でSPDRへのアクセスが異なることです。
  • In reply to HiRoSan:

    ご回答ありがとうございます。
    RSPIポートは、PORTCを使用しています。
    仰る文字だと、Aになります。

    帰宅したら、イニシャライズのあたりを一通り載せてみます。
  • In reply to えるん:

    こんばんわ。帰宅しましたので、各レジスタ初期化の部分を記載させて頂きます。

    //------------------------------------------------------------------------------
    /* SPIインタフェース(RSPI0)初期化 */
    //------------------------------------------------------------------------------
    static void Init_RSPI0(void)
    {
    /* RSPI0のモジュールストップ解除 */
    MSTP(RSPI0) = 0; /* SYSTEM.MSTPCRB.BIT.MSTPB17 = 0; */
    /* RSPI0の動作停止 */
    RSPI0.SPCR.BYTE = 0; /* SPCR.SPE=0で動作停止 */
    /* RSPI0のイニシャライズ */
    RSPI0.SSLP.BYTE = 0x00; /* シングルマスタシングルスレーブ SSL0P=0 ローアクティブ*/
    RSPI0.SPPCR.BYTE = 0x20; /* SPLP=0,SPLP2=0,SPOM=0,MOIFV=1,MOIFE=0 */
    RSPI0.SPSR.BYTE = 0xA0; /* OVRF=0,IDLNF=0,MODF=0,PERF=0,SPTEF=1,SPRF=1 */
    RSPI0.SPSCR.BYTE = 0x00; /* SPSLN=0: シーケンス長1(0→0→0…) */
    RSPI0.SPBR = 0x02; /* RSPIビットレートレジスタ(SPCMDn.BRDV=0で 8.00Mbps) */
    RSPI0.SPDCR.BYTE = 0x04; /* SPFC=0,SLSEL=1,SPRDTD=0,SPLW=0 */
    RSPI0.SPCKD.BYTE = 0x00; /* SCKDL=0 */
    RSPI0.SSLND.BYTE = 0x00; /* SLNDL=0 */
    RSPI0.SPND.BYTE = 0x00; /* SPNDL=0 */
    RSPI0.SPCR2.BYTE = 0x00; /* SPPE=0,SPOE=0,SPIIE=0,PTE=0 */
    RSPI0.SPCMD0.WORD = 0xE7B3; /* RSPIコマンドレジスタ0(データ長12bit,MSBファースト,バースト転送,
    SSL0選択) */
    /* CPHA=1,CPOL=1,BRDV=0,SSLA=0,SSLKP=1,SPB=7,LSBF=0,SPNDEN=1,SLNDEN=1,SCKDEN=
    1 */
    RSPI0.SPCMD1.WORD = 0x070D; /* RSPIコマンドレジスタ1 */
    RSPI0.SPCMD2.WORD = 0x070D; /* RSPIコマンドレジスタ2 */
    RSPI0.SPCMD3.WORD = 0x070D; /* RSPIコマンドレジスタ3 */
    RSPI0.SPCMD4.WORD = 0x070D; /* RSPIコマンドレジスタ4 */
    RSPI0.SPCMD5.WORD = 0x070D; /* RSPIコマンドレジスタ5 */
    RSPI0.SPCMD6.WORD = 0x070D; /* RSPIコマンドレジスタ6 */
    RSPI0.SPCMD7.WORD = 0x070D; /* RSPIコマンドレジスタ7 */
    /* RSPI0のポート設定 */
    IOPORT.PFGSPI.BYTE = 0x1e; /*ポートファンクションレジスタ PC4~7を使用*/
    PORTC.DDR.BIT.B7 = 0;
    PORTC.ICR.BIT.B7 = 1; /* PC7(MISOA)の入力バッファ有効 */
    PORTC.PCR.BIT.B7 = 1; /* PC7(MISOA)のプルアップ抵抗有効 */
    #if SPI_SLAVE_MAX == 4
    IOPORT.PFHSPI.BYTE = 0xFF; /* RSPIS=1,RSPCKE=1,MOSIE=1,MISOE=1,SSL0E=1,SSL1E=1,SSL2E=1,SSL3E=1(SSLB0~S
    SLB3有効) */
    #elif SPI_SLAVE_MAX == 3
    IOPORT.PFHSPI.BYTE = 0x7F; /* RSPIS=1,RSPCKE=1,MOSIE=1,MISOE=1,SSL0E=1,SSL1E=1,SSL2E=1,SSL3E=0(SSLB0~S
    SLB2有効) */
    #elif SPI_SLAVE_MAX == 2
    IOPORT.PFHSPI.BYTE = 0x3F; /* RSPIS=1,RSPCKE=1,MOSIE=1,MISOE=1,SSL0E=1,SSL1E=1,SSL2E=0,SSL3E=0(SSLB0~S
    SLB1有効) */
    #else
    IOPORT.PFHSPI.BYTE = 0x1F; /* RSPIS=1,RSPCKE=1,MOSIE=1,MISOE=1,SSL0E=1,SSL1E=0,SSL2E=0,SSL3E=0(SSLB0の
    み有効) */
    #endif
    /* RSPI0制御レジスタ設定 */
    RSPI0.SPCR.BYTE = 0xB8; /* SPMS=0,TXMD=0,MODFEN=0,MSTR=1,SPEIE=1,SPTIE=1,SPE=0,SPRIE=1 */
    RSPI0.SPCR.BYTE; /* SPCR空読み */
    /* RSPI0割り込みプライオリティ */
    IPR(RSPI0, ) = 4; /* SPEI1,SPRI1,SPTI1,SPII1共通 */
    /* RSPI0割り込み要求ステータスフラグクリア */
    IR(RSPI0, SPTI0) = 0;
    IR(RSPI0, SPRI0) = 0;
    IR(RSPI0, SPEI0) = 0;
    /* RSPI0割り込み禁止 */
    IEN(RSPI0, SPTI0) = 0;
    IEN(RSPI0, SPRI0) = 0;
    /* RSPI0エラー割り込み許可 */
    IEN(RSPI0, SPEI0) = 1;
    }
  • In reply to えるん:

    えるん さん、こんにちは。NoMaYと申します。

    かふぇルネの小技ですが、以下のようにすると綺麗なインデントで貼り付け出来ますよ。今度、機会があったら試してみてください。あと、全く動かない時は、むしろプロジェクトのファイル一式をzipファイルに固めて一緒に添付した方が良いように(私はですが)思います。

    かふぇルネでリプライにソースを貼り付ける時は"Use rich formatting"モードで入力するとインデントが綺麗に貼り付け出来ますよ
    japan.renesasrulz.com/cafe_rene/f/002-2095199602/5119/use-rich-formatting

    以下のスレッドのように小出しで情報が増えていくより、最初から全体が見える方が良いかな、と、、、(ただ、全体を公開出来れば、ですが、、、)

    秋月RX621開発キットで、マイコンカ―ラリーH8 3048F-ONE用のサンプルプログラムでLCDを表示させたい。
    japan.renesasrulz.com/cafe_rene/f/forum5/5830/rx621-h8-3048f-one-lcd
     

  • In reply to NoMaY:

    NoMaYさん

    お返事ありがとうございます!仰ったモードで、試しに今のプロジェクトを張り付けてみました。
    全く出来あがってないので、お恥ずかしいですが、今の状態です。
    A/D自体は上手くいっているので、実はポートは足りているのですが、この機会にSPIを使えるようになりたいと思い、投稿いたしました。SPIの呼び出し関数部分など、基本的な部分はネットで公開されている方のサンプルを拝見して、変更しているのですが、デバッガとオシロを使っていますが、クロックすら観測できずにいます。実際に書いて動かしても、SPIの送受信部分でループしてしまうようで、その先に行かない状態です。
  • In reply to えるん:

    えるん さん、こんにちは。NoMaYです。

    これも、先ほど書いたスレッドの2つ目と同様に、以下のコメントのあるソースが入ってますね?ひょっとして、近々、大会があるのでしょうか? それはそれとして、入手元のURLって、どこでしょうか?元のソース(というか使用許諾など)を確認してみたいです。

    //----------------------------------------------------------------------------/
    /* ファイル名   lcd3.c                                                      */
    /* ファイル内容     LCD処理 Ver2.01                                             */
    /* Date         2006.05.25作成  2008.08.09改訂                               */
    /* Copyright    ジャパンマイコンカーラリー実行委員会                        */
    //----------------------------------------------------------------------------/

  • こんばんは。
    使用許諾ですが、他スレにあるとおり、ないです。しかし、ファイルの中身は100%私が書いたものです。e2studioに畳まれてしまっていて、気がつきませんでした。ちなみに、大会などに参加する予定はありません。友人からの頼まれたモノを作る過程で勉強しているところです。

Top Page [◀◀]  2   3   4   5   6   7   8   9   ... [▶▶Last Page