|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
請教AD7705問題 |
| 作者:爛帽子 欄目:測控之家 |
用過AD7705的兄弟幫個忙,最近本人用AD7705做測量儀器,現(xiàn)在遇到個奇怪的問題。7705為5V供電,2V基準(zhǔn),讀寫操作完全按照datasheet上說明進(jìn)行。上電后首先是串口同步,接著設(shè)置時鐘寄存器,然后設(shè)置SETUP寄存器,等待自校準(zhǔn)結(jié)束后(DRDY變低),開始讀數(shù)據(jù),F(xiàn)在數(shù)據(jù)可以讀出來了,但是讀出線性很差(跟實(shí)際信號出入比較大),當(dāng)信號降差不多0.5V的時候,讀出數(shù)據(jù)幾乎為零,當(dāng)信號繼續(xù)變小時(小于0.5V),數(shù)據(jù)巨增,也就是信號在0.5V--2V的時候,讀出數(shù)據(jù)屬遞增狀態(tài)(僅僅是遞增而已,讀出數(shù)據(jù)是實(shí)際信號相差較大,0.5V的時候?yàn)樽x出數(shù)據(jù)幾乎為零),信號在0V--0.5V的時候,讀出數(shù)據(jù)也屬遞增狀態(tài)(讀出數(shù)據(jù)與實(shí)際信號也不符合,零信號的時候,讀出數(shù)據(jù)為零),另外輸入信號為2V的時候,讀出數(shù)據(jù)為65536,以上是工作在單極信號狀態(tài),當(dāng)工作在雙極信號狀態(tài)的時候,情況與上面類似,頭都搞大了,還沒弄明白是怎么回事,好心人給個提示,先謝謝了!! v |
| 2樓: | >>參與討論 |
| 作者: leinuo 于 2006/6/28 9:27:00 發(fā)布:
仔細(xì)檢查一下7705的配置 配置寄存器,7705的datasheet有標(biāo)準(zhǔn)的配置流程,按照那個做肯定沒有問題。另外就是你的硬件線路,干擾,或者你的所謂2v的基準(zhǔn)點(diǎn)壓有問題,這個點(diǎn)壓是不允許有毛刺的并且是否受到輸入信號的關(guān)聯(lián)??你的非線性,我猜測基本上是這個關(guān)聯(lián)的原因。 |
|
| 3樓: | >>參與討論 |
| 作者: 爛帽子 于 2006/6/28 12:24:00 發(fā)布:
回leinuo兄 配置流程我也是完全按照datasheet里的流程來配置的,至于基準(zhǔn),我是采用LM399和精密電阻分壓所得..基準(zhǔn)電壓的電源和7705工作電源完全獨(dú)立,輸入信號也是獨(dú)立,我現(xiàn)在調(diào)試階段,用一個2K的的電位器從其他器件的電源里分壓出來的(和基準(zhǔn)電壓和7705工作電源都沒有關(guān)聯(lián)),在相同的信號,多次讀出的數(shù)據(jù)變化不大,還算穩(wěn)定,基準(zhǔn)和工作電壓共地情況也一樣,然后再和信號共地也試過,問題依舊!滿量程和零量程讀出數(shù)據(jù)都正確的,這說明校準(zhǔn)沒錯,但是就是幾個類似線性段,比如0V-0.3V,0.3V--0.6V,0.6-1.3V,1.3V--2V,信號在0.3v左右的時候讀出的數(shù)據(jù)始終接近0,但是到了0.28V讀出數(shù)據(jù)突增(不過讀出數(shù)據(jù)與實(shí)際信號有點(diǎn)偏差,而且越靠近0.3V數(shù)據(jù)準(zhǔn)確度就越高) 0.6V的時候情況也類似,在1.3V的時候讀出數(shù)據(jù)也很小,嚴(yán)重畸形... 以下為部分程序 void InitADC(void) { unsigned CHAR i; CLK= 1;DIN =1;CS=0; for (i=0;i<80;i++) {CLK=0;_nop_();CLK= 1 ;_nop_();} //防止接口迷失,通信寄存器返回到等待寫狀態(tài),相當(dāng)于RESET CS=1; WriteToReg(0x20); //通道1,下一個寫時鐘寄存器 WriteToReg(0x09); //寫時鐘寄存器設(shè)置更新速率為20 ,分頻 WriteToReg(0x10); //通道1,下一個寫設(shè)置寄存器 WriteToReg(0x44; /選擇了單極性 while(DRDY); read_temp=ReadADC_16BitValue(0x00); // data_temp=ReadADC_8BitValue(0x08); DelayMs(50); } void WriteToReg(unsigned CHAR byteword) { unsigned CHAR i ; CLK= 1 ;_nop_(); CS = 0;_nop_(); DIN=1; for(i=0;i<8;i++ ) { CLK=0 ; // if(byteword&0x80) byteword<<=1; //輸入數(shù)據(jù)位 DIN =CY; // else DIN=0; _nop_(); CLK=1 ; _nop_(); //byteword<<=1; } CLK= 1; DIN =1;CS=1; // 結(jié)束 } |
|
| 4樓: | >>參與討論 |
| 作者: leinuo 于 2006/6/29 8:37:00 發(fā)布:
可以看看。 1。你是用仿真器在線讀取察看數(shù)據(jù)的嗎?(看寄存器),如果這樣,首先建議你采用真實(shí)的mcu prog來操作一下看看。 2。信號,和電源,以及基準(zhǔn)電壓,共地是必要的。但是不要單線共地。 3。電源的退藕問題。晶振的質(zhì)量(2。4576)周圍高頻的輻射(這個問題很重要的,我們曾經(jīng)出現(xiàn)過類似的問題) 4。更換一下7705。不同的封裝,或許有質(zhì)量差別,新加坡封裝的,比臺灣封裝的看來要好一些,我們曾經(jīng)有過類似的經(jīng)歷(但出現(xiàn)的不是你的問題) 5。采用雙極性模式。 6。把輸入信號值得定義為:輸入電壓與基準(zhǔn)電壓的值得差?词欠癯瞿愣x的量程。察看一下如何。 7。再延緩讀寫時鐘頻率試驗(yàn)一下。 |
|
| 5樓: | >>參與討論 |
| 作者: 爛帽子 于 2006/6/29 12:11:00 發(fā)布:
先謝謝leinuo 我是仿真器看數(shù)據(jù),初步確定應(yīng)該是干擾的問題... 之前讀數(shù)據(jù)的時候最多連續(xù)讀10次(DRDY10次變低),所以數(shù)據(jù)相對比較穩(wěn)定,剛才我一直讓它轉(zhuǎn)換,為了觀察數(shù)據(jù),隔300MS讀一次數(shù)據(jù),原來數(shù)據(jù)變得很厲害,在變化的數(shù)據(jù)中,總能找到一個與實(shí)際信號相符的數(shù)據(jù)(一般是最大的那個),后來用MCU試也是這種情況...隨著信號的不斷增大,有些地方讀出的數(shù)據(jù)相對比較穩(wěn)定(信號大的時候比較穩(wěn)定),現(xiàn)在暫時懷疑是晶振... 我用的是2M的 |
|
| 6樓: | >>參與討論 |
| 作者: maolei21ic 于 2006/6/29 14:28:00 發(fā)布:
唉! |
|
| 7樓: | >>參與討論 |
| 作者: 爛帽子 于 2006/6/29 16:09:00 發(fā)布:
???? maolei21ic為何嘆息呢,有何高見?? |
|
| 8樓: | >>參與討論 |
| 作者: leinuo 于 2006/6/29 22:28:00 發(fā)布:
呵呵,晶振要用2.4576M。 |
|
| 9樓: | >>參與討論 |
| 作者: 爛帽子 于 2006/6/29 23:27:00 發(fā)布:
不是吧 我暈倒...資料上上說可以用2M的呀,而且也沒嚴(yán)格規(guī)定了,只要不太快就行了 ADI的工程師給我打電話也是這么說,我靠..... |
|
| 10樓: | >>參與討論 |
| 作者: 爛帽子 于 2006/6/30 9:50:00 發(fā)布:
leinuo leinuo我又迷糊了,怎么時鐘寄存器怎么寫不進(jìn)去呢,感覺怪怪的,寫0A和0B進(jìn)去讀出來都是07,寫09和08讀出是03,寫07和06進(jìn)去的時候讀出是07 而且上電復(fù)位的時候應(yīng)該是05呀,讀出來卻為03,但是SETUP寄存器上電后讀出的狀態(tài)就對了01,郁悶...不會是買了水貨了吧 |
|
| 11樓: | >>參與討論 |
| 作者: leinuo 于 2006/6/30 15:33:00 發(fā)布:
你是看的e文資料嗎? 你用的什么cpu阿?指令周期幾何?你的晶振加起陣電容了嗎 |
|
| 12樓: | >>參與討論 |
| 作者: maolei21ic 于 2006/6/30 16:24:00 發(fā)布:
靜下心來把datasheet看幾遍,絕對可以搞定. 不要想著問別人,要相信自己. |
|
| 13樓: | >>參與討論 |
| 作者: 爛帽子 于 2006/6/30 17:17:00 發(fā)布:
看的是E文的 我看的是E文的資料,還有ADI里面的應(yīng)用筆記,用的MCU就是普通的51系列,指令周期應(yīng)該是應(yīng)該是1us的(12M的時候),用的11.0592的晶振,起振電容加了30P的,這里應(yīng)該沒什么問題吧,因?yàn)轱@示部分都很正常。maolei21ic兄謝謝你的提醒,我也想自己搞定的了,但是現(xiàn)在打工難啊,老板一天催好幾次,煩都煩死了,沒辦法只有在這里請教各位,而且示波器都沒有一個,哎呀。∪绻孔约郝烙嬅鰜淼氖菚r候飯碗就要丟了 下面是7705部分的原理圖 http://bbs.21ic.com/upfiles/img/2006630171556755.pdf |
|
| 14樓: | >>參與討論 |
| 作者: mikejx 于 2006/6/30 17:31:00 發(fā)布:
幫貼圖:) * - 本貼最后修改時間:2006-6-30 17:33:43 修改者:mikejx |
|
| 15樓: | >>參與討論 |
| 作者: leinuo 于 2006/6/30 17:36:00 發(fā)布:
看看 圖中的ref-和信號-抬高電平大可不必。另外我發(fā)現(xiàn)了一個基本情況,就是你在信號端加了限幅(預(yù)防反向損壞。。。),你的弱信號后非線性或者數(shù)據(jù)飄動,就與此相關(guān)。請去掉或者換掉,你試驗(yàn)一下。 |
|
| 16樓: | >>參與討論 |
| 作者: leinuo 于 2006/6/30 17:39:00 發(fā)布:
繼續(xù)看看 還有一個事情比較值得關(guān)注,那就是,7705的任何一個通道輸入超出量程,都會影響彼此,引起數(shù)據(jù)混亂或者7705復(fù)位。因此要關(guān)注你沒用的那一路。。。。。 |
|
| 17樓: | >>參與討論 |
| 作者: 爛帽子 于 2006/7/1 10:40:00 發(fā)布:
繼續(xù)進(jìn)行中 回leinuo兄,ref-我昨天就已經(jīng)把它和7705的地連在一起了,信號端的防反限幅穩(wěn)壓管一直都沒接上去,一開始我就懷疑這里,因?yàn)槲野l(fā)現(xiàn)輸入信號與穩(wěn)壓管兩端的信號不一致,所以后來我就干脆把它去掉了,現(xiàn)在一直沒接上去.到是你提到通道之間的相互影響極有可能,因?yàn)橹白x出的數(shù)據(jù)我覺得象是通道2的(實(shí)際并不是,讀出的數(shù)據(jù)總是在幾個數(shù)之間跳),比如我在測試某個信號點(diǎn)的時候,讀出的數(shù)據(jù)就在49591和52746兩個數(shù)來回跳(也會有其他數(shù)據(jù),但是這兩個數(shù)出現(xiàn)的頻率很大,偶爾碰出一個其他數(shù),但是其他的那些數(shù)都與49591和52746很接近)。通道2剛開始的時候我是懸空的,后來看資料,好象說高阻輸入端不能懸空,所以接上信號,但是沒超量程(我量過),我一會再把這個地方弄個明白,先感謝leinuo的熱心幫助,辛苦你了 |
|
| 18樓: | >>參與討論 |
| 作者: leinuo 于 2006/7/1 14:43:00 發(fā)布:
首先說明, AD7705作為慢速采集16bit數(shù)據(jù)ad芯片,性能上的確不錯,因此,你大可不比懷疑芯片本身。(js賣給你翻修片或者。另當(dāng)別論)。 另外我稍微看了你的prog:你可以如下修改一下看看: WriteToReg(0x20); //通道1,下一個寫時鐘寄存器 WriteToReg(0x0b); WriteToReg(0x10); //通道1,下一個寫設(shè)置寄存器 WriteToReg(0x40; /選擇了雙極性 這樣配置后,你把晶振修改為2.45。。。。 你讀一下數(shù)據(jù),看穩(wěn)定性和線性如何。 另外: 我看了你的時序程序,應(yīng)該沒有什么瑕疵。你的讀程序沒有,因此我不知道情況,你只要別忘了啞讀一次即可。 * - 本貼最后修改時間:2006-7-1 16:08:26 修改者:leinuo |
|
| 19樓: | >>參與討論 |
| 作者: 爛帽子 于 2006/7/3 13:46:00 發(fā)布:
有結(jié)果了 再次謝謝leinuo,已經(jīng)找到問題的原因,原來是數(shù)字地和模擬地之間的干擾,由于自作聰明,在模擬地和數(shù)字點(diǎn)之間接了個電感,把電感拿掉就好了,還有PCB的走線也有影響。對了,你所說的啞讀是指??? |
|
| 20樓: | >>參與討論 |
| 作者: leinuo 于 2006/7/3 14:35:00 發(fā)布:
ok 數(shù)字地和模擬地,要單點(diǎn)聯(lián)系在一起。啞讀是7705指定的安全讀取 數(shù)據(jù)的策略。看看datasheet。 |
|
|
|
| 免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 udpf.com.cn 浙ICP證030469號 |