mFrame
載入中...
搜尋中...
無符合項目
mcxa153::core::CoreMux 類別 參考文件

MCXA153 多工器 (Mux) 配置管理類別 更多...

#include <CoreMux.h>

類別mcxa153::core::CoreMux的繼承圖:
ufm::lang::NonInstantiable ufm::lang::Object ufm::lang::Interface

靜態公開方法(Static Public Methods)

static void mode (core::mux::MuxPortPin select, hal::digital::GeneralPin::Mode pinMode)
 設定引腳工作模式
 
static void mode (core::mux::Mux m, hal::digital::GeneralPin::Mode pinMode)
 設定引腳工作模式 (Mux 枚舉版本)
 
static void mux (core::mux::Mux m)
 設定引腳多工功能
 
static void lock (core::mux::MuxPortPin select)
 鎖定引腳配置 (MuxPortPin 版本)
 
static void lock (core::mux::Mux m)
 鎖定引腳配置 (Mux 枚舉版本)
 
static void passiveFilter (core::mux::MuxPortPin select, bool enable)
 啟用/停用被動濾波器 (MuxPortPin 版本)
 
static void passiveFilter (core::mux::Mux select, bool enable)
 啟用/停用被動濾波器 (Mux 枚舉版本)
 
static void driveStrength (core::mux::MuxPortPin select, bool enable, bool dual=false)
 設定引腳驅動強度 (MuxPortPin 版本)
 
static void driveStrength (core::mux::Mux select, bool enable, bool dual=false)
 設定引腳驅動強度 (Mux 枚舉版本)
 
static void slowRate (core::mux::MuxPortPin select, bool enable=true)
 設定引腳緩慢轉換率 (MuxPortPin 版本)
 
static void slowRate (core::mux::Mux select, bool enable=true)
 設定引腳緩慢轉換率 (Mux 枚舉版本)
 

額外的繼承成員

- 公開方法(Public Methods) 繼承自 ufm::lang::Object
void * operator new (size_t n)
 使用運算子 new 分配記憶體
 
void * operator new (size_t n, void *p)
 在指定記憶體上調用運算子 new
 
virtual ufm::lang::ObjectgetObject (void) override
 取得對應的 Object 物件
 
void delay (int milliseconds) const
 延遲指定的毫秒數進行執行緒等待
 
bool equals (Object *object) const
 判斷與另一物件是否為相同參照(指標型態比較)
 
bool equals (Object &object) const
 判斷與另一物件是否為相同參照(參照型態比較)
 
void wait (void) const
 使當前線程等待直到被通知
 
bool wait (int timeout) const
 等待通知或超時
 
bool yield (void) const
 讓執行緒讓渡控制權給同優先權的下一個執行緒
 
int lock (void) const
 核心鎖定,鎖定期間禁止線程切換
 
int unlock (void) const
 核心解鎖
 
ufm::sys::ThreadcurrentThread (void) const
 取得當前執行緒指標
 
virtual int hashcode (void) const
 返回對象的哈希碼值。支持這種方法是為了散列表,如HashMap提供的那樣。
 
- 公開方法(Public Methods) 繼承自 ufm::lang::Interface
virtual ~Interface (void)=default
 虛擬析構函式
 
- 保護方法(Protected Methods) 繼承自 ufm::lang::NonInstantiable
 NonInstantiable (void)=delete
 禁止實例化 NonInstantiable 類別
 
 NonInstantiable (const NonInstantiable &)=delete
 禁止複製建構函式
 
virtual ~NonInstantiable (void) override=default
 Destroy the Non Instantiable object.
 
NonInstantiableoperator= (const NonInstantiable &)=delete
 
NonInstantiableoperator= (NonInstantiable &&)=delete
 

詳細描述

MCXA153 多工器 (Mux) 配置管理類別

CoreMux 類別提供 MCXA153 微控制器的引腳多工器功能管理, 允許配置引腳的替代功能、工作模式、濾波器、驅動強度等特性。 此類別為靜態工具類別,不可實例化。

主要功能:

  • 引腳功能多工選擇 (Mux 功能)
  • 引腳模式配置 (輸入/輸出/開漏等)
  • 引腳鎖定機制
  • 被動濾波器控制
  • 驅動強度設定
  • 緩慢轉換率控制

技術特性:

  • 支援所有 GPIO 埠 (PORT0-PORT3)
  • 每個埠最多 32 個引腳
  • 多達 16 種替代功能選擇
  • 硬體鎖定機制防止誤配置
  • 靜態方法設計,無需實例化

使用流程:

  1. 使用 mode() 設定引腳工作模式
  2. 使用 mux() 選擇引腳替代功能
  3. 根據需要設定濾波器、驅動強度等
  4. 使用 lock() 鎖定配置防止修改

使用範例:

// 配置 P0.5 為 UART0 TXD 功能
CoreMux::mode(core::mux::Mux::P0_5_UART0_TXD,
hal::digital::GeneralPin::Mode::PUSH_PULL_OUTPUT);
CoreMux::mux(core::mux::Mux::P0_5_UART0_TXD);
CoreMux::lock(core::mux::Mux::P0_5_UART0_TXD);
static void mode(core::mux::MuxPortPin select, hal::digital::GeneralPin::Mode pinMode)
設定引腳工作模式
static void mux(core::mux::Mux m)
設定引腳多工功能
int lock(void) const
核心鎖定,鎖定期間禁止線程切換

重要注意事項:

  • 某些引腳功能衝突,需要謹慎規劃
  • 鎖定後的引腳配置無法修改,直到系統重設
  • 某些特殊功能引腳有額外的電氣特性要求
  • 高速信號引腳建議啟用驅動強度和調整轉換率
參閱
core::mux::Mux 引腳功能定義
core::mux::MuxPortPin 引腳位置定義
hal::digital::GeneralPin::Mode 引腳模式定義
警告
引腳配置錯誤可能導致硬體損壞或系統異常
此類別繼承自 ufm::lang::NonInstantiable,為純靜態工具類別

函式成員說明文件

◆ driveStrength() [1/2]

static void mcxa153::core::CoreMux::driveStrength ( core::mux::Mux select,
bool enable,
bool dual = false )
inlinestatic

設定引腳驅動強度 (Mux 枚舉版本)

配置輸出引腳的電流驅動能力,使用 Mux 枚舉值作為輸入參數。 此方法是 driveStrength(MuxPortPin, bool, bool) 的便利版本。

參數
select目標引腳及其功能
enable驅動強度控制 (true=高驅動, false=標準驅動)
dual雙驅動模式 (預設 false)

內部實作:

  • 自動從 Mux 值提取 MuxPortPin
  • 調用基礎版本的 driveStrength 方法
  • 保持相同的驅動特性和限制

使用範例:

// SPI SCLK 需要較高驅動強度
CoreMux::mode(core::mux::Mux::P0_6_SPI0_SCK,
hal::digital::GeneralPin::Mode::PUSH_PULL_OUTPUT);
CoreMux::mux(core::mux::Mux::P0_6_SPI0_SCK);
CoreMux::driveStrength(core::mux::Mux::P0_6_SPI0_SCK, true, false);
static void driveStrength(core::mux::MuxPortPin select, bool enable, bool dual=false)
設定引腳驅動強度 (MuxPortPin 版本)
這是內聯函數,編譯時會自動展開
參閱
driveStrength(MuxPortPin, bool, bool)

◆ driveStrength() [2/2]

static void mcxa153::core::CoreMux::driveStrength ( core::mux::MuxPortPin select,
bool enable,
bool dual = false )
static

設定引腳驅動強度 (MuxPortPin 版本)

配置輸出引腳的電流驅動能力,適應不同負載需求和信號完整性要求。 支援標準驅動和高驅動模式,以及雙驅動配置。

參數
select目標引腳位置
enable驅動強度控制
  • true: 啟用高驅動強度 (~8mA)
  • false: 使用標準驅動強度 (~4mA)
dual雙驅動模式 (預設 false)
  • true: 啟用雙驅動配置 (額外增強)
  • false: 單一驅動配置

驅動能力等級:

  • 標準模式:±4mA (低功耗,適合大多數應用)
  • 高驅動模式:±8mA (適合容性負載)
  • 雙驱動模式:±12mA (適合重負載)

電氣特性:

  • 輸出電壓擺幅:0V 到 VDD
  • 上升/下降時間:依驅動強度調整
  • 功耗:隨驅動強度線性增加
  • EMI 特性:高驅動可能增加輻射

適用場景:

  • 標準驅動:一般 GPIO、LED 驅動
  • 高驅動:長線驅動、容性負載
  • 雙驅動:馬達驅動、繼電器驅動

設計考量:

  • 驅動強度越高,功耗越大
  • 過度驅動可能增加 EMI
  • 應根據負載特性選擇適當等級
  • 考慮信號完整性和電源設計

使用範例:

// 高速時鐘輸出,需要高驅動強度
CoreMux::mode(core::mux::Mux::P0_8_CLKOUT,
hal::digital::GeneralPin::Mode::PUSH_PULL_OUTPUT);
CoreMux::mux(core::mux::Mux::P0_8_CLKOUT);
CoreMux::driveStrength(core::mux::getMuxPortPin(core::mux::Mux::P0_8_CLKOUT), true, false);
僅對輸出引腳有效,輸入引腳設定無效果
警告
高驅動強度會增加功耗和 EMI,請謹慎使用
參閱
mode(), slowRate()

◆ lock() [1/2]

static void mcxa153::core::CoreMux::lock ( core::mux::Mux m)
inlinestatic

鎖定引腳配置 (Mux 枚舉版本)

啟用硬體引腳配置鎖定機制,使用 Mux 枚舉值作為輸入參數。 此方法是 lock(MuxPortPin) 的便利版本。

參數
m目標引腳及其功能

內部實作:

  • 自動從 Mux 值提取 MuxPortPin
  • 調用基礎版本的 lock 方法
  • 保持相同的鎖定特性和限制

使用範例:

// 完整的引腳配置和鎖定流程
CoreMux::mode(core::mux::Mux::P0_5_UART0_TXD,
hal::digital::GeneralPin::Mode::PUSH_PULL_OUTPUT);
CoreMux::mux(core::mux::Mux::P0_5_UART0_TXD);
CoreMux::lock(core::mux::Mux::P0_5_UART0_TXD); // 鎖定配置
這是內聯函數,編譯時會自動展開
參閱
lock(MuxPortPin)

◆ lock() [2/2]

static void mcxa153::core::CoreMux::lock ( core::mux::MuxPortPin select)
static

鎖定引腳配置 (MuxPortPin 版本)

啟用硬體引腳配置鎖定機制,防止意外修改引腳設定。 一旦鎖定,引腳的模式和功能配置將無法更改,直到系統重設。

參數
select目標引腳位置

鎖定機制:

  • 硬體實作的防護機制
  • 防止軟體錯誤修改關鍵引腳
  • 提高系統穩定性和安全性
  • 只能通過系統重設解除

鎖定範圍:

  • 引腳模式 (輸入/輸出/開漏等)
  • 多工功能選擇
  • 上拉下拉配置
  • 驅動強度設定
  • 轉換率控制

適用場景:

  • 關鍵系統功能引腳
  • 安全相關的通訊介面
  • 時鐘輸出引腳
  • 電源管理引腳

使用時機:

  • 完成所有引腳配置後
  • 系統初始化的最後階段
  • 進入正常運行模式前
鎖定操作不可逆,請謹慎使用
警告
鎖定後任何修改嘗試都會被忽略
參閱
mode(), mux()

◆ mode() [1/2]

static void mcxa153::core::CoreMux::mode ( core::mux::Mux m,
hal::digital::GeneralPin::Mode pinMode )
inlinestatic

設定引腳工作模式 (Mux 枚舉版本)

配置指定引腳的工作模式,使用 Mux 枚舉值作為輸入參數。 此方法是 mode(MuxPortPin, Mode) 的便利版本。

參數
m目標引腳及其功能 (Mux 格式)
pinMode引腳工作模式

內部實作:

  • 自動從 Mux 值提取 MuxPortPin
  • 調用基礎版本的 mode 方法
  • 保持相同的功能和限制

使用範例:

// 設定 P0.5 為 UART TXD 輸出模式
CoreMux::mode(core::mux::Mux::P0_5_UART0_TXD,
hal::digital::GeneralPin::Mode::PUSH_PULL_OUTPUT);
這是內聯函數,編譯時會自動展開
參閱
mode(MuxPortPin, Mode)

◆ mode() [2/2]

static void mcxa153::core::CoreMux::mode ( core::mux::MuxPortPin select,
hal::digital::GeneralPin::Mode pinMode )
static

設定引腳工作模式

配置指定引腳的工作模式,包括輸入/輸出方向、上拉下拉等特性。 此方法必須在設定引腳功能之前調用。

參數
select目標引腳位置 (MuxPortPin 格式)
pinMode引腳工作模式
  • INPUT_FLOATING: 浮動輸入 (高阻抗)
  • INPUT_PULL_UP: 上拉輸入 (內建上拉電阻)
  • INPUT_PULL_DOWN: 下拉輸入 (內建下拉電阻)
  • PUSH_PULL_OUTPUT: 推拉輸出 (標準數位輸出)
  • OPEN_DRAIN_OUTPUT: 開漏輸出 (需外接上拉)

模式特性說明:

  • INPUT_FLOATING: 適合低功耗應用,但易受干擾
  • INPUT_PULL_UP: 預設高電平,按鈕等應用常用
  • INPUT_PULL_DOWN: 預設低電平,開關信號常用
  • PUSH_PULL_OUTPUT: 驅動能力強,速度快
  • OPEN_DRAIN_OUTPUT: 支援多設備共享信號線

電氣特性:

  • 內建上拉/下拉電阻:約 47kΩ
  • 推拉輸出驅動能力:約 ±4mA (標準)
  • 開漏輸出漏極電流:約 4mA
  • 輸入施密特觸發器:自動啟用
模式設定會影響引腳的電氣特性和功耗
警告
輸出模式下請勿外接電壓,可能損壞引腳
參閱
mux(), lock()

◆ mux()

static void mcxa153::core::CoreMux::mux ( core::mux::Mux m)
static

設定引腳多工功能

啟用指定引腳的替代功能,將引腳從一般 GPIO 切換為特殊外設功能。 例如:UART、SPI、I2C、PWM 等周邊功能。

參數
m目標引腳及其替代功能 (完整 Mux 定義)

功能原理:

  • 解析 Mux 值中的引腳位置和功能編號
  • 配置相應的多工暫存器
  • 啟用替代功能路由
  • 停用一般 GPIO 功能

支援功能類別:

  • 通訊介面:UART、SPI、I2C
  • 計時器:PWM、捕捉/比較
  • 類比:ADC、DAC、比較器
  • 時鐘:系統時鐘輸出
  • 除錯:SWD、JTAG

配置順序:

  1. 必須先調用 mode() 設定引腳模式
  2. 再調用此方法啟用替代功能
  3. 最後可選擇調用 lock() 鎖定配置

使用範例:

// 配置 P0.5 為 UART0 TXD
CoreMux::mode(core::mux::Mux::P0_5_UART0_TXD,
hal::digital::GeneralPin::Mode::PUSH_PULL_OUTPUT);
CoreMux::mux(core::mux::Mux::P0_5_UART0_TXD);
某些功能需要成對配置 (如 UART 的 TXD/RXD)
警告
配置錯誤的引腳功能可能導致外設無法正常工作
參閱
mode(), lock()

◆ passiveFilter() [1/2]

static void mcxa153::core::CoreMux::passiveFilter ( core::mux::Mux select,
bool enable )
inlinestatic

啟用/停用被動濾波器 (Mux 枚舉版本)

控制指定引腳的被動濾波器功能,使用 Mux 枚舉值作為輸入參數。 此方法是 passiveFilter(MuxPortPin, bool) 的便利版本。

參數
select目標引腳及其功能
enable濾波器控制 (true=啟用, false=停用)

內部實作:

  • 自動從 Mux 值提取 MuxPortPin
  • 調用基礎版本的 passiveFilter 方法
  • 保持相同的濾波特性和限制

使用範例:

// 為 UART RXD 啟用濾波器 (抗干擾)
CoreMux::mode(core::mux::Mux::P0_4_UART0_RXD,
hal::digital::GeneralPin::Mode::INPUT_PULL_UP);
CoreMux::mux(core::mux::Mux::P0_4_UART0_RXD);
CoreMux::passiveFilter(core::mux::Mux::P0_4_UART0_RXD, true);
static void passiveFilter(core::mux::MuxPortPin select, bool enable)
啟用/停用被動濾波器 (MuxPortPin 版本)
這是內聯函數,編譯時會自動展開
參閱
passiveFilter(MuxPortPin, bool)

◆ passiveFilter() [2/2]

static void mcxa153::core::CoreMux::passiveFilter ( core::mux::MuxPortPin select,
bool enable )
static

啟用/停用被動濾波器 (MuxPortPin 版本)

控制指定引腳的被動濾波器功能,用於抑制高頻雜訊和毛刺信號。 適合處理機械開關、繼電器接點等會產生接觸彈跳的信號源。

參數
select目標引腳位置
enable濾波器控制
  • true: 啟用被動濾波器
  • false: 停用被動濾波器

濾波器特性:

  • 硬體實作的 RC 低通濾波器
  • 截止頻率:約 1-10 MHz (依製程變化)
  • 適合抑制高頻雜訊和開關彈跳
  • 對低頻信號影響極小

技術原理:

  • 利用引腳輸入的寄生電容
  • 內建小電阻形成 RC 濾波
  • 自動抑制快速邊緣變化
  • 保持信號完整性

適用場景:

  • 機械按鈕和開關輸入
  • 繼電器接點信號
  • 長距離傳輸線路
  • 易受 EMI 干擾的信號
  • 外部中斷引腳

效能影響:

  • 輕微增加信號延遲 (奈秒級)
  • 輕微增加功耗 (微安級)
  • 改善信號品質
  • 減少虛假中斷

使用範例:

// 為按鈕輸入啟用濾波器
hal::digital::GeneralPin::Mode::INPUT_PULL_UP);
CoreMux::passiveFilter(core::mux::getMuxPortPin(core::mux::Mux::P1_0_GPIO), true);
@ P1_0_GPIO
P1_0 GPIO模式
高速數位信號 (>10MHz) 不建議啟用濾波器
警告
濾波器會輕微影響信號邊緣時間
參閱
mode(), mux()

◆ slowRate() [1/2]

static void mcxa153::core::CoreMux::slowRate ( core::mux::Mux select,
bool enable = true )
inlinestatic

設定引腳緩慢轉換率 (Mux 枚舉版本)

啟用或停用引腳的緩慢轉換率功能,使用 Mux 枚舉值作為輸入參數。 此方法是 slowRate(MuxPortPin, bool) 的便利版本。

參數
select目標引腳及其功能
enable緩慢轉換率控制 (預設 true)

內部實作:

  • 自動從 Mux 值提取 MuxPortPin
  • 調用基礎版本的 slowRate 方法
  • 保持相同的轉換特性和限制

使用範例:

// I2C 信號線,啟用緩慢轉換率以符合規範
CoreMux::mode(core::mux::Mux::P0_10_I2C0_SDA,
hal::digital::GeneralPin::Mode::OPEN_DRAIN_OUTPUT);
CoreMux::mux(core::mux::Mux::P0_10_I2C0_SDA);
CoreMux::slowRate(core::mux::Mux::P0_10_I2C0_SDA, true);
static void slowRate(core::mux::MuxPortPin select, bool enable=true)
設定引腳緩慢轉換率 (MuxPortPin 版本)
這是內聯函數,編譯時會自動展開
參閱
slowRate(MuxPortPin, bool)

◆ slowRate() [2/2]

static void mcxa153::core::CoreMux::slowRate ( core::mux::MuxPortPin select,
bool enable = true )
static

設定引腳緩慢轉換率 (MuxPortPin 版本)

啟用或停用引腳的緩慢轉換率功能,用於減少信號邊緣的變化率, 降低 EMI 輻射和電源雜訊,但會增加信號延遲。

參數
select目標引腳位置
enable緩慢轉換率控制 (預設 true)
  • true: 啟用緩慢轉換率 (減少 EMI)
  • false: 停用緩慢轉換率 (快速邊緣)

技術原理:

  • 控制輸出驅動器的電流斜率
  • 延長信號邊緣的上升/下降時間
  • 減少 di/dt 和 dv/dt 產生的雜訊
  • 改善信號完整性

效果比較:

  • 啟用:邊緣時間 ~10-50ns,低 EMI
  • 停用:邊緣時間 ~2-10ns,高速度

適用場景:

  • 啟用緩慢轉換率:
    • 低速控制信號
    • EMI 敏感應用
    • 電源管理信號
    • 長距離傳輸線
  • 停用緩慢轉換率:
    • 高速數位信號
    • 時鐘輸出
    • 高頻通訊介面
    • 快速響應需求

設計權衡:

  • 緩慢轉換:低 EMI,但延遲較高
  • 快速轉換:低延遲,但 EMI 較高
  • 應根據系統需求選擇適當設定

使用範例:

// LED 控制引腳,啟用緩慢轉換率
hal::digital::GeneralPin::Mode::PUSH_PULL_OUTPUT);
CoreMux::slowRate(core::mux::getMuxPortPin(core::mux::Mux::P1_5_GPIO), true);
// 高速 SPI 時鐘,停用緩慢轉換率
CoreMux::mode(core::mux::Mux::P0_6_SPI0_SCK,
hal::digital::GeneralPin::Mode::PUSH_PULL_OUTPUT);
CoreMux::slowRate(core::mux::getMuxPortPin(core::mux::Mux::P0_6_SPI0_SCK), false);
@ P1_5_GPIO
P1_5 GPIO模式
僅對輸出引腳有效,輸入引腳設定無效果
警告
緩慢轉換率會影響信號時序,高速應用需謹慎評估
參閱
driveStrength(), mode()

此類別(class) 文件是由下列檔案中產生: