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.

TMS470 SPI TG发送的问题

现通过TMS470的SPI控制某驱动芯片,HAL Code Generator配置如下:

这个驱动芯片的SPI是已经调通了的:

 SendTemp[0]=0x10;SendTemp[1]=0x07;
 spiTransmitData(spiREG2, &dataconfig1_t,2,SendTemp);

以上SPI的内容可被Slave正确接收

现在想尝试使用TG传输:

SendTemp[0]=0x10;SendTemp[1]=0x07;
spiSetData(spiREG2,1,SendTemp);
spiTransfer(spiREG2,1);

发现Slave无反应。

请TI的高手给点儿建议,谢谢!

  • 楼主可以用示波器或逻辑分析仪看看端口电平如何,有没输出,再确定是哪边出了问题。

  • 问题可能出在了SPI的接收芯片,当我将两个连续命令分开发送时接收新品就有反应了:

    其中传输组2长度为1,

          SendTemp[0]=0x10;
           spiSetData(spiREG2,2,SendTemp);
           spiTransfer(spiREG2,2);
           delayu(10);
          SendTemp[0]=0x07;
           spiSetData(spiREG2,2,SendTemp);
           spiTransfer(spiREG2,2);

         貌似接收方默认两个连续字节之间片选信号CS必须拉高一次,貌似传输组传输时片选信号一直为低,直到发送完成。

  • 在啰嗦一句,貌似SPI默认处于多缓冲接收时无法进入中断。可是我将SPI配置到兼容模式时SPI仍然无法进入接收中断?

    /** enable MIBSPI2 multibuffered mode and enable buffer RAM */
    spiREG2->MIBSPIE = (spiREG2->MIBSPIE & 0xFFFFFFFEU) | 0U; 将该寄存器最低位设置为1进入兼容模式。

    不知道朋友们有问有清楚的,是不是还应该设置什么?