现在想通过5509的片内AD对外部电压进行读取。5509的主频为144MHz,片内AD最高采样率为21.5KHz。根据DataSheet的说明,对相应的寄存器配置如下:<br /><br />#define ADCCTL *((ioport int *)0x6800)<br />#define ADCDATA *((ioport int *)0x6801)<br />#define ADCCLKDIV *((ioport int *)0x6802)<br />#define ADCCLKCTL *((ioport int *)0x6803)<br /><br />//初始化ADC<br />void ADCinit()<br />{<br /> ADCCTL = 0x8000; //转换开始,选择AIN0通道<br /> ADCCLKCTL = 0x0023; //把模数转换<br /> ADCCLKDIV = 0x4f00; //设置采样,保持,转换分频<br />}<br /><br />//利用通道0,AIN0<br />long ADCread0()<br />{<br /> long ADC0data; <br /> ADCCTL = 0x0000; //关ADC<br /> DelaynWs(1); <br /> ADCCTL = 0x8000; //转换开始,选择AIN0通道<br /> DelaynWs(1);<br /> while((ADCDATA & 0x8000)==0)//当ADCDATA的第15位为0时,转换结束<br /> {<br /> ADC0data = ADCDATA & 0x3ff; //选择低十位数据。<br /> return(ADC0data);<br /> }<br />}<br />现在仿真后的结果不对,是不是对寄存器的配置写法不正确?各位前辈帮忙看看。在DATASHEET里,ADC的寄存器是属于I/O空间寻址的啊?!<br />先谢了。 |
|