首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

A/D问题

A/D问题

请问斑竹:
S12的A/D时钟能不能超过2MHZ,如果超过了会怎么样?
我刚试了一下,没有问题,如果太高就慧出现问题了,数据变化不连续。
我的AD转化就是两个数据00和FF输入电视视频信号(最高才1.25V,是CCD输出信号)请问斑竹 是不是AD还要接外部参考电压还是AD坏了?

AD应该要接外部参考电压。你的VREFH和VREFL是怎么接的?
海纳百川  有容乃大
你说的VREFH和VREFL就是资料上的VRH和VRL吧 这两个端口 我什么也没节,我见很多人用这个AD都没接外部参考电压,如果要接,VRH接5V,VRL接0V就可以了吧
斑竹 我急啊 我的毕业设计下星期就要答辩了,是用CCD采集图象传到电脑上,再显示,现在电脑上的程序弄好了,就差图象采集了.不知道是什么原因得出来的图象怎么也不同步,数据也不对!!
对,VRH接5V,VRL接0V就可以了。你的图像是靠什么信号同步的?
海纳百川  有容乃大
我的图象是靠LM1881分离同步信号,但是我下午刚接上参考电压还可以出图象,现在又什么也没有了,怎么回事?图象提取程序是这样的:
/************************IRQ Interrupt**********************/
#pragma CODE_SEG NON_BANKED
interrupt void IRQ_ISR (void)
{ m_cCCDFrameShiftFlag = m_cCCDFrameShiftFlag|CCD_VS;

if(m_cCCDFrameShiftFlag == 0xfe){


m_cFrameSyncFlag = 1; //同步标志

}
/*if(PORTA_BIT1==1){
m_cFrameSyncFlag = 1;
}else{
m_cFrameSyncFlag =0;
m_cFrameCompleteFlag = 0;
m_cFrameSampeFlag=0 ;
}*/
m_cCCDFrameShiftFlag = m_cCCDFrameShiftFlag<<1;
if(m_cFrameSyncFlag == 1){
m_cMuxPulseCnt++; //==19 COLS=50旁边刚好有两行
if(PORTA_BIT0==0) { //去掉
if(m_cMuxPulseCnt == 22){ //SAMPLE_START_CNT 23
m_cFrameSampeFlag = 1; //奇
m_cFrameSyncFlag = 0; //15 good
m_cMuxPulseCnt = 0;
}
}else{ //去掉
if(m_cMuxPulseCnt ==23){ //偶 22:23刚好不闪烁
m_cFrameSampeFlag = 1;
m_cFrameSyncFlag = 0;
m_cMuxPulseCnt = 0;
}
}

}
if(m_cFrameSampeFlag == 1){
if(m_cCCDRowNum%3==0) //%6
{
m_cRowNum++;
ATD0CTL2=0xC2; // 启动AD转换 开中断
ATD0CTL3 =0x19;//0x19; //00011001顺序转换长度为3 ,调试时保留,no fifl
ATD0CTL4 =0x80;//0x80 ATDclk = 0.08us //实测时间 2.48us/次 //总线25M
ATD0CTL5=0XA0;
ATD0DIEN=0X00;
}
m_cCCDRowNum++;

m_cSampNum =-3; //-20 good
if(m_cRowNum == CCD_ROWS-1){
m_cFrameSampeFlag = 0;
m_cFrameCompleteFlag = 1;
m_cCCDFrameShiftFlag = 0; //
//HUANG
IRQDis(); //huangqin
}
}else{
m_cCCDRowNum =-1;
m_cRowNum = -1;
PORTB=0x00; //test
}

}

#pragma CODE_SEG DEFAULT


/************************ATD0 Interrupt**********************/
#pragma CODE_SEG NON_BANKED
interrupt void ATD0_ISR (void)
{ //char ADDATA;
//ADDATA=ATD0DR0;
//SCI_PutByte('k');
m_cSampNum++;

if(m_cSampNum < CCD_COLS){

if(m_cSampNum>=0){
m_aImage[m_cRowNum][m_cSampNum] =(uchar)ATD0DR0;

}
}else{

m_cSampNum =-3;
ATD0CTL2=0X00;
//PIEJ=0x00;
}

}

#pragma CODE_SEG DEFAULT

还有就是我的图象在电脑上显示 总是从左向右移 不知道是不是场不同步,显示程序没问题,麻烦斑竹帮我看看!!
图象出来了 ,但是还是总向左移动!
图象时有时无,不知道是什么原因,是不是频率太高的缘故,
/****************************PLLinit************************/
void PLLInit(void){
//PLL 05 01
SYNR=0x05; //SYNR=0x02 时,书上说是:16 //此时片内系统时钟为48MHz.这说法好像不对.
REFDV=0x01;
while(!(0x08&CRGFLG)) ; //PLL 锁相环锁定标志
CLKSEL=0x80;
}

/*==================================================
你的输入时钟频率是多少?
海纳百川  有容乃大
输入的外部时钟是16M
此时你的PLL输出频率为96M,总线频率为48M,远高于S12的最高总线率即25M。
海纳百川  有容乃大
哦 我明白了,超过S12的最高总线率就会不稳定,谢谢斑竹!!
返回列表