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.

[参考译文] Starterware/AM3359:SPI 问题与 SPI1有关

Guru**** 2555630 points
Other Parts Discussed in Thread: AM3359

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/610205/starterware-am3359-the-problem-of-spi-about-spi1

器件型号:AM3359

工具/软件:Starterware

AM3359 ICE

IDE:CCS

我找到了仅具有 spi0设置而不是 SPI1设置的示例代码。

我知道 McSPI1ModuleClkConfig()和 McSPI1CSPinMuxSetup() 如何从 mcspiFlash.c  中的 McSPI0ModuleClkConfig()和 McSPI0CSPinMuxSetup()进行更改

因为没有 McSPI0ModuleClkConfig()和 McSPI0CSPinMuxSetup()的代码  

您能给我一些关于编写 McSPI1ModuleClkConfig()和 McSPI1CSPinMuxSetup()的建议或样本吗?

谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好 这是用于设置时钟的代码。 pinmux 取决于您的配置。

    /*
    **将时钟配置为 SPI
    *
    静态空 McSPI1ModuleClkConfig (void){

    HWREG (SOC_CM_PER_REGS + CM_PER_L3S_CLKSTCTRL)=
    CM_PER_L3S_CLKSTCTRL_CLKTRCTRL_SW_WKUP;

    while ((HWREG (SOC_CM_PER_regs + CM_PER_L3S_CLKSTCTRL)和
    CM_PER_L3S_CLKSTCTRL_CLKTRCTRL)!= CM_PER_L3S_CLKSTCTRL_CLKTRCTRL_SW_WKUP);

    HWREG (SOC_CM_PER_regs + CM_PER_L3_CLKSTCTRL)=
    CM_PER_L3_CLKSTCTRL_CLKTRCTRL_SW_WKUP;

    while ((HWREG (SOC_CM_PER_regs + CM_PER_L3_CLKSTCTRL)和
    CM_PER_L3_CLKSTCTRL_CLKTRCTRL)!= CM_PER_L3_CLKSTCTRL_CLKTRCTRL_SW_WKUP);

    HWREG (SOC_CM_PER_REGS + CM_PER_L3_INSTR_CLKCTRL)=
    CM_PER_L3_INSTR_CLKCTRL_MODULEMODE_ENABLE;

    while ((HWREG (SOC_CM_PER_Regs + CM_PER_L3_INSTR_CLKCTRL)和
    CM_PER_L3_INSTR_CLKCTRL_MODULEMODE)!=
    CM_PER_L3_INSTR_CLKCTRL_MODULEMODE_ENABLE);

    HWREG (SOC_CM_PER_Regs + CM_PER_L3_CLKCTRL)=
    CM_PER_L3_CLKCTRL_MODULEMODE_ENABLE;

    while ((HWREG (SOC_CM_PER_regs + CM_PER_L3_CLKCTRL)和
    CM_PER_L3_CLKCTRL_MODULEMODE)!= CM_PER_L3_CLKCTRL_MODULEMODE_ENABLE);

    HWREG (SOC_CM_PER_REGS + CM_PER_OCPWP_L3_CLKSTCTRL)=
    CM_PER_OCPWP_L3_CLKSTCTRL_CLKTRCTRL_SW_WKUP;

    while ((HWREG (SOC_CM_PER_regs + CM_PER_OCPWP_L3_CLKSTCTRL)和
    CM_PER_OCPWP_L3_CLKSTCTRL_CLKTRCTRL)!=
    CM_PER_OCPWP_L3_CLKSTCTRL_CLKTRCTRL_SW_WKUP);

    HWREG (SOC_CM_PER_REGS + CM_PER_L4LS_CLKSTCTRL)=
    CM_PER_L4LS_CLKSTCTRL_CLKTRCTRL_SW_WKUP;

    while ((HWREG (SOC_CM_PER_regs + CM_PER_L4LS_CLKSTCTRL)和
    CM_PER_L4LS_CLKSTCTRL_CLKTRCTRL)!=
    CM_PER_L4LS_CLKSTCTRL_CLKTRCTRL_SW_WKUP);

    HWREG (SOC_CM_PER_REGS + CM_PER_L4LS_CLKCTRL)=
    CM_PER_L4LS_CLKCTRL_MODULEMODE_ENABLE;

    while ((HWREG (SOC_CM_PER_regs + CM_PER_L4LS_CLKCTRL)和
    CM_PER_L4LS_CLKCTRL_MODULEMODE)!= CM_PER_L4LS_CLKCTRL_MODULEMODE_ENABLE);

    HWREG (SOC_CM_PER_REGS + CM_PER_SPI1_CLKCTRL)&&=~CM_PER_SPI1_CLKCTRL_MODULEMODE;

    HWREG (SOC_CM_PER_REGS + CM_PER_SPI1_CLKCTRL)|= CM_PER_SPI1_CLKCTRL_MODULEMODE_ENABLE;

    while ((HWREG (SOC_CM_PER_regs + CM_PER_SPI1_CLKCTRL)和
    CM_PER_SPI1_CLKCTRL_MODULEMODE)!= CM_PER_SPI1_CLKCTRL_MODULEMODE_ENABLE);


    while (!(HWREG (SOC_CM_PER_regs + CM_PER_L3S_CLKSTCTRL)&
    CM_PER_L3S_CLKSTCTRL_CLKACTIVITY_L3S_GCLK);

    while (!(HWREG (SOC_CM_PER_Regs + CM_PER_L3_CLKSTCTRL)和
    CM_PER_L3_CLKSTCTRL_CLKACTIVITY_L3_GCLK);

    while (!(HWREG (SOC_CM_PER_Regs + CM_PER_OCPWP_L3_CLKSTCTRL)和
    (CM_PER_OCPWP_L3_CLKSTCTRL_CLKACTIVITY_OCPWP_L3_GCLK |
    CM_PER_OCPWP_L3_CLKSTCTRL_CLKACTIVITY_OCPWP_L4_GCLK)));

    while (!(HWREG (SOC_CM_PER_regs + CM_PER_L4LS_CLKSTCTRL)和
    (cm_per_L4LS_CLKSTCTRL_CLKACTIVITY_L4LS_GCLK |
    CM_PER_L4LS_CLKSTCTRL_CLKACTIVITY_SPI_GCLK));


    /*
    **此函数选择使用 McSPI 引脚。 McSPI 引脚
    * 与 SoC 中其他外设的引脚进行多路复用
    *
    静态空 McSPI1PinMuxSetup (void){

    HWREG (SOC_CONTRAL_REGS + CONTRAL_CONF_McASP0_ACLKX)= 0x33;
    HWREG (SOC_CONTRAL_REGS + CONTRAL_CONF_McASP0_FSX)= 0x33;
    HWREG (SOC_CONTROL_REGS + CONTROL_CONF_McASP0_AXR0)= 0x33;