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.

[参考译文] TMS320F28335:在 SPICLK 引脚上对连续时钟进行 SPI 配置、而无需在 SPIMOSI 上发送数据

Guru**** 2538955 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/831856/tms320f28335-spi-provision-to-out-contineous-clock-on-spiclk-pin-without-sending-data-on-spimosi

器件型号:TMS320F28335
主题中讨论的其他器件:C2000WARE

您好!

我想在 SPICLK 引脚上发送连续时钟、而不在 SPIMOSI 引脚上发送主器件数据。

是否有任何 SFR 设置可以执行相同操作的规定?

谢谢、此致、

Sachin

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

    你好 Sachin、

    如果不通过 SFR 设置从 SPIMOSI 引脚上的主器件发送数据、则不能在 SPICLK 引脚上发送连续时钟。 为此、只需启用外设时钟、并且在您想要传输数据之前不要将数据写入 SPIDAT 或 SPITXBUF 寄存器。

    此致、

    Marlyn

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

    您好!

    感谢您的意见。

    如何启用外设时钟?

    谢谢、此致、

    Sachin

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

    要启用 SPI CLK、请更改 PCLKCR0寄存器(外设时钟控制寄存器)中的 SPIANCLK 位。 例如、'SysCtrlRegs.PCLKCR0.bit.SPIAENCLK = 1;'。 这是一个 EALLOW 受保护的写入。  

    如果看 C2000WARE 中的示例,通常可以在 InitSysCtrl()函数中找到, 然后在 InitPeripheralClock()函数中找到。

    最棒的

    Marlyn

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

    您好!

    感谢您的输入。

    在我的 SPI 应用中、从器件在 GPIO 有数据时通知主器件。 我已将该 GPIO 配置为外部中断、因此当存在数据外部中断时、我会设置通知标志并尝试在 MOSI 引脚上发送0x00以向 SPI 提供时钟。

    请找到以下代码  

    a.循环的连续

       for (;;)
       {

          // SpiaRegs.SPITXBUF = 0x00;
        // if (flag = 1) for (i=0;i<15;i++) SpiaRegs.SPITXBUF = 0;

          // while (Xint1Count<2) SpiaRegs.SPITXBUF = 0;
         // while (notification=1) SpiaRegs.SPITXBUF = 0;

        if (notification==1)
        {
           for (i=0;i<15;i++) SpiaRegs.SPITXBUF = 0;
           显示屏=1;
        }
       if (display ==1)
        {
            for (i=0;i<10;i++) scia_xmit (RDATA[i]);
            显示= 0;
            scia_xmit (Xint1Count);
        }
       }

    B.外部中断

    _interrupt void
    XINT1_ISR (空)

       //GpioDataRegs.GPBCLEAR.ALL = 0x4;  // GPIO34为低电平
       Xint1Count++;


       if (Xint1Count = 1)
       {
           通知=1;
       }
       否则、如果(Xint1Count = 2)
           {
           通知=0;
           显示= 1;
           }
       //
       //确认此中断以从组1获取更多内容
       //
       PieCtrlRegs.PIEACX.ALL = PIEACK_Group1;

    c.在 SPIFIFIFORX ISR 中捕获数据、当 SPI 接收 FIFO 中有一个字符时、中断发生

    _interrupt void
    spiRxFifoIsr (空)

       RDATA_POIN++;
       RDATA[ldaptr++]= SpiaRegs.SPIRXBUF;

    使用此代码、我无法从从器件获取数据、因为在向从器件提供时钟时存在延迟。

    请建议任何解决方案或代码、以便为 SPI 从器件提供时钟以采集数据。

    谢谢、此致、

    Sachin

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

    你好 Sachin、

    我假设 F8335是主器件。 您使用的从器件是什么?

    一些有关初始化的问题。 您的 TALK 位是否已启用? 您可以在准备好开始通信后启用它。

    您是否使用从器件选择引脚? 两个器件之间的时钟极性是否相同?

    这将有助于先查看初始化代码。

    最棒的

    Marlyn