文章目錄
AD7606是16位多通道同步採樣芯片,能夠處理±10V和±5V的真雙極性輸入信號,並最大支持200kSPS的吞吐速率採樣,特別適合於電力系統中正弦波電壓電流的採樣。
別看AD7606是64-LQFP的封裝,多達64腳,但其配置、使用很是方便。AD7606不用經過讀寫寄存器進行工做狀態的配置,直接經過外部引腳的上下拉來進行配置,通常工程應用中主要涉及如下幾個配置:
1.基準源選擇;
2.並行、串行通信選擇;
3.測量範圍選擇;
4.過採樣選擇。
因爲項目中並不須要高達200kSPS的採樣率,故選擇了必定倍數的過採樣、串行通信方式(其實就是AD7606所謂從機的SPI通信)。以上4個配置全都是經過控制AD7606的外部引腳高低電平來實現的,所以能夠在畫板時經過上下拉定死,也能夠在畫板時將相應的配置引腳鏈接單片機的GPIO口,從而能夠根據實際使用須要進行靈活配置。
關於以上四個配置,AD7606數據手冊上已經作了明確說明,在此不作贅述:




不管使用過固定電平的方式,仍是單片機GPIO口控制電平的方式配置好AD7606的工做狀態後,就能夠編程驅動其進行採樣的。因爲其工做模式爲拉低CONVST引腳,轉換期間BUSY引腳置高,轉換完成後BUSY引腳拉低,此時能夠經過串口從AD7606中讀取轉換結果,時序圖以下所示:

所以,一種合理的驅動方式爲:經過定時器產生必定頻率、必定佔空比的PWM來驅動CONVST引腳進行穩定的週期轉換,並將BUSY引腳鏈接至單片機的一個外部降低沿中斷,在中斷中進行串口讀數據。
那麼對於單片機,須要用到3個基本外設:
1.定時器;
2.外部中斷;
3.SPI
對於STM32系列的單片機,經過STM32CubeMX配置好這幾個外設後,就能夠完成AD7606的驅動了,下面對這三點進行一一說明。
1、定時器PWM的產生
好比我須要6400SPS的採樣率,即一秒採樣6400次,那麼我須要產生6400Hz的PWM信號,而佔空比的設置要結合AD7606手冊中的t2來設置。
理想中產生的PWM波形應該像下圖同樣,一開始爲高電平,定時器計數達到比較值後反轉爲低電平,而這個窄窄的低電平就是AD7606的轉換開始信號,其低電平時間要大於25ns。
所以,在STM32CubeMX中選一個定時器,並將其中一個通道配置爲PWM模式,以下圖
而後對PWM的頻率及佔空比進行設置,以下圖所示。因爲我在時鐘樹設置時設置了160MHz的主頻,那麼掛載在AHB1上的TIM3默認運行主頻爲80MHz。故在第一個紅框處進行100分頻後,設置向上計數125次爲一個PWM週期,那麼其頻率就是80MHz/100/125=6400Hz。
而對於佔空比,經過下邊紅框進行設置,設置爲124,且極性爲高電平。124從何而來?剛剛已經配置了PWM的頻率爲6400Hz了,那麼其週期爲1/6400=156.25us,而這156.25us又被分紅了剛剛配置的125個小段,那麼當佔空比設置爲124時,將有124個小段輸出高電平,最後一個小段極性反轉成低電平。其低電平時間即爲156.25us/125=1.25us,知足手冊中大於25ns的要求。這樣一來,該引腳就能夠按輸出上圖所示的PWM了。
編程
2、外部中斷的捕獲
這個比較簡單,選擇一個引腳,以下圖配置爲外部中斷。
而後到configuration中配置其爲降低沿觸發便可。
數組
3、SPI
SPI的配置也較爲簡單,須要注意四點:
1.SPI的工做模式;
2.數據大小;
3.時鐘信號速率;
4.結合AD7606手冊中的時序。
如圖配置SPI2,使用軟片選,即隨便選一個GPIO口爲推輓輸出做爲CS引腳,在須要SPI通信前進行下拉,通信完進行上拉便可。
在configuration中作以下配置。由於AD7606一次傳輸16位數據,且高位在前,故配置爲16bits、MSB;
測試
同時,根據下圖所示的串行讀取數據操做可看出,SPI的SCLK工做在空間高電平,在sclk第一個邊沿讀取數據的模式,故配置CPOL爲high,CPHA爲1 Edge。
至於Baud Rate,此處也不能亂配置,要根據AD7606手冊中的說明配置,不得高於手冊中各驅動電壓下的最大速率便可。
另外一個須要注意的點是t18,覺得拉低CS後不能立刻進行SPI讀取,須要等待如下時間後才能夠。對於160MHz主頻來講,一個時鐘週期爲1/160MHz=6.25ns,故在拉低CS後,須要__NOP() 5~6次後方可進行SPI讀取。
spa
4、測試
按以上步驟配置後,AD7606就被驅動起來了,須要注意的是,上電或者復位後,最好空讀幾回數據,防止讀出的第一個採樣值紊亂的可能。
下圖爲將採集到的雙通道正弦波數組繪圖後的結果,能夠看出通過過採樣後,波形很是穩定,基本沒有噪聲。
3d