主题 : 求助:SPI1做master发送数据 复制链接 | 浏览器收藏 | 打印
级别: 骑士
UID: 9169
精华: 0
发帖: 249
金钱: 1330 两
威望: 299 点
综合积分: 498 分
注册时间: 2009-09-19
最后登录: 2017-08-14
楼主  发表于: 2010-11-23 13:43

 求助:SPI1做master发送数据

请问如何使用SPI1来发送数据呢?我的设置如下:
rGPGCON=(rGPGCON&0xffff033f)|(3<<6)|(3<<10)|(3<<12)|(3<<14); // MISO1, MOSI1, CLK1, Master
rGPGDAT|=0x8;
rGPGUP=(rGPGUP&~(7<<5))|(1<<7);


//    int i;
    char *txStr,*rxStr;
    SPI_Port_Init(1);         //主机模式
    Uart_Printf("[SPI Polling Tx/Rx Test]\n");
    Uart_Printf("Connect SPIMOSI1 into SPIMISO1.\n");
    endSpiTx=0;
    spiTxStr="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 - SPI1";    //待发送的字符串
    spiRxStr=(char *) SPI_BUFFER;
    txStr=(char *)spiTxStr;
    rxStr=(char *)spiRxStr;

    rSPPRE1=0x0;    //if PCLK=50Mhz,SPICLK=25Mhz        SPI时钟设置25MHz
    //(0<<5)-》查询模式 (1<<4)-》时钟产生 (1<<3)-》主机 (1<<2)-》低电平激活 (0<<1)-》A格式 (0<<0)-》正常模式
    rSPCON1=(0<<5)|(1<<4)|(1<<3)|(1<<2)|(0<<1)|(0<<0);//Polling,en-SCK,master,low,A,normal
    rSPPIN1=(0<<2)|(1<<1)|(0<<0);//dis-ENMUL,SBO,release
    //等待发送结束标志
    while(endSpiTx==0)
    {
        
        if(rSPSTA1&0x1)   //Check Tx ready state    检测是否允许发送
        {
            if(*spiTxStr!='\0')                    //不是结束符
                rSPTDAT1=*spiTxStr++;            //送入到寄存器中
            else
                endSpiTx=1;                        //发送结束
            while(!(rSPSTA1&0x1));   //Check Rx ready state 等待是否接受完
            *spiRxStr++=rSPRDAT1;    //记录接受的数据
        }
    }
    //~(1<<4)-》禁止时钟产生
    rSPCON1&=~(1<<4);//dis-SCK
    *(spiRxStr-1)='\0';//remove last dummy data & attach End of String(Null)   最后一个数据无效
    
    Uart_Printf("Tx Strings:%s\n",txStr);
    Uart_Printf("Rx Strings:%s :",rxStr);
    
    if(strcmp(rxStr,txStr)==0)
        Uart_Printf("O.K.\n");
    else
        Uart_Printf("ERROR!!!\n");


按照以上的设置,测试了GPG口的SPICLK没有波形,请问谁能指点一下,谢谢!
[ 此帖被libailiang在2010-11-23 17:29重新编辑 ]
级别: 骑士
UID: 9169
精华: 0
发帖: 249
金钱: 1330 两
威望: 299 点
综合积分: 498 分
注册时间: 2009-09-19
最后登录: 2017-08-14
1楼  发表于: 2010-11-24 09:37

 回 楼主(libailiang) 的帖子

自己做的SPI通信,有SPI0和SPI1的设计,经过测试是完全OK的。附件太大,有需要的,我可以发给你。邮箱是:jezy.li@163.com.
级别: 新手上路
UID: 30789
精华: 0
发帖: 22
金钱: 110 两
威望: 22 点
综合积分: 44 分
注册时间: 2010-10-21
最后登录: 2014-12-01
2楼  发表于: 2012-07-10 16:55
你好
能发我一份不
最近也在农SPI
积累
级别: 新手上路
UID: 77244
精华: 0
发帖: 10
金钱: 50 两
威望: 10 点
综合积分: 20 分
注册时间: 2012-09-05
最后登录: 2013-07-11
3楼  发表于: 2012-10-23 08:42

 回 1楼(libailiang) 的帖子

我也想参考一下您的SPI的驱动。能发一份吗?我的邮箱是haiyi_yang@163.com.