Re: ADC最快多久抓一次
|
||||
---|---|---|---|---|
版主
|
我有找了Microchip Code Example 的網站做 16-bit ADC 的範例查詢:
https://www.microchip.com/doclisting/CodeExamplesByFunc.aspx 如貼圖所示,使用 ADC 的項目來查詢有關 dsPIC33 的 ADC 使用範例。 CE139 & CE439 - 10-bit ADC Sampling at 2.2MSPS 的範例程式。 另外,另外,也有一份專門講解 dsPIC33 ADC 的使用說明,相較 Data Sheet 這份資料有完整的使用說明與範例,可以參考看看 (因網址有特殊符號請使用 Copy 方式再貼上此網址): https://ww1.microchip.com/downloads/en/DeviceDoc/dsPIC33-PIC24-FRM,-12-Bit-High-Speed,-Multiple-SARs-ADC-Converter-DS70005213G.pdf 關於 Oversampling 與 FFT 失真的問題? 因為 Oversampling 是屬於 Filtter 的功能,直接專換四次後的平均值。 高速下會失真,但在低速下會更加穩定,這就要看取捨而定。
發表於: 2021/3/12 11:51
|
|||
|
Re: ADC最快多久抓一次
|
||||
---|---|---|---|---|
中級會員
|
RYANG大好
我們是要應用在高速偵測距離 , 所以需要至少2M以上的sample rate 空間上也有限制 所以不能用太大顆的IC 因為AD轉換後還會做FFT轉換 ,想請問若是用over sample的平均模式 經過FFT會不會出現失真的情況 感謝回覆
發表於: 2021/3/11 20:43
|
|||
|
Re: ADC最快多久抓一次
|
||||
---|---|---|---|---|
中級會員
|
補充一下
若程式改為 x=ADCBUF2; 則只需要耗時110ns 看起來讀取ADCBUF1的時間會是ADCBUF2的三倍
發表於: 2021/3/5 8:57
|
|||
|
Re: ADC最快多久抓一次
|
||||
---|---|---|---|---|
中級會員
|
Ryang大 好
感謝回覆!! 想再請教一下 在Fosc=140MH時 觸發ADC取樣並轉換成功耗時350ns (接近3.25M/s) 但x=ADCBUF1;這個指令就花費390ns 不知道是否有其他更快速的方式去抓取ADCBUF THX /////////////////////////////////程式範例/////////////////////////////// ADCON3Lbits.SWCTRG=1; while(!ADSTATLbits.AN1RDY) { } x=ADCBUF1;
發表於: 2021/3/4 20:24
|
|||
|
Re: ADC最快多久抓一次
|
||||
---|---|---|---|---|
版主
|
頻率的設定需參考附圖的方塊圖,沒有說 FIN 要用 8MHz 的輸入。你可以設定輸出頻率為 140MHz 後按照公式反推回來得到輸入頻率需要多少,按規格書上所限制的輸入頻率 (Fin) 其範圍在 0.8MHz ~ 8MHz 之間。透過 PLL 的倍率調到你所需的頻率。140MHz 不見得一定就可以被整除,一般都使用相近的頻率即可。
這顆元件如在溫度 -40 度~ +85 度的範圍是有 70 MIPS 的速度,在 +125 度則限制在 60 MIPS。以 dsPIC 的頻率對指令週期換算是 Fosc/2=Fcy。所以 70MIPS 的 Fosc 是要有 140MHz 的頻率。 如果 dsPIC33EP64GS502 的效能不夠,可以考慮看看 dsPIC33CK256MP506 系列的元件,CK 系列可以有 100MIPS 的速度,也可以用 MCC 來設定。
發表於: 2021/3/4 10:43
|
|||
|
Re: ADC最快多久抓一次
|
||||
---|---|---|---|---|
中級會員
|
Ryang大 好
感謝您的建議 後來我將TRIG方式改為common software trigger 然後在程式中加入以下程式 在Fosc=85M下可得到1.8M的取樣率 ADCON3Lbits.SWCTRG=1; while(!ADSTATLbits.AN1RDY) { } x=ADCBUF1; 但想再請問幾個問題 1. 當使用8MHz的震盪器, 在MCC中 PLL頻率最高只能設為85M 但若從程式去設定PLLPRE , PLLPOST , 等暫存器 可以將PLL輸出頻率提高為100M以上 想請問MCC設定這樣的上限是有什麼用意嗎 2. dsPIC33ep64gs502型錄內說最高可至70MIPS 是指Fcy最高為70M ,Fosc最高為140M嗎 不知道這理解正確嗎 感謝您抽空回覆
發表於: 2021/3/4 9:15
|
|||
|
Re: ADC最快多久抓一次
|
||||
---|---|---|---|---|
版主
|
這最高轉換速度不是用 Timer 1 來完成的,因為 Timer 1 再怎麼快也到不了 15nS 的 Tad。要達到 3.25Msps 的速度 要用 Tosc 作為 Tad 的來源。
發表於: 2021/2/17 14:03
|
|||
|
Re: ADC最快多久抓一次
|
||||
---|---|---|---|---|
中級會員
|
ryan大好
因看dspic33ep64GS502的型錄上有提到以下規格 "Up to 3.25 Msps Conversion Rate per Channel at 12-Bit Resolution" 但我實際操作用timer1觸發只能達到約1Mhz的取樣率 , 和3.25有點差距, 還是3.25Mhz是只有轉換,不包含取樣與等待觸發的時間 我的目的是希望能以1.28Mhz的取樣率來抓AD值, 判斷方式是進timer中斷後,IO輸出high,ADC做完後,IO輸出low , 並等待下次timer觸發, 從IO的間隔時間看起來ADC 取樣+轉換約400ns , 等待timer下次觸發約500ns 另外請問你是指使用over-sampling mode就可以自動快速取樣轉換嗎? 那TRGSRC這個register要設定為什麼? 感謝回復
發表於: 2021/2/8 11:05
|
|||
|
Re: ADC最快多久抓一次
|
||||
---|---|---|---|---|
版主
|
參照:
想請問dsPIC33ep64GS502 若是用timer1最快可以多久抓一次ADC 14.28是規格上最快,但用內頻方式無法做到整除,通常是15ns左右。 取樣時間通常沒有所謂最快,因為快不了,這跟外部阻抗造成的充電速度有關,快就不準。 不過硬是要快的話,最快應該是2xTad. 參照: 因為從示波器看起來 取樣+轉換約400ns 等待timer1下次觸發約500ns 猜測量測方式包含了: 1. 進中斷時間? 2. I/O翻轉時間? 3. …可能還有別的因素,從文字描述看不出來。 以上時間影響,準確時間其實無法量到,不確定目的是什麼? 若是希望快速捕捉一段時間,用over-sampling可能更簡單,自動快速取樣與轉換,CK甚至可以自動搬進DMA。 不進中斷才能省時間。
發表於: 2021/1/29 10:22
|
|||
|