您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> [原创]BF51x无法调出SPI0_SCK
本帖共有549个阅读者
发表帖子 发表投票 回复主题
[原创]BF51x无法调出SPI0_SCK
Ling_Zero00(论坛新手)
Ling_Zero00
头衔:社区公民
帮派:无帮无派
帖数:37
金钱:436
积分:50
注册时间:2014/9/16
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
[原创]BF51x无法调出SPI0_SCK
程序如下,我始终跳不出SPI0的SCK信号(示波器显示一直为高)
void Set_PLL(int  pmsel,int pssel)
{
    int new_PLL_CTL;    
    *pPLL_DIV = pssel;
    asm("ssync;");
    new_PLL_CTL = (pmsel & 0x3f) << 9;        
    *pSIC_IWR |= 0xffffffff;
    if (new_PLL_CTL != *pPLL_CTL)
    {
        *pPLL_CTL = new_PLL_CTL;
        asm("ssync;");
        asm("idle;");
    }
}
/****************************************************************************
* 名称 : Init_DDR
* 功能 : 初始化DDR
* 入口参数 :无
* 返回值 :无
****************************************************************************/
void Init_SDRAM(void)
{
    *pEBIU_SDRRC = 0x00000817;    
    *pEBIU_SDBCTL = 0x00000025;
    *pEBIU_SDGCTL = 0x0091998d;    
    ssync();                                                        
}
/****************************************************************************
* 名称 : Init_EBIU
* 功能 : 初始化EBIU
* 入口参数 :无
* 返回值 :无
****************************************************************************/
void Init_EBIU(void)
{
    *pEBIU_AMBCTL0    = 0x7bb07bb0;
    *pEBIU_AMBCTL1    = 0x7bb07bb0;
    *pEBIU_AMGCTL    = 0x000f;
}
/****************************************************************************
* 名称 :InitPorts
* 功能 :初始化端口
* 入口参数 :无
* 出口参数 :无
****************************************************************************/
void init_port(void)
{        
     *pPORTG_FER    =  PG11|PG12|PG13|PG14|PG15;               //set SPI0的SCK、MISO、MOSI
    *pPORTG_MUX    =  0x0000;                         //设置复用功能
    *pPORTH_FER |=  PH8;
    ssync();  
}


void SPIinit(void)
{
    *pSPI0_BAUD=10000;                     //设置波特率
    *pSPI0_FLG |=FLS2;      
    *pSPI0_CTL = 0x1101|CPHA| CPOL;
    *pSPI0_CTL = (*pSPI0_CTL | SPE);//使能SPI0        
}


//延迟函数
void delay(int tem)
{
    int j,i;
    for(i=tem;i>0;i--)
    {
        for(j=5000000;j>0;j--)
        {
            j=j;
        }
    }
}

void main( void )
{
    /* Begin adding your custom code here */
    Set_PLL(16,4);            //初始化内核和系统时钟
    Init_EBIU();            //初始化EBIU外部总线
    init_port();            //初始化GPIO口
    SPIinit();
    
    while(1){
        *pSPI0_FLG = 0x0504;        //PF0脚置高
        //Red_data();
        delay(10);
       //    Red_data();    
       *pSPI0_FLG = 0x0104;
           delay(10);
        
    }
}

ADSP
等级:论坛新手 参考IP地址:*.*.*.*
2014/10/24 14:35:33
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
SPI时钟必须在发送数据时才会出现,数据发送完成,时钟就会消失,你的代码我始终没有看到数据发送。
注意,是发送数据时产生,不是读取接收数据缓存时产生。

这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2014/10/24 23:03:44
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.159150 Call, 1 Queries, Processed in 0.031250 second(s),