SynergyS7G2にて1chのAD計測を連続で行い、AD結果を内蔵メモリに順次保存するプログラムを検討しておりますが、SynergySSP設定、APIなどの操作などが分かりません。下記、ご教授お願いいたします。ADCの速度については、最速の2.5Mbpsを検討中。
HALドライバ設定内容 呼び出しから下記設置済みです。 設定不足があればご教授願います。
g_adc0 ADC Driver 設定 プロパティ 値 Mode SiggleScan Channel0 Use in Nomal/GroupA その他設定変更なし
hal_entry.cの記述------------------ g_adc0.p_api->open(g_adc0.p_ctrl, g_adc0.p_cfg);
for(i=0 ; i<1000 ; i++){ g_adc0.p_api->scanStart(g_adc0.p_ctrl); g_adc0.p_api->read(g_adc0.p_ctrl, ADC_REG_CHANNEL_0, &adc_data); adc_datamem[i] = adc_data; }------------------ 現状の不明点・ADCのスキャン速度設定方法が不明・ADC結果をメモリに1000データコピーしたいが、速度面からもDMAC,DTC,ELC を 使う必要がある。最適な方式でコピーの方法を知りたい。・1000回計測後に完了を知らせる方法を知りたい。
よろしくお願いいたします。
はじめまして、はしさん。Hosです。はしさんのやりたいことは、ADC Periodic Frameworkを使用することで実現ができるのではないかと思います。ただし、そこまで高速にADCをかけたことがないので、どこまで高速化できるかはいまいちわかりません。すいません。(2.5MHzだとADCの変換時間が確保できないのでは?という懸念です)私が使用している環境は、ちょっと古く、 e2studio 6.2.1 SSP 1.5.0 rc1となります。設定はSynergy Configurationから行っていきます。まずはThreadsタブでHAL/CommonではADC Periodic Frameworkは使用できませんので、New Threadから新しいスレッドを作成します。New Stack>Framework>Analog>ADC Periodic Frameworkを選択します。主にコンフィグレーションするのは以下の3つのStackになります。・ADC Periodic Framework:バッファサイズ、コールバックの設定・ADC Driver:ADCの設定・Timer Driver:周期設定・Transfer Driver:ほぼ固定値各Stackの詳しい設定はこちらに記載があります。www.renesas.com/.../r11an0115eu0102-synergy-adc-periodic-fw-mod-guide.pdfはしさんの不明点のスキャン速度の設定方法が、スキャンの周期であるのでしたらTimer Driverで設定します。また、1000回計測後に完了を知らせる方法ですが、ADC Periodic Frameworkのコールバックを使用します。ただし、このコールバックの構造体は以下のような定義になっており規定回数でコールされるというよりも、今回のコールバックではどこまでバッファが更新されたかを知らせてくれるものでした。コールバックされる条件についてより詳細に知りたい場合は、SSPのソースコードを探っていくか、Renesasに問い合わせるかとなるかと思います。(恐らく、一定回数ADCからデータ取得でコールバックされるとは思いますので、上手く設定できれば1000回に合わせられそう)
/** ADC callback arguments definitions */typedef struct st_sf_adc_periodic_callback_args{ sf_adc_periodic_event_t event; ///< Periodic ADC callback event uint32_t buffer_index; ///< Index to the buffer where the new data is stored. void const * p_context; ///< Placeholder for user data adc_data_size_t * p_data_buffer; ///< Pointer to the buffer that will store the samples uint32_t num_new_samples; ///< Number of new samples in the data buffer} sf_adc_periodic_callback_args_t;
また、これらの設定とは別途PinsタブでADCを使用する設定が必要となります。> ・ADC結果をメモリに1000データコピーしたいが、速度面からもDMAC,DTC,ELC を> 使う必要がある。最適な方式でコピーの方法を知りたい。こちらについては、DTC等を使用するのであれば別途Transfer Driverを設定することになるかと思いますが、最適な方式はケースバイケースと思いますので回答は控えさせてください。