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

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

3天內不再提示

用于8051兼容微控制器的高效位敲擊SPI端口

星星科技指導員 ? 來源:ADI ? 作者:ADI ? 2023-01-12 16:18 ? 次閱讀

快速 SPI 端口可通過 GPIO 引腳進行位沖擊,并作為具有 SPI 端口的 8051 兼容微控制器的低成本替代方案。本應用筆記所示的代碼利用8051特有的特性,使用最少的額外代碼創(chuàng)建快速SPI端口。

雖然可以使用帶有SPI端口的8051兼容微控制器,但具有SPI端口通過GPIO引腳位敲擊的低成本器件通常足以滿足許多應用的需求。此處顯示的代碼利用特定于 8051 內核的功能,以最小的工作量創(chuàng)建快速 SPI 端口。#define語句中的 CPHA、CPOL 和CS_TOGGLE_BETWEEN_BYTES常量初始化宏,這些宏根據正在實現的 SPI 端口類型定制代碼。 預處理器在編譯時而不是運行時執(zhí)行此代碼定制,從而節(jié)省了寶貴的時鐘周期,如果使用決策結構(即常規(guī)的 if-else 語句),這些周期將被浪費。

下面的代碼包括利用 8051 內核功能所需的特定于 8051 的 C 命令。盡管這些命令是特定于編譯器的(在本例中為 8051 的 Keil μVision v2 開發(fā)工具),但所有適用于 8051 兼容設備的“好”C 編譯器都包含類似的命令。

檢查代碼,PORT_0定義為 sfr 類型,它提醒編譯器此標簽是 8051 特殊功能寄存器 (SFR)。由于此 SFR 是位可尋址的,因此 sbit 類型定義引用特定 SFR 位以充當 SPI 端口引腳的標識符。spiTmp 聲明中使用的 bdata 類型允許將此變量放置在 8051 內核的直接可尋址 RAM 內的特殊位可尋址內存中。同樣,sbit 類型定義了將引用 spiTmp 變量中特定位的標識符。

要通過 SPI 端口發(fā)送的字節(jié)將加載到全局字節(jié)數組 spiData 中。將此變量聲明為全局變量允許 SPI 發(fā)送/接收函數訪問 spiData,而無需將其作為參數傳遞。使用數據標識符聲明它強制編譯器將數組存儲在 8051 內核內最快的可訪問內存(直接可尋址內存)中。

spiReadWriteBlock 函數包含位撞擊 SPI 端口的代碼。它使用此 SPI 端口有效地傳輸 spiData 數組中的每個字節(jié),從數組中的最后一個元素到第一個元素。使用此反向順序訪問數組允許與零進行比較(請參閱代碼),由于 8051 指令集,這意味著更快的組裝。當 spiReadWriteBlock 函數完成時,使用 SPI 端口讀取的字節(jié)將替換 spiData 數組中的原始數據,再次從數組中的最后一個元素開始到第一個元素。

請注意,代碼經過優(yōu)化,可以發(fā)送和接收大于一個字節(jié)的數據塊。對于單字節(jié)傳輸,應刪除 spiReadWriteBlock 中的循環(huán)結構和局部變量。(這可以使用預處理器完成。

當針對Maxim DS89C430/450系列8051兼容微控制器進行編譯時,該位撞擊式SPI端口的運行速度略高于2Mbps,如圖1所示。此外,該代碼只需要兩個字節(jié)的可直接尋址RAM和139字節(jié)的閃存用于代碼空間(包括SPI端口初始化和主程序循環(huán))。

poYBAGO_wmKAXZ4SAAAamY0V4W4014.gif?imgver=1

圖1.這些波形表示當CPHA、CPOL和CS_TOGGLE_BETWEEN_BYTES常數設置為1時,位撞擊SPI端口的輸出。此固件使用 8051 內核中的位可尋址存儲器來提高 SPI 端口的速度。

審核編輯:郭婷

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

    關注

    48

    文章

    7454

    瀏覽量

    150853
  • 寄存器
    +關注

    關注

    31

    文章

    5294

    瀏覽量

    119816
  • GPIO
    +關注

    關注

    16

    文章

    1188

    瀏覽量

    51836
收藏 人收藏

    評論

    相關推薦

    SPI接口如何實現微控制器之間的通信

    微控制器的接口側配有一個通用同步和異步收發(fā) (USART)、一個 I2C 兼容型雙線接口 (TWI) 和 SPI。USART 可配置為第二個 S
    發(fā)表于 08-02 11:24 ?2619次閱讀
    <b class='flag-5'>SPI</b>接口如何實現<b class='flag-5'>微控制器</b>之間的通信

    8051微控制器架構的簡要說明

    此前已經介紹了關于8051微控制器基礎知識和引腳圖說明等相關知識,而在本文中,將重點介紹8051微控制器的硬件方面內容,如 I/O 端口、R
    發(fā)表于 08-23 14:45 ?2704次閱讀
    <b class='flag-5'>8051</b><b class='flag-5'>微控制器</b>架構的簡要說明

    8051微控制器的基礎知識

    8051微控制器是嵌入式系統(tǒng)、消費電子、汽車等各個領域中最流行和最常用的微控制器之一,技術上稱為Intel MCS-51架構。8051微控制器
    發(fā)表于 09-12 17:32 ?3218次閱讀
    <b class='flag-5'>8051</b><b class='flag-5'>微控制器</b>的基礎知識

    用于外部微控制器SPI連接

    BlueNRG-MS設備,用于天線或測量儀器的SMA連接以及用于外部微控制器SPI連接。該
    發(fā)表于 06-01 17:03

    STM32:32微控制器功能

    STM32:32微控制器功能:1、串口USART:接外設2、內部集成電路I2C:用于與I2C接口設備通信3、串行通訊接口SPI用于
    發(fā)表于 08-11 08:02

    用新型微控制器降低8051系統(tǒng)的功耗

    用新型微控制器降低8051系統(tǒng)的功耗
    發(fā)表于 05-04 13:37 ?18次下載

    用AD7549雙D A轉換8051微控制器設計12模擬

    用AD7549雙D A轉換8051微控制器設計12模擬I O端口:
    發(fā)表于 06-12 15:32 ?67次下載
    用AD7549雙D A轉換<b class='flag-5'>器</b>和<b class='flag-5'>8051</b><b class='flag-5'>微控制器</b>設計12<b class='flag-5'>位</b>模擬

    MAX6900 RTC與8051控制器的連接

    摘要:本應用筆記提供了MAX6900 RTC與8051控制器的硬件連接和軟件例程。 說明本應用筆跡介紹了MAX6900 I²C兼容RTC (實時時鐘)與
    發(fā)表于 04-21 11:11 ?659次閱讀
    MAX6900 RTC與<b class='flag-5'>8051</b><b class='flag-5'>位</b><b class='flag-5'>控制器</b>的連接

    基于微控制器的串行端口接口(SPI)啟動電路

    本應用筆記描述基于微控制器的通用串行端口接口(SPI)啟動電路的工作原理。對于需要在上電時修改某些器件參數的用戶而言,這是一種低成本解決方案。本電路實現了一種用于對轉換
    發(fā)表于 09-15 11:17 ?39次下載
    基于<b class='flag-5'>微控制器</b>的串行<b class='flag-5'>端口</b>接口(<b class='flag-5'>SPI</b>)啟動電路

    N76E003 88051內核微控制器的中文數據手冊免費下載

    N76E003為帶有flash的增強型88051內核微控制器(1T工作模式),指令集與標準的80C51完全兼容并具備更高效能。
    發(fā)表于 11-09 08:00 ?78次下載
    N76E003 8<b class='flag-5'>位</b><b class='flag-5'>8051</b>內核<b class='flag-5'>微控制器</b>的中文數據手冊免費下載

    N76E003 8051內核微控制器的數據手冊免費下載

    N76E003為帶有flash的增強型88051內核微控制器(1T工作模式),指令集與標準的80C51完全兼容并具備更高效能。
    發(fā)表于 03-04 08:00 ?37次下載
    N76E003 <b class='flag-5'>8051</b>內核<b class='flag-5'>微控制器</b>的數據手冊免費下載

    AN-812: 基于微控制器的串行端口接口(SPI?)啟動電路

    AN-812: 基于微控制器的串行端口接口(SPI?)啟動電路
    發(fā)表于 03-21 08:35 ?14次下載
    AN-812: 基于<b class='flag-5'>微控制器</b>的串行<b class='flag-5'>端口</b>接口(<b class='flag-5'>SPI</b>?)啟動電路

    8051微控制器引腳說明與基本電路

    此前已經介紹過8051微控制器的基礎知識,包括它的歷史、特性、封裝和一些實際應用。在本文中,小編將將繼續(xù)介紹關于8051微控制器引腳圖、引腳說明以及其他一些細節(jié)內容,包括
    發(fā)表于 08-23 15:53 ?7921次閱讀
    <b class='flag-5'>8051</b><b class='flag-5'>微控制器</b>引腳說明與基本電路

    DS1307與兼容8051微控制器接口

    DS1307串行實時時鐘集成了2線串行接口,可使用兼容8051微控制器進行控制。本例中的DS1307直接連接到DS5000微控制器上的兩個
    的頭像 發(fā)表于 03-01 13:52 ?1322次閱讀
    DS1307與<b class='flag-5'>兼容</b><b class='flag-5'>8051</b>的<b class='flag-5'>微控制器</b>接口

    將基于8051微控制器連接到SCI端口

    本應用筆記介紹如何配置高速微控制器或超高速閃存微控制器的UART,以便與支持SCI的設備通信。它首先簡要討論了SCI和UART模塊之間的差異,并以一個實際示例結束,說明如何配置基于8051的達拉斯半導體
    的頭像 發(fā)表于 06-13 15:48 ?707次閱讀
    將基于<b class='flag-5'>8051</b>的<b class='flag-5'>微控制器</b>連接到SCI<b class='flag-5'>端口</b>