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

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

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

SPI外設(shè)與MAX7651處理器的接口

星星科技指導(dǎo)員 ? 來源:ADI ? 作者:ADI ? 2023-02-24 16:22 ? 次閱讀

本文介紹如何將 GPIO 端口連接到 SPI 外設(shè)。它定義了SPI協(xié)議的基礎(chǔ)知識,信號和SCK信號的四種傳輸變體。包括一個軟件程序,用于使用MAX7651實(shí)現(xiàn)SPI接口,MAX12是一種閃存可編程的<>位集成數(shù)據(jù)采集系統(tǒng)。

介紹

The SPI?總線是許多微處理器外設(shè)芯片使用的4線串行通信接口。MAX7651微處理器不包括實(shí)現(xiàn)接口的專用硬件。但是,圖中顯示了可以向SPI外設(shè)發(fā)送和接收數(shù)據(jù)的簡單軟件例程。

SPI接口的4個引腳如下:

SCK(串行數(shù)據(jù)時鐘):數(shù)據(jù)在SCK的上升沿或下降沿上移動/鎖定(請參閱下一節(jié))。

MOSI(主輸出/從輸入):如果芯片是主設(shè)備,則數(shù)據(jù)從此引腳傳輸出去,如果芯片是從設(shè)備,則數(shù)據(jù)傳輸?shù)酱艘_。

MISO(主輸入/從輸出):如果芯片是主設(shè)備,則數(shù)據(jù)接收到此引腳,如果芯片是從設(shè)備,則從該引腳傳輸出去。

/CS(芯片選擇,低電平有效):告知外圍設(shè)備傳輸即將開始。

SPI協(xié)議定義了SCK相位和極性的四種數(shù)據(jù)組合。如果芯片具有設(shè)置這四種狀態(tài)的控制位,則它們通常稱為CPOL(時鐘極性)和CPHA(時鐘相位)。SPI 始終以 8 位塊傳輸數(shù)據(jù)。您可以根據(jù)需要傳輸任意數(shù)量的 8 位塊。例如,16 位寫入從前 8 位開始到第 <> 位結(jié)束斷言/CS。

CPOL CPHA Transfer
0 0 SCK上升沿轉(zhuǎn)移。
SCK 在位定時中間進(jìn)行轉(zhuǎn)換。
1 0 SCK 落邊轉(zhuǎn)移。
SCK 在位定時中間進(jìn)行轉(zhuǎn)換。
0 1 SCK 落邊轉(zhuǎn)移。
SCK 在位時序開始時轉(zhuǎn)換。
1 1 SCK上升沿轉(zhuǎn)移。
SCK 在位時序開始時轉(zhuǎn)換。

在讀取SPI外設(shè)的數(shù)據(jù)手冊時,通常會看到對SPI模式的引用為CPOL = 0、CPHA = 0等,即使芯片本身在物理上不包含這些位定義。相反,SPI接口是“硬連線”的,以發(fā)送/接收數(shù)據(jù),就好像CPOL和CPHA位已設(shè)置為0一樣。例如,MAX5154 12位DAC采用SPI接口,具有上升沿中位數(shù)據(jù)傳輸功能。這對應(yīng)于CPOL = 0,CPHA = 0協(xié)議。因?yàn)檫@是迄今為止最常見的SPI傳輸,所以這就是我們將要討論的示例代碼。下圖來自MAX5154數(shù)據(jù)資料。信號/CS是SPI信號Active-Low SS,SCLK是SCK,DIN將連接到MODI,因?yàn)橥庠O(shè)是從機(jī),只有一個輸入(沒有回讀)。這部分在傳輸中使用 16 位。

poYBAGP4c9GAYukiAAAORlzC4Tw434.gif

圖1.串行接口時序圖。

代碼示例:8 位數(shù)據(jù)傳輸

以下示例是最常見的 SPI 傳輸類型,CPO = 0,CPHA = 0。該例程不假設(shè)MAX7651的時鐘速度,因?yàn)镮/O端口位只是盡可能快地“位敲擊”。數(shù)據(jù)傳輸時間顯示在本節(jié)末尾。

圖2所示為MAX7651/MAX7652與SPI外設(shè)之間的典型連接。

pYYBAGP4c9GABmreAAAOL3vqPGk115.gif

圖2.通用 SPI 連接。

注釋字段中的數(shù)字 {N} 是執(zhí)行指令的時鐘周期數(shù)。

;用于 8 位外設(shè)的 SPI 數(shù)據(jù)傳輸。MAX7651為主站;外圍是奴隸。
;
;使用以下SPI定義的引腳。(某些外圍設(shè)備是寫入的 僅,因此只需要 3 根電線。
;SCK:數(shù)據(jù)傳輸時鐘
;MISO:主輸入數(shù)據(jù)(來自外設(shè)),并不總是使用
;MOSI:主輸出數(shù)據(jù)(到外設(shè));
SS:從選擇(低電平有效))
;

SCK EQU P1.0
MISO EQU P1.1
MOSI EQU P1.2
.CS EQU 小1.3 ;使用端口 1,但這是 100% 任意的。使用任何可用的 引 腳。

;
;現(xiàn)在我們需要使用MAX7651中的一些內(nèi)部RAM作為數(shù)據(jù)存儲。
;為了執(zhí)行速度,其中兩個變量必須位于 RAM 區(qū)域
;這允許在字節(jié)內(nèi)進(jìn)行位尋址。在MAX7651中,RAM空間對應(yīng)于
;到地址 20H 到 2FH。低于 20H 或高于 2FH 的地址不能被位尋址!

SPI_In EQU 30H ;從從屬設(shè)備讀取 8 位的結(jié)果。
SPI_Out EQU 21小時 ;我們希望發(fā)送給奴隸的數(shù)據(jù)。

;
;最后,我們需要一個循環(huán)計(jì)數(shù)器來跟蹤發(fā)送 8 位。
;這可以是“R”寄存器 (R0-R7) 或
;任何 RAM 寄存器(不必是位可尋址的)。讓我們使用
內(nèi)存 ;注冊。

LOOP EQU 30H ;可以在地圖中的任何位置;這只是一個例子。

;
;假設(shè)調(diào)用時,已經(jīng)設(shè)置了片選位SS 到 1.

SPI_IO: CLR SCK ; SCK starts off low. {1}
CLR CS ; Clearing CS begins the data transfer. {1}
SETB MISO ; To be used as input, must be set internally. {1}
MOV LOOP,#8 ; Eight bits to transfer. {3}
XFER: MOV C,SPI_Out.7 ; Move bit 7 into Carry (SPI is MSB first). {2}
MOV MOSI,C ; I/O port reflects the Carry bit, which is the Data bit. {2}
SETB SCK ; Generate SCK rising edge, after Data is stable. {1}
MOV C,MISO ; Read data from Slave into Carry (optional). {2}
MOV SPI_In.7,C ; Copy into the received data byte, bit-7 position. {2}
CLR SCK ; Generate SCK falling edge, after data read in. {1}
MOV A,SPI_Out ; Accumulator is temp holder for shift operation. {2}
RL A ; Rotate left (but not through Carry!). {1}
MOV SPI_Out, A ; Prepare bit 7 for next transfer to Slave. {2}
MOV A,SPI_In ; Get previous Slave read data. {2}
RL A ; Rotate left to get next bit position into proper spot. {1}
MOV SPI_In,A ; Save result. {2}
DJNZ LOOP,XFER ; Decrement LOOP. Jump if not zero to XFER. {3}
; Transfer done.
SETB CS ; De-assert chip select. {1}
.END ; Tell assembler code completed.

傳輸 8 位(讀取和寫入從屬)的 CPU 周期總數(shù)為 6 + 8 × 23 + 1 = 191。僅供讀取或?qū)懭?,總?shù)為 6 + 8 × 18 + 1 = 151 個 CPU 周期。下表給出了使用MAX7651常用時鐘速度的各種傳輸速率。

MAX7651時鐘速度 位傳輸時間 總讀/寫
傳輸時間
12兆赫 7.95us (~125KHz) 63.6秒
11.0592兆赫 8.63us (~116KHz) 69.08秒
4兆赫 23.88us (~41.9KHz) 191us

從此表中,我們可以看到最快的SPI字節(jié)傳輸約為15.7KHz,而最慢的速率為5.2KHz。這比專用的1MHz SPI硬件端口慢得多!因此,如果MAX7651用作從機(jī),則必須將SPI主機(jī)設(shè)置為最慢的位傳輸速度(125KHz),MAX7651必須工作在12MHz時鐘速度。

審核編輯:郭婷

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

    關(guān)注

    452

    文章

    50209

    瀏覽量

    420947
  • 微處理器
    +關(guān)注

    關(guān)注

    11

    文章

    2244

    瀏覽量

    82267
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1188

    瀏覽量

    51837
收藏 人收藏

    評論

    相關(guān)推薦

    RK3399處理器與AR9201處理器有哪些不同之處呢

    RK3399處理器與AR9201處理器有哪些不同之處呢?hi3559A處理器與RV1126處理器有哪些不同之處呢?
    發(fā)表于 02-21 07:29

    基于ARM的PC/104處理器模塊設(shè)計(jì)

    提出了一種低成本的PC/104處理器模塊的設(shè)計(jì)。該模塊硬件上以ARM處理器為核心實(shí)現(xiàn)了PC/104處理模塊的基本結(jié)構(gòu)、總線接口,軟件上構(gòu)建了嵌入式Linux操作系統(tǒng)。以ARM
    發(fā)表于 08-25 10:36 ?20次下載

    MAX7651評估板配置Keil µVisio

    摘要:本文討論了為MAX7651評估板建立項(xiàng)目和配置Keil µVision® IDE的操作流程,并給出了一個第三方的應(yīng)用實(shí)例:程序編寫、編譯以及下載到MAX7651評估板的步驟。
    發(fā)表于 04-23 14:08 ?1038次閱讀
    為<b class='flag-5'>MAX7651</b>評估板配置Keil µVisio

    利用MAX7651實(shí)現(xiàn)ADC轉(zhuǎn)換

    摘要:本文提供了利用MAX7651評估板實(shí)現(xiàn)模/數(shù)轉(zhuǎn)換的源代碼和函數(shù)。它是MAX7651評估板提供的3個應(yīng)用例程之一,能夠進(jìn)行寫、編譯和下載等簡單的編程功能。 另請參考:
    發(fā)表于 04-23 14:09 ?839次閱讀

    Interfacing the MAX7651/MAX765

    to interface the MAX7651 and MAX7652 12-bit data acquisition system to the 24C02 2-wire serial EEPROM. Detailed software code is provid
    發(fā)表于 04-23 15:12 ?1408次閱讀
    Interfacing the <b class='flag-5'>MAX7651</b>/<b class='flag-5'>MAX</b>765

    外圍設(shè)備的SPI接口MAX7651處理器-Interfac

    Abstract: This article explains how to interface a GPIO port to an SPI peripheral. It defines
    發(fā)表于 04-24 16:10 ?818次閱讀
    外圍設(shè)備的<b class='flag-5'>SPI</b><b class='flag-5'>接口</b>的<b class='flag-5'>MAX7651</b><b class='flag-5'>處理器</b>-Interfac

    外圍設(shè)備的SPI接口MAX7651處理器-Interfac

    Abstract: This article explains how to interface a GPIO port to an SPI peripheral. It defines
    發(fā)表于 05-08 09:41 ?496次閱讀
    外圍設(shè)備的<b class='flag-5'>SPI</b><b class='flag-5'>接口</b>的<b class='flag-5'>MAX7651</b><b class='flag-5'>處理器</b>-Interfac

    Intel 64位處理器,Intel 64位處理器結(jié)構(gòu)原理

    Intel 64位處理器,Intel 64位處理器結(jié)構(gòu)原理 現(xiàn)在人們廣泛使用的是由32位微處理器構(gòu)成的計(jì)算系統(tǒng),但是32位的計(jì)算和操作系統(tǒng)不能支持
    發(fā)表于 03-26 15:07 ?3287次閱讀

    蘋果a6處理器怎么樣_a6處理器參數(shù)

    蘋果正式發(fā)布iphone5,iphone5采用A6處理器,那么A6處理器怎么樣?a6處理器參數(shù)是什么呢?a6處理器四核的嗎?帶著這些疑問,我們來一起了解下A6
    發(fā)表于 09-13 14:29 ?2.6w次閱讀

    如何將ADS7866/67/68ADC連接TMS470處理器的串行外設(shè)接口端口的概述

    該應(yīng)用報告提出了將ADS7866/67/68 12/10/8位SAR模數(shù)轉(zhuǎn)換連接到TMS470處理器的串行外設(shè)接口SPI)端口的方法。T
    發(fā)表于 05-25 16:03 ?9次下載
    如何將ADS7866/67/68ADC連接TMS470<b class='flag-5'>處理器</b>的串行<b class='flag-5'>外設(shè)</b><b class='flag-5'>接口</b>端口的概述

    麒麟9000處理器和高通驍龍875處理器相比如何?

    隨著華為mate10系列的發(fā)布,華為最后一代旗艦處理器,麒麟9000也就此亮相,大家對于麒麟9000處理器十分的看好。因?yàn)轺梓?000處理器在安兔兔的跑分竟然高達(dá)72萬分,較上一代麒麟990
    的頭像 發(fā)表于 11-03 11:31 ?5857次閱讀

    MAX7651評估板配置Keil μVision IDE

    本文給出了啟動項(xiàng)目和為MAX7651評估板配置Keil μVision? IDE軟件的分步步驟。本文為MAX7651評估板目標(biāo)板編寫、編譯和下載簡單程序的三部分應(yīng)用示例中的第二個。
    的頭像 發(fā)表于 01-23 14:53 ?1155次閱讀
    為<b class='flag-5'>MAX7651</b>評估板配置Keil μVision IDE

    MAX7651/MAX7652 12位數(shù)據(jù)采集系統(tǒng)與24C02 2線串行EEPROM接口

    本文介紹將MAX7651MAX7652 12位數(shù)據(jù)采集系統(tǒng)連接至24C02 2線串行EEPROM所需的特定硬件描述和軟件程序。提供了詳細(xì)的軟件代碼。由于MAX7651/52基于標(biāo)準(zhǔn)
    的頭像 發(fā)表于 03-01 14:18 ?1161次閱讀
    <b class='flag-5'>MAX7651</b>/<b class='flag-5'>MAX</b>7652 12位數(shù)據(jù)采集系統(tǒng)與24C02 2線串行EEPROM<b class='flag-5'>接口</b>

    SPI外設(shè)MAX7651處理器接口

    The SPI?總線是許多微處理器外設(shè)芯片使用的4線串行通信接口MAX7651處理器不包括實(shí)
    的頭像 發(fā)表于 03-28 11:14 ?968次閱讀
    <b class='flag-5'>SPI</b><b class='flag-5'>外設(shè)</b>與<b class='flag-5'>MAX7651</b><b class='flag-5'>處理器</b>的<b class='flag-5'>接口</b>

    基于全志V853處理器的智能輔助駕駛算法介紹

    全志V853處理器,是專為智慧視覺領(lǐng)域設(shè)計(jì)的AI處理器,配備了高效的NPU算力和豐富的外設(shè)接口,能夠提供穩(wěn)定的AI邊緣計(jì)算支持;同時,基于V853
    的頭像 發(fā)表于 09-14 09:23 ?562次閱讀
    基于全志V853<b class='flag-5'>處理器</b>的智能輔助駕駛算法介紹