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.

TMS570LS1224 SPI主从模式问题

 最近调试TMS570 SPI接口,使用标准SPI 主从模式通信,SPI4~SPI5互相发送数据。

硬件环境:570板子按要求连接SPI4和SPI5的4个管脚。

驱动配置:配置好主从模式后,生成驱动。

main函数中,主机调用查询模式发送数据,发现发送一个字节数据后,进入WHILE等待接收数据不能退出,造成主机无法发送剩下字节内容!

从机没有任何中断产生。

1、不知道是从机的驱动配置没有配对,还是其他原因。

2、另外,可否有SLAVE的正确配置文档和实例demo,请多多分享下,谢谢。

  • 关于MIBSPI的例程,其实主从机的配置,基本差不多。可以参考一下下面的例程:
    1. /* USER CODE BEGIN (0) */
    2. #include "GIO.h"
    3. #include "mibspi.h"
    4. #include "pinmux.h"
    5. /* USER CODE END */
    6. /* Include Files */
    7. #include "sys_common.h"
    8. #include "system.h"
    9. /* USER CODE BEGIN (1) */
    10. #define TG_LENGTH 8
    11. uint16 Tx_Data_SPI_1[8];
    12. uint16 Tx_Data_SPI_2[8];
    13. uint16 Tx_Data_SPI_3[8];
    14. uint16 Rx_Data_SPI_1[8];
    15. uint16 Rx_Data_SPI_2[8];
    16. uint16 Rx_Data_SPI_3[8];
    17. /* USER CODE END */
    18. /** @fn void main(void)
    19. * [url=home.php?mod=space&uid=159083]@brief[/url] Application main function
    20. * @note This function is empty by default.
    21. *
    22. * This function is called after startup.
    23. * The user can use this function to implement the application.
    24. */
    25. /* USER CODE BEGIN (2) */
    26. /* USER CODE END */
    27. void main(void)
    28. {
    29. /* USER CODE BEGIN (3) */
    30. uint8 i;
    31. muxInit();
    32. gioInit();
    33. mibspiInit();
    34. mibspiEnableGroupNotification(mibspiREG1,0,0);
    35. // mibspiEnableGroupNotification(mibspiREG1,0,1);
    36. // mibspiEnableGroupNotification(mibspiREG1,0,2);
    37. _enable_IRQ();
    38. Tx_Data_SPI_1[0] = 0x0011;
    39. Tx_Data_SPI_2[0] = 0x0021;
    40. Tx_Data_SPI_3[0] = 0x0031;
    41. for(i=1;i<TG_LENGTH;i++)
    42. {
    43. Tx_Data_SPI_1[i] = Tx_Data_SPI_1[i-1]+1;
    44. Tx_Data_SPI_2[i] = Tx_Data_SPI_2[i-1]+1;
    45. Tx_Data_SPI_3[i] = Tx_Data_SPI_3[i-1]+1;
    46. }
    47. mibspiSetData(mibspiREG1,0,Tx_Data_SPI_1);
    48. // mibspiSetData(mibspiREG1,1,Tx_Data_SPI_2);
    49. // mibspiSetData(mibspiREG1,2,Tx_Data_SPI_3);
    50. mibspiTransfer(mibspiREG1,0 );
    51. // mibspiTransfer(mibspiREG1,1 );
    52. // mibspiTransfer(mibspiREG1,2 );
    53. while(1)
    54. {
    55. // while(mibspiIsTransferComplete(mibspiREG1, 0)==1)
    56. // {
    57. // mibspiGetData(mibspiREG1, 0, Rx_Data_SPI_1);
    58. // }
    59. }
    60. /* USER CODE END */
    61. }
    62. /* USER CODE BEGIN (4) */
    63. void mibspiGroupNotification(mibspiBASE_t *mibspi, uint32 group)
    64. {
    65. /* enter user code between the USER CODE BEGIN and USER CODE END. */
    66. switch(group)
    67. {
    68. case 0:
    69. mibspiGetData(mibspiREG1, 0, Rx_Data_SPI_1);
    70. break;
    71. case 1:
    72. mibspiGetData(mibspiREG1, 1, Rx_Data_SPI_2);
    73. break;
    74. case 2:
    75. mibspiGetData(mibspiREG1, 2, Rx_Data_SPI_3);
    76. break;
    77. default:
    78. break;
    79. }
    80. }
    复制代码
    关于MIBSPI配合DMA的操作,这个在HALCOGEN的安装路径下面的examples文件夹下面有例程的
  • 有个问题想请教您,给您的邮箱发了个邮件,希望得到您的帮助