打印
[ZLG-ARM]

LPC2134 SPI接口问题

[复制链接]
2280|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wylinder|  楼主 | 2007-12-3 14:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一个系统采用LPC2134设计的,采用SPI与一个外部SPI FLASH,但是一直无法操作,寄存器设置上也只有几个寄存器,SPCR, SPCCR。这两个寄存器分别设置成SPCCR = 60; SPCR = 0xA8; 即采用中断方式工作,但是有时能够进入中断,有时候进不去,即使通过向SPDR里边写数据也产生不了中断;通过查询方式,即把SPSR设置成0x20,通过软件查询SPSR中的最高位也有时查询不到状态位变化。从NXP网站上下载了DEMO软件,按照他的中断方式进行改写,也是一样的问题,不知道哪位是否有使用过这个芯片,可以指点一二?另外,NXP的勘误表中有提到SPI1的问题,对于SPI0没有提到,我用的是SPI0。

相关帖子

沙发
lyl831015| | 2007-12-3 16:29 | 只看该作者

您好,SPI0是没有问题的。

  您好,SPI0是没有问题的。可能是您的程序初始化有问题,比如上面的描述“查询方式,即把SPSR设置成0x20”,是查询方式还是中断方式由SPCR里的SPIE位决定。
  上面还描述说有时标志位会置位,有时不会,那么可以检查一下Flash连接是否正确,比如是否出现虚焊造成数据不能稳定传输。
  另外给出一段SPI初始化代码供您参考一下,这是从实现了SPI Flash通信的例程里截取下来的。
void  mspiInit (void)
{  
    PINSEL0 = 0x00005500;  /*  设置SPI管脚连接        */
    PINSEL1 = 0x00000000;
    PINSEL2 = PINSEL2 & (~0x08);/*  P1[25:16]连接GPIO      */
    IO1DIR  = __SPI_CS;    /*  设置P1.24控制口为输出       */
    PINSEL0 = (PINSEL0 & (~(0xFF << 8))) | (0x15 << 8) ;   /*  配置P0.4=SCK0,P0.5=MISO0    */
/*  P0.6=MOSI0                 */
/*  (P0.7=GPIO不需要配置)      */
    SPCCR = 0x52;                 /*  设置SPI时钟分频             */
    SPCR  = (0 << 3) |        /*  CPHA = 0, 数据在SCK 的      */
                           /*  第一个时钟沿采样            */
      (1 << 5) |            /*  MSTR = 1, SPI 处于主模式    */
     (0 << 6) |            /*  LSBF = 0, SPI 数据传输      */
                                                                                               /*  MSB (位7)在先               */
     (0 << 7);            /*  SPIE = 0, SPI 中断被禁止    */
}

使用特权

评论回复
板凳
kernel99| | 2007-12-4 09:39 | 只看该作者

仅供您参考

您使用的外部SPI FLASH是否有片选(CS)管脚,如果有的话,应该在向SPDR里边写数据前,设置片选信号!

使用特权

评论回复
地板
kernel99| | 2007-12-4 09:44 | 只看该作者

仅供您参考

最好把SPI0的SSEL0管脚设置成输出为高电平,或通过电阻上拉至高电平

使用特权

评论回复
5
zlgarm| | 2007-12-4 11:11 | 只看该作者

re~~

写数据前发条指令把FLASH擦除....

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

29

帖子

0

粉丝