您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> [求助]关于BF533和ADSP21489的SPI DMA方式通... 
本帖共有1140个阅读者
发表帖子 发表投票 回复主题
[求助]关于BF533和ADSP21489的SPI DMA方式通讯
jay200818(论坛新手)
jay200818
头衔:社区公民
帮派:无帮无派
帖数:3
金钱:122
积分:4
注册时间:2013/5/27
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
[求助]关于BF533和ADSP21489的SPI DMA方式通讯

我连上BF533和ADSP21489的EZ-KIT,但是通信出了点问题,想确定是是SHARC接收问题,还是BF533传输问题。BF533是开源带触摸屏的开发板,请帮我看下配置对么,我是参考EZ-KIT来配的,代码如下。

void Init_SDRAM(void)
{
*pEBIU_SDRRC = 0x00000817;
*pEBIU_SDBCTL = 0x00000013;
*pEBIU_SDGCTL = 0x0091998d;
ssync();              
}

void Init_EBIU(void)
{
*pEBIU_AMBCTL0 = 0x7bb07bb0;
*pEBIU_AMBCTL1 = 0xffc07bb0;
*pEBIU_AMGCTL = 0x010f;
}

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;");
}
}
  
}

void ConfigSPI(void)
{
/* Reset SPI configurations*/
    *pSPI_BAUD = 0x0000;
    *pSPI_CTL = 0x0400;
    *pSPI_FLG = 0xFF00;
    *pSPI_STAT = 0x0001;
    *pSPI_TDBR = 0x0000;
    *pSPI_RDBR = 0x0000;
    *pSPI_SHADOW = 0x0000;
    Delay(0xFFFFF);
    *pSPI_FLG = FLS1; /* Enable PF1 */
*pSPI_BAUD = 16; /* Set baud rate SCK = HCLK/(2*SPIBAUD) SCK = 2MHz */
*pSPI_CTL = 0x0003 | CPOL | CPHA | MSTR;

}

void SendSPIData(void *pStartAddr, int nNumDataBytes)

{   //*pDMA5_PERIPHERAL_MAP = 0x5000;
*pDMA5_START_ADDR = (void *)pStartAddr;/* Start address of data buffer */
    *pDMA5_X_COUNT = nNumDataBytes; /* DMA inner loop count */
    *pDMA5_X_MODIFY = 1; /* Inner loop address increment */
    *pDMA5_CONFIG = (*pDMA5_CONFIG | DMAEN); /* Enable DMAs */
    *pSPI_CTL = (*pSPI_CTL | SPE); /* Enable spi */
}

main()
{
Set_PLL(16,4);
Init_EBIU();
Init_SDRAM();
ConfigSPI();

SendSPIData(aSPIPacket_1,256);// aSPIPacket_1的buffer里是16个int型的参数。
while(!(*pSPI_STAT & SPIF));
Delay(1500);
Disable_Spi();

}


这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2013/5/27 16:25:06
jay200818(论坛新手)
jay200818
头衔:社区公民
帮派:无帮无派
帖数:3
金钱:122
积分:4
注册时间:2013/5/27
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
顺便问一下片选FLS1口是外扩的接口PORT3的5口吧?用的是http://item.taobao.com/item.htm?spm=a230r.1.14.11.JLIqPU&id=10663122452这个板子

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2013/5/27 16:29:32
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
2信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
不是,因为BF533的芯片资源比较紧张,使用了16BitPPI后,已经没有IO和SPISEL可用了,所以SPI接口的片选是通过PF2和CPLD扩展的,使用的仍然是PF2接口,即SPISEL2接口。
如果想使用这个接口,你必须在配置完后,调用CPLD的配置函数:
void ExtSPI1_Enable(void)
{
*pDEVICE_OE |= SPI_SEL0;
*pDEVICE_OE |= SPI_SEL1;
}
这样SPISEL2才被联通到外扩的接口PORT3的5口。

你可以尝试先测量扩展接口出来的每个信号波形是否正常,时序是否符合你的需求,然后再将接口连接SHARC板子。调试SPI需注意:
1. SPI的飞线不要太长,不要超10CM,最好控制在5CM之内。
2. SPI时钟不要太快,等完成通讯没问题了再调高。


这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2013/5/27 17:25:06
jay200818(论坛新手)
jay200818
头衔:社区公民
帮派:无帮无派
帖数:3
金钱:122
积分:4
注册时间:2013/5/27
3信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

谢谢andy。

我飞线大于20cm,估计问题在这。


这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2013/5/27 20:08:08
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.159287 Call, 1 Queries, Processed in 0.062500 second(s),