SPI从属模式不工作

4个职位/0个新职位
最后一篇文章
马勃朗
离线
最后一次见到:3年5个月前
已加入:2015-11-16 15:57
SPI从属模式不工作

嗨,对话小组,

我很难让SPI在从属模式下工作。我想用DA14580作为SPI的奴隶。我将我的DevKit Pro连接到SPI主机。SPI主机连续发出“0xAA”,SPI频率为500kHz。在DA14580上,我创建了一个简单的项目,它在主循环中轮询SPI\u INT\u位,然后读取SPI数据并打印出来。参见下面的代码。

我的问题是,我的错误率约为2%。我怀疑这是某种时间问题,因为我读取的错误数据通常是0x55。

我已经在下面粘贴了我的代码(主循环和init函数)。你知道是什么导致了这个问题吗?我的初始化有问题,或者我访问SPI的方式不对?

谢谢你的帮助!

SPI初始化:

静态void user\u spi\u init()
{
//从属配置
//设置时钟
SetBits16(CLK_PER_REG,SPI_DIV,0x3);//设置SPI内部时钟分频器
SetBits16(CLK_PER_REG,SPI_ENABLE,1);//为SPI启用时钟
//初始化SPI模块(SPI\ U CTRL\ U REG)
SetBits16(SPI_CTRL_REG,SPI_ON,0);//如果打开,则关闭SPI模块
SetBits16(SPI_CTRL_REG,SPI_WORD,0x00);//设置为8位模式
SetBits16(SPI_CTRL_REG,SPI_SMN,0x1);//将SPI设置为从属模式
SetBits16(SPI_CTRL_REG,SPI_POL,0x0);//模式3:SPI_POL=0
SetBits16(SPI_CTRL_REG,SPI_PHA,0x1);//和SPI_PHA=1
SetBits16(SPI_CTRL_REG,SPI_MINT,0x0);//禁用对CPU的SPI可屏蔽中断
SetBits16(SPI_CTRL_REG,SPI_EN_CTRL,0x1);//从模式的SPI EN pin(芯片选择)
//(SPI\ U CTRL\ U REG1)
SetBits16(SPI_CTRL_REG1,SPI_FIFO_MODE,0x03);//禁用SPI RX和TX FIFO
SetBits16(SPI_CTRL_REG1,SPI_PRIORITY,0x00);//SPI DMA PRIORITY
SetBits16(SPI_CTRL_REG,SPI_ON,1);//启用SPI模块
NVIC\u DisableIRQ(SPI\u IRQn);
}

主回路:

而(1)
{
while(spi\u data\u rdy\u getf())//@返回spi\u INT\u位值:如果有可用的接收数据,则为1,否则为0。
{
//读取FIFO中接收到的字节
bytes_read=GetWord16(SPI_RX_TX_REG0);//从SPI读取字节
SetWord16(SPI_CLEAR_INT_REG,0x01);//清除挂起标志
SetWord16(SPI_RX_TX_REG0,0x00AA);//将数据写入TX寄存器
#ifdef CFG\u打印
printf_字符串(“\n\r接收数据:\n\r”);
打印字(读取字节);
#结束
}
}

编辑:更改的问题描述

设备:
MT\u对话框
离线
最后一次见到:1个月5天前
工作人员
已加入:2015-06-08 11:34
嗨,马勃伦,

嗨,马勃伦,

试着降低你的SPI主机的时钟,你的从机上的内部SPI时钟应该是你的主机上的4倍大。还要确保这两个设备有共同的gnd和您的SPI连接应尽可能短。另外,我建议使用驱动程序初始化SPI模块。

谢谢你的对话

马勃朗
离线
最后一次见到:3年5个月前
已加入:2015-11-16 15:57
嗨,MT\u dialog,

嗨,MT\u dialog,

谢谢,共同点才是问题所在!现在接收数据的工作完美无瑕。:)

不幸的是,从从属服务器发送数据仍然会带来问题。当我在SPI\u CTRL\u REG中设置SPI\u EN\u CTRL位时,连接不可靠(大约50%的错误率)。我试着把SPI频率降低到32kHz,但没有任何效果。当我清除SPI\u EN\u CTRL位时,错误率为0%。在示波器上,芯片选择信号看起来很好(在整个传输期间为“低”)。

你知道这是什么原因吗?停用SPI\u EN\u CTRL有什么后果?

谢谢,
马勃朗

MT\u对话框
离线
最后一次见到:1个月5天前
工作人员
已加入:2015-06-08 11:34
嗨,马勃伦,

嗨,马勃伦,

请查一下你的其他帖子

http://support.dialog.com/external proximity reporter应用程序-。。。

谢谢你的对话