久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6854|回復: 0
收起左側

Freescales i.mx6開發板配置IOMUX-迅為電子

[復制鏈接]
ID:151620 發表于 2016-12-28 11:17 | 顯示全部樓層 |閱讀模式
為什么IOMUXSoc芯片上有很多引腳,每個引腳對應特定的功能。例如控制電機需要控制電機的功能引腳1和引腳2,控制傳感器需要控制傳感器功能的引腳3和引腳4。對于使用Soc芯片的需求方來說,可能只是控制電機,或者只是控制傳感器。這樣Soc芯片上的4個引腳就浪費了2個引腳。為了能提供更多的功能,減少引腳的浪費,可以把引腳1,2和引腳3,4合并,通過復用引腳來解決問題。
i.mx6的Soc芯片提供IOMUX機制就是用來解決引腳復用的問題。
如何確定使用引腳12,還是使用引腳34,是下面要介紹的主要內容
需要的概念Pad 對應的是Soc芯片上的引腳
Signal 對應的是控制電機的功能
需要配置的寄存器
  • Pad控制寄存器
  • Mux控制寄存器
  • Select Input寄存器
配置IOMUX的必備工具
  • 芯片原理圖
  • 芯片軟件手冊
  • 內核源代碼
配置步驟1. 查看原理圖下面是USB轉串口芯片的原理圖,我們需要配置UART1_RX這個接口。
245883-b4e7751a69ddce3a.jpeg
uart.jpeg

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

2. 查找軟件手冊(引腳功能)軟件手冊第4章
查找CSI0_DAT11,可以得到兩個重要的信息
  • Pad的控制寄存器名稱 SW_PAD_CTL_PAD_CSI0_DATA11
  • CSI0_DAT11的功能UART1_RX_DATA 用于查找其他兩個寄存器
  • 245883-5a7f2e47233ed2fd.jpeg
    uartfunction.jpeg
查找UART1_RX_DATA,可以得到兩個寄存器
  • Mux的控制寄存器名稱 IOMUX_SW_MUX_CTL_PAD_CSI0_DATA11
  • Select Input的寄存器名稱 IOMUXC_UART1_UART_RX_DATA_SELECT_INPUT
  • 245883-266920e4428e6fd8.jpeg
    uartmuxoption.jpeg
3. 查找軟件手冊(IOMUX功能配置)軟件手冊第36章, 介紹了IOMUX需要配置寄存器的所有信息。
根據三個寄存器的名稱進行查找
  • Pad的控制寄存器名稱 SW_PAD_CTL_PAD_CSI0_DATA11
  • Mux的控制寄存器名稱 IOMUX_SW_MUX_CTL_PAD_CSI0_DATA11
  • Select Input的寄存器名稱 IOMUXC_UART1_UART_RX_DATA_SELECT_INPUTIOMUX_SW_PAD_CTL_PAD_CSI0_DATA11偏移地址:654h
    Pad控制寄存器主要用于控制引腳的上拉電阻,下拉電阻和電壓控制
  • 245883-2a30358df691caa5.jpeg
    pad.jpeg
IOMUX_SW_MUX_CTL_PAD_CSI0_DATA11偏移地址:284h
配置MUX_MODE的模式為ALT3,就能使用UART1_RX_DATA的功能
245883-2b17bc29eb987d26.jpeg
mux.jpeg

IOMUXC_UART1_UART_RX_DATA_SELECT_INPUT偏移地址:920h
245883-4c5b245c878478d4.jpeg
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))參數
  • _pad_ctrl_ofs  pad控制寄存器的偏移地址
  • _mux_ctrl_ofs mux控制寄存器的偏移地址
  • _mux_mode    mux的模式
  • _sel_input_ofs input寄存器的偏移地址
  • _sel_input       input的類型
配置通過軟件手冊查找到三個寄存器的地址, 使用IOMUX_PAD配置代碼。
  • SW_PAD_CTL_PAD_CSI0_DATA11 偏移地址 0x654
  • IOMUX_SW_MUX_CTL_PAD_CSI0_DATA11 偏移地址 0x284
  • IOMUXC_UART1_UART_RX_DATA_SELECT_INPUT 偏移地址 0x920
文件  ~/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的寄存器配置信息,再到內核代碼如何進行配置的全部映射關系。

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: www.国产日本 | 国外成人在线视频 | 在线欧美小视频 | 日韩高清成人 | 久久免费视频1 | 国产精品有限公司 | 日韩精品中文字幕在线 | 亚洲综合国产 | 久久精品小视频 | 福利视频一区 | 中文字幕视频在线 | 久久综合久色欧美综合狠狠 | 一级a性色生活片久久毛片波多野 | 日韩精品一区二区三区 | 日本天天色 | av手机免费在线观看 | 国产精品呻吟久久av凹凸 | 97精品超碰一区二区三区 | 毛片网在线观看 | 亚洲精品国产a久久久久久 中文字幕一区二区三区四区五区 | 中文字幕精品一区 | 亚洲精彩视频在线观看 | 成人在线视频一区 | 亚洲精品视频一区二区三区 | 黄色男女网站 | 亚洲国产aⅴ精品一区二区 免费观看av | 日韩午夜一区二区三区 | av二区三区 | 婷婷狠狠 | 欧美一区在线视频 | 少妇精品亚洲一区二区成人 | 精品国产乱码久久久久久蜜柚 | 一区欧美 | 啪啪综合网 | 综合国产| 日日拍夜夜 | 国产丝袜一区二区三区免费视频 | 亚洲精品高清视频 | 国内精品久久久久 | 国产欧美在线 | 婷婷在线免费 |