本篇將以德州儀器(TI)的高速ADC芯片—ads52j90為例,進(jìn)行ADC的4線SPI配置時(shí)序介紹與分析。
從ads52j90的數(shù)據(jù)手冊(cè)我們不難發(fā)現(xiàn),其SPI控制模塊主要包含4根信號(hào)線SEN,SCLK,SDIN以及SDOUT。TI公司對(duì)其產(chǎn)品SPI配置信號(hào)的命名方式與通用的SPI信號(hào)命名方式不一樣,但實(shí)際上SENSDINSDOUT分別對(duì)應(yīng)CSBSDISDO。
SEN:SPI讀寫的使能信號(hào);
SDIN:FPGA寫入ADC的配置數(shù)據(jù)(寄存器地址和對(duì)應(yīng)地址的值);
SDOUT:ADC對(duì)應(yīng)地址輸出的配置寄存器數(shù)據(jù);
首先介紹該ADC的SPI的寫時(shí)序,datasheet給出的時(shí)序圖如圖1所示:我們首先大致看一下寫時(shí)序圖,能夠了解到對(duì)于SDIN來(lái)說,需要先寫入A7~A0的8bit的地址,接下來(lái)寫入該地址下的16bit的寄存器數(shù)值D15~D0,也就是說每進(jìn)行一次寫操作需要不間斷的寫入24bit的數(shù)據(jù)。對(duì)于SEN來(lái)說,在進(jìn)行寫操作時(shí),其一直保持低電平,寫之前和寫完后都保持高電平。對(duì)于SCLK來(lái)說,其上升沿每次采集每1bit SDIN數(shù)據(jù)的中心位置,共需要采集24次,才能完成這24bit SDIN數(shù)據(jù)的寫入。
圖1:SPI寫時(shí)序圖
上面三點(diǎn)就是我們初步看這個(gè)時(shí)序圖所得到的結(jié)論。對(duì)于該ADC,按照這種方式進(jìn)行寫操作就不會(huì)有問題。實(shí)際上所有ADC的SPI寫操作都有類似于上面介紹的共同準(zhǔn)則,這里歸納如下:
1,無(wú)論SPI進(jìn)行讀還是寫操作,SEN必須拉低,否則SPI不工作(既不讀也不寫),讀、寫完成之后SEN必須拉高;
2,SDIN的數(shù)據(jù)每次在SCLK的上升沿寫入SPI;
3,SDIN的數(shù)據(jù)組成一定是先寫入配置寄存器地址,再連續(xù)寫入配置寄存器數(shù)值;
圖2:SPI時(shí)序要求
另外,我們看到時(shí)序圖上有許多時(shí)間參數(shù),我們?cè)趯懘a時(shí)不僅要遵守以上的共同準(zhǔn)則,還要滿足這些參數(shù)的時(shí)序關(guān)系,并保留一定的時(shí)間量。datasheet都提供了這些參數(shù)的大小,如圖2所示。比如tSCLK的最小值是50ns,意味著SPI的時(shí)鐘最高20MHz。tSEN_SU的最小值為8ns,就表示SEN下降沿至少提前第一個(gè)SCLK的上升沿時(shí)間8ns。tDSU則表示SDIN的數(shù)據(jù)必須至少提前SCLK的上升沿5ns準(zhǔn)備好,等等。只要遵守了相關(guān)的SPI準(zhǔn)則以及datasheet里的SPI時(shí)序參數(shù),SPI的寫操作就不會(huì)有問題了。
現(xiàn)在我們介紹該ADC的SPI讀時(shí)序,如圖3所示。讀操作的主要目的是監(jiān)測(cè)ADC內(nèi)部寄存器狀態(tài),從而判斷ADC的配置狀態(tài)是否符合用戶的需求。從圖上我們可以看到,SPI的讀操作可以分解為兩個(gè)部分:第一個(gè)部分是先寫入A7~A0 8bit的寄存器地址到SDIN,然后SDOUT輸出對(duì)應(yīng)地址的16bit的寄存器數(shù)值。
這里重點(diǎn)強(qiáng)調(diào)一下:理論上來(lái)說,在上升沿鎖存寫入的地址最后1bit后,在接下來(lái)的每次SCLK下降沿,SDOUT輸出1bit寄存器值,直到16bit寄存器數(shù)值完全輸出。但實(shí)際上每次SCLK下降沿輸出的數(shù)據(jù)只有經(jīng)過tOUT_DV(12ns ~28ns)后才穩(wěn)定,后端FPGA才能正確接收。從圖上我們不難發(fā)現(xiàn),F(xiàn)PGA在SCLK的上升沿附近獲取SDOUT的數(shù)據(jù)是非常合適的,在這個(gè)位置獲取的數(shù)據(jù)最穩(wěn)定。
圖3:SPI讀時(shí)序圖
4線SPI的讀寫時(shí)序分析就到這里了,再次強(qiáng)調(diào)幾個(gè)關(guān)鍵點(diǎn):
關(guān)鍵點(diǎn)1:SEN在讀寫操作時(shí),必須拉低。讀寫完成之后,必須拉高。
關(guān)鍵點(diǎn)2:SDIN的數(shù)據(jù)每次必須在SCLK的上升沿寫入SPI。對(duì)應(yīng)的數(shù)據(jù)格式一定是寄存器地址+要寫入的寄存器數(shù)值。
關(guān)鍵點(diǎn)3:SOUT的數(shù)據(jù)總是在SCLK的下降沿輸出,因此選擇FPGA在SCLK的上升沿獲取SDOUT數(shù)據(jù)最穩(wěn)定。
關(guān)鍵點(diǎn)4:一定要滿足datasheet給出的SPI的時(shí)序參數(shù),并在代碼實(shí)現(xiàn)時(shí)要留有適當(dāng)?shù)臅r(shí)序裕量。
-
芯片
+關(guān)注
關(guān)注
460文章
52505瀏覽量
440805 -
adc
+關(guān)注
關(guān)注
99文章
6708瀏覽量
549207 -
SPI
+關(guān)注
關(guān)注
17文章
1804瀏覽量
95950
原文標(biāo)題:FPGA通過SPI對(duì)ADC配置簡(jiǎn)介(二)--4線SPI配置時(shí)序分析
文章出處:【微信號(hào):zhuyandz,微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
集成電路設(shè)計(jì)中靜態(tài)時(shí)序分析介紹
ads1148 SPI寫寄存器錯(cuò)誤的原因?
ADS1118 spi通信時(shí)序的問題誰(shuí)來(lái)解答一下
AN-878: 高速ADC SPI控制軟件[中文版]
![AN-878: 高速<b class='flag-5'>ADC</b> <b class='flag-5'>SPI</b>控制軟件[中文版]](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
DAC7568按數(shù)據(jù)手冊(cè)上要求的SPI時(shí)序不能配置,內(nèi)部參考是否也沒有輸出,為什么?
KeyStone架構(gòu)串行外設(shè)接口(SPI)手冊(cè)
ADS8568使用SPI通信無(wú)法正常訪問配置寄存器怎么解決?
請(qǐng)問ADS8671讀寫時(shí)序是怎么樣的?
ADC3663的SPI配置管腳連接至FPGA時(shí)遇到IO電平不匹配怎么解決?
ADS127L11配置ADC使用外部時(shí)鐘以及FILTER[4:0]都不成功,為什么?
ADS127L11使用4線spi不管怎么配置寄存器,示波器看到ADC的drdy脈沖周期始終是400K,怎么回事?
瀚海微SD NAND之SD 協(xié)議(42)SPI總線時(shí)序

使用IBIS模型進(jìn)行時(shí)序分析

評(píng)論