[ZLG-ARM] 两片LPC2214之间用SPI通信的问题

[复制链接]
 楼主| 2005fliun 发表于 2008-1-8 12:40 | 显示全部楼层 |阅读模式
试验:我用一片2214得两个SPI口进行数据交换,试验交换数据正确,SPI0为主,SPI1为从,中断接收数据。初始化和中断服务程序如下:<br />&nbsp;&nbsp;&nbsp;PINSEL0&nbsp;=&nbsp;0x00005500;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设置SPI0管脚连接<br />&nbsp;&nbsp;&nbsp;PINSEL1&nbsp;=&nbsp;0x000002a8;<br />&nbsp;&nbsp;&nbsp;IO0DIR&nbsp;=&nbsp;HC595_CS;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;S0PCCR&nbsp;=&nbsp;0x08;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设置SPI时钟分频<br />&nbsp;&nbsp;&nbsp;S0PCR&nbsp;=&nbsp;0x30;<br />&nbsp;&nbsp;&nbsp;S1PCR&nbsp;=&nbsp;0x90;<br />&nbsp;&nbsp;&nbsp;VICIntSelect=0x00;<br />&nbsp;&nbsp;&nbsp;VICVectCntl1=0x20|11;<br />&nbsp;&nbsp;&nbsp;VICVectAddr1=(int)IRQ_SPI1;<br />&nbsp;&nbsp;&nbsp;VICIntEnable=0x00000800;&nbsp;&nbsp;<br />SPI1得中断服务程序如下:<br />void&nbsp;__irq&nbsp;IRQ_SPI1(void)<br />{<br />&nbsp;flag=S1PSR;<br />&nbsp;k++;<br />&nbsp;if(k&gt10)&nbsp;k=0;<br />&nbsp;s1_data=S1PDR;&nbsp;<br />&nbsp;S1PDR=x[k];&nbsp;<br />&nbsp;S1PINT=0x01;<br />&nbsp;VICVectAddr=0;<br />}<br />在一片2214中,SPI0和SPI1通信状况良好,但是现在我想做的是:两片2214分别用自己得SPI0口进行通信,一块设为主机,一块设为从机;<br />主机设置如下:<br />&nbsp;PINSEL0=0x00005500;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//设置SPI硬件引脚<br />&nbsp;S0PCCR=0x08;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//SPI传送速度Fcclk/8;<br />&nbsp;S0PCR=0x30;&nbsp;<br /><br />&nbsp;IO0CLR=CJ_CS;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//数据发送<br />&nbsp;S0PDR=data;<br />&nbsp;while(0==(S0PSR&0x80));<br />&nbsp;IO0SET=CJ_CS;<br />程序写完后,检查主机MOSI,CS,SCK等信号均正确。<br />从机设置:<br />&nbsp;&nbsp;PINSEL0=0x00005500;//引脚设置<br /><br />&nbsp;&nbsp;S0PCR=0x90;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//开中断,从模式,其他设置同主机一样<br />&nbsp;&nbsp;VICIntSelect=0x00;<br />&nbsp;&nbsp;VICVectCntl0=0x20|10;<br />&nbsp;&nbsp;VICVectAddr0=(int)IRQ_SPI0;<br />&nbsp;&nbsp;VICIntEnable=0x00000400;<br />从机接受中断服务程序<br />void&nbsp;__irq&nbsp;IRQ_SPI0(void)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//接受中断<br />{<br />&nbsp;flag=S0PSR;<br />&nbsp;rec_stack=S0PDR;<br />&nbsp;&nbsp;S1PINT=0x01;<br />&nbsp;&nbsp;VICVectAddr=0;<br />}<br />从机中断服务程序完全仿照一片2214得SPI通信得设置,但是,从机就是不能进入中断,接受不到数据,我想请教一下,这大概是什么方面的问题,有什么解决的思路?<br />因为以前做的都是处理器直接用SPI去写数据,不用去管接受数据的情况,现在碰到这问题还不知道是哪里得原因,请大家不吝赐教!<br /><br /><br />
zlgarm 发表于 2008-1-8 15:22 | 显示全部楼层

回复如下:

2005fliun;您好!<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;请您检查一下作从机的LPC2214ARM芯片SSEL管脚是否连接了高电平。
 楼主| 2005fliun 发表于 2008-1-9 08:45 | 显示全部楼层

回复

zlgarm:您好!<br />&nbsp;&nbsp;做从机的2214的SSEL管脚没有直接接上拉电阻,但是我用做主机的一根IO口线来作为从机的片选控制线:平时为高,发送时为低选通发送。<br />
zlgarm 发表于 2008-1-9 10:48 | 显示全部楼层

2005fliun 您好!

请问一下:1.做主机的LPC2214的芯片的SSEL管脚有没有接上拉电阻(有是准确的)?<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.硬件上是否可以保证数据发送之前,乃至整个数据处理过程中做从机的SSEL管脚一直为低电平(可用示波器看一下)?<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;By&nbsp;zlgarm_syg
 楼主| 2005fliun 发表于 2008-1-9 11:05 | 显示全部楼层

SPI硬件没有错

  
 楼主| 2005fliun 发表于 2008-1-9 11:39 | 显示全部楼层

SPI引脚接线

SPI接线<br />(主)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(从)<br />sck0(P0.4,pin59)&nbsp;————&nbsp;SCK0(P0.4,pin59)<br />MISO(P0.5,pin61)&nbsp;————&nbsp;MISO(P0.5,pin61)<br />MOSI(P0.6,pin68)&nbsp;————&nbsp;MOSI(P0.6,pin68)<br />SSEL(P0.7,上拉10k)————SSEL(P0.7,接主机控制脚P0.8,去掉板上<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;原有的10k上拉电阻)<br /><br />充当SPI主模式的是自己做的板,SPI0口的SSEL已经上拉了电阻。充当从机的是easyarm2200开发板,特地将此板上SPI0的SSEL上拉电阻卸掉了。电路上面都没有问题。<br /><br />&nbsp;&nbsp;刚才我通过主机向从机的SPI1接口用SPI进行数据通信,有数据显示,并且挺正确的,程序上面一点都没有改动。奇怪,唉,周工,能解释一下&nbsp;么?<br />
zlgarm 发表于 2008-1-9 13:49 | 显示全部楼层

2005fliun 您好!

就目前的情况来说,通信是没有问题了!<br />通信不良很有可能是杜邦线松动造成的!
 楼主| 2005fliun 发表于 2008-1-9 14:19 | 显示全部楼层

回复

&nbsp;&nbsp;再看看吧,谢谢了,周工。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

12

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部