1回答

0收藏

【SAMV71 XPlained】+MDK 5.1+AFE

其他 其他 3518 人阅读 | 1 人回复 | 2015-11-15

本帖最后由 IC爬虫 于 2015-11-15 20:54 编辑

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的初始化配置如下:
  1. static void _afe_initialization(void) {
  2.         AFEC_Initialize( AFEC0, ID_AFEC0 );//模拟前端0初始化,主要做了复位AEF的控制寄存器和模式寄存器

  3.         AFEC_SetModeReg(AFEC0, 0          //模式配置
  4.                         | AFEC_EMR_RES_NO_AVERAGE
  5.                         |(1 << AFEC_MR_TRANSFER_Pos)
  6.                         |(2<< AFEC_MR_TRACKTIM_Pos)
  7.                         | AFEC_MR_ONE
  8.                         | AFEC_MR_SETTLING_AST3
  9.                         | AFEC_MR_STARTUP_SUT64 );

  10.         AFEC_SetClock( AFEC0, 6000000, BOARD_MCK );//设置AFEC0的时钟=150MHZ/6MHZ=25HZ

  11.         AFEC_SetExtModeReg(AFEC0, 0
  12.                         | AFEC_EMR_RES_NO_AVERAGE
  13.                         | AFEC_EMR_TAG
  14.                         | AFEC_EMR_STM );

  15.         AFEC_EnableChannel(AFEC0, AFEC_TEMPERATURE_SENSOR);//使能通道
  16.         AFEC0->AFEC_ACR = AFEC_ACR_IBCTL(2)
  17.                 | 1<<4
  18.                 | AFEC_ACR_PGA0_ON
  19.                 | AFEC_ACR_PGA1_ON ;

  20.         AFEC_SetChannelGain(AFEC0, AFEC_CGR_GAIN11(0));//设置输入通道设置
  21.         AFEC_SetAnalogOffset(AFEC0, AFEC_TEMPERATURE_SENSOR, 0x200);//误差校准设置
  22. }
复制代码
在主函数中获取串口输入的字符t后执行_afe_dmaTransfer();这里面完成温度的输出和AFE的DMA配置
  1. for(;;) {
  2.                 key = DBG_GetChar();
  3.                 if ((key == 't')){
  4.                         _afe_dmaTransfer();
  5.                 }
  6.         }
复制代码
分享到:
回复

使用道具 举报

回答|共 1 个

倒序浏览

沙发

奋斗哥

发表于 2015-11-16 10:03:09 | 只看该作者

好好学习
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条