3 分析排查
結合數據手冊、網友案例以及DeepSeek討論。基本確定為7705內部結構以及工作機制造成的問題。期間懷疑過很多情況,最終一一排除,下面直接上干貨,其他的就不講了。
先說明一下,試驗采用的組件默認使用4.9152MHz晶體。測試中,數據率設定為50Hz,這個參數作為本次實驗默認設置參數,后面不再贅述,一律稱作“試驗參數條件”。3.1 DRDY信號的懷疑
根據手冊等資料理解,在正確的操作流程中,DRDY引腳扮演著重要角色: a) 當新通道的數據轉換完成,DRDY引腳會變為低電平,提示MCU可以讀取數據了; b) 第一次讀取操作完成后,DRDY通常會返回高電平。 c) 緊接著,需要再次查詢或等待DRDY再次變低,這標志著新通道的最新有效數據已經準備就緒,此時進行第二次讀取,就能拿到正確的結果。 所以,當進行通道切換時,標準的數據讀取流程應該是:寫通信寄存器切換通道→等待DRDY變低(通道切換后立即檢測DRDY,這時大概率就是低電平(原因見后),結果寄存器里面存的是通道切換前的數據,應等待一個完整的DRDY脈沖后,即切換后重新采集的才是新通道的數據)→第一次讀取數據(刷新/丟棄舊數據)→等待DRDY再次變低→第二次讀取數據(獲得新通道的有效值)。3.2 問題查找及分析 基本可以確認,由于7705正常工作期間,是按照固定頻率采集的,其DRDY引腳輸出的波形也能看出其采集周期(數據率)遵循了已設定的參數。DRDY高電平時間相對比較短(試驗參數下,200us以內),而數據率周期比較大(試驗中是20ms),這就使得切換通道指令設置的時機,具有極大可能是處在DRDY為0電平期間。這時,如果切換后,立即讀取數據,其數據寄存器中的數據一定是上次(通道切換前的)的采集數據,而并非切換后的通道(此時,該通道還沒有開始新的采集)的數據。切換需要一定的時間(試驗中DRDY切換時,信號是保持約60ms的高電平),DRDY會拉高,開始新通道的采集,當DRDY再次變低后,讀取的才是通道切換后的正確數據。下面的波形圖中藍色波形為DRDY信號,黃色的為CS信號。 因此,可以采用兩種方法規避: a) 連續讀取兩次(包含兩次完整的通道切換操作,安富萊的例程就是這樣處理的); |