[ZLG-MCU] LPC2103 SPI 发不出数据

[复制链接]
2204|3
 楼主| linhai1986 发表于 2009-4-28 23:15 | 显示全部楼层 |阅读模式
写了个SPI的程序,但调试时,总跳不出while(!(S0SPSR&nbsp;&&nbsp;0x80));&nbsp;这个循环,啥原因?是不是初始化有问题,但我初始化都是根据SPI0四个引脚进行初始化了。<br />&nbsp;<br />程序如下:请叫高手了<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />#include&nbsp;&quot;lpc2103.h&quot;<br />unsigned&nbsp;char&nbsp;const&nbsp;disp_tab[16]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,<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;0x88,0x83,0xC6,0xA1,0x86,0x8E};<br />#define&nbsp;NSS&nbsp;(1&lt&lt7)&nbsp;&nbsp;&nbsp;//连接SPI0的SSEL管脚<br />void&nbsp;delay(unsigned&nbsp;int&nbsp;count)<br />{<br />&nbsp;&nbsp;unsigned&nbsp;int&nbsp;i;<br />&nbsp;&nbsp;for(;count&gt0;count--)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&lt5000;i++);<br />}<br />void&nbsp;spi_int(void)<br />{<br />&nbsp;&nbsp;&nbsp;S0SPCCR&nbsp;|=&nbsp;0x52;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//设置SPI时钟分频<br />&nbsp;&nbsp;&nbsp;S0SPCR&nbsp;=&nbsp;(0&lt&lt3)|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//CPHA=0,数据在SCK的第一个时钟采样<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1&lt&lt4)|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//CPOL=1,SCK低电平有效<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1&lt&lt5)|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//MSTR=1,SPI处于主模式<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(0&lt&lt6)|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//LSBF=0,SPI数据传输MSB(bit7)在先<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(0&lt&lt7);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//SPIE=0,SPI中断禁止&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;<br />}<br />unsigned&nbsp;char&nbsp;send_data(unsigned&nbsp;char&nbsp;data)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;delay(50);<br />&nbsp;&nbsp;&nbsp;//IOCLR=NSS;<br />&nbsp;S0SPDR=data;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;while(!(S0SPSR&nbsp;&&nbsp;0x80));&nbsp;//等待SPIF置位<br />&nbsp;S0SPSR&nbsp;|=&nbsp;0x80;&nbsp;&nbsp;&nbsp;&nbsp;//清除SPIF<br />&nbsp;//IOSET=NSS;<br />&nbsp;return(S0SPDR);<br />}<br />int&nbsp;main(void)<br />{<br />//&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;rcv_data;<br />&nbsp;&nbsp;unsigned&nbsp;char&nbsp;i;<br />&nbsp;&nbsp;PINSEL0|=0x00005500;&nbsp;&nbsp;&nbsp;//设置SPI0管脚连接<br />&nbsp;&nbsp;PINSEL1|=0x00000000;<br />&nbsp;&nbsp;IODIR=NSS;<br />&nbsp;&nbsp;spi_int();<br />&nbsp;&nbsp;while(1)<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&lt16;i++)<br />&nbsp;&nbsp;{&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IOCLR=NSS;&nbsp;&nbsp;//主机发出片选信号,低电平有效<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;send_data(disp_tab);<br />&nbsp;&nbsp;&nbsp;IOSET=NSS;&nbsp;//已发完数据,片选拉成高电平<br />&nbsp;&nbsp;//&nbsp;delay(50);<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;}&nbsp;<br />//&nbsp;&nbsp;&nbsp;&nbsp;return(0);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />}
liqindz 发表于 2009-5-5 11:02 | 显示全部楼层

示波器看看有没有波形

  
xiaoxin1986 发表于 2009-5-7 21:05 | 显示全部楼层

给客服打电话吧,他们能帮你解决

号码:2264&nbsp;4383&nbsp;
 楼主| linhai1986 发表于 2009-5-7 22:33 | 显示全部楼层

好的,谢谢

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

172

主题

1451

帖子

0

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