打印
[ZLG-ARM]

两片LPC2214之间用SPI通信的问题

[复制链接]
2885|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
2005fliun|  楼主 | 2008-1-8 12:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
试验:我用一片2214得两个SPI口进行数据交换,试验交换数据正确,SPI0为主,SPI1为从,中断接收数据。初始化和中断服务程序如下:
   PINSEL0 = 0x00005500;            // 设置SPI0管脚连接
   PINSEL1 = 0x000002a8;
   IO0DIR = HC595_CS;
      
   S0PCCR = 0x08;            // 设置SPI时钟分频
   S0PCR = 0x30;
   S1PCR = 0x90;
   VICIntSelect=0x00;
   VICVectCntl1=0x20|11;
   VICVectAddr1=(int)IRQ_SPI1;
   VICIntEnable=0x00000800;  
SPI1得中断服务程序如下:
void __irq IRQ_SPI1(void)
{
 flag=S1PSR;
 k++;
 if(k>10) k=0;
 s1_data=S1PDR; 
 S1PDR=x[k]; 
 S1PINT=0x01;
 VICVectAddr=0;
}
在一片2214中,SPI0和SPI1通信状况良好,但是现在我想做的是:两片2214分别用自己得SPI0口进行通信,一块设为主机,一块设为从机;
主机设置如下:
 PINSEL0=0x00005500;            //设置SPI硬件引脚
 S0PCCR=0x08;                  //SPI传送速度Fcclk/8;
 S0PCR=0x30; 

 IO0CLR=CJ_CS;                 //数据发送
 S0PDR=data;
 while(0==(S0PSR&0x80));
 IO0SET=CJ_CS;
程序写完后,检查主机MOSI,CS,SCK等信号均正确。
从机设置:
  PINSEL0=0x00005500;//引脚设置

  S0PCR=0x90;      //开中断,从模式,其他设置同主机一样
  VICIntSelect=0x00;
  VICVectCntl0=0x20|10;
  VICVectAddr0=(int)IRQ_SPI0;
  VICIntEnable=0x00000400;
从机接受中断服务程序
void __irq IRQ_SPI0(void)      //接受中断
{
 flag=S0PSR;
 rec_stack=S0PDR;
  S1PINT=0x01;
  VICVectAddr=0;
}
从机中断服务程序完全仿照一片2214得SPI通信得设置,但是,从机就是不能进入中断,接受不到数据,我想请教一下,这大概是什么方面的问题,有什么解决的思路?
因为以前做的都是处理器直接用SPI去写数据,不用去管接受数据的情况,现在碰到这问题还不知道是哪里得原因,请大家不吝赐教!


相关帖子

沙发
zlgarm| | 2008-1-8 15:22 | 只看该作者

回复如下:

2005fliun;您好!
     请您检查一下作从机的LPC2214ARM芯片SSEL管脚是否连接了高电平。

使用特权

评论回复
板凳
2005fliun|  楼主 | 2008-1-9 08:45 | 只看该作者

回复

zlgarm:您好!
  做从机的2214的SSEL管脚没有直接接上拉电阻,但是我用做主机的一根IO口线来作为从机的片选控制线:平时为高,发送时为低选通发送。

使用特权

评论回复
地板
zlgarm| | 2008-1-9 10:48 | 只看该作者

2005fliun 您好!

请问一下:1.做主机的LPC2214的芯片的SSEL管脚有没有接上拉电阻(有是准确的)?
          2.硬件上是否可以保证数据发送之前,乃至整个数据处理过程中做从机的SSEL管脚一直为低电平(可用示波器看一下)?
                                         By zlgarm_syg

使用特权

评论回复
5
2005fliun|  楼主 | 2008-1-9 11:05 | 只看该作者

SPI硬件没有错

使用特权

评论回复
6
2005fliun|  楼主 | 2008-1-9 11:39 | 只看该作者

SPI引脚接线

SPI接线
(主)                         (从)
sck0(P0.4,pin59) ———— SCK0(P0.4,pin59)
MISO(P0.5,pin61) ———— MISO(P0.5,pin61)
MOSI(P0.6,pin68) ———— MOSI(P0.6,pin68)
SSEL(P0.7,上拉10k)————SSEL(P0.7,接主机控制脚P0.8,去掉板上
                             原有的10k上拉电阻)

充当SPI主模式的是自己做的板,SPI0口的SSEL已经上拉了电阻。充当从机的是easyarm2200开发板,特地将此板上SPI0的SSEL上拉电阻卸掉了。电路上面都没有问题。

  刚才我通过主机向从机的SPI1接口用SPI进行数据通信,有数据显示,并且挺正确的,程序上面一点都没有改动。奇怪,唉,周工,能解释一下 么?

使用特权

评论回复
7
zlgarm| | 2008-1-9 13:49 | 只看该作者

2005fliun 您好!

就目前的情况来说,通信是没有问题了!
通信不良很有可能是杜邦线松动造成的!

使用特权

评论回复
8
2005fliun|  楼主 | 2008-1-9 14:19 | 只看该作者

回复

  再看看吧,谢谢了,周工。

使用特权

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

本版积分规则

7

主题

12

帖子

0

粉丝