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:TMS570 SPI1处于中断模式

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/600383/tms570ls0432-tms570-spi1-in-interrupt-mode

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

您好!
我使用的是 TMS57004 Launchpad。 电流、我正在进行 SPI 通信。 为此、我已经介绍了 Halcogen 示例。 我想使用中断方法在正常(不在 Mibspi)模式(主控模式)下使用 SPI1。
对于 SPI1中断方法、我已经设置了所有参数、正如您在 SPI2从器件示例中提到的那样。
执行所有设置之后


SendspiAndGetData (spiREG1、&dataconfig1_t、2 TX_Data_Master、Rx_Data_Master)
其中 uint8 Tx_Data_Master[2]={0x44、0xAA); Rx_Data_Master[2]={0};

我只正确接收第二个字节  、 第一个字节全部接收。 那么、您能不能告诉任何人我的配置中存在任何错误。
下面是我的示例代码:
int main (空)

spiDAT1_t 数据通信 fig1_t;

dataconfig1_t.CS_hold = true
dataconfig1_t.WDEL = true;
dataconfig1_t.DFSEL = SPI_FMT_1;
dataconfig1_t.CSNR = 0xFC;

/*通过 CPSR 启用 CPU 中断*/
_enable_IRQ ();

spiInit();
while (1)

SendspiAndGetData (spiREG1、&dataconfig1_t、2 TX_Data_Master、Rx_Data_Master);

返回0;


void SendspiAndGetData (spiBASE-t * SPI、spiDAT1_t *数据通信 fu_t、uint32块大小、uint8 * srcbuff、uint8* destbuff)

/*用户代码开始(17)*/
/*用户代码结束*/

uint32 index = SPI == spiREG1? 0U:(SPI=spiREG2? 1U:2U);

g_spiPacket_t[index].TX_length =块大小;
g_spiPacket_t[index].rx_length =块大小;
G_spiPacket_t[index].txdata_ptr = srcbuff;
G_spiPacket_t[index].rxdata_ptr = destbuff;
g_spiPacket_t[index].g_spiDataFormat =*数据通信 fap_t;
G_spiPacket_t[index].TX_DATA_STATUS = SPI_PENDING;
G_spiPacket_t[index].Rx_DATA_STATUS = SPI_PENDING;

SPI->INT0 |= 0x0300U;

/*用户代码开始(18)*/
/*用户代码结束*/

静态易失性结构 g_spiPacket

spiDAT1_t g_spiDataFormat;
uint32 TX_length;
uint32 rx_length;
// uint16 * txdata_ptr;
// uint16 * rxdata_ptr;
uint8 * txdata_ptr;
uint8 * rxdata_ptr;
SpiDataStatus_t TX_DATA_STATUS;
SpiDataStatus_t Rx_DATA_STATUS;
}g_spiPacket_t[3U];

提前谢谢

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

    Sameer、您好!

    您是否检查了首次传输期间、RX 线路上的器件计时的内容? 是否确定外部设备在第一次发送启动时已准备就绪? 我会猜测,如果第一个收到错误的数据,但第二个没有收到,这可能是一个问题。  上述代码中突出显示的更改有何相关性? 此外、它看起来就像您使用轮询模式来发送和接收数据一样。 在这种情况下、您如何利用 SPI 中断?

    如果您希望真正使用中断模式、我建议使用 spiTransmit 函数、然后设置接收中断以处理接收到的数据、如果要发送其他数据、则启动下一次传输。

    如果您继续使用当前方法、则应确保在继续下一次传输之前成功完成接收。