打印
[ZLG-ARM]

求助:关于spi的设置

[复制链接]
1567|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ecstasy1_0|  楼主 | 2009-10-20 15:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
synics| | 2009-10-24 20:01 | 只看该作者
#include "config.h"
#define   SALVE       (1 << 29)
#define   LED          0xff << 16
volatile uint8  RcvData;   
volatile uint8  RcvFlag;
void  DelayNS(uint32  dly)
{  
    uint32  i;
    for(; dly>0; dly--)
    for(i=0; i<50000; i++);
}
void __irq SPI_IRQ(void)
{
    uint32 tmp;
    tmp = SPSR;      
    RcvData = SPDR;                     
    RcvFlag = 0x01;   
    SPINT  = 0x01;                          
    VICVectAddr = 0x00;
}
void  SPI_Init(void)
{  
S0PCR  = (0 << 3) |       (1 << 4) |   
          (0 << 5) |   
   (0 << 6) |   
   (1 << 7);   
}
int main (void)
{  
    uint8  rcv_data;   
    PINSEL0 = (PINSEL0 | 0x00005500);              
    PINSEL2 = PINSEL2 & (~0x08);               IO1DIR  = LED;
    IO0DIR  = SALVE;      
    IOCLR= SALVE;     
    IRQEnable();        SPI_Init();               
    VICIntSelect = 0x00000000;               
    VICVectCntl0 = (0x20 | 10);           
    VICVectAddr0 = (int32)SPI_IRQ;         
    VICIntEnable = (1 << 10);                    
    while(1)
    {  
        
         if(RcvFlag != 0)                           
         {
             rcv_data = RcvData;            
              IO1CLR = rcv_data <<16 ;
               DelayNS(200);
              IO1SET = rcv_data <<16 ;
               DelayNS(200);
         }
        
     }
   
    return 0;
}

2210板上程序:
#include  "config.h"
#define   HC595_CS       (1 << 29)     
void  DelayNS(uint32  dly)
{  
    uint32  i;

    for(; dly>0; dly--)
        for(i=0; i<50000; i++);
}


void  MSPI_Init(void)
{  
    PINSEL0 = (PINSEL0 & (~(0xFF << 8))) | (0x55 << 8) ;
    SPCCR = 0x52;            
    SPCR  = (0 << 3) |          (1 << 4) |          (1 << 5) |          (0 << 6) |           (0 << 7);
}


uint8  MSPI_SendData(uint8 data)
{  
   
    IOCLR = HC595_CS;
    SPI_SPDR = data;
    while( 0 == (SPI_SPSR & 0x80));     
    IOSET = HC595_CS;
    return(SPI_SPDR);
}

使用特权

评论回复
板凳
synics| | 2009-10-24 20:01 | 只看该作者
uint8 const DISP_TAB[8] = {1,2,3,4,5,6,7,8,9};





    uint8  rcv_data;
int main (void)
{  
    uint8  i;

    PINSEL0 = 0x00005500;               
    PINSEL1 = 0x00000000;
    IODIR = HC595_CS;
   
    MSPI_Init();                    
    while(1)
    {  
     
       for(i=0; i<8; i++)
        {
           rcv_data = MSPI_SendData(DISP_TAB[i]);
         DelayNS(80);                        
       }
      
    }

    return 0;
}

使用特权

评论回复
地板
synics| | 2009-10-24 20:02 | 只看该作者
uint8 rcv_data;
int main (void)
{
uint8 i;

PINSEL0 = 0x00005500;
PINSEL1 = 0x00000000;
IODIR = HC595_CS;

MSPI_Init();
while(1)
{

for(i=0; i<8; i++)
{
rcv_data = MSPI_SendData(DISP_TAB[i]);
DelayNS(80);
}

}

return 0;
}

使用特权

评论回复
5
synics| | 2009-10-24 20:02 | 只看该作者
这里面有这个,你看看

使用特权

评论回复
6
synics| | 2009-10-24 20:03 | 只看该作者
你还是好好看看书吧!其中的知识,你还没有明白

使用特权

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

本版积分规则

2

主题

7

帖子

0

粉丝