pxa 272 开发几个小经验

pxa 272 开发几个小经验
  pxa 272是 Intel 公司的嵌入式芯片产品,已经出售给Marvell公司。它与pxa 270的主要区别在于pxa 272内置了64M的flash,更方便了大家的开发。

  我们在使用pxa 272开发一款产品的时候,总结了以下几个注意点,希望对大家的开发有所帮助。

1. GPIO作为中断使用;
  在以前常见的GPIO作为中断使用的时候,一般做以下步骤即可:
    * 设置GPIO复用功能为 一般的GPIO功能;
    * 设置GPIO为input状态;
    * 设置产生中断的方式;上升延,还是下降延;
    * 设置中断控制器 enable GPIO_X位。

    在其他的平台或许你这样设置就没有什么问题了。但是在PXA 27x 系列中,你必须设置:
    IPR0-IPR39 寄存器;来设置中断的优先级。

    另外:我要提醒大家的是。GRER 和GFER 这两组寄存器用来设置GPIO的中断方式。
    当我们设置为上升延中断 我们要将GRER寄存器对应的位设置为1,还必须将GFER的对应位设置为0。
    如果都设置为1,那么就出现上升延或者下降延都会产生中断。

    根据不同的应用模式选择不同的中断方式。
    例如网卡就应该设置其中一种延方式触发。GRER和GFER的对应位不能同时设置为1。如果这样做了,驱动误认为收到或者发送了两次包。

    例如:SD卡中断可以设置GRER和GFER的对应位都为1。这样插入卡和拔出卡就可以用同一个中断。
          不需要使用两个GPIO中断来实现。

2. 一些特殊GPIO的设置方法;
   
    这里描述的实际上是一种思路。在我实际的开发过程中我们用了GPIO 10来作为touch panel的数据读的pin。
    当我们用模拟的SPI时序来读touch panel数据的时候: clk,din,busy,cs等都没有问题。读出来的数据就是有问题。
    我们找了很长时间。发现我们设置GPIO脚的方法如下:
    * 设置GPIO 复选功能为普通GPIO;
    * 设置GPIO 为输入状态;
    * 不用作中断模式;

    尽管这样我们获取的数据还是有问题,我们用示波器测试GPIO 10有方波,
    奇怪?难道是作为HZ_CLK了?我反复设置了GPIO的复选功能作为一般的GPIO功能都不管用?
    那么到底问题出在那里呢?

    原来是:OSCC 的TOUT_EN位,如果这一位设置了。不管复选功能怎么设置都是HZ_CLK功能。
            并且程序能通过GPIO的寄存器读到数据的变化。
 
3. USB client  controller使用方法;
  这里要讲的实际上是硬件电路相关的内容。
 
  大家知道usb client实际上是有两种状态:
    * 空闲;
    * 插入到PC连接状态。

  那么这两种状态,我们怎么判断呢?
  这里一般都是通过PC的USB连接线上的5V来迫使一个3.3V电路导通到地。通过这个电压的改变来获取插入或者拔出的状态。

 
  在Intel给我们提供PXA 270的标准开发板(mainstone II)中有一个STF203-22的USBC 的filter 。这个小芯片成本可不低。
  他的作用不仅仅是filter。如果我们不想使用它,那么怎么做呢?当然我们有一个低成本方案。就是用1.5K电阻将D+这个信号线拉高。
  如果不使用这个电阻,我们可能会面临usbc 不停的复位问题。这是因为,USBC的状态中D-,D+同时为低超过2.5微秒,USBC就判断为复位。


我的这几个经验都是小经验,仅给那些入门朋友一点参考而已,对于那些使用过PXA272的朋友可能没有太多的帮助。
此文档来源于www.akaedu.org研发部。如有疑问或者其他经验交流请登陆www.akaedu.org网站。也希望其他朋友有更多的开发经验共享出来。
我们会通过网站发布。联系人:asmcos@akaedu.org   






 
最后编辑2007-01-02 20:34:51.857000000