xmc4400 阿爾迪諾 GPIO 中斷

Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Translation_Bot
Community Manager
Community Manager
Community Manager

嗨,

我使用 XMC4400_Platform2GO COOLDIM_PRG_BOARD建立了一個 DIY 專案。

我想要有 4 個 GPIO 中斷,但是,我看到了配置文件(pins_arduino.h) 只有兩個:

屏幕截图 2024-01-22 073234.png

const XMC_PIN _ 中斷 _t 映射 _ 中斷 [] =
{
/* 0 */ {CCU40, CCU40_CC43, 3, 0, CCU40_IN3_P1_0},
/* 1 */{CCU42, CCU42_CC40, 0, 1, CCU42_IN0_P3_6}
};
const uint8_t 數字 _ 中斷 =(大小(映 _ 中斷)/大小(X MC _ PIN _ 中斷 _ t) ) ;
 
我該怎麼辦才能擴展我的代碼以支持四個 GPIO 中斷?
 
感謝您的支持。

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/XMC/xmc4400-arduino-gpio-interrupts/td-p/680341

6 回應
Translation_Bot
Community Manager
Community Manager
Community Manager

你好,

任何建議?

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/XMC/xmc4400-arduino-gpio-interrupts/m-p/682074

0
Translation_Bot
Community Manager
Community Manager
Community Manager

@KunQ_16

我檢查了COOLDIM_PRG_BOARD詳細信息,似乎只有 2 個中斷引腳可用於 arduino 相容頭。請參閱本文件第 15 頁:https://www.infineon.com/dgdl/Infineon-XMC4400_Platform2Go-UserManual-v01_00-EN.pdf?fileId=5546d4626...

但是,我們可以使用COOLDIM_PRG_BOARD上的其他 GPIO 來產生中斷。為了理解這一點,您可以告訴我們您的期望或申請的要求是什麼?

最好的問候,阿

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/XMC/xmc4400-arduino-gpio-interrupts/m-p/682442

0
Translation_Bot
Community Manager
Community Manager
Community Manager

嗨,

讓您知道我的解決方法。

默認的 XMC Arduino 不支持超過 4 gpio 中斷。 你需要微調針 _arduino.h 和冬季破裂。C 文件

在檔案 _ 阿爾杜伊諾 .h 你需要添加更多像這樣的:

const XMC_PIN _ 中斷 _t 映射 _ 中斷 [] =
{
/* 0 */ {CCU40, CCU40_CC43, 3, 0, CCU40_IN3_P1_0},
/* 1 */ {CCU40, CCU40_CC40, 0, 1, CCU40_IN0_P1_3},
/* 2 */ {CCU40, CCU40_CC41, 1, 2, CCU40_IN1_P2_0},
/* 3 */{CCU43, CCU43_CC40, 0, 3, CCU43_IN0_P2_14}
};
這定義您用於 IO 中斷的輸入引腳和 CCU 模塊。
 
在冬季露營地區
 
您需要更新
空白附加中斷()和空白分離中斷( u int32_t 中斷 _ 號)
這是因為這些代碼只支持兩個 GPIO 中斷代碼。 你需要像這樣添加代碼
 
否則 如果 pin_irq。 伊爾克數== 2)
{

XMC_CCU4 _ 切片 _ 啟用多項事件(pin_irq . 切片, XMC_CCU 4 _ 切片 _ 多個 IRQ _ ID _ 事件 2);
XMC_CCU4 _ 切片 _ 設置中斷節點(PIN _ irq。 切片, XMC_CCU4 _ 片段 _IRQ _ ID _ 事件 2,2);
NVIC _ 設置優先順序 (CCU40_2 _ IRQN, 3);

事件配置。 映射輸入 = 密碼 _irq。 輸入 ;
XMC_CCU4 _ 切片 _ 配置事件(PIN _ irq。 片段, XMC_CCU4 _ 片段 _ 事件 _2,& 事件 _ 配置);

中斷 _2_cb = 回調;
NVIC_啟用 IRQ (CCU40_2 _ 二氧化核素);
}
否則 如果 pin_irq。 伊爾克數== 3)
{

XMC_CCU4 _ 切片 _ 啟用多項事件(pin_irq . 切片, XMC_CCU 4 _ 切片 _ 多個 IRQ _ ID _ 事件 0);
XMC_CCU4 _ 切片 _ 設置中斷節點(PIN _ irq。 切片, XMC_CCU4 _ 片段 _IRQ _ ID _ 事件 0 , 0);
NVIC _ 設定優先順序 (C CU43_0_ IRQN, 3);

事件配置。 映射輸入 = 密碼 _irq。 輸入 ;
XMC_CCU4 _ 切片 _ 配置事件(PIN _ irq。 切片, XMC_CCU4 _ 片段 _ 事件 _0,& 事件 _ 配置);

中斷 _3_cb = 回調;
NVIC_啟用 IRQ (CCU43_0_IRQN);
}
 
...
 
空白分 離中斷 ( uint 32_t 中斷數)
{
如果( 中斷 數 < 數字 _ 中斷)
{
#if 定義(中斷 _ 使用 ERU)
XMC_PIN _ 中斷 _t pin-irq = 映射 _ 中斷 [中斷 _ 數];
開關( PIN _ irq。 伊爾克號碼)
{
例 0
NVIC _ 禁用 IRQ(ERU0_3_IRQN);
休息;

例一
#if 已定義(XMC 4200_平台 2Go)
NVIC _ 禁用 IRQ(eRU0_0 _ IRQN);
#else
NVIC _ 禁用 IRQ (eRU1_0_IRQN);
#endif
休息;
#else
開關 (中 斷數)
{
例 0
NVIC _ 禁用 IRQ (CCU40_0 _ IRQN);
休息;

例一
NVIC _ 禁用 IRQ (CCU40_1_IRQN);
休息;

例二
NVIC _ 禁用 IRQ (CCU40_2 _ IRQN);
休息;

例三
NVIC _ 禁用 IRQ (CCU43_0 _ IRQN);
休息;
#endif
預設值
休息;
}
}
}
 
然後你需要像這樣定義回調函數
無效 CCU40_ 2 _ IRQ 處理器(無效)
{
如果( 中斷 _2_cb)
{
中斷 _2_cb ();
}
}

無效 CCU43_0 _ IRQ 處理器(無效)
{
如果( 中斷 _3_cb)
{
中斷 _3_cb ();
}
}

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/XMC/xmc4400-arduino-gpio-interrupts/m-p/684162

0
Translation_Bot
Community Manager
Community Manager
Community Manager

嗨,阿下,

要求很簡單,我需要 4 個 GPIO 中斷。 我可以使用 X1 標頭或 X2 標題引腳。 (不限於 Arduino 兼容的標頭)

即使是其他功能使用的中斷 GPIO 引腳,我也可以移除可焊接的 0 歐姆引腳橋,使引腳只能用於 GPIO 中斷功能。

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/XMC/xmc4400-arduino-gpio-interrupts/m-p/682550

0
Translation_Bot
Community Manager
Community Manager
Community Manager

你好?

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/XMC/xmc4400-arduino-gpio-interrupts/m-p/683902

0
Translation_Bot
Community Manager
Community Manager
Community Manager

@KunQ_16

對延遲響應的道歉。

您還面臨這個問題嗎?

可以有 4 個 GPIO 中斷,實際上 2 個來自 Arduino 引腳接頭,另外 2 個來自X1 接頭或 X2 接頭引腳分配。

您使用的是哪一個 IDE?

最好的問候
普拉德普.

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/XMC/xmc4400-arduino-gpio-interrupts/m-p/704234

0