[ZLG-ARM] 请教ADC问题

[复制链接]
2686|2
 楼主| adsstpz123 发表于 2007-12-18 11:43 | 显示全部楼层 |阅读模式
请教ZLG公司及各位高手:我使用LPC2214,遇到以下问题,有相同经历的同志请指点:<br />硬件部分:<br />  使用第20脚(P2.31)作为ADC5,输入的地方仅仅加入下拉电阻(4.7K);无其它电路,仅仅供测试使用。<br />软件部分:<br />ADC代码初始化:<br />&nbsp;&nbsp;&nbsp;&nbsp;ADCR&nbsp;=&nbsp;(1&nbsp;&lt&lt&nbsp;0)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;SEL&nbsp;=&nbsp;1&nbsp;,选择通道0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((Fpclk&nbsp;/&nbsp;1000000&nbsp;-&nbsp;1)&nbsp;&lt&lt&nbsp;8)&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;CLKDIV&nbsp;=&nbsp;Fpclk&nbsp;/&nbsp;1000000&nbsp;-&nbsp;1&nbsp;,即转换时钟为1MHz<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(0&nbsp;&lt&lt&nbsp;16)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;BURST&nbsp;=&nbsp;0&nbsp;,软件控制转换操作<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(0&nbsp;&lt&lt&nbsp;17)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;CLKS&nbsp;=&nbsp;0&nbsp;,使用11clock转换<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1&nbsp;&lt&lt&nbsp;21)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;PDN&nbsp;=&nbsp;1&nbsp;,&nbsp;正常工作模式(非掉电转换模式)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(0&nbsp;&lt&lt&nbsp;22)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;TEST1:0&nbsp;=&nbsp;00&nbsp;,正常工作模式(非测试模式)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1&nbsp;&lt&lt&nbsp;24)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;START&nbsp;=&nbsp;1&nbsp;,直接启动ADC转换<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(0&nbsp;&lt&lt&nbsp;27);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;EDGE&nbsp;=&nbsp;0&nbsp;(CAP/MAT引脚下降沿触发ADC转换)<br />&nbsp;&nbsp;&nbsp;&nbsp;DelayNS(10);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;uiADCData&nbsp;=&nbsp;ADDR;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //&nbsp;读取ADC结果,并清除DONE标志位<br /><br />使用ADC5(第20脚,P2.31):<br />(1).ADCR&nbsp;=&nbsp;(ADCR&0x00FFFF00)&nbsp;|&nbsp;(1&nbsp;&lt&lt&nbsp;5)&nbsp;|&nbsp;(1&nbsp;&lt&lt&nbsp;24);&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设置通道1,并进行第一次转换<br />&nbsp;&nbsp;&nbsp;&nbsp;while(&nbsp;(ADDR&0x80000000)==0&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  //&nbsp;等待转换结束<br />&nbsp;&nbsp;&nbsp;&nbsp;ADCR&nbsp;=&nbsp;ADCR&nbsp;|&nbsp;(1&nbsp;&lt&lt&nbsp;24);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;再次启运转换<br />&nbsp;&nbsp;&nbsp;&nbsp;while(&nbsp;(ADDR&0x80000000)==0&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    //&nbsp;等待转换结束<br /><br />问题和现象:代码执行(1)(即:选通第20脚接ADC)后,第20脚有0.2V电压输出。一旦使用<br />其它管脚作为ADC时,第20脚电压变为0V。这样,直接导致0--0.2V不可测量。(所有的ADC脚都一样)<br /><br />请教:我的ADC使用方法是否有误?谢谢!<br />芯片资料:<br />NXP<br />LPC2214FBD144<br />/00<br />CH5159&nbsp;&nbsp;10<br />TSG0728B
XDream 发表于 2007-12-18 18:52 | 显示全部楼层

请问是否有通过PINSELn寄存器设置引脚ADC为ADC引脚?

  
 楼主| adsstpz123 发表于 2007-12-26 14:21 | 显示全部楼层

感谢XDream:

感谢XDream:问题已经解决,原来是NXP&nbsp;ARM自己的I/O和ADC的BUG,详细见errata.lpc2214.pdf。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

37

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部