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

TMS570LS1227 的 MibSpi 从机接收数据设置

使用两个570芯片进行mibspi数据交互,一个主机,一个从机。目前根据例程能在一个芯片上实现mibspi自发自收,但是改成不是自发自收模式后,从机部分使用HAL Gode Gen不知道怎么进行配置,想配置成接收完指定数据后进入中断,另mibspi能实现全双工吗?就是发送数据的同时也收数据。期待您的回复。万分感谢。

Gorilla xu:

从机配置成接收完指定字大小后进入中断,例如接收完128字以后进入中断

Gorilla xu:

回复 Gorilla xu:

急!从机的中断源选择什么?

Eason Wang:

回复 Gorilla xu:

Move to herculus forum

Ken Wang:

首先根据SPI的协议,它在发送数据的同时,也是在接收数据的。它采用的是移位寄存器的操作方式。

要实现自发自首,通过HALCOGEN配置就行,需要注意的是从机的配置。从机的中断可以设置为接收/发送中断,或者是可以通过添加DMA中断的方式来产生接收中断。

谢谢

Gorilla xu:

回复 Ken Wang:

能提供更详细的配置说明及代码吗?例如从机怎么配置中断,怎么配置多少字进中断?我通过HALGOGEN配置不了mibspi的接收中断,RXINT的那根线勾选不上。最好能提供一份大致的代码例程。谢谢了

Gorilla xu:

回复 Ken Wang:

通过添加DMA中断方式接收数据也不会,希望能提供可参考代码。谢谢了

Ken Wang

首先根据SPI的协议,它在发送数据的同时,也是���接收数据的。它采用的是移位寄存器的操作方式。

要实现自发自首,通过HALCOGEN配置就行,需要注意的是从机的配置。从机的中断可以设置为接收/发送中断,或者是可以通过添加DMA中断的方式来产生接收中断。

谢谢

Ken Wang:

回复 Gorilla xu:

首先MIBSPI不能配置类似UART的发送或是接收中断。它的中断都是基于transfer group的。你在程序里面需要加入类似:

mibspiEnableGroupNotification(mibspiREG5,0,0);这样的语句来使能transfer group的中断操作。

关于HACLDOGEN的配置,首先作为从机,你不需要勾选master mode以及internal clock,然后在配置data format的时候,你需要根据主机的配置设置相应的波特率和数据长度;比较重要的是关于transfer group的配置,里面要选择正确的片选管脚,group的数据长度,最后就是关于MIBSPI的管脚需要用到的呃都要设置成SPI模式,而不是HGIO的模式。

谢谢

Ken Wang:

回复 Ken Wang:

关于MIBSPI的例程,其实主从机的配置,基本差不多。你可以参考一下下面的例程:

/* USER CODE BEGIN (0) */
#include "GIO.h"
#include "mibspi.h"
#include "pinmux.h"
/* USER CODE END *//* Include Files */#include "sys_common.h"
#include "system.h"/* USER CODE BEGIN (1) */
#define TG_LENGTH 8
uint16Tx_Data_SPI_1[8];
uint16Tx_Data_SPI_2[8];
uint16	Tx_Data_SPI_3[8];
uint16Rx_Data_SPI_1[8];
uint16Rx_Data_SPI_2[8];
uint16Rx_Data_SPI_3[8];
/* USER CODE END *//** @fn void main(void)
*@brief Application main function
*@note This function is empty by default.
*
*This function is called after startup.
*The user can use this function to implement the application.
*//* USER CODE BEGIN (2) */
/* USER CODE END */void main(void)
{
/* USER CODE BEGIN (3) */uint8 i;muxInit();gioInit();mibspiInit();mibspiEnableGroupNotification(mibspiREG1,0,0);
//	mibspiEnableGroupNotification(mibspiREG1,0,1);
//	mibspiEnableGroupNotification(mibspiREG1,0,2);_enable_IRQ();Tx_Data_SPI_1[0] = 0x0011;Tx_Data_SPI_2[0] = 0x0021;Tx_Data_SPI_3[0] = 0x0031;for(i=1;i<TG_LENGTH;i++){Tx_Data_SPI_1[i] = Tx_Data_SPI_1[i-1]+1;Tx_Data_SPI_2[i] = Tx_Data_SPI_2[i-1]+1;Tx_Data_SPI_3[i] = Tx_Data_SPI_3[i-1]+1;}mibspiSetData(mibspiREG1,0,Tx_Data_SPI_1);
//	mibspiSetData(mibspiREG1,1,Tx_Data_SPI_2);
//	mibspiSetData(mibspiREG1,2,Tx_Data_SPI_3);mibspiTransfer(mibspiREG1,0 );
//	mibspiTransfer(mibspiREG1,1 );
//	mibspiTransfer(mibspiREG1,2 );while(1){
//while(mibspiIsTransferComplete(mibspiREG1, 0)==1)
//{
//mibspiGetData(mibspiREG1, 0, Rx_Data_SPI_1);
//}}
/* USER CODE END */
}/* USER CODE BEGIN (4) */
void mibspiGroupNotification(mibspiBASE_t *mibspi, uint32 group)
{
/*enter user code between the USER CODE BEGIN and USER CODE END. */switch(group){case 0:mibspiGetData(mibspiREG1, 0, Rx_Data_SPI_1);break;case 1:mibspiGetData(mibspiREG1, 1, Rx_Data_SPI_2);break;case 2:mibspiGetData(mibspiREG1, 2, Rx_Data_SPI_3);break;default:break;}
}

谢谢

Ken Wang:

回复 Gorilla xu:

关于MIBSPI配合DMA的操作,这个在我们的HALCOGEN的安装路径下面的examples文件夹下面有例程的。

你可以参考一下。

谢谢

Gorilla xu:

回复 Ken Wang:

Ken Wang

首先MIBSPI不能配置类似UART的发送或是接收中断。它的中断都是基于transfer group的。你在程序里面需要加入类似:

mibspiEnableGroupNotification(mibspiREG5,0,0);这样的语句来使能transfer group的中断操作。

关于HACLDOGEN的配置,首先作为从机,你不需要勾选master mode以及internal clock,然后在配置data format的时候,你需要根据主机的配置设置相应的波特率和数据长度;比较重要的是关于transfer group的配置,里面要选择正确的片选管脚,group的数据长度,最后就是关于MIBSPI的管脚需要用到的呃都要设置成SPI模式,而不是HGIO的模式。

谢谢

赞(0)
未经允许不得转载:TI中文支持网 » TMS570LS1227 的 MibSpi 从机接收数据设置
分享到: 更多 (0)