查看: 1662|回复: 0

【SAMV71 XPlained】+MDK 5.1+AFE

[复制链接]

该用户从未签到

发表于 2015-12-17 09:37:23 | 显示全部楼层 |阅读模式
分享到:
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();
  •                 }
  •         }
回复

使用道具 举报

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

本版积分规则

关闭

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

手机版|小黑屋|与非网

GMT+8, 2024-12-19 20:11 , Processed in 0.110219 second(s), 16 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.