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.

MIBSPI

Other Parts Discussed in Thread: HALCOGEN

我用的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,

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

    Regards,

    Jay

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

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

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

    mibspi.zip
  • Hi ron,

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

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

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

    到底是哪个有问题呢?

    Regards,

    Jay

  • Hi ron,

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

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

    Regards,

    Jay

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

  • Hi Ron,

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

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

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

    希望这些能帮到你。

    谢谢

    ken