吴忠躺衫网络科技有限公司

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

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

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

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

星星科技指導(dǎo)員 ? 來(lái)源:ADI ? 作者:ADI ? 2023-01-12 16:18 ? 次閱讀

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

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

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

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

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

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

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

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

poYBAGO_wmKAXZ4SAAAamY0V4W4014.gif?imgver=1

圖1.這些波形表示當(dāng)CPHA、CPOL和CS_TOGGLE_BETWEEN_BYTES常數(shù)設(shè)置為1時(shí),位撞擊SPI端口的輸出。此固件使用 8051 內(nèi)核中的位可尋址存儲(chǔ)器來(lái)提高 SPI 端口的速度。

審核編輯:郭婷

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

    關(guān)注

    48

    文章

    7649

    瀏覽量

    152106
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5363

    瀏覽量

    121158
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1216

    瀏覽量

    52377
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    SPI接口如何實(shí)現(xiàn)微控制器之間的通信

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

    8051微控制器架構(gòu)的簡(jiǎn)要說(shuō)明

    此前已經(jīng)介紹了關(guān)于8051微控制器基礎(chǔ)知識(shí)和引腳圖說(shuō)明等相關(guān)知識(shí),而在本文中,將重點(diǎn)介紹8051微控制器的硬件方面內(nèi)容,如 I/O 端口、R
    發(fā)表于 08-23 14:45 ?3021次閱讀
    <b class='flag-5'>8051</b><b class='flag-5'>微控制器</b>架構(gòu)的簡(jiǎn)要說(shuō)明

    8051微控制器的基礎(chǔ)知識(shí)

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

    #硬聲創(chuàng)作季 微控制器原理:8051微控制器的技術(shù)發(fā)展

    微控制器mcu8051
    Mr_haohao
    發(fā)布于 :2022年11月02日 14:47:16

    用于外部微控制器SPI連接

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

    STM32:32微控制器功能

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

    用AD7549雙D A轉(zhuǎn)換8051微控制器設(shè)計(jì)12模擬

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

    MAX6900 RTC與8051控制器的連接

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

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

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

    N76E003 88051內(nèi)核微控制器的中文數(shù)據(jù)手冊(cè)免費(fèi)下載

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

    N76E003 8051內(nèi)核微控制器的數(shù)據(jù)手冊(cè)免費(fèi)下載

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

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

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

    8051微控制器引腳說(shuō)明與基本電路

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

    DS1307與兼容8051微控制器接口

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

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

    本應(yīng)用筆記介紹如何配置高速微控制器或超高速閃存微控制器的UART,以便與支持SCI的設(shè)備通信。它首先簡(jiǎn)要討論了SCI和UART模塊之間的差異,并以一個(gè)實(shí)際示例結(jié)束,說(shuō)明如何配置基于8051的達(dá)拉斯半導(dǎo)體
    的頭像 發(fā)表于 06-13 15:48 ?806次閱讀
    將基于<b class='flag-5'>8051</b>的<b class='flag-5'>微控制器</b>連接到SCI<b class='flag-5'>端口</b>
    百家乐官网虚拟视频| 百家乐官网赢钱的技巧是什么| 百家乐官网法则| 百家乐中的小路怎样| 万博网址| 百家乐官网计划策略| 百家乐官网社区| 大发888国际娱乐net| 百家乐官网游戏补牌规则| 网页百家乐游戏| 大发888注册账号| 百家乐官网鸿泰棋牌| 百家乐平台哪个有在线支付呢 | 云龙县| 百家乐注码技巧| 博彩套利| 新百家乐官网的玩法技巧和规则| 威尼斯人娱乐城网上百家乐| 中西区| 马牌百家乐官网的玩法技巧和规则| 百家乐和怎么算输赢| 百家乐官网有电脑游戏吗| 赌博百家乐经验| 大石桥市| 百家乐犯法| 百家乐官网娱乐城注册| 百家乐现金网平台排行榜| bet365官方| 7位百家乐官网扑克桌| 大发888娱乐场| 免费百家乐官网缩水工具| 豪盈国际娱乐| 电子百家乐博彩正网| 甘洛县| 澳门百家乐规例| 百家乐官网筛子游戏| 百家乐长龙技巧| 有破解百家乐官网仪器| sz新全讯网新112| 百家乐官网玩法说| KK娱乐|