欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: Freescales i.mx6開發板配置IOMUX-迅為電子 [打印本頁]

作者: mucheni    時間: 2016-12-28 11:17
標題: Freescales i.mx6開發板配置IOMUX-迅為電子
為什么IOMUXSoc芯片上有很多引腳,每個引腳對應特定的功能。例如控制電機需要控制電機的功能引腳1和引腳2,控制傳感器需要控制傳感器功能的引腳3和引腳4。對于使用Soc芯片的需求方來說,可能只是控制電機,或者只是控制傳感器。這樣Soc芯片上的4個引腳就浪費了2個引腳。為了能提供更多的功能,減少引腳的浪費,可以把引腳1,2和引腳3,4合并,通過復用引腳來解決問題。
i.mx6的Soc芯片提供IOMUX機制就是用來解決引腳復用的問題。
如何確定使用引腳12,還是使用引腳34,是下面要介紹的主要內容
需要的概念Pad 對應的是Soc芯片上的引腳
Signal 對應的是控制電機的功能
需要配置的寄存器配置IOMUX的必備工具配置步驟1. 查看原理圖下面是USB轉串口芯片的原理圖,我們需要配置UART1_RX這個接口。

uart.jpeg

通過UART1_RX,我們可以在i.mx6的原理圖中找到對應的引腳CSI0_DAT11。

imx6soc.jpeg

2. 查找軟件手冊(引腳功能)軟件手冊第4章
查找CSI0_DAT11,可以得到兩個重要的信息
查找UART1_RX_DATA,可以得到兩個寄存器
3. 查找軟件手冊(IOMUX功能配置)軟件手冊第36章, 介紹了IOMUX需要配置寄存器的所有信息。
根據三個寄存器的名稱進行查找
IOMUX_SW_MUX_CTL_PAD_CSI0_DATA11偏移地址:284h
配置MUX_MODE的模式為ALT3,就能使用UART1_RX_DATA的功能

mux.jpeg

IOMUXC_UART1_UART_RX_DATA_SELECT_INPUT偏移地址:920h

selectinput.jpeg

三 源碼配置配置IOMUX的過程,實際上就是向指定的設備地址寫入配置值的過程。
內核代碼提供專門的宏 IOMUX_PAD,用來把IOMUX的配置進行拼裝,然后寫入到指定的設備地址中。
IOMUX_PAD 定義文件  ~/android/kernel_imx/arch/arm/plat-mxc/include/mach/iomux-v3.h
/* *      build IOMUX_PAD structure * * This iomux scheme is based around pads, which are the physical balls * on the processor. * * - Each pad has a pad control register (IOMUXC_SW_PAD_CTRL_x) which controls *   things like driving strength and pullup/pulldown. * - Each pad can have but not necessarily does have an output routing register *   (IOMUXC_SW_MUX_CTL_PAD_x). * - Each pad can have but not necessarily does have an input routing register *   (IOMUXC_x_SELECT_INPUT) * * The three register sets do not have a fixed offset to each other, * hence we order this table by pad control registers (which all pads * have) and put the optional i/o routing registers into additional * fields. * * The naming convention for the pad modes is MX35_PAD___ * If  or  refers to a GPIO, it is named * GPIO__ * * IOMUX/PAD Bit field definitions * * MUX_CTRL_OFS:            0..11 (12) * PAD_CTRL_OFS:           12..23 (12) * SEL_INPUT_OFS:          24..35 (12) * MUX_MODE + SION:        36..40  (5) * PAD_CTRL + NO_PAD_CTRL: 41..58 (18) * SEL_INP:                59..62  (4) * reserved:                 63    (1)*/#define IOMUX_PAD(_pad_ctrl_ofs, _mux_ctrl_ofs, _mux_mode, _sel_input_ofs,  _sel_input, _pad_ctrl)                  (((iomux_v3_cfg_t)(_mux_ctrl_ofs) << MUX_CTRL_OFS_SHIFT) |                       ((iomux_v3_cfg_t)(_mux_mode) << MUX_MODE_SHIFT) |                                 ((iomux_v3_cfg_t)(_pad_ctrl_ofs) << MUX_PAD_CTRL_OFS_SHIFT) |                   ((iomux_v3_cfg_t)(_pad_ctrl) << MUX_PAD_CTRL_SHIFT) |                                 ((iomux_v3_cfg_t)(_sel_input_ofs) << MUX_SEL_INPUT_OFS_SHIFT) |                 ((iomux_v3_cfg_t)(_sel_input) << MUX_SEL_INPUT_SHIFT))參數配置通過軟件手冊查找到三個寄存器的地址, 使用IOMUX_PAD配置代碼。
文件  ~/android/kernel_imx/arch/arm/plat-mxc/include/mach/iomux-mx6q.h
#define _MX6Q_PAD_CSI0_DAT11__UART1_RXD                                 IOMUX_PAD(0x0654, 0x0284, 3, 0x0920, 1, 0)上面的內容描述了從原理圖查找指定引腳,到軟件手冊找到Mux,Pad,SelInput的寄存器配置信息,再到內核代碼如何進行配置的全部映射關系。






歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1