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.

TMS570LC4357: 关于MibSPI在数据收发过程中片选信号的疑问以及收发函数mibspiSetData的疑问。望解答!

Part Number: TMS570LC4357

您好:

  1. 在进行配置时,  是否意味着我需要发送16位数据,不满足8个字后面自动补0?
  2. 关于片选信号。在我执行mibspiSetData()这个函数时,片选信号是否自动拉高?因为我是要与外部flash数据交换,在我向他发送指令后,外部flash向主机发送数据,那么mibspiGetData()这个函数执行过程中,片选信号是否也是自动拉高?
  3. 最后附上我的代码,希望您能帮忙解答。

uint16_t data[3]={0};
uint16_t command[1]={0x9F};
uint8_t ID1,ID2,ID3;
uint32_t ID;


//mibspiReset(mibspiREG4);
mibspiSetData(mibspiREG4,0,command);

mibspiTransfer(mibspiREG4,0);

while(mibspiIsTransferComplete(mibspiREG4,0)==1){
mibspiGetData(mibspiREG4,0,data);

ID1=data[0];

mibspiGetData(mibspiREG4,1,data);
ID2=data[1];

mibspiGetData(mibspiREG4,1,data);
ID3=data[2];

ID=(ID1<<16)|(ID2<<8)|(ID3);
}

  • 您好我们已收到您的问题并升级到英文论坛寻求帮助,如有答复将尽快回复您。谢谢!

  • 您好,

    在进行配置时,  是否意味着我需要发送16位数据,

    不,如果 charlen (字符长度)为8位,则表示将传输8个数据位。 这意味着当我们将数据写入 SPIDATA 寄存器时,16位 TXDATA 的低8位将在 MO 引脚上移位。

    不满足8个字后面自动补0?

    这个配置与多缓冲器相关,MibSPI 有一个可编程多缓冲器阵列,此阵列可实现已编程传输的完成而无需 CPU 干预。

    因此,可以在这里为每个发送组配置触发源,每当触发发生时,它都会传输该发送组中配置的缓冲区。 如果没有将任何数据写入相应传输组的缓冲区数组,并且在接收到触发信号后,它会在该数组中发送默认0。

    关于片选信号。在我执行mibspiSetData()这个函数时,片选信号是否自动拉高?因为我是要与外部flash数据交换,在我向他发送指令后,外部flash向主机发送数据,那么mibspiGetData()这个函数执行过程中,片选信号是否也是自动拉高?

    是的,它将由 SPI 硬件自动控制。

    在master mode下,如果 SPICS 引脚配置为功能引脚,则引脚将处于输出模式。 对主器件的 SPIDAT1/SPIDAT0寄存器的写入将自动将 SPICS 信号驱动为低电平。 完成数据位的传输后,主器件将 SPICS 信号再次驱动为高电平。

    更多详细信息请参阅 TRM 中的第28.2.5节。

  • 感谢您的回答!