15件の結果を表示中 - 1 - 15件目 (全94件中)
  • 投稿者
    検索結果
  • #21424

    KazumaIto
    従業員

    guest様

    ご教授ありがとうございます。

    以下回答になりますので、ご確認の程お願いします。

    [質問]
    トリガがCTR=0だったのかCTR=PRDだったのかを判断する理由をご教授いただいてもよろしいでしょうか。

    [回答]
    TBSTSレジスタのCTRDIRビットを読み取ることで、現在アップカウントかダウンカウントかを判定することができます。例えばCTRDIR=1の時、アップカウントであるため、CTR=0でトリガしていることが分かります。逆にCTRDIR=0の時、ダウンカウントであるため、CTR=PRDでトリガしていることが分かります。ただこの判別方法は、トリガしてから次のトリガになるまでの間(アップorダウンカウントの最中)でイベントが起こり、その後でCTRDIRビットを読み取ることが条件となっています。

    参考文献
    https://www.ti.com/lit/ug/spruiw9b/spruiw9b.pdf %5B20.17.2.5 TBSTS Register]

    以上となります。

    その他ご質問等ございましたら、お気軽にご連絡いただけると幸いでございます。

    よろしくお願い致します。

    ITO

    #20633

    トピック: I2C Read/Write Bit設定について

    フォーラム内 MSP430

    guest

    現在I2Cセンサを使用するソフトウェアの開発を行っています。

    I2Cを取り扱うのが初めてのため、基本的な質問で恐縮ですがRead/Write Bitについてお教えください。

    MSP430側をマスターとし、スレーブアドレス:0x28のセンサと通信を行います。

    通信の流れとして、スレーブアドレス0x28をUCB0I2CSAに渡すのが一番最初のステップになると思っています。

    この時、Read/Write Bitの設定はどのように行ったら良いのでしょうか。

    最初はスレーブアドレスを1Bitシフトし7Bit~1Bitでアドレス設定,0BitにRead/Writeを設定すれば良いのかと思い、UCB0I2CSAに8Bit渡すつもりでした。

    しかしユーザーガイドの38.4.9 UCBxI2CSA Registerにて9~7Bitは無視されるとの記載があり混乱しています。

    認識間違い等ございましたらご教授頂けますと幸いです。

    下記にI2Cレジスタの初期設定等を示します。

    今回割り込みを使用しない形での実装で進めています。

    void initGPIO()
    {
    // Disable Interrupts before altering Port Mapping registers
    __disable_interrupt();
    // Enable Write-access to modify port mapping registers
    PMAPPWD = 0x02D52;

    //I2C Pins
    P2SEL |= BIT1 | BIT2;
    P2MAP1 = PM_UCB0SCL;
    P2MAP2 = PM_UCB0SDA;
    // Disable Write-Access to modify port mapping registers
    PMAPPWD = 0;
    }

    void initI2C()
    {
    UCB0CTL1 |= UCSWRST;                      // Enable SW reset
    UCB0CTL0 = UCMST + UCMODE_3 + UCSYNC;     // I2C Master, synchronous mode
    UCB0CTL1 = UCSSEL_2 + UCSWRST;            // Use SMCLK(20MHz), keep SW reset
    UCB0BR0 = 200;                            // fSCL = SMCLK/200 = ~100kHz
    UCB0BR1 = 0;
    UCB0I2CSA = 0x28;                                // Slave Address is 0x28
    UCB0CTL1 &= ~UCSWRST;                     // Clear SW reset, resume operation
    }

     

     

     

    #20543

    guest

    追記

    ご提案いただいた方法で、Resetボタンを押した状態で
    接続を行いましたが、パスワードをUnlockすることが出来ませんでした。

    DebugセッションのCPUリスト横のアイコンは接続状態になっていますが、
    接続時にエラーが出力されていたので、正常な状態にないかもしれません。
    接続後にCCSからCPU Reset等は試しました。

    以上ご確認の程よろしくお願いいたします。

    エラーログ:
    C28xx_CPU1: Trouble Reading Register PC: (Error -1137 @ 0x0) Device is held in reset. Take the device out of reset, and retry the operation. (Emulation package 9.7.0.00213)
    C28xx_CPU1: GEL: Error while executing OnTargetConnect(): Internal error while writing 0x0005F412@Data
    at *((int*) 0x5F412)=0x0003 [f280049c.gel:83]
    at OnTargetConnect()

    #20536
    umamiti
    umamiti
    従業員

    ご投稿ありがとうございます。

    TRMとC2000Wareのdscmサンプルプロジェクトの.sysconfigを参考にしていますが、
    特にZoneを分けずに一括でパスワード保護したい場合は以下のような設定で良いのでしょうか。
    リリース後もパスワードを知る作業者によるデバッグや書き換えは行います。

    【ZONE1 Header】
    ・PSWDLOCK :Enable
    【ZONE1 Per LINKPOINTER】
    ・Password 0-3:任意パスワード
    ・RAM、FLASH:すべて「Secured by this zone」

    基本的には上記の設定を行うことで、ご希望の設定になるかと存じますが、念のため、再度下記の各資料をご確認いただけますようお願い致します。

    ・PSWDLOCK、CRCLOCKは必要か

    それぞれ必須機能ではございませんので、用途に合わせて貴社にて設定頂ければと存じます。
    ・PSWDLOCK・・・設定することで、USER OTP内のパスワードの場所をロックすることができます。
    ・CRCLOCK・・・設定することで、セキュアメモリ上のデータに対するVCU経由でのCRC計算をロックすることが出来ます。
    詳細につきましては、TMR「3.13.1.5 Password Lock」とこちらのURLを合わせてご参照下さい。

    ・「Secured by this zone」と「〃(EXEONLY)」の違い

    「Secured by this zone」では、該当するGRABRAM/GRABSECTのみが変更されます。
    「Secured by this zone(EXEONLY)」では、該当するGRABRAM/GRABSECTとEXEONLYRAM/EXEONLYSECTが変更され、EXEONLYはより高度なセキュリティを実装します。
    詳細につきましては、TRM「3.13.1.4 Execute-Only Protection 」をご参照下さい。

    ・同じZONEによってSecuredになっていれば、CLAタスクなど
    特定のメモリにロードしたプログラムからでもアクセスは制限されないという認識で良いか。

    本製品につきましては、同じソーン内であればCLAからのアクセスが可能とのことです。
    詳細につきましては、こちらのURLをご参照下さい。

    以上、よろしくお願いいたします。

    #20050

    返信先: WDTが効かない

    umamiti
    umamiti
    従業員

    ご確認ありがとうございます。また、追加でのご連絡ありがとうございます。既にご確認済の内容もございますが、以下にまとめて回答させて頂きます。

    >リセット後は、SYSRSTIV 16Hになっていますので、
    >WDTが効いていると思うのですが、WDTの使い方が
    >間違っているのでしょうか。

    WDT_ISRを使用する場合は、WDTをInterval Timer Modeに切り替える必要がございます。こちらのサンプルコードの通り、WDTCTLレジスターのWDTTMSELビットをセットする必要がございます。※ユーザーズ・ガイド「24.2.3 Interval Timer Mode」をあわせてご参照ください。

     

    >また、WDT_ISR内でPMMCTL0 でリセットを掛けると、ハードウェアリセットとなるのでしょうか。

    厳密にはソフトウェアリセットとなりますが、PMMSWBOR をセットした場合はBORが発行され、PMMSWPORをセットした場合はPORが発行されます。なお、PMMCTL0へのアクセスについては、パスワード(0A5h)を一緒に書き込む必要があり、パスワードが一致していない場合はPUCが発行されます。
    ユーザーズ・ガイド「2.3.1 PMMCTL0 Register」、及びこちらのサンプルコードをご参考ください。

    BOR, POR, PUCの違いについては、ユーザーズ・ガイド「1.2 System Reset and Initialization」、及びこちらのURLをご参考ください。

     

    >現状、ハードウェアリセットを行っていない為、WDTによるPUCリセット後に
    >HWリセットまで実施したいと思います。
    >下記のように処理すればよろしいでしょうか。

    上記にて回答させていただいた通り、PMMCTL0アクセス時にパスワードを合わせて書き込み、BORかPORのどちらかのみをセットして頂ければ、意図したリセットが発行できるかと存じます。

    以上、よろしくお願いいたします。

     

    #20040

    トピック: WDTが効かない

    フォーラム内 MSP430

    guest

    マイコンは、MSP430FR6972を使用しております。
    開発環境は、CCS v12を使用しております。
    クロックは4Mhzと32Khzを外部入力しております
    WDTを1秒でタイムアウトするように設定しております。

    現場のマイコンでフリーズする現象が起きており、
    リセットをすると動き始めるため、WDTが効いていないように思えます。

    デバッグ用にソフトウェアで無限ループとなるように動作させたところ、
    正常にWDTが効くことが確認できております。
    1秒と10msのタイマを使って、内部処理をしているため、
    そのタイミングでWDTをクリアしております。
    以下コードの抜粋になります。

     

    #define WatchDog (WDTPW | WDTCNTCL | WDTSSEL__ACLK | WDTIS_4); // 1s 32kHzの時に1秒

    volatile unsigned char interrupt_timer0_triggered = 0;
    volatile unsigned char interrupt_timer1_triggered = 0;

    int main(void)
    {
    WDTCTL = WatchDog;
    SFRIE1 |= WDTIE; // Enable WDT interrupt
    _delay_cycles(4000); // 1ms
    initialize(); // 初期化処理呼び出し
    g_sysrstiv = SYSRSTIV;
    while (1){
    if (interrupt_timer0_triggered){
    // 10ミリ秒周期タイマのタイムアウト
    timer0();
    WDTCTL = WatchDog;
    }
    if (interrupt_timer1_triggered){
    // 1秒周期タイマのタイムアウト
    timer1();
    WDTCTL = WatchDog;
    }
    __bis_SR_register(LPM3_bits + GIE);

    }
    }

     

    //interrupt_timer0_triggered,interrupt_timer1_triggeredはタイマ割り込み発生時に1となります。

    フリーズしているのにWDTが効かなるケースは御座いますでしょうか。

     

    #19919

    トピック: TPS659037のSlave Address

    フォーラム内 電源IC

    guest

    お世話になります。

    PMIC TPS659037のI2C Slave Addressについて伺います。

    本ICのデータシートの Table 5-7. I2C Address Configurationを見ますと、

    I2C_SPIレジスタ ID_I2C1[3:0]の値によってSlave Addressが規定されております。

    一方、Register MapでI2C_SPIレジスタの値を確認しますと、Reset時の値が’X’となっており、

    ドキュメントからはどちらが正解か読み取れません。なお、実機で確認したところ0x58-5Bとなっておりました。

    どこを参照すればよいかご教示願います。

    #17565

    Kato
    従業員

    TLV320AIC3120EVM-Uを使用されていると思いますが、PC上でUSB-AudioEVMとして認識されていれば、録音・再生が可能デバイスと考えます。
    大前提としてCodecControlをサポートしているWindows OSはACEV-1A EVM User’s Guideに記載されている通り、XP、Vista、及び7になります。
    念のため、ご使用のWindows OSをご確認頂けますと幸いです。
    また、CodecControlを起動し、[View]⇒[Init Script…]を選択しますと、[AIC3120_USB_Init.txt]が表示されます。
    Data Sheet p.42の7.3.11 Example Register Setup to Record Analog Data Through ADC to Digital Outに記載されているScriptをCopy & Pasteし、実行(Execute)して頂けますでしょうか?
    その後に録音が可能なPCアプリを起動し、録音が可能かどうかをご確認下さい。
    また、再生につきましてはData Sheet p.62の7.3.12.15 Example Register Setup to Play Digital Data Through DAC and Headphone/Speaker Outputsに記載されているScriptをご活用下さい。
    上記の手順で正常に動作しない場合、別のPCでも同様に動作をご確認頂けますと幸いです。
    ※TLV320AIC3120はオーディオ製品になりますので、フォーラムにご投稿の際はオーディオのカテゴリーにお願い致します。

    #17480

    Kato
    従業員

    お問い合わせ頂きましたTLV320AIC3120のRegister設定に関しまして以下の通り、
    コメントさせて頂きます。

    ① Page 0 / Register 1 : Software Reset
    ResetがActiveのように見えますがReadbackした際、D0は常に”1″のままでしょうか?

    ② Page 0 / Register 4 : Clock-Gen Muxing
    CODEC_CLK=PLL_CLKで、PLL_CLK=BCLKが選択されています。
    外部から供給されるBCLKを内部のPLLに入力し、PLLでMaster Clockを生成して使用することを
    想定されておりますでしょうか?
    同様にPLLに関する設定(Register 5からRegister 20)につきましてはData Sheet p.67
    「7.3.13 CLOCK Generation and PLL」をご参照頂き、意図した設定かどうかをご確認願います。
    これらの設定はBCLK、WCLKに適用される周波数に依存致します。
    最終的にADC_fsが所望のfsになるかどうかがポイントになります。

    ③ Page0 / Register 36 : ADC Flag Register
    ADCがPower-downしているように見えますが、一方でPage 0 / Register 71 : ADC Digital Micでは
    D7が”1″ですので、Power-upの設定が適用されています。

    ④ Page 0 / Register 60 : DAC Processing Block / miniDSP Selection
    0x0Bを設定されておりますが、Data Sheet p.94に記載されている通り、Do not useになります。

    ⑤ DACの設定
    現状の設定ではDACは使用しない設定としてReviewさせて頂いております。

    お手数をお掛け致しますが、PLL関連の設定を今一度ご確認頂けますと幸いです。

    #16101

    GC
    従業員

    Shotaro様

     

    お問い合わせありがとうございます。

     

    ACA(Accessory Charger Adapter)をType-Cで実現と御座いますので、DFP時に5V/1.5A(CDP相当)の電力給電を実現されたいという認識でよろしいでしょうか?

    また、VBUS 5Vの可変(9V、20Vなど)は不要という認識でよろしいでしょうか?

     

    上記ご使用の場合、スタンドアローンでのご検討が難しいのですが(I2C設定用のMCUが必要)、一案として以下TI製品を紹介させて頂きます。

    ※ご仕様が異なっておりましたら申し訳御座いません。

     

    <紹介>

    VBSU 5Vの可変が不要な場合、USB Power deliveryの実装はせずとも、技術記事にも掲載されている、

    USB Type-CのCCロジック & ポートコントローラのTUSB320LAI/HAIで構成可能と考えられます。

     

    TUSB320LAI/HAI

    https://www.tij.co.jp/jp/lit/ds/symlink/tusb320lai.pdf

     

    PORT端子を未接続とし、DRPに設定頂ければ、接続されるデバイスに応じて給電側/受電側(DFP/UFP)の切り替えが出来ます。

    (データシート 3ページの” Pin FunctionsのPORT”をご参照下さい。)

     

    しかしながら、TUSB320LAI/HAIの電流通知設定が、デフォルトでは500mA or 900mA設定なっておりますので、

    1.5Aで通知したい場合には、I2CによってCURRENT_MODE_ADVERTISE registerを変更頂く必要が御座います。

    (データシート 11ページの” 7.2.2 Type-C Current Mode”、および17ページの” Table 8. CSR Registers (address = 0x08)のbit 7:6”をご参照下さい。)

     

    何卒よろしくお願いします。

     

    GC


    mickey.mouse
    参加者

    解決しました。
    古い SFO_v8_fpu_lib_build_c28.lib をリンクしていたこと、
    また、SFO() のトレーニング方法が以前と異なるようで、
    サンプルに合わせたところハイレゾ部分が信号に付加されるようになりました。

    //
    // Calling SFO() updates the HRMSTEP register with calibrated MEP_ScaleFactor.
    // HRMSTEP must be populated with a scale factor value prior to enabling
    // high resolution period control.
    //
    while(status == SFO_INCOMPLETE)
    {
    status = SFO();
    if(status == SFO_ERROR)
    {
    error(); // SFO function returns 2 if an error occurs & # of MEP
    } // steps/coarse step exceeds maximum of 255.
    }

    #14461

    Nishie
    従業員

    maida様

    ■13でTRIGGER Register(0x0E)に0x0010をwriteして更新しようとしており、その場合LDACpinをLOWにする必要はないとの認識で合ってますでしょうか?

    また、13~14の間に2.4us(Tdacwait)以上の待機時間が必要ということでしょうか?

    →ご認識の通り、TRIGGER Registerに0x0010を書き込んで頂ければ、LDACピンをLowにする必要はございません。

    はい、13~14の間に2.4us以上待機時間を設けて下さい。

    ■SPICONFIG Register(0x03)の初期値が0x0A24ですが、power-down modeからacitve modeにする為、1でSPICONFIG Register(0x03)に0x0A04を設定しておりますが、問題がございましたら教えて下さい

    →問題ございません。

    以上、宜しくお願いいたします。

    Nishie

    #14460

    maida
    参加者

    ご回答ありがとうございます。
    追加で質問します。

    >13~14の間にLDACをLowにした後、DACレジスタ更新のため2.4us(Tdacwait)以上待機時間を設けて下さい。
     13でTRIGGER Register(0x0E)に0x0010をwriteして更新しようとしており、その場合LDACpinをLOWにする必要はないとの認識で合ってますでしょうか?
     また、13~14の間に2.4us(Tdacwait)以上の待機時間が必要ということでしょうか?

    >また、レジスタアドレス0x03hのデフォルト設定は0x0A24になります。
     SPICONFIG Register(0x03)の初期値が0x0A24ですが、power-down modeからacitve modeにする為、1でSPICONFIG Register(0x03)に0x0A04を設定しておりますが、問題がございましたら教えて下さい。

    #14413

    maida
    参加者

     レジスタアクセス後ののCS Highの時間の確認有難うございます。

     セッティングレジスタ(0x02h~0x0Eh)設定後のCS Highの時間は最低50ns、セッティングレジスタ以外のレジスタ設定に関しては、レジスタ設定後、2.4us以上待機時間を設けるよう回答頂きましたが、下記の初期設定の場合、1,2,3,4,13,14のレジスタアクセス後のCS Highの時間は最低50nsで、5~12のデータレジスタアクセス後のCS Highの時間は2.4us必要ということでしょうか?
     もし、データレジスタアクセス後のCS Highの時間が2.4us必要ということでしたら、下記のDAC出力更新の設定でCS Highの時間を80nsで設定してもデータ更新ができていることと矛盾しております。

     再度確認させてください。
     連絡しました初期設定のレジスタの設定の順番に問題ございませんでしょうか?
     セッティングレジスタ(0x02h~0x0Eh)によっては、設定後のCS Highの時間が50nsよりも長い時間必要なレジスタがございませんでしょうか?
     データレジスタアクセス後のCS Highの時間が2.4us必要なのでしょうか?

    ■初期設定
     1.アドレス0x03に0x0A04 // device power-down mode解除
     2.アドレス0x0Bに0xAAAA // OUT7-4 ±10V設定
     3.アドレス0x0Cに0xAAAA // OUT3-0 ±10V設定
     4.アドレス0x06に0x0FF0 // LDAC trigger (synchronous mode)
     5.アドレス0x14に0x8000 // OUT0 0V
     6.アドレス0x15に0x8000 // OUT1 0V
     7.アドレス0x16に0x8000 // OUT2 0V
     8.アドレス0x17に0x8000 // OUT3 0V
     9.アドレス0x18に0x8000 // OUT4 0V
     10.アドレス0x19に0x8000 // OUT5 0V
     11.アドレス0x1Aに0x8000 // OUT6 0V
     12.アドレス0x1Bに0x8000 // OUT7 0V
     13.アドレス0x0Eに0x0010 // register LDAC
     14.アドレス0x09に0xF00F // power-down mode解除

    ■DAC出力更新
     初期設定後、下記の1~5の順番で設定しDACの出力を更新しております。
     1.アドレス0x14(or 0x15)に16bitのデータを設定
     2.アドレス0x16(or 0x17)に16bitのデータを設定
     3.アドレス0x18(or 0x19)に16bitのデータを設定
     4.アドレス0x1A(or 0x1B)に16bitのデータを設定
     5.LDACpinを20ns Low
     1~4のレジスタアクセスのCS High時間は80nsに設定。

    #14330

    maida
    参加者

    ご回答ありがとうございました。
    Synchronous modeの場合、Tdacwaitは、LDACの立下りエッジから後続のLDACの立下りエッジまでの待機時間とのとこで承知しました。
    現状、LDACpinを20ns Lowから再度アドレス0x14(or 0x15)に16bitのデータを設定を行うまでの間に待機時間は、25us程度を想定しています。

    確認になりますが、頂いたタイムチャートのCH3 DATAレジスタにアクセスしてから、CH3 DATAレジスタにアクセスするまでに必要なCSのwait時間は、データシートに記載されておりますtcshighの25ns以上で宜しいでしょうか?

    また、#14023項の質問の繰り返しになりますが、電源起動後DAC81408に初期設定として以下の様にレジスタ設定を行っていますが、レジスタ間のアクセスのwait時間を80nsとしたところうまくいきません。
    1.アドレス0x03に0x0A04 // device power-down mode解除
    2.アドレス0x0Bに0xAAAA // OUT7-4 ±10V設定
    3.アドレス0x0Cに0xAAAA // OUT3-0 ±10V設定
    4.アドレス0x06に0x0FF0 // LDAC trigger (synchronous mode)
    5.アドレス0x14に0x8000 // OUT0 0V
    6.アドレス0x15に0x8000 // OUT1 0V
    7.アドレス0x16に0x8000 // OUT2 0V
    8.アドレス0x17に0x8000 // OUT3 0V
    9.アドレス0x18に0x8000 // OUT4 0V
    10.アドレス0x19に0x8000 // OUT5 0V
    11.アドレス0x1Aに0x8000 // OUT6 0V
    12.アドレス0x1Bに0x8000 // OUT7 0V
    13.アドレス0x0Eに0x0010 // register LDAC
    14.アドレス0x09に0xF00F // power-down mode解除
     レジスタアクセスの間で、CS High時間を80usよりも長く設定する必要があるところがございませんでしょうか?
     5から12までのDATAレジスタ同士のアクセスの間隔に25ns以上のCSのwait時間が必要とすると、DATAレジスタ同士以外の1から2,2から3,3から4,4から5,12から13,13から14のレジスタのアクセス間隔で、CS High時間を80usよりも長く設定する必要があるところがございませんでしょうか?

15件の結果を表示中 - 1 - 15件目 (全94件中)