AM中波放送用SDR.CICフィルタのみを使用.CQ出版社「トランジスタ技術」誌,2021年4月号に掲載

Dependencies:   mbed

Revision:
2:4bec6b2be809
Parent:
1:30d9fb51dec1
Child:
3:878a48f15e89
--- a/SDR_Library/F446_ADC.cpp	Mon Sep 23 07:32:10 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
-//-------------------------------------------------------------
-//  F446 内蔵 ADC をポーリング方式で使うためのクラス
-//      ADC2 を使用(固定)
-//
-//  2019/07/15, Copyright (c) 2019 MIKAMI, Naoki
-//-------------------------------------------------------------
-
-#include "F446_ADC.hpp"
-#include "PeripheralPins.h" // PinMap_ADC を使う場合に必要
-#pragma diag_suppress 870   // マルチバイト文字使用の警告抑制のため
-// PeripheralPins.c は以下よりたどって行けば取得可能
-// https://gitlab.exmachina.fr/fw-libs/mbed-os/tree/5.8.1
-
-namespace Mikami
-{
-    // コンストラクタ
-    AdcF446::AdcF446(float fSampling, PinName pin) : myAdc_(ADC2)
-    {
-        AnalogIn adc_(pin);     // GPIO を ADC 用に切り替えるために必要
-        // この時点で ADC1 の CR2 の ADON ビットは 0 になっている
-        __HAL_RCC_ADC1_CLK_DISABLE();   // ADC1 に供給されているクロックを停止する
-
-        __HAL_RCC_ADC2_CLK_ENABLE();    // ADC2 にクロックを供給する
-        // __HAL_RCC_ADC2_CLK_ENABLE() の定義:stm32f4xx_hal_rcc_ex.h
-
-        // pin に対応するチャンネルを使うための設定
-        myAdc_->SQR3 = STM_PIN_CHANNEL(pinmap_function(pin, PinMap_ADC));
-        // pinmap_function() のヘッダファイル: mbed\hal\pinmap.h
-        // STM_PIN_CHANNEL() の定義:PinNamesTypes.h
-
-        // ADC の CR1 の設定
-        myAdc_->CR1 = 0x0;      // AD 変換終了割り込みを禁止
-        // ADC の CR2 の設定
-        myAdc_->CR2 = ADC_EXTERNALTRIGCONVEDGE_RISING   // 外部トリガの立ち上がりで開始される
-                    | ADC_EXTERNALTRIGCONV_T8_TRGO      // 外部トリガ: Timer8 TRGO event
-                    | ADC_CR2_ADON;                     // ADC を有効にする
-
-        // AD 変換器の外部トリガに使うタイマ (TIM8) の設定
-        SetTim8(fSampling);
-    }
-
-    // AD 変換された値を読み込む
-    float AdcF446::Read()
-    {
-        while ((ADC2->SR & ADC_SR_EOC) != ADC_SR_EOC) {}
-        return ToFloat(myAdc_->DR);
-    }
-
-    // AD 変換器の外部トリガに使うタイマ (TIM8) の設定
-    //      fSampling 標本化周波数 [kHz]
-    void AdcF446::SetTim8(float fSampling)
-    {
-        __HAL_RCC_TIM8_CLK_ENABLE();    // クロック供給. "stm32f4xx_hal_rcc.h" 参照
-        TIM_TypeDef* const TIM = TIM8;
-
-        TIM->CR2 = TIM_TRGO_UPDATE;     // Update event を TRGO (trigger output) とする
-
-        float arrF = (SystemCoreClock/fSampling)/1000.0f;
-        if (arrF >65535)
-        {
-            fprintf(stderr, "%8.2f kHz : 標本化周波数が低すぎます.\r\n", fSampling);
-            while (true) {}
-        }
-        TIM->ARR = floor(arrF + 0.5f) - 1;  // Auto-reload レジスタの設定
-        TIM->PSC = 0;                   // Prescaler の設定
-        TIM->CR1 = TIM_CR1_CEN;         // TIM8 を有効にする
-    }
-}