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

高速大容量數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
LTC2508-32: 具可配置數(shù)字濾波器的 32 位過采樣 ADC 數(shù)據(jù)手冊(cè)

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

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

評(píng)論