LTC?2508-32 是一款具有集成式可配置數字平均濾波器的快速、32 位 SAR ADC。演示板DC2222A-B具有與DC890以及Linduino通信的連接器。演示手冊介紹了如何將主板連接到 DC890 并運行 PScope。它還解釋了如何使用Linduino(或DC590B板)運行QuikEval并以非常慢的數據速率讀取數據。
本博客旨在展示如何使用 Linduino 從 LTC2508-32 實現高速數據采集。Linduino上的QuikEval連接器沒有足夠的GPIO線來控制濾波器的下采樣因子(DF)選擇引腳(SEL1,SEL0)。因此,板載 FPGA 在收到初始配置數據后控制 SEL 線路。I/O 擴展器(我們的工程師稱之為“運動鞋端口”)用于通過 SPI 將配置信息發送到板載 FPGA,進而設置 SEL 線路。如果這令人困惑,請繼續閱讀,它將開始有意義。
Linduino 的速度不夠快,無法以全采樣速度從 LTC2508 捕獲數據。但是,使用高度優化的代碼,避免使用中斷超時并將SPI時鐘調整到4 MHz,可以實現合理的采樣速度。這在本博客的最后一部分進行了解釋。
零件的詳細信息
LTC2508-32 具有兩個數字串行接口,一個用于濾波輸出數據,另一個用于無延遲輸出數據。Linduino上的QuikEval連接器連接到濾波輸出串行接口(SDOA)。
圖1.LTC2508 框圖
濾波后的輸出僅在 SYNC 脈沖后每轉換一次 DF 次數更新一次。MCLK引腳上的每個上升沿都會啟動一個新的轉換。因此,濾波后的輸出在 MCLK 脈沖的 DF 數之后在 I/O 寄存器中可用。請參考下面的流程圖,或在 LTC2508-32 產品手冊中閱讀更多相關信息。數字濾波器可通過引腳綁定 SEL0 和 SEL1 輕松配置為四種不同的下采樣因子。
演示板的詳細信息
本節旨在解釋板載 FPGA 如何根據發送給它的配置數據設置 SEL 引腳。FPGA 等待通過 SPI 發送的 16 位序列配置數據。要發送到FPGA的16位配置數據是:
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
1 | 0 | 0 | 0 | 0 | SEL0 | SEL1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
位 15:選擇串行接口。1 = SDOA,0 = SDOB
位 10:SEL0
位 9:SEL1
其余位由 LTC25XX 系列中的其他器件使用。
SEL1 | SEL0 | 東風 |
0 | 0 | 256 |
0 | 1 | 1024 |
1 | 0 | 4096 |
1 | 1 | 16384 |
FPGA的SPI線連接到運動鞋端口(CS_IN、SDI_IN和SCK_IN)的P5、P6和P7,如下圖所示。這些引腳被位撞擊以創建到FPGA的SPI端口。運動鞋端口的P0-P7的位敲擊是通過傳輸I完成的2C 數據從 Linduino 到 Sneaker Port,這將在下面的部分中解釋。
圖3.整個系統的接線圖
與“運動鞋港口”的通信
運動鞋端口輸出引腳的位敲擊是通過發送 I 來完成的2C 數據。要說我2C 到運動鞋端口,第一個字節是 I2芯片的C地址,第二個字節是P0-P7的數據。FPGA 的 SPI 引腳為 CS = P7、SDI = P6 和 SCK = P5。每個 P0-P7 引腳的狀態轉換為唯一的 I2C 字節。
SPI 狀態 | 小七 | 小六 | 小五 | 小四 | 小三 | 小二 | 小一 | P0 | 我2C 字節 |
CS 低、SDI 低、SCK 低 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
CS 低、SDI 低、SCK 高 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0×20 |
CS 低、SDI 高、SCK 低 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0×40 |
CS 低、SDI 高、SCK 高 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0×60 |
注意:
為了在SDI線上傳輸0,我們需要將數據線保持低電平,并使SCK線變為低電平、高電平和低電平。這是通過傳輸 0×00、0×20 和 0×00 來實現的。
注意:
為了在SDI線上傳輸1,我們需要將數據線保持高電平,并使SCK線變為低電平、高電平和低電平。這是通過傳輸 0×40、0×60 和 0×40 來實現的。
注意:
如果用戶想使用自己的電路板連接到DC2222A,則需要將QuikEval連接器的引腳2驅動到VCCIO,以便DC2222A的FPGA知道已連接控制器并偵聽其命令。
林杜伊諾代碼:
LTC2508 與 SPI 通信,這些信號通過 QuikEval 連接器單獨訪問,以從器件中讀取數據。你可以在這里找到林杜伊諾代碼。
Linduino代碼可以分為三個獨立的部分:
a) 功能:無效sneaker_port_init()
該函數將配置數據寫入FPGA,然后發送SYNC脈沖。
P3 = 0 拉WRIN_CS低
i2c_write_byte(SNEAKER_PORT_ADDRESS、CS_LOW);
for(i = 0; i < 48; ++i)
{
發送配置數據
i2c_write_byte(SNEAKER_PORT_ADDRESS,i2c_data[i]);
}
P3 = 1 拉高WRIN_CS
i2c_write_byte(SNEAKER_PORT_ADDRESS、CS_HIGH);
b) 功能:空隙send_pulses(uint8_t引腳,uint16_t num_of_pulses)
此功能將 DF 個脈沖發送到連接到 LTC2508 MCLK 的 CS 引腳。
c) 功能:uint32_t LTC2508_read_data(uint8_t QUIKEVAL_CS、uint16_t *DF)
使用 QuikEval 連接器上的連接通過常規 SPI 從 LTC2508-32 讀取數據。
優化項目
如前所述,Linduino的速度不夠快,無法從LTC2508進行高速數據采集。但是,通過以下步驟,我們可以有一個合理的讀出數據的速度。這個修改后的Linduino代碼可以在以下位置找到:
LTSketchbook部件號200025002508DC2222_interrupt_driven_read
MCLK 由外部時鐘源驅動,以避免切換 CS 引腳時出現延遲。
DRDY 已連接到 INT1。當數據就緒(DRDY)引腳變為低電平時,即當數據在轉換后準備就緒時,將觸發中斷;此時,它被宣讀出來。
在 Linduino 代碼中,數據在中斷服務例程中連續捕獲,并作為十六進制值打印到串行控制臺。以后可以將數據轉換為電壓。
連續打印的數據使用TeraTerm記錄到文件中。以下各節將介紹設置 Tera 術語。
數據被讀出,轉換為電壓并使用Python腳本繪制。
圖5.LTC2508 DRDY# 連接至 INT1 (數字引腳 3)
圖6是示波器照片,顯示了DRDY引腳上脈沖后SDOA線路上的數據。DRDY引腳在MCLK上的DF脈沖數之后觸發。
圖6.示波器照片顯示DRDY脈沖后SDOA的數據。
當MCLK為100 kHz且DF = 256時,可實現的數據速率為390.635 Hz,如下面的示波器所示。
圖7.連續的DRDY脈沖和數據跟隨SDOA線路。
如何設置TeraTerm:
使用此鏈接安裝 Tera 術語。
打開 Tera 術語。
如果“新建連接”選項卡尚未打開,請轉到“文件 à 新連接”。
圖8.在 Tera Term 上設置新連接。
確保Linduino USB已插入。
選擇串行連接和正確的串行端口。
圖9.設置串行COM端口。
去 設置 à 串行端口.
圖 10.打開串行端口。
設置波特率。
圖 11.設置 COM 端口的參數。
將數據記錄設置為文件 à 選擇正確的文件。
圖 12.將數據記錄設置為文件。
保持 Tera Term 打開以查看其他驅動程序寫出的數據。
數據記錄文件現在應包含零件捕獲的所有數據。
現在數據已記錄到 data.txt 中,請確保文件開頭沒有不完整或垃圾數據。這可能是由于在讀取過程中開始的數據記錄。
審核編輯:郭婷
-
濾波器
+關注
關注
162文章
8001瀏覽量
180376 -
連接器
+關注
關注
99文章
15065瀏覽量
138724 -
adc
+關注
關注
99文章
6607瀏覽量
547633
發布評論請先 登錄
相關推薦
【Aworks申請】高速數據采集系統
實現高速數據采集有哪些方法?
基于PCI總線的高速數據采集卡系統設計與實現
單片機系統中高速數據采集的實現

LTC2508-32: 具可配置數字濾波器的 32 位過采樣 ADC 數據手冊

DC22A-B LTC2508-32演示板|集成可配置數字濾波器的32位過采樣ADC(需要DC590、DC2026或DC890)

DC2222A-A LTC2500-32/LTC2508-32/LTC2512-24:集成可配置數字濾波器的32位/24位過采樣ADC

評論