2016年03月14日 10:26:49 9527zyj 閱讀數 5218
版權聲明:本文爲博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/qq_29729577/article/details/50884292
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.查找控制寄存器對應的地址
- PAD控制寄存器爲SW_PAD_CTL_PAD_KEY_COL0,查看datesheet:
觀察得到其偏移地址爲0x62C
- 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 conf_reg input_reg mux_mode input_val>
*/
以上規則爲:
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
符合文檔中內容: