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.

[参考译文] TMS320F28379D:无法生成 SPI 时钟

Guru**** 2492385 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1555534/tms320f28379d-unable-to-generate-spi-clock

部件号:TMS320F28379D


工具/软件:

嗨、TI、
我无法在我的 launchpadF28379D 上生成 SPI 时钟、我正在使用 SPI B.

通过这种方式我已经进行了配置、  

void SPI_PIN_INIT_B ()
  // GPIO 引脚配置为 SPI B

  // MOSI SPIB
  GPIO_setPinConfig (SPIB_MOSI);  //  GPIO_63_SPISIMOB
  GPIO_setPadConfig (63、GPIO_PIN_TYPE_STD);    //引脚类型为推挽输出
  GPIO_setDirectionMode (63、GPIO_DIR_MODE_IN);  // MOSI_SPIB 的方向作为输出引脚

  // MISO SPIB
  GPIO_setPinConfig (SPIB_MISO);    // GPIO_64_SPISOMIB  
  GPIO_setPadConfig (64、GPIO_PIN_TYPE_STD);   //引脚类型为推挽输出
  GPIO_setDirectionMode (64、GPIO_DIR_MODE_OUT); // MISO_SPIB 方向作为输入引脚
  
  //时钟 SPIB
  GPIO_setPinConfig (SPIB_CLK);        //  GPIO_65_SPICLKB
  GPIO_setPadConfig (65、GPIO_PIN_TYPE_STD);    //引脚类型为推挽输出
  GPIO_setDirectionMode (65、GPIO_DIR_MODE_IN);  // CLK_SPIB 的方向作为输出引脚
  
  //从设备选择 SPIB
  GPIO_setPinConfig (SPIB_SS);       //  GPIO_66_SPISTEB
  GPIO_setPadConfig (66、GPIO_PIN_TYPE_STD);    //引脚类型为推挽输出
  GPIO_setDirectionMode (66、GPIO_DIR_MODE_IN);  // SS_SPIB 的方向作为输出引脚
}

void SPI_INIT_B ()
  //初始化 SPIB
  spi_disableModule (SPIB_BASE);//禁用 SPIB 模块
  /*
   SPI - SPIB
   LSPCLK - 50MHz(使用以 Hz 为单位的等效值)
   SPI 协议 — MODE_3(极性 1、相位 1)
   SPI 模式 — 主模式
   SPI 波特率 — 2MHz(使用以 Hz 为单位的等效值)
   数据读数 — 2 字节(16 位)
  */
  SPI_setConfig (SPIB_BASE、50000000、SPI_PROT_POL0PHA0、SPI_MODE_SLAVE、2000000、16);
  SPI_enableModule (SPIB_BASE);//启用 SPIB 模块
}


void main()
      SPI_writeDataNonBlocking (SPIB_BASE、0xAAAA); //由主器件生成时钟
      DEVICE_DELAY_US (10);
}

我附上了以下证据  


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

    您是否将这两行放在一个无限循环中?

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

    是、一个 while 循环。

    while (1)
      SPI_writeDataNonBlocking (SPIB_BASE、 0xAAAA);  //由主器件生成时钟
      DEVICE_DELAY_US (10);
    }

    我发现了一个错误,改变了他们,改变:
    GPIO_setDirectionMode (65、GPIO_DIR_MODE_ 抵消 );   //将 CLK_SPIB 的方向用作输出引脚
    GPIO_setDirectionMode (63、GPIO_DIR_MODE_ 抵消 );   //作为输出引脚的 MOSI_SPIB 方向
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    需要明确的是、解决此错误是否解决了问题、或者您仍然无法看到 SPI 时钟?

    此致、
    Jason Osborn

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

    抱歉、延迟回复。否、我无法看到 SPI 时钟。  

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

    Re — 阅读您发布的内容,我有一些适合您的调试步骤:

    1. 你在哪里  SPI_PIN_INIT_B() 和 SPI_INIT_B()? 它们不会出现在您发布的摘录中的 main() 函数中、它们需要是。
    2. 确保正确设置了 SPIB_MOSI、SPIB_MISO、SPIB_CLK 和 SPIB_SS 的定义。
    3. 次要问题:在主模式下、STE 也应该是输出。
    4. 小问题: 在具有多个内核的器件上显式调用 gpio_setMasterCore () 函数通常是很好的做法,尽管在 CPU1 上的单核项目中不一定需要它。

    请参阅我的粗体文本、了解我注意到的最有影响力的问题。

    此致、
    Jason Osborn