0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

菊花鏈式SPI器件

星星科技指導員 ? 來源:ADI ? 作者:ADI ? 2023-02-27 14:14 ? 次閱讀

在具有一個主站和多個從站的典型SPI系統(tǒng)中,專用的片選信號用于尋址單個從站。隨著從站數(shù)量的增加,芯片選擇線路的數(shù)量也會增加。在這種情況下,系統(tǒng)的電路板布局可能會成為一個相當大的挑戰(zhàn)。

一種布局替代方案是菊花鏈。本文解釋了菊花鏈SPI系統(tǒng)的細節(jié),并展示了如何使用軟件通過一串從站傳播命令。

標準SPI?/QSPI/? MICROWIRE?兼容微控制器通過3線或4線串行接口與其從器件通信。典型接口包括片選信號(/CS)、串行時鐘(SCLK)、數(shù)據(jù)輸入信號(DIN),偶爾還包括數(shù)據(jù)輸出信號(DOUT)。與I2C系統(tǒng)中通常一樣,可單獨尋址的設備與總線上的單個設備輕松通信。

基本串行通信接口

許多SPI器件無法單獨尋址。因此,這些設備與總線上的單個設備之間的通信需要額外的硬件或軟件組織。圖1顯示了一個微控制器與多個從設備通信的系統(tǒng)。

poYBAGP8VIqAD83AAAA5VwHdSTc278.png

圖1.具有獨立芯片的微控制器為多個從設備選擇。

在上述系統(tǒng)中,微控制器使用一個串行時鐘輸出(SCK)和一個主輸出/從輸入線路(MOSI)來命令所有從機。微控制器為每個從設備分配一個獨立的從機選擇信號(/SS_),以便可以單獨對它們進行尋址。由于所有從機共享單個時鐘和數(shù)據(jù)線,因此只有/CS輸入置位為低電平的從機才會確認并響應串行時鐘和數(shù)據(jù)線上的活動。當系統(tǒng)中的從設備很少時,該系統(tǒng)易于實現(xiàn)。在具有許多從器件的系統(tǒng)中,微控制器需要的/SS_輸出與從器件數(shù)量一樣多。此體系結(jié)構(gòu)增加了硬件和布局的復雜性。

菊花鏈替代品

硬件約束會使圖 1 中的方法變得不切實際且難以實現(xiàn)。串行接口應用的另一種方法是菊花鏈,它通過串聯(lián)的設備傳播命令。圖 2 顯示了采用菊花鏈配置的 N 器件系統(tǒng)。

poYBAGP8SkuANo7aAAAU--e5a10901.gif

圖2.具有多個菊花鏈從器件的微控制器。

單個/SS(或/CS)信號控制所有從機的/CS輸入;所有從站接收相同的時鐘信號。只有鏈中的第一個從站(SLAVE 1)直接從微控制器接收命令數(shù)據(jù)。網(wǎng)絡中每隔一個從站從鏈中前一個從站的DOUT輸出接收其DIN數(shù)據(jù)。

為了使菊花鏈成功工作,從機必須能夠在給定的命令周期內(nèi)在DIN上輸入命令(由一個命令中時鐘所需的時鐘脈沖數(shù)定義),并在隨后的命令周期內(nèi)在DOUT上輸出相同的命令。簡單地說,有一個命令周期的 DIN 到 DOUT 延遲。此外,從機必須只執(zhí)行在/CS的上升沿寫入它的命令。這意味著只要/CS保持低電平,從機就會忽略該命令,并在下一個命令周期的DOUT上輸出該命令。如果/CS在給定的命令周期后變?yōu)楦唠娖?,則所有從站執(zhí)行剛剛寫入其各自DIN輸入的命令。如果/CS變?yōu)楦唠娖?,則數(shù)據(jù)不會在DOUT輸出。此過程使鏈中的每個從站都可以執(zhí)行不同的命令。只要滿足這些菊花鏈要求,微控制器只需要三個信號(/SS、SCK和MOSI)來控制網(wǎng)絡中的所有從站。

菊花鏈是如何實現(xiàn)的

在菊花鏈系統(tǒng)中(圖 2),SLAVE 1 直接從微控制器接收數(shù)據(jù)。該數(shù)據(jù)被時鐘輸入SLAVE 1的內(nèi)部移位寄存器。只要/CS(或/SS)保持低電平,該數(shù)據(jù)就會傳播到SLAVE 1的DOUT輸出。SLAVE 1 的 DOUT 進入 SLAVE 2 的 DIN,因此當數(shù)據(jù)出現(xiàn)在 SLAVE 2 的 DOUT 輸出上時,數(shù)據(jù)將時鐘輸入 SLAVE 1 的內(nèi)部移位寄存器。正如SLAVE 2從SLAVE 1接收數(shù)據(jù)一樣,微控制器可以同時向SLAVE 1發(fā)送另一個命令。此新命令將覆蓋 SLAVE 1 的移位寄存器中的先前數(shù)據(jù)。只要/CS保持低電平,數(shù)據(jù)就會在整個菊花鏈中傳播,直到每個從設備收到適當?shù)拿睢<虞d到每個從站移位寄存器的命令在/CS的上升沿執(zhí)行。以下示例使用MAX5233和MAX5290演示菊花鏈。

示例電路 #1

圖3所示為三個MAX5233 IC,采用菊花鏈結(jié)構(gòu)連接。MAX5233為雙通道、10位DAC(包含兩個DAC通道A和B)。RSTV 連接到 VDD,模擬輸出功率可達中間電平。

pYYBAGP8Sk2ADo2XAABBkYgeWgg313.gif

圖3.菊花鏈電路 #1。

圖4顯示了將IC1(A1和B1)、IC2(A2和B2)和IC3(A3和B3)輸出分別設置為零、中和滿量程的命令序列。對于此示例,使用以下命令:

0x7FF8—用滿量程數(shù)據(jù)加載IC3 DAC寄存器,并將兩個輸出(A3、B3)設置為滿量程

0x7000—用中間電平數(shù)據(jù)加載IC2 DAC寄存器,并將兩個輸出(A2、B2)設置為中間電平

0x6000—用零電平數(shù)據(jù)加載IC1 DAC寄存器,并將兩個輸出(A1、B1)設置為零電平

poYBAGP8VLOAS8uDAABaHWcQ_xU631.png

圖4.電路 #1 — 命令序列 A。

在第一個命令周期(一組16個SCLK脈沖)中,0x7FF8被加載到IC1的移位寄存器中。當/CS保持低電平時,該數(shù)據(jù)通過IC1傳播,并在DOUT輸出1在下一個命令周期中。在第二個命令周期中,來自 DOUT 的數(shù)據(jù)1直接移動到 DIN2,0x7FF8被加載到IC2的移位寄存器中。同時,一個新命令0x7000被加載到IC1的移位寄存器中,從而覆蓋其先前的命令。

在第三個命令周期中,第一個命令0x7FF8加載到IC3的移位寄存器中。第二個命令 0x7000 加載到 IC2 中,IC1 接收新命令 0x6000。所有三個IC現(xiàn)在都有一個命令,它們通過移位寄存器中的菊花鏈接收該命令。當/CS變?yōu)楦唠娖綍r,加載的命令將執(zhí)行;A1 和 B1 設置為零電平,A2 和 B2 設置為中間電平,A3 和 B3 設置為滿量程。

圖 5 演示了一個更復雜的命令序列。使用以下命令(更多信息參見MAX5233數(shù)據(jù)資料):

0x3FF8—加載輸入寄存器A,滿量程數(shù)據(jù),DAC寄存器和輸出保持不變

0x3000—加載具有中間量程數(shù)據(jù)的輸入寄存器A,DAC寄存器和輸出保持不變

0x2000—加載輸入寄存器A,具有零電平數(shù)據(jù),DAC寄存器和輸出保持不變

0xBFF8—加載輸入寄存器B,滿量程數(shù)據(jù),DAC寄存器和輸出保持不變

0xB000—加載輸入寄存器B,其中量程數(shù)據(jù)、DAC寄存器和輸出保持不變

0xA000—用零電平數(shù)據(jù)加載輸入寄存器B,DAC寄存器和輸出保持不變

0x0000 - 無操作

pYYBAGP8VKCAXmI4AADbIYzBxxg074.png

圖5.電路 #1 — 命令序列 B。

在前三個命令周期中,菊花鏈中的三個IC中的每一個都在其移位寄存器中接收一個命令。IC1、IC2 和 IC3 的命令分別為0xB000、0xBFF8和0xBFF8。這些命令在/CS的上升沿執(zhí)行(第一次執(zhí)行)。首次執(zhí)行后,IC1、IC2和IC3的輸入寄存器B分別加載中間量程、滿量程和滿量程數(shù)據(jù)。此時,B1、B2、B3保持不變,因為每個IC的DAC寄存器B保持不變。

在接下來的三個命令周期中,僅加載輸入寄存器A的命令將寫入每個IC的移位寄存器。DAC寄存器A及其輸出保持不變。在/CS的上升沿,IC1、IC2和IC3的輸入寄存器A分別加載滿量程、零電平和中間電平數(shù)據(jù)。此時,A1、A2和A3保持不變,因為僅更新了輸入寄存器A,而不是DAC寄存器A。

第二次執(zhí)行后的硬件/LDAC命令(驅(qū)動/LDAC低電平有效)加載所有DAC寄存器及其各自輸入寄存器中的數(shù)據(jù)。DAC輸出使用來自其相應DAC寄存器的數(shù)據(jù)進行更新。A1、B2 和 B3 進入滿量程。A2 降至零電平,A3 保持在中電平。

在第三系列命令周期中,IC2和IC3被賦予NO-OP命令(0x0000),而IC1接收0xA000命令,以加載其輸入寄存器B的零電平數(shù)據(jù)。第三次執(zhí)行后,所有輸出保持不變。

在第四個命令周期系列中,IC1和IC2接收NO-OP命令,而IC3接收0x3FF8。第四次執(zhí)行后,IC3的輸入寄存器A加載滿量程數(shù)據(jù)。另一個硬件/LDAC命令使用輸入寄存器中的數(shù)據(jù)加載DAC寄存器。這會導致 B1 從中間量程變?yōu)榱汶娖剑珹3 從中間量程變?yōu)闈M量程。所有其他輸出保持不變。

模擬輸出名稱 輸出狀態(tài)
上電后(RSTV = VDD) 首款硬件低電平有效LDAC 第二個硬件低電平有效LDAC
IC1 A1 中檔 滿量程 滿量程
B1 中檔 中檔 零刻度
IC2 A2 中檔 零刻度 零刻度
B2 中檔 滿量程 滿量程
IC3 A3 中檔 中檔 滿量程
B3 中檔 滿量程 滿量程

示例電路 #2

圖6所示為三個采用菊花鏈配置的MAX5290雙通道、12位DAC。PU 連接到 DVDD,模擬輸出通電至滿量程。MAX5290沒有用于菊花鏈的專用數(shù)字輸出。相反,兩個UPIO(用戶可編程輸入/輸出)引腳中的一個必須由串行接口編程才能DOUTDC_模式。詳見MAX5290數(shù)據(jù)資料。

pYYBAGP8SlCAMRdEAABHmYiQDUI150.gif

圖6.菊花鏈電路 #2。

圖7給出了命令序列示例,使用了以下命令(更多信息參見MAX5290數(shù)據(jù)資料)。

0xDFFF—用滿量程數(shù)據(jù)加載所有輸入和DAC寄存器,DAC A和B輸出更新

0xD800—使用中間量程數(shù)據(jù)加載所有輸入和DAC寄存器,DAC A和B輸出更新

0xD000—用零電平數(shù)據(jù)加載所有輸入和DAC寄存器,DAC A和B輸出更新

0xE400 — 將 DAC A 和 DAC B 置于關斷模式

0xE40F—使DAC A和DAC B退出關斷模式

0xFFFF - 無操作

poYBAGP8SlGAWIueAAA1NqBXRlI717.gif

圖7.電路 #2 示例命令序列。

加載到每個器件移位寄存器的命令在/CS的上升沿執(zhí)行。在第一次執(zhí)行時,所有DAC輸出都會更新。IC1的DAC輸出變?yōu)榱汶娖?,IC2的DAC輸出變?yōu)橹虚g電平,IC3的DAC輸出變?yōu)闈M量程。

在第二個命令周期中,IC2的DAC A和B都處于關斷模式,命令0xE400。無操作命令使IC1和IC3不受影響。在第三個命令周期之后,IC1的輸出變?yōu)闈M量程,IC3的輸出變?yōu)榱汶娖?。當IC2的輸出保持關斷狀態(tài)時,數(shù)據(jù)在內(nèi)部輸入和DAC寄存器中更新。IC2在最后一個命令周期內(nèi)恢復到正常工作模式,輸出進入滿量程。

模擬輸出名稱 輸出狀態(tài)
上電后(PU = VDD) 首次執(zhí)行后 第二次執(zhí)行后 第三次執(zhí)行后 第四次執(zhí)行后
IC1 A1 滿量程 零刻度 零刻度 滿量程 滿量程
B1 滿量程 零刻度 零刻度 滿量程 滿量程
IC2 A2 滿量程 中量程 關閉 關閉 滿量程
B2 滿量程 中量程 關閉 關閉 滿量程
IC3 A3 滿量程 滿量程 滿量程 零刻度 零刻度
B3 滿量程 滿量程 滿量程 零刻度 零刻度

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 微控制器
    +關注

    關注

    48

    文章

    7396

    瀏覽量

    150641
  • 寄存器
    +關注

    關注

    31

    文章

    5271

    瀏覽量

    119655
  • SPI
    SPI
    +關注

    關注

    17

    文章

    1681

    瀏覽量

    91059
收藏 人收藏

    評論

    相關推薦

    【分享】EasyGo 鏈式SVG系統(tǒng)的實時仿真應用

    一、鏈式SVG簡介電力系統(tǒng)中的無功步長裝置發(fā)展到今天,從早期的電容器,同步調(diào)相機,到靜止無功步長裝置SVC,以及現(xiàn)在的靜止無功發(fā)生器SVG. SVG又稱為STATCOM, 是一種基于大功率逆變器
    發(fā)表于 02-21 17:31

    STM32 與ads1271的SPI通信問題

    現(xiàn)在用ADS1271EVM,該模塊是24位的adc,該模上有兩個DAS1271以菊花鏈式連接的,我打算用STM32F446的SPI來連接該模塊。我查了手冊得知ADS1271進行SPI
    發(fā)表于 10-28 09:24

    可實現(xiàn)工業(yè)級精度和分辨率菊花鏈溫度傳感器包括BOM及原理圖

    ? SMAART WIRE? 接口:最多可使用 UART 接口支持 32 個菊花鏈式器件? 溫度范圍:-55°C 至 +125°C? 精度:±0.4°C(-20°C 至 +70°C)? 分辨率:14 位
    發(fā)表于 08-29 09:21

    解決了合并單元對前端需求的模擬前端 (AFE)設計

    描述此解決方案解決了合并單元對前端的需求,它們需要多個電流和電壓測量通道。該模塊化實施在 TI 的 SAR ADC 中采用 SPI 菊花鏈式特性,從而實現(xiàn)了通道的輕松擴展,同時保持通道與處理器的連接
    發(fā)表于 10-08 09:00

    基于SPI接口的模擬開關提高通道密度

    ,這次開關是SPI控制的ADGS1412器件。像之前一樣,圖中顯示了器件尺寸、電源去耦電容和SDO上拉電阻。該解決方案展示器件菊花鏈形式配
    發(fā)表于 10-18 10:43

    FPGA菊花鏈下載時initialize chain識別不到器件

    FPGA按下圖做的菊花鏈的電路連接,F(xiàn)PGA為spartan3E XC2S250E,PROM為18v02,但下載時initialize chain識別不到三個器件,只顯示一個但也下載不了,根據(jù)大家的經(jīng)驗,可能是什么原因呢?下載方式不對?還是什么的?請大家多多指教?。≈x謝啦
    發(fā)表于 04-25 00:05

    采用SPI接口的模擬開關提高通道密度

    的ADGS1412器件。像之前一樣,圖中顯示了器件尺寸、電源去耦電容和SDO上拉電阻。該解決方案展示器件菊花鏈形式配置。所有器件共享來自
    發(fā)表于 10-10 08:00

    數(shù)據(jù)結(jié)構(gòu)之鏈式棧介紹

    數(shù)據(jù)結(jié)構(gòu)之鏈式鏈式鏈式棧的定義鏈式棧操作的實現(xiàn)鏈式棧初始化鏈式棧入棧
    發(fā)表于 12-17 08:11

    可以在菊花SPI配置中使用2個CD1020和1個CD1030嗎?

    我們可以在菊花SPI 配置中使用 2 個 CD1020 和 1 個 CD1030 嗎?
    發(fā)表于 05-17 06:32

    什么是菊花鏈模式 星型模式

    什么是菊花鏈模式 星型模式 菊花鏈模式   菊花鏈模式是簡化的級聯(lián)模式,主要的優(yōu)點是提供集中管理的擴展端口,對于
    發(fā)表于 12-05 09:00 ?8477次閱讀

    DDR3_菊花鏈連接

    DDR3_菊花鏈連接,高速PCB設計理論基礎,菊花鏈設計的要求與規(guī)范。
    發(fā)表于 05-25 10:01 ?0次下載

    8片菊花鏈式WS2812B 8x8 RGB LED矩陣開源

    電子發(fā)燒友網(wǎng)站提供《8片菊花鏈式WS2812B 8x8 RGB LED矩陣開源.zip》資料免費下載
    發(fā)表于 10-21 14:59 ?10次下載
    8片<b class='flag-5'>菊花</b><b class='flag-5'>鏈式</b>WS2812B 8x8 RGB LED矩陣開源

    SPI協(xié)議優(yōu)缺點 如何減少GPIO數(shù)量

    如何減少GPIO數(shù)量? 一種方法是使用串行轉(zhuǎn)并行轉(zhuǎn)換器,如圖所示。該器件輸出的并行信號可連接到開關控制輸入,器件可通過串行接口SPI配置。此方法的缺點是外加器件會導致物料清單增加。 另
    的頭像 發(fā)表于 07-21 10:17 ?925次閱讀
    <b class='flag-5'>SPI</b>協(xié)議優(yōu)缺點 如何減少GPIO數(shù)量

    TIDA-010076-通過單對以太網(wǎng) (T1) 實現(xiàn)菊花鏈式電源和數(shù)據(jù)傳輸?shù)腜CB layout 設計

    電子發(fā)燒友網(wǎng)站提供《TIDA-010076-通過單對以太網(wǎng) (T1) 實現(xiàn)菊花鏈式電源和數(shù)據(jù)傳輸?shù)腜CB layout 設計.pdf》資料免費下載
    發(fā)表于 05-19 10:42 ?0次下載
    TIDA-010076-通過單對以太網(wǎng) (T1) 實現(xiàn)<b class='flag-5'>菊花</b><b class='flag-5'>鏈式</b>電源和數(shù)據(jù)傳輸?shù)腜CB layout 設計

    BQ79600(UART/SPI菊花鏈網(wǎng)橋IC)的安全手冊

    電子發(fā)燒友網(wǎng)站提供《BQ79600(UART/SPI菊花鏈網(wǎng)橋IC)的安全手冊.pdf》資料免費下載
    發(fā)表于 08-30 11:35 ?1次下載
    BQ79600(UART/<b class='flag-5'>SPI</b>至<b class='flag-5'>菊花</b>鏈網(wǎng)橋IC)的安全手冊