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

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

3天內不再提示

SPI外設與MAX7651處理器的接口

星星科技指導員 ? 來源:ADI ? 作者:ADI ? 2023-03-28 11:14 ? 次閱讀

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

介紹

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

SPI接口的4個引腳如下:

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

MOSI(主輸出/從輸入):如果芯片是主設備,則數據從此引腳傳輸出去,如果芯片是從設備,則數據傳輸到此引腳。

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

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

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

CPOL CPHA Transfer
0 0 SCK上升沿轉移。
SCK 在位定時中間進行轉換。
1 0 SCK 落邊轉移。
SCK 在位定時中間進行轉換。
0 1 SCK 落邊轉移。
SCK 在位時序開始時轉換。
1 1 SCK上升沿轉移。
SCK 在位時序開始時轉換。

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

pYYBAGQiW7KATGlEAAAORlzC4Tw591.gif

圖1.串行接口時序圖。

代碼示例:8 位數據傳輸

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

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

poYBAGQiW7KAKAPwAAAOL3vqPGk844.gif

圖2.通用 SPI 連接。

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

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

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

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

SPI_In EQU 20+ ;從從屬設備讀取 8 位的結果。
SPI_Out EQU 21+ ;我們希望發(fā)送給奴隸的數據。

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

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

;
;假設調用時,已經設置了片選位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 周期總數為 6 + 8 × 23 + 1 = 191。僅供讀取或寫入,總數為 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用作從機,則必須將SPI主機設置為最慢的位傳輸速度(125KHz),MAX7651必須工作在12MHz時鐘速度。

審核編輯:郭婷

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

    關注

    452

    文章

    50209

    瀏覽量

    420947
  • 微處理器
    +關注

    關注

    11

    文章

    2244

    瀏覽量

    82267
  • 總線
    +關注

    關注

    10

    文章

    2858

    瀏覽量

    87912
收藏 人收藏

    評論

    相關推薦

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

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

    基于ARM的PC/104處理器模塊設計

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

    MAX7651評估板配置Keil µVisio

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

    利用MAX7651實現ADC轉換

    摘要:本文提供了利用MAX7651評估板實現模/數轉換的源代碼和函數。它是MAX7651評估板提供的3個應用例程之一,能夠進行寫、編譯和下載等簡單的編程功能。 另請參考:
    發(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

    外圍設備的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次閱讀
    外圍設備的<b class='flag-5'>SPI</b><b class='flag-5'>接口</b>的<b class='flag-5'>MAX7651</b><b class='flag-5'>處理器</b>-Interfac

    外圍設備的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次閱讀
    外圍設備的<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位處理器結構原理

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

    蘋果a6處理器怎么樣_a6處理器參數

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

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

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

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

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

    MAX7651評估板配置Keil μVision IDE

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

    SPI外設MAX7651處理器接口

    本文介紹如何將 GPIO 端口連接到 SPI 外設。它定義了SPI協議的基礎知識,信號和SCK信號的四種傳輸變體。包括一個軟件程序,用于使用MAX7651實現
    的頭像 發(fā)表于 02-24 16:22 ?748次閱讀
    <b class='flag-5'>SPI</b><b class='flag-5'>外設</b>與<b class='flag-5'>MAX7651</b><b class='flag-5'>處理器</b>的<b class='flag-5'>接口</b>

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

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

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

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