MCXN236 應用之深入淺出 (1) 如何建立 FlexIO

關鍵字 :NXPFlexIOUARTsimulation

1 FlexIO 是什麼?

Flex IO 是可以自行規劃如何動作的 IO,是以 Timer Trigger 的結合,透過不同的組合,來做出想要的波形。MCX-N236 的 FlexIO 配置「如圖 1.1 ( 註1 ) 」


圖 1.1

2 FlexIO 方塊圖

FlexIO 方塊圖,「如圖 2.1 ( 1 ) 」,由 External中斷開始,會有Timer linkShifter BufferDin Dout之間的連接
 

2.1

3 如何新增 FlexIO UART

先做一個簡易的 UART Tx 的話,需要如何規劃呢 ? 只有一個 Tx pin ,就只需要使用一個 FlexIO ,以 Timer 來配合,來做出  Start Tx Data and Stop 波形,就可以完成 UART Tx 的模擬了。

需要設定通常是這4個 reigtser
FlexIO SHIFTCFGn register 的配置「如圖 3.1~3.2 ( 註1 ) 」
FlexIO TIMCFGn register 的配置「如圖 3.3~3.4 ( 註1 ) 」
FlexIO TIMCTLn register 的配置「如圖 3.5~3.7 ( 註1 ) 」
FlexIO TIMCMPn register 的配置「如圖 3.8 ( 註1 ) 」

首先 UART 需要設定 Baud rate,以 9600 為例 1bit 的時間為 1/9600 =  104.167us

若是 115200  1bit 的時間為 1/115200 =  8.68us

,若 Clock Source 是使用 FRO_HF (96Mhz)

9600_TimeDIV = 96000000/9600 = 10000

115200_TimeDIV = 96000000 / 115200 = 833.33

UART Start Bit 0 , Stop Bit 1 =>SHIFTCFGn 要設成0x0000 0032

UART TX is output ,and Transmit mode => SHIFTCTLn  = 0x0003 0002 (若使用 D0 ,配置請參考「如圖 1.1 ( 註1 ) 」)

若是TX使用 D8 PinSel (Bit8~12) 要設成8 ,則 SHIFTCTLn要設成 0x0003 0802

UART start bit, stop bit, enable on trigger and disable on compare.

=>TIMCFGn = 0x0000 2222

UART is dual (TX/RX) 8-bit data using the shifter 0 status flag as an inverted internal trigger source( Data low trigger )no Timer/Clock pin

=> TIMCTLn = 0x01C0 0001 (若使用 D0)

若是TX使用 D8 PinSel (Bit8~12) 要設成8 ,則 TIMCTLn要設成 0x01C0 0801

9600_TIMCMP[15:8]  = (number bit *2) – 1 = 8*2 -1 =15

9600_TIMCMP[7:0]  = (9600_TimeDIV /2) – 1 = 4/2 -1 =1

 

115200_TIMCMP[15:8]  = (number bit *2) – 1 = 8*2 -1 =15

115200_TIMCMP[7:0]  = (115200_TimeDIV /2) – 1 = 4/2 -1 =1

 
3.1



 
3.2


3.3


3.4


圖 3.5

圖 3.6



3.7

 
  3.8
 
4 參考資料

註1 : 作者: NXP原廠;出處 : https://www.nxp.com/webapp/Download?colCode=MCXN23xRM

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論