AD変換をしている(DMA)

Dependencies:   ADC SD mbed

Committer:
k0050288
Date:
Tue Jul 17 04:52:19 2018 +0000
Revision:
0:a621ce2e8838
AD??(DMA)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
k0050288 0:a621ce2e8838 1 // F446RE ADC with DMA
k0050288 0:a621ce2e8838 2 // ADC read shifted to 16 bits, our readn is only 12 bits
k0050288 0:a621ce2e8838 3 // messy, TODO need ADC channel from pin number
k0050288 0:a621ce2e8838 4
k0050288 0:a621ce2e8838 5 #include "mbed.h"
k0050288 0:a621ce2e8838 6 #include "adc.h"
k0050288 0:a621ce2e8838 7 #include "SD.h"
k0050288 0:a621ce2e8838 8
k0050288 0:a621ce2e8838 9 adc gadc;
k0050288 0:a621ce2e8838 10 SD gSD;
k0050288 0:a621ce2e8838 11
k0050288 0:a621ce2e8838 12 DigitalIn btn(USER_BUTTON); // User button
k0050288 0:a621ce2e8838 13 PwmOut OSILO_PWM(PC_7);
k0050288 0:a621ce2e8838 14 Serial pc(USBTX, USBRX); // tx, rx
k0050288 0:a621ce2e8838 15
k0050288 0:a621ce2e8838 16 void user_system_create()
k0050288 0:a621ce2e8838 17 {
k0050288 0:a621ce2e8838 18 gadc.init();
k0050288 0:a621ce2e8838 19 gSD.init();
k0050288 0:a621ce2e8838 20
k0050288 0:a621ce2e8838 21 // PWM出力の初期化処理 <PWM出力開始>
k0050288 0:a621ce2e8838 22 OSILO_PWM.period_ms(1); // PWM周波数は1kHz(周期:1ms)
k0050288 0:a621ce2e8838 23 OSILO_PWM.write(0.5f); // Duty比:50%
k0050288 0:a621ce2e8838 24 }
k0050288 0:a621ce2e8838 25
k0050288 0:a621ce2e8838 26 int main()
k0050288 0:a621ce2e8838 27 {
k0050288 0:a621ce2e8838 28 /* init */
k0050288 0:a621ce2e8838 29 user_system_create();
k0050288 0:a621ce2e8838 30
k0050288 0:a621ce2e8838 31 pc.printf("PUSH USER BUTTON\n");
k0050288 0:a621ce2e8838 32 while(btn); // Wait user button
k0050288 0:a621ce2e8838 33
k0050288 0:a621ce2e8838 34 /* Start ADC with DMA */
k0050288 0:a621ce2e8838 35 pc.printf("Start ADC\n");
k0050288 0:a621ce2e8838 36 gadc.read(gadc.ADCVal, sizeof(gadc.ADCVal));
k0050288 0:a621ce2e8838 37
k0050288 0:a621ce2e8838 38 for(int i = 0; i < ADC_TIMES; i++) {
k0050288 0:a621ce2e8838 39 pc.printf("%d,%d\n",i,gadc.ADCVal[i]);
k0050288 0:a621ce2e8838 40 }
k0050288 0:a621ce2e8838 41
k0050288 0:a621ce2e8838 42 for(int i = 0; i < ADC_TIMES; i++) {
k0050288 0:a621ce2e8838 43 gSD.setData(i, gadc.ADCVal[i]);
k0050288 0:a621ce2e8838 44 gSD.write();
k0050288 0:a621ce2e8838 45 }
k0050288 0:a621ce2e8838 46
k0050288 0:a621ce2e8838 47 gSD.finish();
k0050288 0:a621ce2e8838 48 }