This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我用的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 */
}
一直接收不到数据?
Hi ron,
我看你的发出来的工程里用的是SPI5.
请问SPI5用mibSPI 模式有问题吗?
但是你第一个楼里程序是用mibSPI1做的发送和接收。
到底是哪个有问题呢?
Regards,
Jay
Hi ron,
你第一楼贴出来的slave程序,mibspiGetData只调用了一次。这样很可能在master发出数据来之前,这个函数就被调用了,之后一直没有调用,那样就肯定收不到数据。
作为slave的接收,需要判断一下是否有数据收到,或者用中断来读取。
Regards,
Jay
Hi Ron,
MIBSPI的接收端程序相对于发送端来说,稍微有点不一样,我看了一下你的程序,我觉有有两种方法可以供你选择用来调试:
1. 继续用轮询的方式,但是你的程序里面需要再加入mibspiSetData()和mibspiTransfer();两个函数。他们的作用主要是在主函数发送clock信号之前,slave要先准备好数据,及时这个数据不是master要的,但最好还是加上这个数据,第二个函数主要是用来使能mibspi的传输。
2。 用中断接收的方式来调试,这种方法除了也要介入上面两个函数之外,还需要加入使能mibspi中断和使能全局中断的函数。
希望这些能帮到你。
谢谢
ken