I.MX51的GPIO 操作比ATMEL 的CPU要简单,ATMEL的GPIO组件设计得很复杂,寄存器又多; GPIO的主要寄存器有 3个 DR GDIR PSR 还有ICR1,ICR2,IMR,ISR 是GPIO的中断用寄存器,因为我目前没有使用,就不多说了。 DR :数据读写寄存器,通过该寄存器控制对应GPIO的高低电平,或者读入GPIO的电平状态。 GDIR :通知GPIO是通知于输出模式还是输入模式, 0 GPIO is configured as input. 对应的位设置为0 则为输入 1 GPIO is configured as output. 对应的位设置为1 则为输出 如果对应的引脚设置为GPIO模式 当GDIR设置为输入时,读DR寄存器,则返回引脚的电平状态 当GDIR设置为输出时,读DR寄存器,则返回DR寄存器的状态 如果对应的引脚设置为非GPIO模式(并行设备)
此外,还有一个很总要的配置就是IOMUX ,即IO引脚复用设置,因为I.MX51这款CPU实太他妈的复杂了,集成了太多的外设,在BGA529的封装下,也容纳不了这么多引脚。所以只能使用IO复用来解决该问题即一个IC上的引脚,通过一个n选1的多路开关,把需要的外设连接到该引脚上。具体的配置通过 IOMUXC_SW_MUX_CTL_PAD寄存器来实现。
上图是IOMUXC_SW_MUX_CTL_PAD_AUD3_BB_CK的IO复用配置,主要分2部分,SION和IO复用配置 SION:是软件强行配置模式,配置了该模式后,该IO的具体电平不由所连接模块的所决定,而是可以由软件写入决定,该功能估计是在调试硬件设备时使用; IO复用:写入不同的配置,IO引脚连接到对应的模块,如 000时是AUD3_TXC 011时是作GPIO使用
IOMUXC_SW_PAD_CTL_PAD_AUD3_BB_CK 引脚配置; I,MX51的配置比ATMEL的要丰富,连上、下拉电阻的阻值都可以配置,还有就是信号变化的上升率(slew rate filed) keeper:就搞不懂事什么玩意?? IO复用配置,在写驱动时,很容易被忽略,我在第一次使用时,就碰到了,
//设置IO为输出 //配置IOMUX寄存器,把MX51_PIN_AUD3_BB_CK引脚配置为GPIO //linux系统通用的GPIO的操作函数,她的入口是个int的整型的数,所以需要使用IOMUX_TO_GPIO(MX51_PIN_AUD3_BB_CK)函数 gpio_set_value(IOMUX_TO_GPIO((MX51_PIN_AUD3_BB_CK)), 1); //IO置高的操作 |
I.MX51 GPIO 及驱动
最新推荐文章于 2022-07-13 10:45:27 发布