TI中文支持网
TI专业的中文技术问题搜集分享网站

MIBSPI

我用的RM950的开发板,用mibspi与两个CPU通信时,发现数据一直不能发送成功。我是用halcogen生成的代码。

//master

void main(void)
{
/* USER CODE BEGIN (3) */
uint16 tx[10] = {1,2,3,4,5,6,7,8,9,10};
uint16 rx[10] = {0};

mibspiInit();
//mibspiGetData(mibspiREG5,0,&data[0]);

//mibspiEnableLoopback(mibspiREG1,Analog_Lbk);
mibspiSetData(mibspiREG1, 0, tx);

mibspiTransfer(mibspiREG1, 0);

while(!(mibspiIsTransferComplete(mibspiREG1,0)));

mibspiGetData(mibspiREG1,0,rx);

while(1);
/* USER CODE END */
}

//slave

void main(void)
{
/* USER CODE BEGIN (3) */

uint16 rx[10] = {0};

mibspiInit();

mibspiGetData(mibspiREG1,0,rx);

while(1);
/* USER CODE END */
}

一直接收不到数据?  

Jay:

Hi ron,

方便把两个工程的mibSPI.c或者整个工程发上来吗?

Regards,

Jay

ron chow:

回复 Jay:

我是用halcogen生成的代码,在默认的基础上

把mibspi5勾上。在两个开发板rm48950,把mibspi有关的跳线使能。

我用两个spi5通信没问题,但是mibspi就不能接收数据。      卡在这里很长时间!!!  谢谢帮助!!!!

Jay:

回复 ron chow:

Hi ron,

我看你的发出来的工程里用的是SPI5.

请问SPI5用mibSPI 模式有问题吗?

但是你第一个楼里程序是用mibSPI1做的发送和接收。

到底是哪个有问题呢?

Regards,

Jay

Jay:

回复 Jay:

Hi ron,

你第一楼贴出来的slave程序,mibspiGetData只调用了一次。这样很可能在master发出数据来之前,这个函数就被调用了,之后一直没有调用,那样就肯定收不到数据。

作为slave的接收,需要判断一下是否有数据收到,或者用中断来读取。

Regards,

Jay

ron chow:

回复 Jay:

我现在用的是两个mibspi5通信,我是让 从 等待,然后主发数据,但是还是收不到数据。谢谢!

Ken Wang:

回复 ron chow:

Hi Ron,

 MIBSPI的接收端程序相对于发送端来说,稍微有点不一样,我看了一下你的程序,我觉有有两种方法可以供你选择用来调试:

1. 继续用轮询的方式,但是你的程序里面需要再加入mibspiSetData()和mibspiTransfer();两个函数。他们的作用主要是在主函数发送clock信号之前,slave要先准备好数据,及时这个数据不是master要的,但最好还是加上这个数据,第二个函数主要是用来使能mibspi的传输。

2。 用中断接收的方式来调试,这种方法除了也要介入上面两个函数之外,还需要加入使能mibspi中断和使能全局中断的函数。

希望这些能帮到你。

谢谢

ken

赞(0)
未经允许不得转载:TI中文支持网 » MIBSPI
分享到: 更多 (0)