imx6的IOMUX配置方法

2022-06-24 13:42:06 字數 1980 閱讀 1224

imx6晶元利用iomux機制來解決引腳復用的問題,其引腳配置方法也有些複雜,它涉及到的暫存器有三類:

1.pad控制暫存器

2.mux控制暫存器

3.select input控制暫存器

下面我以串列埠uart4_txd這一引腳為例來簡單說明:

1.檢視原理圖:

上圖可以看出uart4_txd對應晶元的引腳為key_col0

2.檢視晶元手冊,查詢上述三個控制暫存器:

以key_col0為索引進行搜尋,可以查詢到如下資訊:

然後可以觀察到key_col0對應的pad控制暫存器為sw_pad_ctl_pad_key_col0,

且atl4對應uart4_tx_data,因此以uart4_tx_data為索引再進行搜尋:

觀察得到對應的mux控制暫存器為iomuxc_sw_mux_ctl_pad_key_col0,

select_input控制暫存器為iomuxc_uart4_uart_rx_data_select_input

至此,上述三個控制暫存器名稱查詢完成!

3.查詢控制暫存器對應的位址

1) pad控制暫存器為sw_pad_ctl_pad_key_col0,檢視datesheet:

觀察得到其偏移位址為0x62c

2) mux控制暫存器iomuxc_sw_mux_ctl_pad_key_col0,檢視datesheet:

觀察得到其偏移位址為0x244

3)select_input控制暫存器iomuxc_uart4_uart_rx_data_select_input:

觀察得到其偏移位址為0x914

4.原始碼配置

我的相關原始碼位置是在arch/arm/boot/dts/imx6dl-pinfunc.h中,觀察配置規則:

/** the pin function id is a tuple of

* */

以上規則為:

mux_reg:mux控制暫存器偏移位址

conf_reg:pad控制暫存器偏移位址

input_reg:select_input控制暫存器偏移位址

mux_mode:mux模式

input_val:select_input暫存器值

從上述內容可以得到mux_reg為0x244,conf_reg為0x62c,input_reg為 0x914 ,

此外mux_mode可由上圖中觀察到為mux_mode中的alt4模式,其值為100,即0x4;input_val觀察到為daisy中的key_col0_alt4,其值為10,即0x2

綜上所述,外部的uart4_tx對應配置應如下:

#define mx6qdl_pad_key_col0__uart4_rx_data          0x244 0x62c 0x914 0x4 0x2

符合文件中內容:

imx6的IOMUX配置方法

imx6晶元利用iomux機制來解決引腳復用的問題,其引腳配置方法也有些複雜,它涉及到的暫存器有三類 1.pad控制暫存器 2.mux控制暫存器 3.select input控制暫存器 下面我以串列埠uart4 txd這一引腳為例來簡單說明 1.檢視原理圖 上圖可以看出uart4 txd對應晶元的引...

imx6 移植人臉識別

最近接到任務要移植人臉檢測,其他步驟網上都有,一步步做就好了,就是在載入haarcascade frontalface alt2.xml的時候,出現 root dchip linux qt opencv 2.4.13.1 modules core src persistence.cpp 5008 e...

IMX6清空framebuffer操作

static void fb clear int fb unsigned char fb mem fb open dev fb0 o rdwr fb mem mmap null,1920 720,prot read prot write,map shared,fb,0 memset fb mem,0...