Cosmo-Z Library
2.0.5
|
オシロスコープのように波形をキャプチャするには、 csz_capture_execute() 関数を使います。
この関数は波形を取得してDMAメモリに格納します。
格納された波形データは csz_capture_datacopy() 関数を使ってユーザ用のバッファにコピーします。
この関数ではプレトリガ機能といって、トリガよりも前の波形を取り込むことができます。 プレトリガの設定は csz_set_pretrig() 関数で行います。
csz_capture_execute() 関数の引数にCAPTYPE_AUTOを指定した場合は、
オシロスコープのように少しの時間待ってからキャプチャを開始します。
void capture_test() { int MAX_CH = 8; // チャネル数 int LENGTH = 10000; // キャプチャしたい長さ csz_capture_timeout(10000); // 10sでタイムアウト // ユーザ用バッファを作る uint16_t **wave = (uint16_t **)malloc(sizeof(uint16_t *) * MAX_CH); for(int ch=0;ch < MAX_CH; ch++) { wave[ch] = (uint16_t *)malloc(sizeof(uint16_t) * LENGTH); } // キャプチャの実行 csz_capture_execute( 0xff,LENGTH,CAPTYPE_AUTO); // DMAメモリからユーザバッファへコピーする for(int ch = 0; ch < MAX_CH; ch++) { csz_capture_datacopy(0xff,ch+1,LENGTH,wave[ch]); } // 取得した値をダンプする for(int i=0;i < LENGTH; i++) { printf("%4d,",i); for(int ch=0;ch < MAX_CH; ch++) { printf("%4d,",wave[ch][i]); } printf("\n"); } for(int ch=0;ch < MAX_CH; ch++) { free(wave[ch]); } free(wave); }