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.

[参考译文] TMS570LS0432:主从 SPI 通信

Guru**** 2547870 points
Other Parts Discussed in Thread: TMS570LS0432, HALCOGEN

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/788900/tms570ls0432-master-slave-spi-communication

器件型号:TMS570LS0432
主题中讨论的其他器件: HALCOGEN

您好!

我使用两个 TMS570LS0432电路板进行主从 SPI 通信。

我按照 https://e2e.ti.com/support/microcontrollers/hercules/f/312/t/731608?tisearch=e2e-sitesearch&keymatch=tms570%20spi 的说明在 Halcogen 中配置了这两个板

在 Halcogen (版本:40.06.00)新项目窗口中、我选择了系列:TMS57LS04x 和器件:TMS57LS0432PZ


主器件

  • 驱动程序启用:选择仅 SPI1驱动程序*

  • SPI1全局选项卡:启用 RxINT

  • SPI1端口选项卡:

  • 取消选中 SOMI 方向

  • 选择 SPI1 ENA GIO

  • 选择 SPI1 SCS[3] GIO

  • 选择 SPI1 SCS[2] GIO

  • 选择 SPI1 SCS[1] GIO

  • VIM 通道0-31选项卡:启用 MIBSPI 0级和1级中断



从器件

  • 驱动程序启用:选择仅 SPI2驱动程序*

  • SPI1全局选项卡:

  • 未选中主模式和内部时钟。

  • 取消选中 SPI2 SOMI DIRECTION

  • 取消选中 SPI2 CLK 方向

  • 取消选中 SPI2 SCS[0] DIRECTION

  • 使 SPI2 SCS[3] GIO

  • 使 SPI2 SCS[2]成为 GIO

  • 使 SPI2 SCS[1] GIO

  • VIM 通道0-31选项卡:启用 SPI2 0级和1级。

引脚连接

Mater (SPI1)                从器件(SPI2)

J1.7 -> MIBSPI1CLK         J10.24 -> SPI2CLK
J10.16 -> MIBSPI1nCS[0]    J10.21 --> SPI2CS
J2.6 --> MIBSPI1SIMO        J10.23 -> SPI2SIMO
J2.7 --> MIBSPI1SOMI        J10.22 -> SPI2SOMI

J10.4 -> GND              J10.4 -> GND

 

我将确保从设备在主设备发送数据之前已就绪。

主器件代码:

#include "sys_common.h"
#include "system.h"
#include "spi.h"

#include "sys_common.h"

/*用户代码开始(1)*/
uint16 TX_Data_Master[16]={0x01、0x02、0x03、0x04、0x05、 0x06、0x07、0x08、0x09、0x0A、 0x0B、0x0C、0x0D、0x0E、0x0F、 0x10};
uint16 RX_Data_Master[16]={0};
//用户代码结束*/


//*用户代码开始(2)*/
void delayms (uint16 ms);
//用户代码结束*/

int main (void)
{
//用户代码开始(3)*
spiDAT1_t 数据通信 fig1_t;
dataconfig1_t.CS_hold = false;
dataconfig1_t.WDEL = true;
dataconfig1_t.DFSEL = SPI_FMT_0;
dataconfig1_t.CSNR = 0xFE;
_enable_IRQ ();
spiInit();

while (1)
{
TransmitAndReceiveData (spiREG1、&dataconfig1_t、16、TX_Data_Master、RX_Data_Master);
delayms(2000);
}
/*用户代码结束*/
}/*


用户代码开始(4)*/
void delayms (uint16ms){volatile
unsigned int delayval;
delayval = ms * 8400;// 8400大约为1ms
while (delayval-);
}/*
用户代码结束*/

从器件代码:

#include "sys_common.h"
#include "system.h"
#include "spi.h"


/*包含文件*/

//*用户代码开始(1)*/
uint16 TX_Data_Slave[16]={0x11、0x12、0x13、0x14、0x15、 0x16、0x17、0x18、0x19、0x1A、 0x1b、0x1C、0x1D、0x1E、0x1F、 0x20};
uint16 RX_Data_Slave[16]={0};
//用户代码结束*



/ int main (void)
{
//用户代码开始(3)*/
spiDAT1_t 数据通信 fig1_t;
dataconfig1_t.CS_hold = false;
dataconfig1_t.WDEL = true;
dataconfig1_t.DFSEL = SPI_FMT_0;
dataconfig1_t.CSNR = 0xFE;
_enable_IRQ ();
spiInit();
SendspiAndGetData (spiREG2、&dataconfig1_t、16、TX_Data_Slave、RX_Data_Slave);
while (1);
//用户代码结束*/
}


我将 CCS 项目与.DIL 和.HCG 文件连接

主控:e2e.ti.com/.../0576.M_5F00_SPI1_5F00_TMS.zip

从属方:

e2e.ti.com/.../0285.S_5F00_SPI2_5F00_TMS.zip