5DSP的AD转换器祥解.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* 2. ADC控制寄存器2:ADCTRL2 位7 EXT SOC SEQ1: 外部信号启动SEQ1转换位。 位6 RST SEQ2: 复位排序器2。 位5 SOC SEQ2: 启动SEQ2转换位 。 位4 SEQ2 BSY: SEQ2忙碌位。 位3 INT ENA SEQ2 Mode1: SEQ2的中断模式位。 位2 INT ENA SEQ2 Mode0: SEQ2的中断模式位。 位0 EVB SOC SEQ2: EVB对SEQ2产生SOC信号的屏蔽位。 * 3. 最大通道转换寄存器:MAXCONV 位6~0 MAX CONVn:定义一次自动转换最多可以转换的通道个数。一次转换的个数为MAX CONVn+1。 (1) 级联方式(SEQ):MAX CONV1-3~MAX CONV1-0 取值0000-1111 (0-15) 转换个数1~16. (2) 双排序器方式(SEQ1,SEQ2):MAX CONV1-2~MAX CONV1-0 (或MAX CONV2-2~MAX CONV2-0 )取值000-111 (0-7)转换个数1~8. * 4. 自动排序状态寄存器:AUTO_SEQ_SR 位11~8 SEQ CNTR[3~0]:排序计数器状态位。 在转换排序开始时,SEQ CNTR[3~0]初始化为MAX CONV中的值。在一个自动转换排序的每一个转换之后,排序器的计数器减1。 位6~0 是排序器SEQ2和SEQ1的状态指示, 测试用。 * 5. 状态和标志寄存器:ADCST 位7, EOS BUF2:SEQ2的排序缓冲器结束位。 位6, EOS BUF1:SEQ1的排序缓冲器结束位。 位5, INT SEQ2 CLR:SEQ2中断清零位。读出值为0。写入1清零。 位4, INT SEQ1 CLR:SEQ1中断清零位。读出值为0。写入1清零。 * 6. ADC输入通道选择寄存器:CHSELSEQ1~4 每4位的CONVnn选择16路模拟输入通道中的一个作为自动排序的转换通道 。 * 7. ADC转换结果缓冲寄存器: RESULT0~15 寄存器RESULTn中10位转换结果是左对齐的,即存放在16位寄存器的高10位。 * 5.6 ADC的C语言编程实例 例:A/D转换程序。 采用双排序器模式; 排序器SEQ1对两个模拟输入通道ADCIN0和ADCIN1的幅度在0~3.3V范围的电压信号进行自动转换; 排序器采用定时器T1的周期中断标志作为触发启动转换信号; 读取模拟量的转换结果并存储到两个长度为256的数组nADCIn0[ ]和nADCIn1[ ]中。 * #include “f2407_c.h” //2407头文件 #define ADCN 256 //数组长度 void interrupt gptimer1( ); //T1中断服务程序,设置保存标志 void ADT1Init(void); //初始化ADC和T1 unsigned int uWork, nADCount; //全局变量定义 int nNewConvert; //转换次数计数 unsigned int nADCIn0[ADCN]; //通道ADCIN0转换结果数组 unsigned int nADCIn1[ADCN]; //通道ADCIN1转换结果数组 main( ) //主函数 { nNewConvert=0; WDCR=0x6f; //关闭看门狗 SCSR1=0x02fe; //设置时钟频率40MHz,2倍频, 打开所有外设 * WSGR=0xfe3f; /*设置I/O等待状态为0*/ ADT1Init( ); /*初始化ADC和T1*/ IMR=2; /*使能定时器周期中断,INT2*/ IFR= 0xffff; /*清除中断标志*/ asm(“ CLRC INTM”); /*开中断*/ while (1) { if(nNewConvert) /*若标志为1,则转换*/ { nNewConvert=0; /*清转换标志*/ uWork=RESULT0; /*取ADCIN0通道转换结果RESULT0*/ uWork6; /*移位去掉低6位*/ nADCIn0[nADCount]=uWork; /*保存结果*/ uWork= RESULT1; /*取ADCIN1通道转换结果RESULT1*/ uWork6; /*移位去掉低6位*/ nADCIn1[nADCount]=uWork; /*保存结果*/ if(nADCount=ADCN)

文档评论(0)

基本资料 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档