mux
这里以开发板的led7来分析一下
/myimx6ek200.dtsi/
/myimx6ek200-iomux.dtsi/
/imx6dl-pinfunc.h/
所以和该管脚相关的值就是
0x274 0x65c 0x000 0x5 0x0 0x80000000
这六个值分别代表什么意思呢
/imx6dl-pinfunc.h/
在pinctrl-imx.c文件的imx_pinctrl_parse_groups函数中
这段代码中list = of_get_property(np, “fsl,pins”, &size);实现了读取dts文件中的fsl,pin属性值,并保存在了list指针变量中。紧接着,分别将list中的值mux_reg、conf_reg、input_reg、mux_mode、input_val、config六个变量中,由名字可以猜测个大概,前5个得以验证,第六个表示config,config的值说白了就是对寄存器配置(上拉电阻、频率等等)的值,就是pad_ctrl的值
对应关系如下:
0x274 | 0x65c | 0x000 | 0x5 | 0x0 | 0x80000000
mux_ctrl_ofs | pad_ctrl_ofs | sel_input_ofs | mux_mode | sel_input | pad_ctrl
在参考手册里面
因此确定mux_mode为5
因此mux控制寄存器的偏移地址为65ch
因此控制寄存器的偏移地址为274h
在手册里面搜索
搜索不到,说明这个io并没有被当成输入来用,因此 sel_input_ofs及sel_input保持为0即可
最后看这个ox80000000这个值,即配置上图中
这个寄存器的值,从图中可以看到,17-31位不起作用
那为什么还配置0x80000000呢
看到ox80000000表示不需要配置
代码中用到该IMX_NO_PAD_CTL宏定义的地方如下
相关阅读
二维码,被誉为“移动互联网的最后一段距离”,为移动互联网服务的落地做出了不可磨灭的贡献。如今,不经意间,在海报、杂志、报纸上,在地