打印
[ZLG-MCU]

LPC2103 SPI 发不出数据

[复制链接]
1605|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
linhai1986|  楼主 | 2009-4-28 23:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
写了个SPI的程序,但调试时,总跳不出while(!(S0SPSR & 0x80)); 这个循环,啥原因?是不是初始化有问题,但我初始化都是根据SPI0四个引脚进行初始化了。
 
程序如下:请叫高手了
 
 
 
#include "lpc2103.h"
unsigned char const disp_tab[16]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,
                            0x88,0x83,0xC6,0xA1,0x86,0x8E};
#define NSS (1<<7)   //连接SPI0的SSEL管脚
void delay(unsigned int count)
{
  unsigned int i;
  for(;count>0;count--)
      for(i=0;i<5000;i++);
}
void spi_int(void)
{
   S0SPCCR |= 0x52;          //设置SPI时钟分频
   S0SPCR = (0<<3)|          //CPHA=0,数据在SCK的第一个时钟采样
              (1<<4)|          //CPOL=1,SCK低电平有效
              (1<<5)|          //MSTR=1,SPI处于主模式
              (0<<6)|          //LSBF=0,SPI数据传输MSB(bit7)在先
              (0<<7);          //SPIE=0,SPI中断禁止  
   
}
unsigned char send_data(unsigned char data)
{
    delay(50);
   //IOCLR=NSS;
 S0SPDR=data;   
    while(!(S0SPSR & 0x80)); //等待SPIF置位
 S0SPSR |= 0x80;    //清除SPIF
 //IOSET=NSS;
 return(S0SPDR);
}
int main(void)
{
//    unsigned char rcv_data;
  unsigned char i;
  PINSEL0|=0x00005500;   //设置SPI0管脚连接
  PINSEL1|=0x00000000;
  IODIR=NSS;
  spi_int();
  while(1)
  {
     for(i=0;i<16;i++)
  {  
      IOCLR=NSS;  //主机发出片选信号,低电平有效
      send_data(disp_tab);
   IOSET=NSS; //已发完数据,片选拉成高电平
  // delay(50);
  }
  } 
//    return(0);                 
}

相关帖子

沙发
liqindz| | 2009-5-5 11:02 | 只看该作者

示波器看看有没有波形

使用特权

评论回复
板凳
xiaoxin1986| | 2009-5-7 21:05 | 只看该作者

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

号码:2264 4383 

使用特权

评论回复
地板
linhai1986|  楼主 | 2009-5-7 22:33 | 只看该作者

好的,谢谢

使用特权

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

本版积分规则

172

主题

1451

帖子

0

粉丝