如何使用和配置 STM32F407G-Discovery with nanoFramework 的 ADC?

问题描述 投票:0回答:0

我尝试使用 ChibiOS 预设的 ADC。遵循specification的可用频道:

  • PC1, ADC1 输入 11
  • PC2 ADC1 IN12
  • PA6 ADC2 IN6
  • PA7 ADC2 IN7
  • PB0 ADC2 IN8
  • 温度传感器 ADC1
  • VrefInt ADC1
  • Vbatt ADC1

来自 ChibiOS build source (target_system_device_adc_config.cpp) 的预设 ADC:

#include <sys_dev_adc_native_target.h>
 
const NF_PAL_ADC_PORT_PIN_CHANNEL AdcPortPinConfig[] = {
 
    // ADC1
    {1, GPIOC, 1, ADC_CHANNEL_IN11},
    {1, GPIOC, 2, ADC_CHANNEL_IN12},
 
    // ADC2
    {2, GPIOA, 6, ADC_CHANNEL_IN6},
    {2, GPIOA, 7, ADC_CHANNEL_IN7},
    {2, GPIOB, 0, ADC_CHANNEL_IN8},
 
    // these are the internal sources, available only at ADC1
    {1, NULL, 0, ADC_CHANNEL_SENSOR},
    {1, NULL, 0, ADC_CHANNEL_VREFINT},
    {1, NULL, 0, ADC_CHANNEL_VBAT},
};
 
const int AdcChannelCount = ARRAYSIZE(AdcPortPinConfig);

如何使用ADC?有什么方法可以在 C# 代码中配置 ADC?我将不胜感激任何帮助。谢谢

我写了这段代码:

using System;
using System.Diagnostics;
using System.Threading;
using System.Device.Adc;
 
namespace ADCMeasure
{
    public class Program
    {
        private static int adcValue;
 
        public static void Main()
        {
            AdcController adcController = new AdcController();
            AdcChannel pa6Channel = adcController.OpenChannel(6);
 
            while (true)
            {
                adcValue = pa6Channel.ReadValue();
                double ratio = pa6Channel.ReadRatio();
                Debug.WriteLine($"{nameof(adcValue)}: {adcValue}; {nameof(ratio)}: {ratio}; MaxValue: {adcController.MaxValue}; MinValue: {adcController.MinValue}");
                Thread.Sleep( 1000 );
            }
        }
    }
}

并有调试控制台输出:

adcValue: 1695; ratio: 0.41343101; MaxValue: 4095; MinValue: 0

它对应于 PA6 上的真实 2.7V。

如果我把频道换到第7(

adcController.OpenChannel(7)
),

我在 PA7 上有

adcValue: 4; ratio: 0; MaxValue: 4095; MinValue: 0
和 0V。

如果我将 PA7(第 7 通道)连接到外部 2V,我在调试控制台中没有任何变化,但我通过电压表在 PA7 上看到这个 2V,大约是

adcValue: 1260
ratio: 0.30769

c# stm32 adc nanoframework chibios
© www.soinside.com 2019 - 2024. All rights reserved.