RX63N-USBファンクション用(ターミナル)

RX63N-USBファンクション用でターミナルを追加してみました

なかなか快適です、これはUSBバルク転送で実現しました、本来ならインタラプト転送なのでしょうが、ブロック転送も両用しないといけないためバルク転送でやってます、ターミナル本体は後程アップロードいたします。

Anonymous
Parents
  • だいぶ前にアップさせていただきました、参考用のサンプルソフトの件で、お知らせです、何名かの方にダウンしていただきましてありがとうございます、私の方でこのまま使用しておりましたが、SDRAMでファーム実行時にUSBのバルクOUT転送が反応しないという異常が見つかりました、これはほとんどの場合異常はないのですが、特定の状況で発生いたします、この原因を調べましたところ、突き止めることができましたので、ご報告いたします、この原因はRXのUSB0はUSB1.1でパイプの転送幅が8Bit/16Bitに限られるためでございます、それでソース以下の部分を修正しますと、正常に動作いたしました。

    ///////////////////////////////////////////////////////////////////////

    //DMA Transfer Size

    ///////////////////////////////////////////////////////////////////////

    //USB_U32 trncount<-transfer byte

    //USB_U32 dtptr<-transfer data pointer

    //->DMA transfer size (0=8bit/1=16bit/2=32bit)

    USB_U32 usb_com_get_dmasize(USB_U32 trncount,USB_U32 dtptr)

    {

    USB_U32 size;

    /*

    if( ((trncount & 0x0001) != 0) || ((dtptr & 0x00000001) != 0) ) {

    //転送バイト数が奇数または転送データ領域が8ビットの場合

    size=0;//8bit

    }

    else

    if( ((trncount & 0x0003) != 0) || ((dtptr & 0x00000003) != 0) ) {

    //転送バイト数が2の倍数または転送データ領域が16ビットの場合

    size=1;//16bit

    }else{

    //転送バイト数が4の倍数または転送データ領域が32ビットの場合

    size=2;//32bit

    }

    */

    //RX631

    if( ((trncount & 0x0001) != 0) || ((dtptr & 0x00000001) != 0) ) {

    //転送バイト数が奇数または転送データ領域が8ビットの場合

    size=0;//8bit

    }else{

    //転送バイト数が2の倍数または転送データ領域が16ビットの場合

    size=1;//16bit

    }

    return size;

    }

    ///////////////////////////////////////////////////////////////////////

    //DMA Transfer Size

    ///////////////////////////////////////////////////////////////////////

    以上です。

Comment
  • だいぶ前にアップさせていただきました、参考用のサンプルソフトの件で、お知らせです、何名かの方にダウンしていただきましてありがとうございます、私の方でこのまま使用しておりましたが、SDRAMでファーム実行時にUSBのバルクOUT転送が反応しないという異常が見つかりました、これはほとんどの場合異常はないのですが、特定の状況で発生いたします、この原因を調べましたところ、突き止めることができましたので、ご報告いたします、この原因はRXのUSB0はUSB1.1でパイプの転送幅が8Bit/16Bitに限られるためでございます、それでソース以下の部分を修正しますと、正常に動作いたしました。

    ///////////////////////////////////////////////////////////////////////

    //DMA Transfer Size

    ///////////////////////////////////////////////////////////////////////

    //USB_U32 trncount<-transfer byte

    //USB_U32 dtptr<-transfer data pointer

    //->DMA transfer size (0=8bit/1=16bit/2=32bit)

    USB_U32 usb_com_get_dmasize(USB_U32 trncount,USB_U32 dtptr)

    {

    USB_U32 size;

    /*

    if( ((trncount & 0x0001) != 0) || ((dtptr & 0x00000001) != 0) ) {

    //転送バイト数が奇数または転送データ領域が8ビットの場合

    size=0;//8bit

    }

    else

    if( ((trncount & 0x0003) != 0) || ((dtptr & 0x00000003) != 0) ) {

    //転送バイト数が2の倍数または転送データ領域が16ビットの場合

    size=1;//16bit

    }else{

    //転送バイト数が4の倍数または転送データ領域が32ビットの場合

    size=2;//32bit

    }

    */

    //RX631

    if( ((trncount & 0x0001) != 0) || ((dtptr & 0x00000001) != 0) ) {

    //転送バイト数が奇数または転送データ領域が8ビットの場合

    size=0;//8bit

    }else{

    //転送バイト数が2の倍数または転送データ領域が16ビットの場合

    size=1;//16bit

    }

    return size;

    }

    ///////////////////////////////////////////////////////////////////////

    //DMA Transfer Size

    ///////////////////////////////////////////////////////////////////////

    以上です。

Children
No Data