現(xiàn)SiPM雙通道峰值檢測(cè)與符合時(shí)間測(cè)量方案)
開(kāi)頭先聊聊這項(xiàng)目到底解決什么問(wèn)題。SiPM硅光電倍增管在閃爍體探測(cè)、正電子湮滅、宇宙射線符合測(cè)量這些場(chǎng)景里越來(lái)越常見(jiàn)體積小、增益高、對(duì)磁場(chǎng)不敏感比傳統(tǒng)PMT香不少。但它輸出的是快速小信號(hào)幅度通常就幾十到幾百毫伏而且需要做雙通道的符合定時(shí)這就對(duì)后端讀出電路提出了不少要求。以前做這種事要么上NIM插件配示波器要么用專(zhuān)用TDC模塊成本高、體積大、還不好調(diào)試。我手上正好有一塊STM32F446RE開(kāi)發(fā)板仔細(xì)翻了手冊(cè)發(fā)現(xiàn)這芯片內(nèi)部帶了比較器、PGA可編程運(yùn)放、雙ADC還能同步采樣定時(shí)器資源也足夠理論上可以省掉一堆外部專(zhuān)用芯片把“雙通道SiPM信號(hào)峰值檢測(cè)符合時(shí)間戳測(cè)量”直接壓進(jìn)一顆MCU里。這篇文章就把完整的思路、硬件接法、寄存器配置和踩坑過(guò)程全部攤出來(lái)適合做核電子學(xué)、輻射探測(cè)、飛秒激光相關(guān)實(shí)驗(yàn)的朋友參考也適合想把手頭F446開(kāi)發(fā)板利用起來(lái)的嵌入式愛(ài)好者。1. 項(xiàng)目整體設(shè)計(jì)與關(guān)鍵選型1.1 SiPM輸出信號(hào)長(zhǎng)什么樣為什么需要專(zhuān)門(mén)處理SiPM本質(zhì)上是由大量工作在蓋革模式下的雪崩二極管微元并聯(lián)組成的單光子觸發(fā)時(shí)輸出電流是微元信號(hào)疊加的結(jié)果??燧敵鯢ast output直接耦合后沿可以做得非常陡上升沿只有幾納秒非常適合做時(shí)間信息提取而標(biāo)準(zhǔn)輸出Standard output有較大的RC整形時(shí)間常數(shù)上升沿幾十納秒、下降沿著幾百納秒幅度正比于光子數(shù)適合做能量/幅度測(cè)量。這個(gè)項(xiàng)目同時(shí)關(guān)注幅度和時(shí)間所以我在電路里把兩類(lèi)信號(hào)都引了出來(lái)標(biāo)準(zhǔn)輸出走放大進(jìn)ADC做峰值檢測(cè)快輸出進(jìn)比較器做觸發(fā)和定時(shí)。這里要強(qiáng)調(diào)一點(diǎn)SiPM的輸出阻抗很低電流信號(hào)幅值很大但對(duì)外接線路很敏感。如果直接用杜邦線連到MCU引腳分布電容和感應(yīng)噪聲會(huì)嚴(yán)重影響上升時(shí)間時(shí)間分辨率根本做不上去。實(shí)際項(xiàng)目中前端放大電路必須緊貼SiPM引腳走線要短地平面要完整這是后面一切性能指標(biāo)的基礎(chǔ)。1.2 峰值檢測(cè)方案選型模擬峰值保持還是ADC直接采樣峰值檢測(cè)在MCU里通常有三條路外部模擬峰值保持電路、內(nèi)置模擬比較器配合ADC定時(shí)采樣、以及ADC高速連續(xù)采樣后軟件找極值。第一種方案要用運(yùn)放加二極管和電容搭峰值保持器優(yōu)點(diǎn)是采樣精度高、ADC壓力小但電路復(fù)雜保持電容會(huì)漏電放電時(shí)間也需要精確控制在這個(gè)項(xiàng)目里不值得引入額外誤差源。第二種方案是信號(hào)整形后進(jìn)比較器比較器觸發(fā)時(shí)啟動(dòng)ADC但SiPM快信號(hào)只有幾納秒上升沿F446的ADC采樣時(shí)間最短也得幾百納秒根本來(lái)不及同步除非把脈沖展寬。所以我在設(shè)計(jì)中用了第三種思路用模擬比較器快速提取觸發(fā)時(shí)刻同時(shí)把標(biāo)準(zhǔn)輸出信號(hào)做一定的展寬和放大后再進(jìn)ADC由DMA循環(huán)采集、軟件找峰值。這樣既繞開(kāi)了外部峰值保持器的漂移問(wèn)題又能利用MCU內(nèi)部比較器獲得準(zhǔn)確的時(shí)間基準(zhǔn)一舉兩得。1.3 為什么選STM32F446RE而不是其他MCUF446RE主頻180MHzCortex-M4F帶FPU處理FFT或者插值算法不吃力。真正讓我下決心的是它內(nèi)部集成的資源兩個(gè)12位ADC支持雙ADC同步采樣最高采樣率能到5Msps左右配合DMA可以無(wú)CPU干預(yù)連續(xù)搬運(yùn)數(shù)據(jù)還有內(nèi)置比較器COMP1/COMP2、可編程增益放大器PGA、DAC、以及一堆高級(jí)定時(shí)器。這意味著除了SiPM偏壓電源外其他模擬處理基本都能在芯片內(nèi)部完成缺點(diǎn)就是F446內(nèi)部比較器輸入范圍和速度有限制所以模擬前端還是需要一級(jí)驅(qū)動(dòng)電路。整體上一顆幾美元的MCU替代了傳統(tǒng)方案里的成型放大器、恒比定時(shí)器、TDC芯片等一堆板卡對(duì)實(shí)驗(yàn)室自研原型驗(yàn)證來(lái)說(shuō)價(jià)值非常大。2. 硬件信號(hào)鏈與關(guān)鍵參數(shù)配置2.1 SiPM偏壓電源穩(wěn)定是第一優(yōu)先級(jí)SiPM工作電壓通常在標(biāo)稱(chēng)擊穿電壓以上2~5V增益對(duì)偏壓變化極其敏感實(shí)測(cè)大約每變化10mV增益就會(huì)變化百分之一所以偏壓紋波和溫度漂移直接影響幅度測(cè)量和觸發(fā)閾值的一致性。我用的方案是MCU的DAC輸出一個(gè)0~2.5V基準(zhǔn)經(jīng)過(guò)運(yùn)算放大器放大驅(qū)動(dòng)一個(gè)低紋波Boost電路輸出范圍20~40V可調(diào)。需要注意的是這類(lèi)Boost電路開(kāi)關(guān)紋波很難完全濾除我加了二階LC濾波加RC去耦實(shí)測(cè)紋波控制在2mV峰峰值以?xún)?nèi)。調(diào)試時(shí)先用萬(wàn)用表量準(zhǔn)偏壓再連SiPM絕不能只靠軟件設(shè)定值就上電。偏壓上電順序也要注意先給偏壓穩(wěn)定再開(kāi)放大器和比較器否則比較器輸入端容易因瞬態(tài)過(guò)壓而閂扣。2.2 模擬前端快通路和慢通路的分配標(biāo)準(zhǔn)輸出先經(jīng)一個(gè)跨阻放大器TIA轉(zhuǎn)成電壓增益設(shè)到約50V/A。TIA帶寬要足夠不然脈沖尾部拖長(zhǎng)峰值找不準(zhǔn)。帶寬和增益是矛盾的我會(huì)用示波器先看原始脈沖TIA輸出后再看確保上升沿沒(méi)有被明顯限制。快輸出通路則接一個(gè)高速比較器比如TLV3501或內(nèi)置COMP經(jīng)PGA把快上升沿翻轉(zhuǎn)成數(shù)字沿作為定時(shí)觸發(fā)源。實(shí)際我用F446的COMP1和COMP2分別接兩路快輸出內(nèi)部DAC或外部電位器提供閾值再把COMP輸出映射到定時(shí)器輸入捕獲通道。閾值太高會(huì)漏掉弱信號(hào)閾值太低會(huì)頻繁誤觸發(fā)通常設(shè)在噪聲底上方半個(gè)光子幅度以上。調(diào)試時(shí)我習(xí)慣先關(guān)閉信號(hào)源調(diào)節(jié)閾值直到背景計(jì)數(shù)率降到可以接受的范圍再加載被測(cè)信號(hào)后續(xù)再微調(diào)。2.3 AD配置雙ADCDMA的設(shè)計(jì)要點(diǎn)F446RE的兩個(gè)ADC可以設(shè)置為同步雙模式常用“ADC1主、ADC2從”搭配注入組或者規(guī)則組同步轉(zhuǎn)換。我的方案是兩路標(biāo)準(zhǔn)輸出分別接ADC1_IN0和ADC2_IN1配置為同步規(guī)則組掃描觸發(fā)源用定時(shí)器TRGO采樣周期設(shè)為84個(gè)周期左右采樣率約1.4Msps。DMA循環(huán)把轉(zhuǎn)換結(jié)果寫(xiě)入兩個(gè)緩沖區(qū)配合雙緩沖或環(huán)形緩沖實(shí)現(xiàn)無(wú)丟點(diǎn)采樣。這有幾個(gè)坑第一雙ADC同步模式必須保證兩個(gè)ADC時(shí)鐘完全一致一般共用同一個(gè)ADCCLK第二規(guī)則組轉(zhuǎn)換數(shù)據(jù)若不同時(shí)讀取會(huì)產(chǎn)生數(shù)據(jù)錯(cuò)位我用DMA的半傳輸/全傳輸中斷來(lái)標(biāo)記幀邊界第三采樣率過(guò)高時(shí)總線競(jìng)爭(zhēng)會(huì)導(dǎo)致ADC偶發(fā)丟數(shù)據(jù)合理優(yōu)先級(jí)和DMA突發(fā)模式能緩解。實(shí)測(cè)1.4Msps下雙通道同時(shí)采樣連續(xù)跑半小時(shí)沒(méi)有丟失明顯脈沖。雙ADC同步模式也可以啟用注入組搭配硬件事件觸發(fā)比較器輸出直接觸發(fā)注入組進(jìn)行“定點(diǎn)”采樣對(duì)某些固定波形分析會(huì)更高效但因?yàn)槎〞r(shí)邏輯復(fù)雜我最終回歸了定時(shí)器連續(xù)觸發(fā)DMA找峰的方案實(shí)時(shí)性和可靠性更好。2.4 時(shí)間戳記錄比較器輸出到定時(shí)器捕獲SiPM快輸出進(jìn)比較器后比較器輸出上升沿直接接到定時(shí)器輸入。我選用TIM2的CH1和CH2分別接兩路比較器輸出配置為輸入捕獲模式每次捕獲發(fā)生就把當(dāng)前位置寫(xiě)入捕獲寄存器同時(shí)產(chǎn)生中斷。時(shí)間分辨率取決于TIM2時(shí)鐘主頻我配到180MHz也就是約5.56ns一個(gè)tick對(duì)大多數(shù)符合測(cè)量場(chǎng)景夠了。這里要特別留意當(dāng)系統(tǒng)主頻變化時(shí)TIM2的周期和預(yù)分頻要重新計(jì)算保證捕獲寄存器時(shí)間戳是相對(duì)同一參考點(diǎn)。如果捕獲中斷里有ADC數(shù)據(jù)處理任務(wù)會(huì)影響下次捕獲所以實(shí)際代碼里中斷里只把捕獲值和計(jì)數(shù)標(biāo)志直接存到環(huán)形隊(duì)列延后處理避免阻塞。對(duì)于亞納秒級(jí)的ToF-PET要求F446這套方案就到極限了后面可以外接專(zhuān)用TDC芯片但至少本項(xiàng)目的nto幾百皮秒量級(jí)目標(biāo)沒(méi)問(wèn)題。在代碼中給TIM2開(kāi)輸入捕獲并配置DMA搬運(yùn)捕獲值也可以進(jìn)一步降低中斷負(fù)擔(dān)輸入捕獲DMA模式可以在捕獲事件發(fā)生時(shí)不進(jìn)中斷直接把TIMx_CCR搬進(jìn)內(nèi)存。實(shí)測(cè)中斷響應(yīng)時(shí)間從幾百ns降到幾十ns級(jí)別這對(duì)連續(xù)脈沖有較大幫助。3. 峰值檢測(cè)與符合時(shí)間測(cè)量的軟件實(shí)現(xiàn)3.1 峰值提取滑動(dòng)窗口插值擬合的精調(diào)ADC采到的是一串?dāng)?shù)字波形脈沖通常只占幾十個(gè)采樣點(diǎn)。我用一個(gè)固定長(zhǎng)度的滑窗窗內(nèi)搜索最大值作為峰值同時(shí)記錄該點(diǎn)索引。由于標(biāo)準(zhǔn)輸出脈沖有約200ns寬度在1.4Msps采樣率下約3個(gè)采樣點(diǎn)直接取最大值誤差偏大。我用三點(diǎn)二次插值取出極值位置精度大約能提升一個(gè)數(shù)量級(jí)對(duì)時(shí)間戳和幅度都有幫助。實(shí)現(xiàn)時(shí)要注意基線修正把每個(gè)通道無(wú)脈沖時(shí)的平均ADC值作為基線峰值減去基線再參與后續(xù)閾值判選。如果基線受溫度影響漂移可以在主循環(huán)里周期性估計(jì)避免出現(xiàn)假信號(hào)。一句話(huà)總結(jié)峰值提取邏輯找出最大值→檢查是否超過(guò)閾值→用左右各一個(gè)點(diǎn)做二次插值→得到亞采樣點(diǎn)級(jí)的幅度和時(shí)間。對(duì)于脈沖非常窄的情況也可以做正弦插值或者樣條插值但考慮到MCU算力二次插值性?xún)r(jià)比最高。3.2 符合時(shí)間差計(jì)算環(huán)形緩沖、校正和判選當(dāng)選定了觸發(fā)窗口后軟件需要從多脈沖中提取“符合對(duì)”。最直接的方法每來(lái)一路脈沖就把它的時(shí)間戳放進(jìn)獨(dú)立環(huán)形緩沖同時(shí)檢查另一通道的緩沖里是否存在時(shí)間差在±窗口內(nèi)的脈沖有則輸出一次符合事件。時(shí)間戳從TIM2捕獲寄存器讀出后還要處理周期翻轉(zhuǎn)用無(wú)符號(hào)減法再符號(hào)拓展即可。用有符號(hào)32位存儲(chǔ)時(shí)間差單位是tick分析時(shí)再轉(zhuǎn)成納秒。符合窗口通常設(shè)為幾十納秒到幾十微秒視實(shí)驗(yàn)需求而定。窗口太窄會(huì)漏真事件太寬則偶然符合率上升后處理時(shí)按公式 N_coinc_rand 2·τ·N1·N2 估算偶然符合率。實(shí)際還應(yīng)該做通道間延時(shí)校正。兩路信號(hào)從SiPM到MCU的線路長(zhǎng)度不同以及比較器內(nèi)部傳輸延遲不同會(huì)有固定延時(shí)差。我用一個(gè)已知周期脈沖同時(shí)注入兩通道統(tǒng)計(jì)時(shí)間差直方圖中心偏移量把偏移量存成校準(zhǔn)常數(shù)在運(yùn)行時(shí)從實(shí)際時(shí)間差中減掉。沒(méi)有這一步符合時(shí)間峰會(huì)出現(xiàn)系統(tǒng)性偏差時(shí)間分辨率評(píng)估會(huì)失真。3.3 數(shù)據(jù)處理與PC端顯示串口幀協(xié)議與直方圖F446需要把每對(duì)符合事件的時(shí)間差、兩通道幅度、時(shí)間戳一起通過(guò)串口發(fā)到PC方便后續(xù)直方圖統(tǒng)計(jì)。串口波特率在115200~921600均可關(guān)鍵是幀格式要清晰內(nèi)容至少包含幀頭、數(shù)據(jù)長(zhǎng)度、時(shí)間差、幅度A、幅度B、校驗(yàn)字。我選用簡(jiǎn)單的UARTDMA發(fā)送主循環(huán)里打包避免阻塞。PC端推薦用Pythonpyserial讀取串口后按幀解析直接畫(huà)時(shí)間差直方圖、雙通道能譜直方圖、二維符合散點(diǎn)圖。直方圖分bin通常設(shè)為幾百皮秒到1ns用于評(píng)估時(shí)間分辨率。實(shí)測(cè)在50ns符合窗口、約100k事件統(tǒng)計(jì)下時(shí)間差直方圖呈現(xiàn)高斯形狀其σ可以換算成系統(tǒng)時(shí)間分辨率。處理的時(shí)候會(huì)碰到一個(gè)問(wèn)題USB串口在Windows下傳輸不穩(wěn)定Windows自帶CDC驅(qū)動(dòng)偶爾丟包導(dǎo)致幀錯(cuò)位??梢栽趲锛娱L(zhǎng)度和校驗(yàn)讀端做狀態(tài)機(jī)恢復(fù)同時(shí)幀內(nèi)容不帶0xAA這種轉(zhuǎn)義字節(jié)避免誤同步。3.4 參數(shù)調(diào)試順序與關(guān)鍵閾值調(diào)試時(shí)我按這個(gè)順序來(lái)先不接SiPM加測(cè)試脈沖檢查偏壓、比較器翻轉(zhuǎn)、捕獲中斷是否正常再接入SiPM看暗電流計(jì)數(shù)率然后開(kāi)ADC看基線最后引入放射源或激光源看符合峰是否出現(xiàn)。每步都要用串口打印關(guān)鍵內(nèi)部變量不要一口氣全跑。閾值電壓我通常會(huì)留一定遲滯避免毛刺抖動(dòng)比較器模塊內(nèi)部可以配置遲滯或者直接靠比較器RC反饋實(shí)現(xiàn)。閾值每調(diào)小一點(diǎn)計(jì)數(shù)率會(huì)顯著上升所以一定要在信號(hào)幅度分布基礎(chǔ)上決定閾值不要盲目壓噪聲。ADC采樣率也建議從低往高試采樣率越高數(shù)據(jù)量越大處理不過(guò)來(lái)反而丟事件。4. 調(diào)試中的疑難問(wèn)題與排查方法4.1 暗計(jì)數(shù)率過(guò)高閾值、噪聲和偏壓現(xiàn)象沒(méi)有放射源時(shí)符合事件頻繁產(chǎn)生計(jì)數(shù)率高得離譜。排查順序先看偏壓是否過(guò)高通常SiPM工作電壓超過(guò)擊穿電壓1~3V合適再看閾值是否接近噪聲底把閾值抬高試試最后看電路板上是否有開(kāi)關(guān)電源噪聲耦合到信號(hào)線。柵極感應(yīng)、地彈也能導(dǎo)致誤觸發(fā)盡量把模擬地?cái)?shù)字地單點(diǎn)連接。另外環(huán)境光也會(huì)大幅增加暗計(jì)數(shù)SiPM封裝遮光必須嚴(yán)密。有一次我調(diào)試半天暗計(jì)數(shù)居高不下后來(lái)發(fā)現(xiàn)是透鏡窗口側(cè)面漏光貼了黑膠布解決。這類(lèi)問(wèn)題優(yōu)先硬件排查軟件閾值是輔助。4.2 峰值幅度偏小或ADC飽和TIA增益設(shè)得合適但發(fā)現(xiàn)幅度總是偏小??赡茉蛞皇荢iPM偏壓實(shí)際值低于設(shè)定值用萬(wàn)用表復(fù)測(cè)二是信號(hào)經(jīng)過(guò)長(zhǎng)線衰減快脈沖高頻分量損失導(dǎo)致峰被削平盡量縮短SiPM到TIA的距離三是ADC輸入阻抗不夠信號(hào)源阻抗太高造成分壓。偏大的原因通常是增益太高、ADC參考源問(wèn)題或者基線漂移檢查基線并調(diào)整通道增益。峰值飽和則說(shuō)明增益過(guò)大或動(dòng)態(tài)范圍不夠可以在代碼里用飽和標(biāo)志位剔除這類(lèi)事件但更根本的是調(diào)小TIA反饋電阻或程序里限制最大閾值。4.3 雙通道時(shí)間戳不同步或亂序兩個(gè)ADC同步采樣但時(shí)間戳序列交錯(cuò)常見(jiàn)原因是DMA緩沖區(qū)半滿(mǎn)和全滿(mǎn)中斷處理不及時(shí)導(dǎo)致部分?jǐn)?shù)據(jù)丟棄時(shí)間戳錯(cuò)位。解決方案是把DMA中斷優(yōu)先級(jí)提高或者改為雙緩沖并確保讀取操作和DMA寫(xiě)入不會(huì)碰撞。更穩(wěn)妥的辦法是在數(shù)據(jù)幀里帶上通道標(biāo)識(shí)解析時(shí)嚴(yán)格校驗(yàn)防止錯(cuò)幀。時(shí)間戳亂序還有一個(gè)來(lái)源是TIM2輸入捕獲的DMA搬運(yùn)和中斷處理順序如果捕獲太頻繁且中斷響應(yīng)太慢后到的捕獲事件會(huì)覆蓋舊的啟用多個(gè)捕獲緩沖或開(kāi)多個(gè)DMA通道可以規(guī)避。4.4 符合峰PWHM惡化和時(shí)間分辨率變差符合峰展寬是多因素疊加的結(jié)果。首先檢查兩通道線路延時(shí)差是否校準(zhǔn)其次快比較器閾值變化會(huì)導(dǎo)致不同幅度脈沖的觸發(fā)時(shí)刻漂移即時(shí)間游動(dòng)閾值應(yīng)盡量固定在一個(gè)合適的幅度比例上再有ADC插值對(duì)時(shí)間分辨率的貢獻(xiàn)也會(huì)體現(xiàn)在符合峰里如果插值算法不夠準(zhǔn)時(shí)間差分布自然變寬。如果時(shí)間分辨率遠(yuǎn)差于預(yù)期我通常會(huì)做一個(gè)簡(jiǎn)單測(cè)試用同一個(gè)信號(hào)分兩路同時(shí)進(jìn)兩個(gè)通道測(cè)時(shí)間差分布。這樣能剝離SiPM本身的時(shí)間抖動(dòng)單獨(dú)評(píng)估電路和軟件帶來(lái)的影響再針對(duì)性地做優(yōu)化。4.5 常見(jiàn)問(wèn)題速查表現(xiàn)象可能原因快速排查方法暗計(jì)數(shù)高偏壓過(guò)高、封光不嚴(yán)、閾值過(guò)低測(cè)偏壓、遮光、抬高閾值幅度偏小偏壓不對(duì)、信號(hào)衰減、輸入阻抗失配萬(wàn)用表測(cè)偏壓、縮短走線、檢查ADC輸入幅度飽和增益過(guò)高調(diào)小TIA增益、檢查基線時(shí)間差漂移延時(shí)校準(zhǔn)不準(zhǔn)、閾值漂移、溫度變化重新校準(zhǔn)、穩(wěn)定溫度和偏壓隨機(jī)事件丟包DMA中斷處理慢、串口過(guò)載提高優(yōu)先級(jí)、降采樣率/串口降速數(shù)據(jù)亂序緩沖競(jìng)爭(zhēng)、幀同步失敗雙緩沖、幀校驗(yàn)恢復(fù)5. 性能評(píng)估與方案擴(kuò)展5.1 實(shí)測(cè)時(shí)間分辨率能達(dá)到什么水平我的評(píng)估方法接一個(gè)探測(cè)系統(tǒng)用放射源或LED脈沖模擬符合事件統(tǒng)計(jì)時(shí)間差直方圖的σ。目前這套F446方案在雙通道之間測(cè)到的時(shí)間差σ大概在1~3ns主要限制來(lái)自比較器閾值定時(shí)的時(shí)間游動(dòng)和ADC采樣率。如果進(jìn)一步優(yōu)化TIA帶寬、采用恒比定時(shí)CFD算法處理采樣后的脈沖前沿理論上可以把時(shí)間分辨率壓縮到幾百皮秒。但STM32F446在180MHz下的實(shí)時(shí)處理能力和ADC速度決定了它上限就在這再往上就需要FPGA或?qū)S脮r(shí)間數(shù)字轉(zhuǎn)換芯片了。對(duì)于學(xué)術(shù)實(shí)驗(yàn)中的慢符合測(cè)量比如宇宙射線符合、普通閃爍體探測(cè)這套系統(tǒng)的性能綽綽有余。對(duì)于ToF-PET這類(lèi)追求高時(shí)間分辨的場(chǎng)景可以作為前端數(shù)字處理部分仍然很有價(jià)值。5.2 外設(shè)還能怎么玩利用PGA、DAC和FPUF446內(nèi)部PGA除了用于放大快信號(hào)外還能做基線消除把信號(hào)背景抬升到一個(gè)適合ADC采集的區(qū)間。DAC可以輸出雙閾值一個(gè)低閾值用來(lái)觸發(fā)一個(gè)高閾值用來(lái)剔除大脈沖構(gòu)成能窗。FPU可以跑一些簡(jiǎn)單的數(shù)字濾波如移動(dòng)平均、一階IIR進(jìn)一步壓低噪聲。計(jì)算資源允許時(shí)還能在MCU內(nèi)部做小規(guī)模符合統(tǒng)計(jì)直接輸出符合計(jì)數(shù)率省去PC端實(shí)時(shí)處理。5.3 后續(xù)擴(kuò)展方向外接TDC和高通道數(shù)如果繼續(xù)做這個(gè)方向我建議在F446后面接一片高精度TDC芯片比如GPX2、TDC7200用SPI把MCU的捕獲事件傳過(guò)去時(shí)間分辨率能做到幾十皮秒級(jí)。多通道符合則可以級(jí)聯(lián)多片F(xiàn)446用同一個(gè)外部時(shí)鐘同步或者在一個(gè)主F446上擴(kuò)展外部比較器陣列由GPIO擴(kuò)展觸發(fā)。代碼架構(gòu)上把時(shí)間戳模塊抽象成獨(dú)立驅(qū)動(dòng)換TDC時(shí)只需要改底層接口這樣后續(xù)升級(jí)成本更低。寫(xiě)完這些我個(gè)人最大的體會(huì)是用MCU做核電子學(xué)信號(hào)處理關(guān)鍵不是堆參數(shù)而是把模擬前端和數(shù)字處理的邊界切分清楚。哪些事交給硬件比較器、哪些事交給ADC軟件插值心里一定要有數(shù)。我踩過(guò)最深的坑就是把ADC采樣率調(diào)到最高結(jié)果DMA帶寬不夠反而丟了無(wú)數(shù)事件后來(lái)老老實(shí)實(shí)降采樣率、用雙緩沖系統(tǒng)才真正穩(wěn)定下來(lái)。做這種實(shí)時(shí)采集系統(tǒng)穩(wěn)定性永遠(yuǎn)比峰值指標(biāo)重要。如果你們也要復(fù)現(xiàn)這個(gè)項(xiàng)目建議先從暗計(jì)數(shù)和測(cè)試脈沖開(kāi)始一步步建立信心再接真實(shí)信號(hào)源整個(gè)過(guò)程會(huì)很順利。