在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

第七章 GPIO——位帶操作

W55MH32 ? 來源:W55MH32 ? 作者:W55MH32 ? 2025-05-22 16:47 ? 次閱讀

單芯片解決方案,開啟全新體驗(yàn)——W55MH32 高性能以太網(wǎng)單片機(jī)

W55MH32是WIZnet重磅推出的高性能以太網(wǎng)單片機(jī),它為用戶帶來前所未有的集成化體驗(yàn)。這顆芯片將強(qiáng)大的組件集于一身,具體來說,一顆W55MH32內(nèi)置高性能Arm? Cortex-M3核心,其主頻最高可達(dá)216MHz;配備1024KB FLASH與96KB SRAM,滿足存儲(chǔ)與數(shù)據(jù)處理需求;集成TOE引擎,包含WIZnet全硬件TCP/IP協(xié)議棧、內(nèi)置MAC以及PHY,擁有獨(dú)立的32KB以太網(wǎng)收發(fā)緩存,可供8個(gè)獨(dú)立硬件socket使用。如此配置,真正實(shí)現(xiàn)了All-in-One解決方案,為開發(fā)者提供極大便利。

在封裝規(guī)格上,W55MH32 提供了兩種選擇:QFN100和QFN68。

W55MH32L采用QFN100封裝版本,尺寸為12x12mm,其資源豐富,專為各種復(fù)雜工控場景設(shè)計(jì)。它擁有66個(gè)GPIO、3個(gè)ADC、12通道DMA、17個(gè)定時(shí)器、2個(gè)I2C、5個(gè)串口、2個(gè)SPI接口(其中1個(gè)帶I2S接口復(fù)用)、1個(gè)CAN、1個(gè)USB2.0以及1個(gè)SDIO接口。如此豐富的外設(shè)資源,能夠輕松應(yīng)對工業(yè)控制中多樣化的連接需求,無論是與各類傳感器、執(zhí)行器的通信,還是對復(fù)雜工業(yè)協(xié)議的支持,都能游刃有余,成為復(fù)雜工控領(lǐng)域的理想選擇。 同系列還有QFN68封裝的W55MH32Q版本,該版本體積更小,僅為8x8mm,成本低,適合集成度高的網(wǎng)關(guān)模組等場景,軟件使用方法一致。更多信息和資料請進(jìn)入http://www.w5500.com/網(wǎng)站或者私信獲取。

此外,本W(wǎng)55MH32支持硬件加密算法單元,WIZnet還推出TOE+SSL應(yīng)用,涵蓋TCP SSL、HTTP SSL以及 MQTT SSL等,為網(wǎng)絡(luò)通信安全再添保障。

為助力開發(fā)者快速上手與深入開發(fā),基于W55MH32L這顆芯片,WIZnet精心打造了配套開發(fā)板。開發(fā)板集成WIZ-Link芯片,借助一根USB C口數(shù)據(jù)線,就能輕松實(shí)現(xiàn)調(diào)試、下載以及串口打印日志等功能。開發(fā)板將所有外設(shè)全部引出,拓展功能也大幅提升,便于開發(fā)者全面評估芯片性能。

若您想獲取芯片和開發(fā)板的更多詳細(xì)信息,包括產(chǎn)品特性、技術(shù)參數(shù)以及價(jià)格等,歡迎訪問官方網(wǎng)頁:http://www.w5500.com/,我們期待與您共同探索W55MH32的無限可能。

wKgZPGgbOfaANhwzACodXd3sVzg463.png

第七章 GPIO——位帶操作

本章參考資料:《W55MH32-中文參考手冊》存儲(chǔ)器和總線構(gòu)架章節(jié)、GPIO章節(jié)。

1 位帶操作基礎(chǔ)

1.1 位帶技術(shù)概述

位操作是指針對單個(gè)二進(jìn)制比特位的獨(dú)立讀寫操作,這一特性在 51 單片機(jī)開發(fā)中極為常見(51 單片機(jī)通過sbit關(guān)鍵字實(shí)現(xiàn)位定義)。不同于 51 單片機(jī),W55MH32 采用位帶別名區(qū)訪問機(jī)制實(shí)現(xiàn)位操作功能。

在 W55MH32 中,位帶技術(shù)主要應(yīng)用于兩大區(qū)域:

SRAM 位帶區(qū):SRAM 空間的最低 1MB 區(qū)域(地址范圍:0X20000000~0X200FFFFF)

外設(shè)位帶區(qū):片上外設(shè)空間的最低 1MB 區(qū)域(地址范圍:0X40000000~0X40100000)

這兩個(gè) 1MB 的基礎(chǔ)位帶區(qū)除具備常規(guī)存儲(chǔ)操作功能外,還映射了專屬的位帶別名區(qū)。位帶別名區(qū)通過特殊機(jī)制將基礎(chǔ)位帶區(qū)的每個(gè)比特位擴(kuò)展為 32 位字(4 字節(jié)),通過訪問這些擴(kuò)展后的 32 位字,即可實(shí)現(xiàn)對原基礎(chǔ)位帶區(qū)中指定比特位的精準(zhǔn)操作。W55MH32 的內(nèi)存映射與位帶區(qū)關(guān)系可參考下圖:

wKgZO2gu4zOANvivAAE60Sw1wGc380.png

1.2 位帶區(qū)細(xì)分解析

1.2.1 外設(shè)位帶區(qū)

外設(shè)位帶區(qū)地址范圍為 0X40000000~0X40100000(1MB),覆蓋了 W55MH32 片上外設(shè)的全部寄存器(寄存器地址范圍:0X40000000~0X40029FFF)。其對應(yīng)的位帶別名區(qū)地址范圍為 0X42000000~0X43FFFFFF(32MB),該區(qū)間恰好落在 W55MH32 保留地址空間(0X40030000~0X4FFFFFFF)內(nèi),避免了與其他外設(shè)寄存器地址的沖突。

與 51 單片機(jī)僅部分寄存器支持位操作(如 SBUF 需字節(jié)操作)不同,W55MH32 的所有片上外設(shè)寄存器均支持位帶操作,這一特性顯著提升了底層控制的靈活性。不過需注意:實(shí)際項(xiàng)目中通常不會(huì)對所有寄存器進(jìn)行位操作,僅在需要高頻操作 IO 口等特定場景下,才會(huì)針對性地對 IO 相關(guān)寄存器啟用位操作。

1.2.2 SRAM位帶區(qū)

SRAM 位帶區(qū)地址范圍為 0X20000000~0X200FFFFF(1MB),對應(yīng)的位帶別名區(qū)地址范圍為 0X22000000~0X23FFFFFF(32MB)。由于 SRAM 的位操作需求較少,該區(qū)域的實(shí)際應(yīng)用場景相對有限。

1.3 位帶地址轉(zhuǎn)換機(jī)制

位帶區(qū)的每個(gè)比特位擴(kuò)展為 32 位字后,僅最低有效位(LSB)有效。盡管看似空間利用率不高,但這種設(shè)計(jì)與 W55MH32 的 32 位系統(tǒng)總線架構(gòu)匹配,能確保以 4 字節(jié)為單位的訪問效率最大化。

1.3.1 地址轉(zhuǎn)換公式

通過指針訪問位帶別名區(qū)地址,即可實(shí)現(xiàn)對基礎(chǔ)位帶區(qū)比特位的操作。具體轉(zhuǎn)換公式如下:

外設(shè)位帶別名區(qū)地址:設(shè)基礎(chǔ)位帶區(qū)中某比特所在字節(jié)地址為A,位序號為n(0≤n≤31,實(shí)際范圍由寄存器位寬決定),則其在別名區(qū)的地址為:

AliasAddr= =0x42000000+ (A-0x40000000)*8*4 +n*4

公式解析:

0x42000000:外設(shè)位帶別名區(qū)起始地址

(A - 0x40000000):目標(biāo)比特前的字節(jié)數(shù)

×8×4:單字節(jié) 8 位,每位擴(kuò)展為 4 字節(jié)

n×4:目標(biāo)比特在字節(jié)內(nèi)的偏移(每位占 4 字節(jié))

SRAM 位帶別名區(qū)地址:設(shè)基礎(chǔ)位帶區(qū)中某比特所在字節(jié)地址為A,位序號為n,則其在別名區(qū)的地址為:

AliasAddr= =0x22000000+ (A-0x20000000)*8*4 +n*4

公式解析:公式邏輯與外設(shè)位帶區(qū)一致,僅起始地址(0x22000000)和基礎(chǔ)位帶區(qū)起始地址(0x20000000)不同。

1.3.2 統(tǒng)一宏定義

為簡化操作,可將兩類地址轉(zhuǎn)換合并為統(tǒng)一宏定義:

// 把“位帶地址+位序號”轉(zhuǎn)換成別名地址的宏
#define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x02000000+((addr & 0x00FFFFFF)

addr & 0xF0000000:提取地址高位(0x40000000 或 0x20000000),用于區(qū)分外設(shè) / SRAM 區(qū)域

+0x02000000:將高位轉(zhuǎn)換為別名區(qū)起始地址(0x42000000 或 0x22000000)

(addr & 0x00FFFFFF) << 5:等效于(A - 基礎(chǔ)區(qū)起始地址)×8×4(屏蔽高位后左移 5 位 =×32=×8×4)

bitnum << 2:等效于n×4(左移 2 位 =×4)

配合以下宏可實(shí)現(xiàn)位帶操作:

// 把一個(gè)地址轉(zhuǎn)換成一個(gè)指針
#define MEM_ADDR(addr)  *((volatile unsigned long  *)(addr))

// 把位帶別名區(qū)地址轉(zhuǎn)換成指針
#define BIT_ADDR(addr, bitnum)   MEM_ADDR(BITBAND(addr, bitnum))

2 GPIO位帶操作實(shí)踐

2.1 GPIO 寄存器映射

外設(shè)位帶區(qū)覆蓋了所有片上外設(shè)寄存器,理論上可通過宏為每個(gè)寄存器位定義別名地址。但實(shí)際開發(fā)中,通常僅針對高頻操作的 GPIO 寄存器(如輸出數(shù)據(jù)寄存器 ODR、輸入數(shù)據(jù)寄存器 IDR)啟用位操作。

根據(jù)手冊,GPIO 的 ODR 和 IDR 寄存器相對于 GPIO 基址的偏移分別為 12 和 8(GPIOx_BASE由庫函數(shù)定義)。具體寄存器地址映射如下:

代碼清單:位帶操作-1 GPIO ODR 和 IDR 寄存器映射

// GPIO ODR 和 IDR 寄存器地址映射
#define GPIOA_ODR_Addr    (GPIOA_BASE+12) //0x4001080C
#define GPIOB_ODR_Addr    (GPIOB_BASE+12) //0x40010C0C
#define GPIOC_ODR_Addr    (GPIOC_BASE+12) //0x4001100C
#define GPIOD_ODR_Addr    (GPIOD_BASE+12) //0x4001140C
#define GPIOE_ODR_Addr    (GPIOE_BASE+12) //0x4001180C
#define GPIOF_ODR_Addr    (GPIOF_BASE+12) //0x40011A0C
#define GPIOG_ODR_Addr    (GPIOG_BASE+12) //0x40011E0C

#define GPIOA_IDR_Addr    (GPIOA_BASE+8)  //0x40010808
#define GPIOB_IDR_Addr    (GPIOB_BASE+8)  //0x40010C08
#define GPIOC_IDR_Addr    (GPIOC_BASE+8)  //0x40011008
#define GPIOD_IDR_Addr    (GPIOD_BASE+8)  //0x40011408
#define GPIOE_IDR_Addr    (GPIOE_BASE+8)  //0x40011808
#define GPIOF_IDR_Addr    (GPIOF_BASE+8)  //0x40011A08
#define GPIOG_IDR_Addr    (GPIOG_BASE+8)  //0x40011E08

注:不同單片機(jī)型號的 GPIO 端口數(shù)量可能不同(如 64pin 型號最多僅支持到 C 端口),實(shí)際使用時(shí)需根據(jù)具體型號調(diào)整。

2.2 GPIO位操作宏定義

通過位帶別名區(qū)地址,可直接操作指定 GPIO 端口的單個(gè) IO 口。以下為 GPIO 輸入 / 輸出位操作的宏定義:

代碼清單:位帶操作-2 GPIO 輸入輸出位操作

// 單獨(dú)操作 GPIO的某一個(gè)IO口,n(0,1,2...15),n表示具體是哪一個(gè)IO口
#define PAout(n)   BIT_ADDR(GPIOA_ODR_Addr,n)  //輸出
#define PAin(n)    BIT_ADDR(GPIOA_IDR_Addr,n)  //輸入

#define PBout(n)   BIT_ADDR(GPIOB_ODR_Addr,n)  //輸出
#define PBin(n)    BIT_ADDR(GPIOB_IDR_Addr,n)  //輸入

#define PCout(n)   BIT_ADDR(GPIOC_ODR_Addr,n)  //輸出
#define PCin(n)    BIT_ADDR(GPIOC_IDR_Addr,n)  //輸入

#define PDout(n)   BIT_ADDR(GPIOD_ODR_Addr,n)  //輸出
#define PDin(n)    BIT_ADDR(GPIOD_IDR_Addr,n)  //輸入

#define PEout(n)   BIT_ADDR(GPIOE_ODR_Addr,n)  //輸出
#define PEin(n)    BIT_ADDR(GPIOE_IDR_Addr,n)  //輸入

#define PFout(n)   BIT_ADDR(GPIOF_ODR_Addr,n)  //輸出
#define PFin(n)    BIT_ADDR(GPIOF_IDR_Addr,n)  //輸入

#define PGout(n)   BIT_ADDR(GPIOG_ODR_Addr,n)  //輸出
#define PGin(n)    BIT_ADDR(GPIOG_IDR_Addr,n)  //輸入

2.3 主函數(shù)示例

以下為通過位操作控制 GPIO 的主函數(shù)示例:

代碼清單:位帶操作-3 main 函數(shù)

int main(void)
{
    // 程序來到main函數(shù)之前,啟動(dòng)文件:statup_w55mh32_hd.s已經(jīng)調(diào)用
    // SystemInit()函數(shù)把系統(tǒng)時(shí)鐘初始化成72MHZ
    // SystemInit()在system_w55mh32.c中定義
    // 如果用戶想修改系統(tǒng)時(shí)鐘,可自行編寫程序修改

    LED_GPIO_Config();

    while ( 1 ) {

    PDout(14)= 0;
    SOFT_Delay(0x0FFFFF);

    }
}

WIZnet 是一家無晶圓廠半導(dǎo)體公司,成立于 1998 年。產(chǎn)品包括互聯(lián)網(wǎng)處理器 iMCU?,它采用 TOE(TCP/IP 卸載引擎)技術(shù),基于獨(dú)特的專利全硬連線 TCP/IP。iMCU? 面向各種應(yīng)用中的嵌入式互聯(lián)網(wǎng)設(shè)備。

WIZnet 在全球擁有 70 多家分銷商,在香港、韓國、美國設(shè)有辦事處,提供技術(shù)支持和產(chǎn)品營銷。

香港辦事處管理的區(qū)域包括:澳大利亞、印度、土耳其、亞洲(韓國和日本除外)。

審核編輯 黃宇

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

    關(guān)注

    6061

    文章

    44866

    瀏覽量

    645991
  • WIZnet
    +關(guān)注

    關(guān)注

    3

    文章

    21

    瀏覽量

    42362
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1258

    瀏覽量

    53461
收藏 人收藏

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    《我和 LabVIEW》示例程序(2010.04.02)光盤第一至第七章

    《我和 LabVIEW》示例程序(2010.04.02)光盤第一至第七章
    發(fā)表于 06-27 17:08

    《測控電路》習(xí)題完整參考答案(第七章

    《測控電路》習(xí)題完整參考答案(第七章
    發(fā)表于 05-07 11:38

    第七章MMU例子代碼交叉編譯后下載到mini2440后,LED燈一直亮著并沒有閃

    在書的第七章MMU的例子代碼交叉編譯后下載到mini2440后,LED燈一直亮著并沒有閃。不知道是什么原因,有沒有人遇到過相同問題的?剛剛開始的時(shí)候認(rèn)為是延時(shí)不夠長,自己把wait()改長后還是沒有用。另外除了LED外,還有別的東西能指示作用嗎?謝謝。
    發(fā)表于 05-17 05:04

    GPIO按鍵實(shí)驗(yàn)與帶操作

    1、按鍵實(shí)驗(yàn):GPIO_ReadInputDataBit來獲取狀態(tài),高電平返回1.低電平返回0;2、GPIO——帶操作:3、啟動(dòng)文件詳解
    發(fā)表于 08-23 09:19

    高頻電子線路第七章答案

    高頻電子線路第七章答案.
    發(fā)表于 06-05 10:42 ?42次下載

    《測控電路》習(xí)題完整參考答案(第七章

    《測控電路》習(xí)題完整參考答案(第七章
    發(fā)表于 02-14 17:02 ?0次下載

    第七章AVR單片機(jī)的應(yīng)用

    第七章AVR單片機(jī)的應(yīng)用
    發(fā)表于 09-21 11:41 ?4次下載
    <b class='flag-5'>第七章</b>AVR單片機(jī)的應(yīng)用

    stm8s BLDC電機(jī) 第七章源代碼 資料下載

    stm8s BLDC電機(jī) 第七章源代碼
    發(fā)表于 03-12 10:35 ?12次下載

    電力系統(tǒng)繼電保護(hù)第七章-微機(jī)保護(hù)概述(課件)下載.ppt

    繼電保護(hù)第七章-微機(jī)保護(hù)概述(課件)
    發(fā)表于 04-28 09:43 ?0次下載
    電力系統(tǒng)繼電保護(hù)<b class='flag-5'>第七章</b>-微機(jī)保護(hù)概述(課件)下載.ppt

    快速理解STM32帶操作原理

    作者:strongerHuang 說到位帶操作,可能很多人比較陌生,但說到控制IO,你肯定不會(huì)陌生。有的項(xiàng)目為了最大效率控制IO,使用帶操作。下面就來簡單說說未帶操作的內(nèi)容。 一、初
    的頭像 發(fā)表于 09-03 15:40 ?4996次閱讀
    快速理解STM32<b class='flag-5'>位</b><b class='flag-5'>帶操作</b>原理

    第七章 開關(guān)電源PCB排版解析

    第七章 開關(guān)電源PCB排版解析7.1 鏡像面電磁理論中的鏡像面概念對設(shè)計(jì)者掌握開關(guān)電源的PCB 排版會(huì)有很大的幫助。  下面是鏡像面的基本概念。  (a)是當(dāng)直流電流在一個(gè)接地層上方流過時(shí)的情景
    發(fā)表于 10-21 15:21 ?0次下載
    <b class='flag-5'>第七章</b> 開關(guān)電源PCB排版解析

    STM32單片機(jī)---帶操作

    STM32單片機(jī)---帶操作一、帶操作二、寄存器地址與別名地址轉(zhuǎn)換技巧三、帶操作LED燈示
    發(fā)表于 11-29 14:51 ?2次下載
    STM32單片機(jī)---<b class='flag-5'>位</b><b class='flag-5'>帶操作</b>

    初識“帶操作

    目錄初識“帶操作”什么是“帶操作”?STM32的“帶操作”為何會(huì)出現(xiàn)?STM32“
    發(fā)表于 01-12 17:18 ?0次下載
    初識“<b class='flag-5'>位</b><b class='flag-5'>帶操作</b>”

    STM32帶操作-詳解-計(jì)算過程

    前言這篇文章主要用來講解STM32中的帶操作,學(xué)習(xí)過51單片機(jī)的應(yīng)改了解,在控制51單片機(jī)IO引腳時(shí),只需要向某一個(gè)IO口賦值就可以實(shí)現(xiàn),對應(yīng)IO口的輸出高或地。那么STM32可以不可以像51
    發(fā)表于 01-17 10:43 ?5次下載
    STM32<b class='flag-5'>位</b><b class='flag-5'>帶操作</b>-詳解-計(jì)算過程

    衛(wèi)星通信v2 第七章 仿真與實(shí)戰(zhàn)(10)關(guān)鍵技術(shù)

    !其他的算法都是需要根據(jù)環(huán)境而變!頭大了吧?當(dāng)年我也是如此! 捕獲! 原文標(biāo)題:衛(wèi)星通信v2 第七章 仿真與實(shí)戰(zhàn)(10)關(guān)鍵技術(shù) 文章出處:【微信公眾號:通信工程師專輯】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
    的頭像 發(fā)表于 02-06 12:55 ?884次閱讀
    主站蜘蛛池模板: 国产在线精品一区免费香蕉 | 午夜一级毛片免费视频 | 四虎影院在线观看网站 | 亚洲欧美网站 | 日本www高清 | 国产拍拍拍精品视频 | 四虎精品视频 | 操欧美女人 | 色色色色色色色色色色色色 | 欧美不卡一区 | 免费特黄一区二区三区视频一 | 最近最新视频中文字幕4 | 国产精品推荐天天看天天爽 | 国产传媒在线观看视频免费观看 | 美女免费观看一区二区三区 | 欧美草比 | 国产美女免费观看 | 九色九色九色在线综合888 | 1000部啪啪未满十八勿入中国 | 99久久99久久久精品齐齐鬼色 | 天天做天天爱天天干 | 成人在线看片 | 黄色三级视频网站 | 四虎永久在线精品2022 | 天天摸天天操免费播放小视频 | 美女黄页网 | 给我免费播放片黄色 | 国语自产自拍秒拍在线视频 | 欧美精品高清在线xxxx | 天天透天天干 | 天天靠天天擦天天摸 | 性色视频在线 | 性色影院| 香蕉午夜视频 | 色天使视频 | avbobo官网在线入口 | 伊人婷婷涩六月丁香七月 | 亚洲免费观看在线视频 | 男男gay高h文 | 四虎免费影院4hu永久免费 | 久草资源免费 |