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:MIBSPI 芯片选择时序

Guru**** 2540720 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/1022199/tms570ls1224-mibspi-chip-select-timing

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

我只能在 HalCogen GUI 中将芯片选择的最大延时设置为255*个 VCLK (3.215us)时间段。

对于从器件,我需要50us 的 TDES_CS (请参阅下图)。

如何在 HalcogGen 和 CCS 中进行配置以获得50us 的片选时序?

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

    对于大延迟、您需要逐字传输数据、而不是数据块。  

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

    如何逐字传输?  

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

    请告诉我需要执行的步骤。 我是 TI MCU 的初学者。  

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

    您好、Sakthi、

    这是 SPI TX 函数、用于发送数据块:

    int32 spiTransmitData (spiBASE-t * SPI、spiDAT1_t * dataconfi_t、uint32 blocksize、uint16 * srcbuff)

     …

    您可以调用此函数仅传输1个字(2位到16位)、并手动插入延迟、然后调用此函数来传输下一个字:

       spiTransmitData (...、blocksize=1、...);

      延迟(

       spiTransmitData (...、blocksize=1、...);

      (笑声)

    2.您可以修改 HAL 生成的代码:将延迟添加到 spiTransmitData (...) 功能:

      uint32 spiTransmitData (spiBASE-t * SPI、spiDAT1_t *数据通信 fu_t、uint32块大小、uint16 * srcbuff)

      {

    易失性 uint32 SpiBuf;
    uint16 Tx_Data;
    uint32 Chip_Select_Hold =(dataconfig _t->CS_Hold)? 0x10000000U:0U;
    uint32 WDray =(dataconfig _t->WDEL)? 0x04000000U:0U;
    SPIDATAFMT_t DataFormat =数据通信 fap_t->DFSEL;
    uint8芯片选择=数据通信 fet_t->CSNR;

    /*用户代码开始(10)*/
    /*用户代码结束*/
    while (blocksize!= 0U)

    if ((SPI->FLG & 0x000000FFU)!=0U)

      中断;

    if (blocksize == 1U)

      CHIP_Select_HOLD = 0U;

    /*SAFETYMCUSW 45 D MR:21.1 "仅此驱动程序允许有效的非 NULL 输入参数"*/
    TX_Data =* srcbuff;

    SPI->DAT1 =((UINT32) DataFormat << 24U)|
    ((UINT32) ChipSelect << 16U)|
    (WDelay)|
    (CHIP_Select_HOLD)|
    (uint32) Tx_Data;


    /*SAFETYMCUSW 567 S MR:17.1,17.4 "需要指针增量"*/
    srcbuff +;
    /*SAFETYMCUSW 28 D MR:NA "硬件状态位读取检查"*/
    while ((SPI->FLG & 0x00000100U)!= 0x00000100U)

    }/*等待*/
    SpiBuf = SPI->BUF;

    块大小----

         delay();

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

    返回(SPI->FLG & 0xFFU);

    BTW、请勿启用 CSHOLD。