如何設定GPIO pin用於什麼用途,例如當作 PWM接腳、I2C、SPI、I/O ....
以TMS320F28379D 舉例來說:
a.如下圖片所示,單晶片是透過四位元多工器來決定GPIO PIN接腳,透過GPyGMUX1-2和GPyMUX1-2來決定
每個 GPIO pin是輸入端或是輸出端,或是傳輪通訊之類的

b. 假設我們要將GPIO 設定成SPI 傳輪用接腳,依F28379D Spe. 該晶片有三組SPI傳輸port,
分別為 SPIA, SPIB, SPIC,該接腳位分別為於GPIO58~GPIO72


c. 以SPIB為例,SPI_MISOB, SPI_MOSIB, SPI_CLKB分別位於GPIO63~GPIO65
GPIO INDEX為15= 0b1111 分別對映GPyGMUX:GPyMUX =0b11 : 0b11
CODE:
void SetSPIB_GPIO(vod)
{
EALLOW; // Access to emulation registers is disabled
// Set SPI B SIMO
GpioCtrlRegs.GPBMUX2.bit.GPIO63 = 0b11;
GpioCtrlRegs.GPBGMUX2.bit.GPIO63 = 0b11;
// Set SPI B SOMI
GpioCtrlRegs.GPCMUX1.bit.GPIO64 = 0b11;
GpioCtrlRegs.GPCGMUX1.bit.GPIO64 = 0b11;
// Set SPI B CLK
GpioCtrlRegs.GPCMUX1.bit.GPIO65 = 0b11;
GpioCtrlRegs.GPCGMUX1.bit.GPIO65 = 0b11;
EDIS; // Access to emulation registers is enabled
}
請先 登入 以發表留言。