AD/DA输入输出、PWM及其它底层硬件控制,.Net Micro Framework官方底层驱动代码及上层C#库并没有对这些功能进行封装,所以要想添加这类硬件的控制接口,需要从下到上进行全方位设计。
AD模拟量的采集没有想象的那么简单,从转换方式来说,有单次转换、连续转换之分,从模式来说,有扫描模式和间断模式,而间断模式下又分为规则组和注入组,采集时各通道可以独立采集,也可以批量采集等等。
简单期间,我这里仅封装了间断模式下的规则组独立采集方式(单次转换)。
针对驱动层,我定义了如下函数接口:
BOOL CPU_ADC_Initialize();
void CPU_ADC_Uninitialize();
BOOL CPU_ADC_Start(UINT8 adc);
BOOL CPU_ADC_Stop(UINT8 adc);
BOOL CPU_ADC_Read(UINT8 index,UINT16 *value, UINT32 spm, UINT32 flag );
针对STM32F10xxx系列的芯片,包含ADC0、ADC1、ADC2三个AD控制器,每一个又包含18个采集通道(其中两路是内部通道),其中ADC0的内部通道16、17分别为芯片温度和芯片电压值。
C#上层库的接口定义如下:
namespace YFSoft.Hardware
{
public sealed class ADC
{
[MethodImplAttribute(MethodImplOptions.InternalCall)]
public extern static bool Start(byte adc);
[MethodImplAttribute(MethodImplOptions.InternalCall)]
public extern static bool Stop(byte adc);
[MethodImplAttribute(MethodImplOptions.InternalCall)]
public extern static bool Read(byte channel, out int value, uint spm, uint flag);
}
}
其中的spm为采样时间,总转换时间TCONV = 采样时间+ 12.5个周期
采样时间的取值(0~7)
000:1.5周期
100:41.5周期
001:7.5周期
101:55.5周期
010:13.5周期
110:71.5周期
011:28.5周期
111:239.5周期
AD的输入时钟为1/8主频。
AD采集的示例代码如下:
using System;
using Microsoft.SPOT;
using YFSoft.Hardware;
using System.TinyGUI;
using System.Threading;
namespace ADCTest
{
public class Program
{
public static void Main()
{
int value = 0;
ADC.Start(0); //ADC0
while (true)
{
Graphics.SuspendLayout();
Graphics.Clear(Color.Black);
for (int i = 0; i < 18; i++)
{
ADC.Read((byte)i, out value, 2, 0);
Graphics.DrawString(10, 10 + i * 15, i.ToString()+" - "+ value.ToString(), Color.White);
}
Graphics.ResumeLayout();
Thread.Sleep(1000);
}
//ADC.Stop(0);
}
}
}
运行结果如下图:
(1)、对应WAKEUP键,按下、松开采集值不同
(2)、可调电阻(红牛板子在蜂鸣器附近,EM-STM3210E在SD卡附近),转动旋钮,值连续变化
(3)、片内温度,奇怪的是在家里EM-STM3210E的值为2~3,红牛的为0,在公司,二者都为0,不知道是否硬件问题。
以上AD接口不足以表达AD采集的所有功能,也只是起到抛砖引玉的作用,希望广大网友献言献策,提出更好的意见想法,因为接下来的PWM功能似乎更难封装,更需要大家的意见。
-----------------------------------------------------------------------------------------
【低价开发板】http://item.taobao.com/item.htm?id=7117999726
源码下载:http://www.sky-walker.com.cn/yefan/MFV40/SourceCode/ADCTest.rar
文章参考: 《.Net Micro Framework 快速入门》
中文讨论组:http://space.cnblogs.com/group/MFSoft/
分享到:
相关推荐
STM32_Nano开发板--原理图 很完整 不错,欢迎下载
STM32F407开发板-标准例程-寄存器版本。有59个例子。涉及所有试验。
两块STM32,一个做主机一个做从机,能够实现主机发送数据以及主机读取从机数据。通过串口调试,以及LED灯来提示工作状态。
普中STM32-PZ6806L开发板资料光盘结构 | |---1--用户必看 | |--KEIL5安装教程 | |--普中ARM仿真器使用说明 | |--普中PZ6806L开发板入门教程 | |---2--开发板原理图 | |--彩屏原理图-----------------对应...
STM32F407开发板作为客户端进行网络通信,解压即用
安富莱_STM32-V7开发板资料
此资源是《基于探索者stm32f407开发板ucos-iii+lwip1.4.1的tcp server并发服务器解决例程》配套的源码压缩包
安富莱_STM32-V5开发板_RL-TCPnet网络教程
FS-MP1A开发板是基于ST(意法半导体)公司的STM32MP1系列微处理器而设计的开发板,该系列处理器提供了集成 Arm® Cortex®-A7 和 Cortex®-M4 两种内核的异构架构,在实现高性能且灵活的多核架构以及图像处理能力基础...
教程 1、stm32单片机之开发板介绍教程 1、stm32单片机之开发板介绍教程 1、stm32单片机之开发板介绍教程 1、stm32单片机之开发板介绍教程 1、stm32单片机之开发板介绍教程 1、stm32单片机之开发板介绍教程 1、stm32...
阿波罗STM32F767开发板立场实验51到65部分,实验51 FPU测试(Julia分形)实验,实验52 DSP测试实验,实验53 手写识别实验,实验54 T9拼音输入法实验,实验55 串口IAP实验,实验56 USB读卡器(Slave)实验,实验57 USB...
STM32F407IGT6开发板-STM32F407IGT6开发板原理图.pdf
安富莱_STM32-V7开发板_用户手册,含BSP驱动包设计,手册详细。
stm32f030青峰开发板代码,定时器,GPIO,RTC,看门狗,uart,PWM等等例程
STM320518-单片机开发板uCOS-III V3.03.01系统移值源码
STM32F401 官方开发板原理图 NUCLEO STM32F401 官方开发板原理图 NUCLEO
STM320518-单片机开发板uCOS-II V2.92.07系统移值源码
stm32f411开发板详细说明手册 Programming-with-Stm32-Getting-Started-with-the-Nucleo.pdf
嵌入式_优质嵌入式项目之低功耗STM32F411开发板设计_原理图+PCB源文件+例程+驱动
STM32F103C8开发板 STM32最小系统核心板 AD硬件原理图+PCB封装文件,板子大小为54x40mm ,单面布局未布线,核心板CPU为STM32F103C8T6,LQFP48封装,MINI USB接口供电。附带对应的STM32F103C8T6例程,核心板测试软件...