|
SAMV71内部集成了AFEC(模拟前端控制器),AFEC集成一个12位数字转换器(ADC),一个可编程增益放大器 (PGA),一个数模转换器(DAC)和两个6:1模拟多路复用器,AFEC支持12位分辨率模式可以扩展一个16位分辨率的数字平均。有了这种功能可以 进一步减少在微弱信号下的信号采集的硬件成本,可编程增益放大器的加入使电路的设计大大简化,也更加的易用。
AFEC(模拟前端控制器)特点:
1. 12位分辨率到高达16位分辨率的数字平均
2. 2 MHZ的采样率
3. 支持宽的工作电源
4. 有单端或差分输入电压可选择
5. 有单个或双取样保持的模式可选择
6.可编程增益放大,输入范围0-VDD
7.每个通道有可编程的误差抵消
8.自动校正的误差和增益错误
9.集成的多路复用器,提供多达12个独立的模拟输入通道
10.每个通道的使能和禁止都是单独控制
11.软件和硬件触发
-外部触发管脚
-定时器触发
-pwm时间控制触发
12.驱动PWM错误输入
13.DMA通道支持
14.AFE可以配置定时配置
15.两种休眠模式和转换序列
-自动唤醒触发,会到休眠模式和转换模式
-可以配置转换的序列
16.标准模式快速唤醒功能
17.具有阈值比较功能
18.寄存器写保护
AFEC的框图如下:
信号注释:
官方提供了在MDK下的AFE的温度传感器的试验例程,试验现象如图:
AFE的初始化配置如下:
- static void _afe_initialization(void) {
- AFEC_Initialize( AFEC0, ID_AFEC0 );//模拟前端0初始化,主要做了复位AEF的控制寄存器和模式寄存器
- AFEC_SetModeReg(AFEC0, 0 //模式配置
- | AFEC_EMR_RES_NO_AVERAGE
- |(1 << AFEC_MR_TRANSFER_Pos)
- |(2<< AFEC_MR_TRACKTIM_Pos)
- | AFEC_MR_ONE
- | AFEC_MR_SETTLING_AST3
- | AFEC_MR_STARTUP_SUT64 );
- AFEC_SetClock( AFEC0, 6000000, BOARD_MCK );//设置AFEC0的时钟=150MHZ/6MHZ=25HZ
- AFEC_SetExtModeReg(AFEC0, 0
- | AFEC_EMR_RES_NO_AVERAGE
- | AFEC_EMR_TAG
- | AFEC_EMR_STM );
- AFEC_EnableChannel(AFEC0, AFEC_TEMPERATURE_SENSOR);//使能通道
- AFEC0->AFEC_ACR = AFEC_ACR_IBCTL(2)
- | 1<<4
- | AFEC_ACR_PGA0_ON
- | AFEC_ACR_PGA1_ON ;
- AFEC_SetChannelGain(AFEC0, AFEC_CGR_GAIN11(0));//设置输入通道设置
- AFEC_SetAnalogOffset(AFEC0, AFEC_TEMPERATURE_SENSOR, 0x200);//误差校准设置
- }
在主函数中获取串口输入的字符t后执行_afe_dmaTransfer();这里面完成温度的输出和AFE的DMA配置
- for(;;) {
- key = DBG_GetChar();
- if ((key == 't')){
- _afe_dmaTransfer();
- }
- }
|
|