easyARM2200 AD采样问题。求教!

来源:百度知道 编辑:UC知道 时间:2024/06/25 01:38:51
我使用easyARM2200读取一个传感器的电压值,使用万用表测的数据为2.5V,用AD采样I2C显示,没有数据,程序如下
#include "config.h"
#define ZLG7290 0x70
uint32 ADC_Data1;

void Time0Init(void)

T0PR = 99; // 设置定时器0分频为100分频,得110592Hz
T0MCR = 0x03; // 匹配通道0匹配中断并复位T0TC
T0MR0 = 110592/50; // 比较值(1S定时值)
T0TCR = 0x03; // 启动并复位T0TC
T0TCR = 0x01;
}

void I2C_Init(uint32 fi2c)
{ if(fi2c>400000) fi2c = 400000;

PINSEL0 = (PINSEL0&0xFFFFFF0F) | 0x50; // 设置I2C控制口有效

I2SCLH = (Fpclk/fi2c + 1) / 2; // 设置I2C时钟为fi2c
I2SCLL = (Fpclk/fi2c) / 2;
I2CONCLR = 0x2C;
I2CONSET = 0x40; // 使能主I2C

/* 设置I2C中断允许 */
VICIntSelect = 0x00000000; // 设置所有通道为IRQ中断
VICVectCntl0 = 0x29; // I2C通道分配到IRQ slot 0,即优先级最高
VICVectAddr0 = (int)IRQ_I2C; // 设置I2C中断向量地址
VICIntEnable = 0x0200; // 使能I2C中断
}

v

ADCR = (1 << 0) |// SEL = 1 ,选择通道0
((Fpclk / 1000000 - 1) << 8) |// CLKDIV = Fpclk / 1000000 - 1 ,即转换时钟为1MHz
(0 << 16) |// BURST = 0 ,软件控制转换操作
(0 << 17) | // CLKS = 0 ,使用11clock转换
(1 << 21) | // PDN = 1 , 正常工作模式(非掉电转换模式)
(0 << 22) | // TEST1:0 = 00 ,正常工作模式(非测试模式)
(1 << 24) | // START = 1 ,直接启动ADC转换
(0 << 27);// EDGE = 0 (CAP/MAT引脚下降沿触发ADC转换)
DelayNS(10);
ADC_Data1 = ADDR;