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);
}