米尔小助手1 发表于 2015-1-9 09:30:57

AM335x扩展口J19/J20作GPIO配置方法举例

以MYB-AM335X底板上J19的18引脚(SPI1_SCLK)改成通用GPIO口为例:
1、 首先确认要配置的IO口是否被其它器件复用,由核心板用户手册(名为:《MYC-AM335X 产品数据手册.pdf》)可知SPI1_SCLK在A13管脚上,而芯片数据手册上列出A13对应GPIO3_14。 SPI1_SCLK在A13管脚上
A13对应GPIO3_14
注意,从底板原理图可看出已经被板子上的音频SGTL5000占用,所以要把它改成通用IO口势必会影响音频的使用。
2、打开内核源码中的板级配置文件 linux-3.2/arch/arm/mach-omap2/board-am335xevm.c 找到该GPIO3_14的复用配置 mcasp0_aclkx 并注释掉,如下图:

3、添加自己的IO配置。创建一个引脚配置数组 gpio_extend_mux[],这里配置为默认输出功能(AM33XX_PIN_OUTPUT默认输出为低电平,AM33XX_PIN_OUTPUT _PULLUP默认输出为高电平):
若要配置为上拉输入用 AM33XX_PIN_INPUT_PULLUP,下拉输入用 AM33XX_PIN_INPUT_PULLDOWN。
为什么.gpio3_14 前面是mcasp0_aclkx以及为什么是MODE7,请参考内核源码 linux-3.2/arch/arm/mach-omap2/mux33xx.c 中的335x引脚复用定义:

4、添加引脚初始化函数 gpio_extend_init()

5、在myd_am335x_dev_cfg[]中添加刚才上一步的gpio_extend_init:

6、重新编译内核并更新到开发板。
7、验证:请参考http://bbs.myir-tech.com/thread-6195-1-1.html
关于重新修改开发板上的IO配置,有时候会出现有些引脚正确配置后仍然不受控制的现象,这还得取决于该引脚连了什么外围器件,有可能其所连的外围器件的本身的特性影响到了该引脚的电平,比如总是把它拉低或拉高或是一些时序,请认真参考原理图以及熟悉那些外围器件的特性后再作修改。
页: [1]
查看完整版本: AM335x扩展口J19/J20作GPIO配置方法举例