在現代電子產(chan)品設計中(zhong),芯片(pian)的(de)(de)集(ji)成度(du)和復雜度(du)越(yue)來越(yue)高,如何充(chong)分利用芯片(pian)的(de)(de)資源(yuan),滿足不同場景的(de)(de)需(xu)求,是每位工程師和設計師需(xu)要面對的(de)(de)挑(tiao)戰(zhan)。芯片(pian)IO重(zhong)映射(she)功能恰好(hao)解(jie)決了這一問題,為用戶提供更加靈活、便(bian)捷、可定制(zhi)的(de)(de)芯片(pian)使用方式,助推產(chan)品創新和突破。
IO口(kou)(kou)是MCU內部模塊和外部硬件唯(wei)一(yi)的(de)(de)進(jin)出(chu)口(kou)(kou)。每(mei)個(ge)內置外設都有若(ruo)干(gan)個(ge)輸(shu)入輸(shu)出(chu)引腳,一(yi)般這些(xie)引腳的(de)(de)輸(shu)出(chu)端口(kou)(kou)都是固定(ding)不變(bian)的(de)(de),芯(xin)(xin)(xin)片(pian)(pian)IO重映射(she)(she)就(jiu)是將芯(xin)(xin)(xin)片(pian)(pian)原有的(de)(de)通(tong)用IO端口(kou)(kou)重新定(ding)義(yi)為特(te)定(ding)功(gong)能(neng)用途。例如,在硬件設計之初,開(kai)發人員通(tong)過移位寄存器和端口(kou)(kou)直接(jie)映射(she)(she)的(de)(de)方式實現了(le)控(kong)制(zhi)PWM波輸(shu)出(chu)的(de)(de)功(gong)能(neng)。如果需要(yao)用同(tong)(tong)一(yi)顆(ke)芯(xin)(xin)(xin)片(pian)(pian)控(kong)制(zhi)兩(liang)個(ge)不同(tong)(tong)的(de)(de)電(dian)機(ji),此時就(jiu)需要(yao)映射(she)(she)另一(yi)個(ge)用于控(kong)制(zhi)第二(er)個(ge)電(dian)機(ji)的(de)(de)PWM波輸(shu)出(chu)端口(kou)(kou),這樣才能(neng)滿(man)足(zu)應用需求。IO重映射(she)(she)功(gong)能(neng)即可通(tong)過編寫特(te)定(ding)的(de)(de)程序來實現。
為了(le)(le)(le)讓設(she)(she)計工程(cheng)師更(geng)好地安排引(yin)腳(jiao)的(de)(de)(de)(de)(de)走向(xiang)和功(gong)(gong)能(neng),愛普(pu)特在(zai)系(xi)列(lie)全國產32位MCU產品中(zhong)均加入了(le)(le)(le)外(wai)設(she)(she)引(yin)腳(jiao)重(zhong)(zhong)映射的(de)(de)(de)(de)(de)功(gong)(gong)能(neng),即一(yi)個(ge)外(wai)設(she)(she)的(de)(de)(de)(de)(de)引(yin)腳(jiao)除了(le)(le)(le)具有默認(ren)的(de)(de)(de)(de)(de)端(duan)口(kou)外(wai),還可(ke)以通(tong)過設(she)(she)置(zhi)重(zhong)(zhong)映射寄存器的(de)(de)(de)(de)(de)方式,把(ba)這(zhe)個(ge)外(wai)設(she)(she)的(de)(de)(de)(de)(de)引(yin)腳(jiao)映射到其它的(de)(de)(de)(de)(de)端(duan)口(kou)。為了(le)(le)(le)使不同器件封裝的(de)(de)(de)(de)(de)外(wai)設(she)(she)IO功(gong)(gong)能(neng)數量達到最優(you),還可(ke)以把(ba)一(yi)些復用(yong)(yong)功(gong)(gong)能(neng)重(zhong)(zhong)新映射到其他(ta)一(yi)些引(yin)腳(jiao)上。這(zhe)種靈活(huo)性為產品硬件布局和型號適配提供了(le)(le)(le)更(geng)多(duo)的(de)(de)(de)(de)(de)可(ke)能(neng)性,方便PCB設(she)(she)計,減(jian)少(shao)了(le)(le)(le)信號的(de)(de)(de)(de)(de)交叉(cha)干(gan)擾;分時復用(yong)(yong)某些外(wai)設(she)(she),還可(ke)以虛擬增加端(duan)口(kou)數目,從而整體提高工程(cheng)師的(de)(de)(de)(de)(de)研發效率。
接(jie)下來(lai)我(wo)們以愛(ai)普特APT32F110X系列為例進行介紹:APT32F110X系列芯片為提供更靈活(huo)的(de) IO 功(gong)能(neng)配置,提供了自定義 GPIO 復用的(de)功(gong)能(neng)。
芯片提供兩(liang)個(ge)預設(she)的 GPIOGROUP,分(fen)別(bie)為(wei) GROUP0 和 GROUP1,兩(liang)個(ge) GROUP 分(fen)別(bie)對應 8 個(ge)預設(she)的可(ke)選擇的復用功(gong)能(neng)(neng)。在(zai)每個(ge) GROUP 內,每個(ge) GPIO可(ke)以被指定為(wei)這 8 個(ge)預設(she)功(gong)能(neng)(neng)中的任(ren)意一(yi)個(ge)作(zuo)為(wei)該 GPIO 的 AF8 功(gong)能(neng)(neng)。
IO GROUP0和 GPIO 對(dui)應關系
IO GROUP1和(he) GPIO 對應關(guan)系(xi)
IOGROUP 配(pei)置(zhi)信息表
如(ru)圖(tu)中(zhong)(zhong)1對(dui)(dui)(dui)應(ying)的(de)紅(hong)色框所示,標識的(de)是(shi)(shi)APT32F110X GROUP0/GROUP1對(dui)(dui)(dui)應(ying)的(de)復(fu)用(yong)功能列表,左(zuo)邊是(shi)(shi)GROUP0,右邊是(shi)(shi)GROUP1。從(cong)圖(tu)中(zhong)(zhong)2對(dui)(dui)(dui)應(ying)的(de)紅(hong)色框可直觀看(kan)到復(fu)用(yong)列表中(zhong)(zhong)具體功能對(dui)(dui)(dui)應(ying)的(de)配置數值,數值是(shi)(shi)配置在IOMAP的(de)CFGVAL(CFGVAL0~CFGVAL7)域中(zhong)(zhong);如(ru)GROUP0中(zhong)(zhong)選擇I2C_SDA功能,需要在對(dui)(dui)(dui)應(ying)的(de)CFGVAL域中(zhong)(zhong)寫入0x01。
APT32F110X系列(lie)(lie)是愛普特基于國(guo)產(chan)RISC-V核架構和自研(yan)的IP庫研(yan)發(fa)設(she)計(ji)的全(quan)國(guo)產(chan)MCU。該系列(lie)(lie)具有多(duo)(duo)達44個GPIO口,均支持(chi)外部中斷,支持(chi)IO重映射,內(nei)置(zhi)多(duo)(duo)路(lu)通用(yong)及增強型(xing)定時器,可實現靈(ling)活的 PWM 輸(shu)出(chu),同時具有DMA和高速SPI通訊接口,內(nei)嵌多(duo)(duo)模式段碼液(ye)晶(jing)驅(qu)動控(kong)制器,可以(yi)直接驅(qu)動LCD顯示(shi)屏幕,支持(chi)20通道的12位ADC,還支持(chi)LCD/LED/Touch/溫度傳感器等(deng)(deng)功(gong)能。目前APT32F110X系列(lie)(lie)產(chan)品已被(bei)廣泛應用(yong)于智能家(jia)電、工業(ye)控(kong)制、物聯網(wang)、消費電子、消防、醫療電子等(deng)(deng)領域。