3434|2

337

帖子

0

TA的资源

纯净的硅(初级)

楼主
 

【R7F0C809】DIY第五篇-R7F0C809 AD操作说明 [复制链接]

本帖最后由 youzizhile 于 2015-9-11 23:39 编辑

   结合实际操作经验和瑞萨网站参考例程,简单介绍下R7F0C809的AD转换器操作步骤和注意事项,分享自己的AD操作程序。

1  AD 操作过程
     瑞萨网站参考例程介绍了使用 A/D转换器的软件触发、连续转换模式,将输入 ANI0的模拟电压进行 A/D转换,在HALT模式下等待 A/D转换结束,A/D转换结束以后,将 A/D转换结果右移 6位,保存在内部 RAM中。
主要操作过程如下:
(1) 初始化 A/D转换器
•  模拟输入使用 P07/ANI0引脚。
•  使用软件触发开始 A/D转换。
•  使用 A/D转换结束中断(INTAD)。
(2) 将 ADM0寄存器的 ADCS位(开始转换动作)置为“1”,开始 A/D转换。然后执行 HALT指令进入HALT模式且等待 A/D转换结束中断。
(3) 当 ANI0引脚的输入电压 A/D转换完成以后,A/D转换器将结果传送给 ADCR寄存器,并且产生 A/D转换结束中断。
(4) 当参考例程通过 A/D转换结束中断退出 HALT模式时,可以从 ADCR寄存器中读取 A/D转换结果,右移 6位后保存在内部 RAM中。
(5) 再次开始 A/D转换,然后进入 HALT模式,并等待 A/D转换结束中断。

   1.1  A/D转换器的初始化设置的流程
第1步      向A/D转换器电路提供时钟:ADCEN位 ← 1 : 开始供给输入时钟
第2步      停止A/D转换器:ADM0寄存器 ← 00H
第3步      清除A/D转换结束中断请求标志:ADIF位 ← 0 : 清除中断请求标志位
第4步      设置A/D转换器中断优先级为3级:ADPR0位 ← 1,ADPR1位 ← 1
第5步      初始化A/D转换器,设置转换时间为6.8us: ADM0寄存器 ← 02H
FR1位~FR0位、LV0位 ← 001B : fCLK/8 (fCLK =20MHz)
第6步      选择分辨率、设置转换对象:ADM2寄存器 ← 00H
•   10位分辨率:ADTYP位 ← 0 : 10位分辨率
设置A/D转换对象为ANIx:ADTES1位 ← 0 : ANIx
ADTES寄存器 ← 00H
第7步      指定模拟输入通道:ADS寄存器 ← 00H
设置模拟输入通道为ANI0: ADS2位~ADS0位 ← 000B
第8步      返回

2      寄存器操作介绍2.1   设置用于 A/D转换的通道2.1.1 端口模式寄存器 0PM0
  功能:  选择各端口的输入/输出模式
符号 7  6  5 4  3  2 1  0
PM0 PM07  PM06  PM05 PM04  PM03  PM02 PM01  PM00
设定值 1  x  x x  x  x x  x

位 7  PM07  P07引脚的输入/输出模式选择
0  输出模式(输出缓存 ON)
1  输入模式(输出缓存 OFF)
2.1.2    端口模式控制寄存器 0PMC0
   功能: 选择各端口的输入/输出模式
符号 7  6  5 4  3  2 1  0
PMC0 PMC07  1  1 1  1  1 1  1
设定值 1  —  —  —  —  —  —  —

位 7
PMC07 P07引脚的数字输入/输出或者模拟输入的选择
0  数字输入/输出(模拟输入以外的复用功能)
1  模拟输入

2.2  允许 A/D转换器的时钟供给2.2.1  外围允许寄存器 0PER0
功能:   开始向 A/D转换器提供时钟。
符号  7  6 5  4  3  2  1  0
PER0  TMKAEN RTOEN  ADCEN  0 0  SAU0EN  0 TAU0EN
设定值  x  x 1  —  —  x  —  x
位 5
ADCEN  A/D转换器的输入时钟的控制
当ADCEN为0 时,停止提供输入时钟
• 不能写 A/D转换器使用的 SFR
• A/D转换器处于复位状态
当ADCEN为1 时, 提供输入时钟
• 能读写 A/D转换器使用的 SFR

2.3  设置 A/D转换时间和操作模式2.3.1  A/D转换器模式寄存器 0ADM0
    功能:设置转换时间。
符号 7  6  5 4  3  2 1  0
ADM0  ADCS 0  0  FR1 FR0  0  LV0 ADCE
设定值
—  0  0 —  1   
4~ 3功能
0 功能
ADCE  控制 A/D电压比较器的运行
0  停止 A/D电压比较器的运行
1  允许 A/D电压比较器的运行

2.4  设置基准电压源 2.4.1  A/D转换器模式寄存器 2ADM2
   功能: 选择分辨率。
符号 7  6  5 4  3  2 1  0
ADM2  0 0  0  0 0  0  0 ADTYP
设定值                0
0 功能:ADTYP  选择 A/D转换分辨率
0  10位分辨率
1  8位分辨率

2.5  设置转换对象 2.5.1  A/D测试寄存器(ADTES
  功能:  选择 ANIx
符号  7  6 5  4  3  2  1  0
ADTES  0 0  0  0 0  0  ADTES1 0
设定值             0  
1 功能:ADTES1  A/D转换对象的选择
0  ANIx(通过模拟输入通道指定寄存器(ADS)进行设定)
1  Vss(采样电容器的放电转换)

2.6  设置转换对象 2.6.1    模拟输入通道指定寄存器(ADS
    选择要进行 A/D转换的模拟电压输入通道。
符号  7  6 5  4  3  2  1  0
ADM2  0 0  0  0 0  ADS2  ADS1 ADS0
设定值           0  0  0
2~ 0功能:
ADS2  ADS1 ADS0  模拟输入通道  输入源
0  0 0  ANI0  P07/ANI0引脚
0  0 1  ANI1  P10/ANI1引脚
0  1 0  ANI2  P11/ANI2引脚
0  1 1  ANI3  P12/ANI3引脚
1  0 0  ANI4  P13/ANI4引脚
1  0 1  ANI5  P14/ANI5引脚
1  1 0  ANI6  P15/ANI6引脚
1  1 1  ANI7  P16/ANI7引脚

2.7  设置 A/D转换结束中断2.7.1    中断请求标志寄存器(IF0H
    清除中断请求标志。
符号 7  6  5 4  3  2 1  0
IF0H  TMIF02 0  TMIF03H  PIF3 PIF2  KRIF  ADIF TMIF01
设定值 x    x  x x  x  0  x
IF0H 1 功能:
ADIF  中断请求标志
0  不产生中断请求信号
1  产生中断请求,处于中断请求状态
2.7.2   中断屏蔽标志寄存器(MK0H
    禁用中断。
符号 7  6  5 4  3  2 1  0
MK0H  TMMK02 1  TMMK03H  PMK3 PMK2  KRMK  ADMK TMMK01
设定值 x    x  x x  x  1  x
MK0H 1 功能
ADMK  控制中断处理
0  允许中断处理
1  禁止中断处理
3      AD循环采样
在我的程序设计中,需要同时测量两路AD信号,所以需要动态配置AD采样通道等参数,先配置不变的参数,在动态配置通道测量。
3.1  AD初始化
void R_ADC_Create(void)
{
    ADCEN = 1U;     /* supply AD clock */
    ADM0 = 0x00U;   /* disable AD conversion and clear ADM0 register */
    ADMK = 1U;      /* disable INTAD interrupt */
    ADIF = 0U;      /* clear INTAD interrupt flag */
    /* Set INTAD low priority */
    ADPR1 = 1U;
    ADPR0 = 1U;
    ADM0 = 0x00U;   /* fCLK/8 *///2 to 0  2015.9.10
    ADM2 = 0x00U;   /* 10 bits */
}

3.2  获取AD数据
采用调用通道来实现对应AD数据输出的方式获取AD数据。
uint16_t Read_Self_AD(unsigned char ANx)
{
unsigned int i;
uint16_t  ADValue;
switch(ANx)
{
  case 1:
  {  ADS=1;    break;  }
  case 2:
  {  ADS=2;     break;  }
  default:break;
}
    ADIF = 0;       /* clear INTAD interrupt flag */
    ADMK = 0;       /* enable INTAD interrupt */        
    ADCE = 1;
    for(i = 0; i < 10; i++);            /* 0.1us waiting is needed */
    ADCS = 1;
    for(i = 0; i < 3; i++);
    /*Waiting A/D conversion */
    while(ADCS != 0);                   /* A/D conversion completed? */
    ADValue =(((uint16_t)(ADCRL >> 6)) |((uint16_t)ADCRH << 2));
return ADValue;
}
我的其他帖子:




查看本帖全部内容,请登录或者注册

最新回复

我是来学习的。。。。。  详情 回复 发表于 2015-9-12 10:12

赞赏

1

查看全部赞赏

点赞 关注
个人签名每一刻都是崭新的,加油!

回复
举报

1891

帖子

2

TA的资源

纯净的硅(中级)

沙发
 
我是来学习的。。。。。

点评

谢谢支持  详情 回复 发表于 2015-9-12 19:36
 
个人签名
分享铸就美好未来。。。




 

回复

337

帖子

0

TA的资源

纯净的硅(初级)

板凳
 
574433742 发表于 2015-9-12 10:12
我是来学习的。。。。。

谢谢支持
 
个人签名每一刻都是崭新的,加油!
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
有奖直播报名| TI 面向楼宇和工厂自动化行业的毫米波雷达解决方案
【内容简介】TI 60GHz IWRL6432和 IWRL1432毫米波雷达传感器如何帮助解决楼宇和工厂自动化应用中的感应难题
【直播时间】5月28日(周三)上午10:00
【直播礼品】小米双肩包、contigo水杯、胶囊伞、安克充电器

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网 9

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表