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

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

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

對比恩智浦全系列MCU的GPIO電平中斷設(shè)計(jì)差異

痞子衡嵌入式 ? 來源:痞子衡嵌入式 ? 2023-02-07 09:01 ? 次閱讀

大家好,我是痞子衡,是正經(jīng)搞技術(shù)的痞子。今天痞子衡給大家介紹的是恩智浦全系列MCU(包含Kinetis, LPC, i.MXRT, MCX)的GPIO電平中斷設(shè)計(jì)差異。

在痞子衡舊文 《以i.MXRT1xxx的GPIO模塊為例談?wù)勚袛嗵幚砗瘮?shù)(IRQHandler)的標(biāo)準(zhǔn)流程》里,痞子衡主要介紹得是 GPIO 一般控制以及最常用的輸入邊沿中斷相關(guān)知識。最近恩智浦官方社區(qū)有用戶反映 i.MXRT1060 上 GPIO 中斷狀態(tài)寄存器(GPIO->ISR)在發(fā)生有效電平中斷后的置位并不需要手動(dòng)清零(W1C),其會(huì)在 I/O 輸入電平狀態(tài)切換后自動(dòng)清零,這和手冊里描述不一致。

首先在痞子衡的認(rèn)知里 GPIO 輸入電平中斷沒有什么具體應(yīng)用場景,想象一下,如果 GPIO 中斷事件由輸入電平值來觸發(fā),如果發(fā)生了有效輸入電平且其狀態(tài)不改變,那么 GPIO 中斷響應(yīng)函數(shù)就會(huì)被不斷重復(fù)執(zhí)行(此時(shí) CPU 時(shí)間片無法再分給主函數(shù)),什么樣的任務(wù)需要這樣的處理呢?暫且不論應(yīng)用場景,痞子衡今天就從恩智浦全系列 MCU 這方面的行為角度來做一下對比吧。

一、I/O中斷控制模塊差異

恩智浦現(xiàn)有的經(jīng)典 Arm Cortex-M MCU 產(chǎn)品線共有如下五大類,它們在 GPIO 一般控制和中斷控制外設(shè)上是有差異的。首先 i.MXRT四位數(shù)/Kinetis/LPC 這三條線各自是完全不同的外設(shè),然后 i.MXRT三位數(shù)是在 LPC 外設(shè)基礎(chǔ)上做了增強(qiáng),而最新的 MCX 系列則是組合了 Kinetis 和 LPC 外設(shè)。

芯片系列 I/O一般控制 I/O中斷控制
Kinetis GPIO type1 PORT
LPC GPIO type2 PINT
i.MXRT四位數(shù) GPIO type3 GPIO type3
i.MXRT三位數(shù) GPIO type2 GPIO type2(增加interrupt A/B)
PINT
MCX GPIO type1 GPIO type1(集成Kinetis PORT)
PINT

二、不同系列MCU下測試結(jié)果

根據(jù)上一節(jié)外設(shè)情況我們知道,只要測試了 i.MXRT四位數(shù)/Kinetis/LPC 這三個(gè)系列的情況,剩下兩個(gè)系列自然也就不用測試了。

2.1 Kinetis

Kinetis 系列分為 K/KL/KE/KS/KW/KV/KM/K32L 等若干子系列,但是它們關(guān)于 GPIO 中斷設(shè)計(jì)這一塊是一樣的。痞子衡選取了 MKL03Z 這顆芯片來做的測試,查看其手冊 PORTx->PCRn[ISF] 位或者 PORTx->ISFR 寄存器均標(biāo)記了中斷狀態(tài),并且標(biāo)明了需要做 W1C 操作。

25e9b048-a63f-11ed-bfe3-dac502259ad0.png

我們可以直接在 SDK_2.3.1_FRDM-KL03Zoardsfrdmkl03zdriver_examplesgpioinput_interrupt 例程上做測試,只需要做簡單修改,痞子衡摘取了主要代碼如下。FRDM-KL03Z 板上 SW3 按鍵對應(yīng) PTB5 引腳(按下為低電平,松開為高電平),代碼設(shè)計(jì)里按一次 SW3 便打印一次。測試結(jié)果來看,在 Kinetis 上即使是電平中斷,PORTx->ISFR 寄存器也是必須要手動(dòng)清零的,與手冊描述一致。

IRQ函數(shù)中是否清零Flag SW3動(dòng)作 IRQ執(zhí)行情況 打印輸出結(jié)果
上電默認(rèn)松開(高電平) IRQ函數(shù)未觸發(fā)
SW3按下(低電平) IRQ函數(shù)重復(fù)執(zhí)行
SW3松開(高電平) IRQ函數(shù)不再觸發(fā) 出現(xiàn)一次打印
上電默認(rèn)松開(高電平) IRQ函數(shù)未觸發(fā)
SW3按下(低電平) IRQ函數(shù)重復(fù)執(zhí)行
SW3松開(高電平) IRQ函數(shù)重復(fù)執(zhí)行

volatileboolg_ButtonPress=false;
voidPORTB_IRQHandler(void)
{
//清除中斷標(biāo)志
PORTB->ISFR=1U<

2.2 i.MXRT四位數(shù)

i.MXRT四位數(shù)系列分為 RT1010/1015/1020/1040/1050/1060/1160/1170/1180 等若干子型號,但是它們關(guān)于 GPIO 中斷設(shè)計(jì)是一樣的。痞子衡選取了 i.MXRT1062 這顆芯片來做的測試,查看其手冊 GPIOx->ISR 寄存器標(biāo)記了中斷狀態(tài),同樣標(biāo)明了需要做 W1C 操作。

2610dec0-a63f-11ed-bfe3-dac502259ad0.png

我們可以直接在 SDK_2_12_1_EVK-MIMXRT1060oardsevkmimxrt1060driver_examplesgpioinput_interrupt 例程上做測試,只需要做簡單修改,主要代碼如下。MIMXRT1060-EVK 板上 SW8 按鍵對應(yīng) WAKEUP_GPIO5[0] 引腳(按下為低電平,松開為高電平),代碼設(shè)計(jì)里按一次 SW8 便打印一次。測試結(jié)果來看,在 i.MXRT 四位數(shù)上如果是電平中斷,GPIOx->ISR 寄存器會(huì)在電平狀態(tài)切換時(shí)自動(dòng)清零,跟手冊描述有點(diǎn)差異,不過這樣的設(shè)計(jì)比 Kinetis 上看起來更合理。

IRQ函數(shù)中是否清零Flag SW8動(dòng)作 IRQ執(zhí)行情況 打印輸出結(jié)果
是/否 上電默認(rèn)松開(高電平) IRQ函數(shù)未觸發(fā)
SW8按下(低電平) IRQ函數(shù)重復(fù)執(zhí)行
SW8松開(高電平) IRQ函數(shù)不再觸發(fā) 出現(xiàn)一次打印

volatileboolg_InputSignal=false;
voidGPIO5_Combined_0_15_IRQHandler(void)
{
//清除中斷標(biāo)志
GPIO5->ISR=1U<

2.3 LPC

LPC系列分為 800/1x00/4000/4300/51Uxx/54000/5500 等若干子型號,但是它們關(guān)于 GPIO 中斷設(shè)計(jì)是一樣的。痞子衡選取了 LPC54114 這顆芯片來做的測試,查看其手冊 PINT->IST 寄存器標(biāo)記了中斷狀態(tài),這里關(guān)于 W1C 操作做了邊沿方式和電平方式的區(qū)別,其中對于電平方式,W1C 是切換有效電平邏輯。

262d4d8a-a63f-11ed-bfe3-dac502259ad0.png

我們可以直接在 SDK_2_9_0_LPCXpresso54114oardslpcxpresso54114driver_examplespintpin_interrupt 例程上做測試,只需要做簡單修改,主要代碼如下。LPCXpresso-54114 板上 SW1 按鍵對應(yīng) PIO0[24] 引腳(按下為低電平,松開為高電平),代碼設(shè)計(jì)里按一次 SW1 便打印一次。測試結(jié)果來看,在 LPC 上如果是電平中斷,PINT->IST 寄存器會(huì)在電平狀態(tài)切換時(shí)自動(dòng)清零,跟手冊描述有點(diǎn)差異,并且中斷處理函數(shù)里如果主動(dòng)加上 W1C 操作其效果就變成了雙邊沿中斷,這樣的設(shè)計(jì)比 i.MXRT 四位數(shù)更進(jìn)了一步。

IRQ函數(shù)中是否清零Flag SW1動(dòng)作 IRQ執(zhí)行情況 打印輸出結(jié)果
上電默認(rèn)松開(高電平) IRQ函數(shù)未觸發(fā)
SW1按下(低電平) IRQ函數(shù)重復(fù)執(zhí)行
SW1松開(高電平) IRQ函數(shù)不再觸發(fā) 出現(xiàn)一次打印
上電默認(rèn)松開(高電平) IRQ函數(shù)未觸發(fā)
SW1按下(低電平) IRQ函數(shù)執(zhí)行一次 出現(xiàn)一次打印
SW1松開(高電平) IRQ函數(shù)執(zhí)行一次 出現(xiàn)一次打印

volatileboolg_ButtonPress=false;
voidPIN_INT0_DriverIRQHandler(void)
{
uint32_tpmstatus=PINT_PatternMatchResetDetectLogic(PINT);
if(s_pintCallback[kPINT_PinInt0]!=NULL)
{
s_pintCallback[kPINT_PinInt0](kPINT_PinInt0,pmstatus);
}
//清除中斷標(biāo)志
PINT->IST=(1UL<

至此,恩智浦全系列MCU的GPIO電平中斷設(shè)計(jì)差異痞子衡便介紹完畢了,掌聲在哪里~~~

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

    關(guān)注

    146

    文章

    17148

    瀏覽量

    351197
  • 恩智浦
    +關(guān)注

    關(guān)注

    14

    文章

    5860

    瀏覽量

    107461
  • 電平
    +關(guān)注

    關(guān)注

    5

    文章

    360

    瀏覽量

    39898
  • 中斷
    +關(guān)注

    關(guān)注

    5

    文章

    898

    瀏覽量

    41497
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1204

    瀏覽量

    52098

原文標(biāo)題:對比恩智浦全系列MCU的GPIO電平中斷設(shè)計(jì)差異

文章出處:【微信號:pzh_mcu,微信公眾號:痞子衡嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    i.MXRT1xxx系列MCU的Serial NAND啟動(dòng)

    大家好,我是痞子衡,是正經(jīng)搞技術(shù)的痞子。今天痞子衡給大家介紹的是i.MXRT1xxx系列MCU的Serial NAND啟動(dòng)。
    發(fā)表于 08-21 09:20 ?337次閱讀
    <b class='flag-5'>恩</b>智<b class='flag-5'>浦</b>i.MXRT1xxx<b class='flag-5'>系列</b><b class='flag-5'>MCU</b>的Serial NAND啟動(dòng)

    MCU也開始卷了,率先將NPU集成進(jìn)MCU

    幾天前IC Insights發(fā)布了2021年MCU銷售情況,MCU銷售額達(dá)到了37.95億美元,排名第一。其實(shí),
    的頭像 發(fā)表于 06-18 08:00 ?4123次閱讀

    i.MX RTxxx系列MCU的特性

      大家好,我是痞子衡,是正經(jīng)搞技術(shù)的痞子。今天痞子衡給大家介紹的是i.MX RTxxx系列MCU的基本特性?! ?b class='flag-5'>恩智
    發(fā)表于 11-04 07:08

    推出帶中斷和復(fù)位功能且符合AEC-Q100標(biāo)準(zhǔn)的GPIO

    —憑借在汽車聯(lián)網(wǎng)智能和安全解決方案領(lǐng)域的領(lǐng)先優(yōu)勢,半導(dǎo)體NXP Semiconductors N.V. (NASDAQ:NXPI) 近日宣布推出符合AEC-Q100標(biāo)準(zhǔn)、面向I2C總線
    發(fā)表于 07-09 15:57 ?1417次閱讀

    2009年MCU產(chǎn)品系列總覽

    2009年MCU產(chǎn)品系列總覽,又需要的下來看看。
    發(fā)表于 12-15 15:05 ?22次下載

    ARM_MCU開發(fā)工具速選

    ARM_MCU開發(fā)工具速選,下來看看。
    發(fā)表于 12-15 15:01 ?10次下載

    無線MCU產(chǎn)品及方案介紹

    無線MCU產(chǎn)品及方案介紹
    發(fā)表于 10-16 15:42 ?9次下載
    <b class='flag-5'>恩</b>智<b class='flag-5'>浦</b>無線<b class='flag-5'>MCU</b>產(chǎn)品及方案介紹

    基于Arm? Cortex?-M內(nèi)核的MCU產(chǎn)品組合概覽,及其部分演示-01

    本講座將簡要介紹各種可擴(kuò)展的MCU產(chǎn)品組合,并詳細(xì)介紹不同市場和用例所對應(yīng)的產(chǎn)品系列。此外,還將簡要介紹支持
    的頭像 發(fā)表于 12-20 15:46 ?1346次閱讀

    :安全的無線MCU是核心問題

    作為去年消費(fèi)電子展 (CES) 上推出的Tri-Radio系列的最新成員,表示 RW612 使用與其 i.MX RT 系列“跨界”MCU
    的頭像 發(fā)表于 01-30 09:42 ?700次閱讀

    經(jīng)典LPC系列MCU內(nèi)部Flash IAP驅(qū)動(dòng)介紹

    LPC 系列 MCU公司于 2003 年開始推出的非常具有代表性的產(chǎn)品,距今已經(jīng)有近 20 年的生命。
    的頭像 發(fā)表于 03-30 09:19 ?2330次閱讀

    ACH拉近您與MCU專家的距離

    這個(gè) ACH 將會(huì)匯聚內(nèi)部 MCU 專家們開發(fā)的各種應(yīng)用筆記配套代碼(AN SW),通用代碼片段,應(yīng)用軟件包(SW Pack)和綜合參考例程(Demo),涵蓋
    的頭像 發(fā)表于 08-17 15:18 ?735次閱讀
    ACH拉近您與<b class='flag-5'>恩</b>智<b class='flag-5'>浦</b><b class='flag-5'>MCU</b>專家的距離

    發(fā)布新一代MCX A系列MCU

    半導(dǎo)體近日發(fā)布了MCX A14x和MCX A15x兩款通用MCU,作為MCX A系列中的首批產(chǎn)品,現(xiàn)已正式上市。
    的頭像 發(fā)表于 02-02 14:41 ?1640次閱讀

    【上?!?月25日-基于MCX N系列MCU結(jié)合RT-Thread的應(yīng)用與實(shí)踐 線下培訓(xùn)

    5月25號,RT-Thread將攜手共同舉辦基于MCXN系列MCU結(jié)合RT-Thre
    的頭像 發(fā)表于 05-13 18:19 ?877次閱讀
    【上?!?月25日-基于<b class='flag-5'>恩</b>智<b class='flag-5'>浦</b>MCX N<b class='flag-5'>系列</b><b class='flag-5'>MCU</b>結(jié)合RT-Thread的應(yīng)用與實(shí)踐 線下培訓(xùn)

    MCX W系列無線MCU的獨(dú)特魅力

    作為MCX微控制器家族中的新成員,MCX W系列無線MCU,旨在為新一代智能和安全互聯(lián)設(shè)備提供更緊湊、可擴(kuò)展和創(chuàng)新的設(shè)計(jì)。MCX W的安全、無線子系統(tǒng)和智能外設(shè)均經(jīng)過精心設(shè)計(jì),專
    的頭像 發(fā)表于 08-27 09:56 ?1482次閱讀

    基于MCX N系列MCU的應(yīng)用示例

    全新MCX微控制器系列,為新一代工業(yè)與物聯(lián)網(wǎng)廣泛的應(yīng)用賦能,受到廣大邊緣智能開發(fā)者的青睞。
    的頭像 發(fā)表于 10-25 14:26 ?635次閱讀