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.

[参考译文] TMS320F280039C:启用评估板上的 SPI 引脚

Guru**** 1955920 points
Other Parts Discussed in Thread: TMS320F280039C, C2000WARE, SYSCONFIG
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1117544/tms320f280039c-enabling-the-spi-pin-on-the-eval-board

器件型号:TMS320F280039C
主题中讨论的其他器件: C2000WARESysConfig

您好!

我正在尝试在 TMS320F280039C 评估板上启用 SPI 模块。
我 要配置的引脚是 GPIO22、GPIO23、GPIO24、GPIO25、作为 CLK、CS、 MOSI 和 MISO。 我在板上使用 SPIB。

我目前没有在 CLK (GPIO22)引脚上获得时钟、它要么保持持续 高电平、要么保持低电平。
您能否共享配置以启用 SPIB、或者 您能否共享一些示例代码。

请告诉我是否需要从我的一方获得任何其他信息。

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

    您 能给我电话吗
    -如何检查 SPI w.r.t 系统时钟的时钟设置。
    - 如何检查系统时钟是否设置正确,SPI 时钟是否与系统时钟同步。  
    -如何检查计数器的系统时钟和 SPI 时钟(外设时钟)

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

    是否确定要检查 GPIO22的正确引脚? 您是否尝试将 GPIO22切换为输出引脚、并确保正在探测评估板上的正确引脚。

    下面提到的 C2000Ware 示例

    路径: \driverlib\f28003x\examples\spi\

    示例:

    SPI_ex3_external_loopback

    SPI_ex4_external_loopback _fifo_interrupts

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

    此处显示了 SYSCLK/LSPPCLK 和 SPICLK 之间的关系。

    SPI 波特率由 SPIBRR 寄存器决定。 因此、实际上 LOSPCP、PCLKCRx 寄存器、SPIBRR 寄存器将影响 SPICLK (SPI 波特率)

    要观察 SYSCLK、您需要使用 XCLKOUTSEL、XCLKOUTDIVSEL 寄存器并配置 GPIO16 (或) 18来探测 XCLKOUT 引脚中的 SYSCLK。 可以通过探测 SPICLK 引脚来观察 SPI 波特率。

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

    AFA 我知道我正在寻找正确的 GPIO 并探测正确的引脚。

    我还配置了其他 GPIO、下面是 GPIO12和相关引脚的代码。

    例如  、GPIO12、GPIO11、GPIO16、GPIO17作为 CLK、CS、 MOSI 和 MISO。
    我 将分别探测 CLK 和 CS 的引脚51和引脚52。

    下面是 SPI 的配置:

    // SPICCR -配置控制寄存器
    //在配置更改之前将 RESET 设置为低电平
    SpiaRegs.SPICCR.bit.SPISWRESET = bit_reset;
    //时钟极性(0 =上升、1 =下降)
    SpiaRegs.SPICCR.bit.CLKPOLARITY = bit_RESET;
    //高速模式被禁用
    SpiaRegs.SPICCR.bit.HS_MODE = bit_RESET;
    //启用环回
    SpiaRegs.SPICCR.bit.SPILBK = bit_RESET;
    // 16位字符
    SpiaRegs.SPICCR.bit.SPICHAR =(16 - 1);


    // SPICCR -操作控制寄存器
    //溢出中断使能= 0
    SpiaRegs.SPICTL.bit.OVERRUNINTENA = bit_RESET;
    //时钟相位(0 =正常、1 =延迟)
    SpiaRegs.SPICTL.bit.CLK_PHASE = bit_RESET;
    //启用主设备(0 =从设备,1 =主设备)
    SpiaRegs.SPICTL.bit.master_slave = bit_set;
    //启用传输(TALK)
    SpiaRegs.SPICTL.bit.TALK = bit_set;
    //禁用 SPI 中断
    SpiaRegs.SPICTL.bit.SPIINTENA = bit_RESET;


    // SPIBRR -波特率寄存器
    SpiaRegs.SPIBRR.ALL =(60000000 / 15000000)- 1);


    这是 SPI 的 GPIO 配置

    //为 SPI-A 配置 GPIO 引脚
    // SPI_CS_GPIO 配置
    GPIO_setPinConfig (GPIO_11_GPIO11);// SPIA -CS
    GPIO_setDirectionMode (SPI_CS_GPIO、GPIO_DIR_MODE_OUT);
    GPIO_setPadConfig (SPI_CS_GPIO、GPIO_PIN_TYPE_STD);
    GPIO_setMasterCore (SPI_CS_GPIO、GPIO_CORE_CPU1);
    GPIO_setQualificationMode (SPI_CS_GPIO、GPIO_QUAL_SYNC);

    // SPI_CLK_GPIO 配置
    GPIO_setPadConfig (GPIO_PIN_SPIA_CLK、GPIO_PIN_TYPE_PULLUP);
    GPIO_setQualificationMode (GPIO_PIN_SPIA_CLK、GPIO_QUAL_异 步);
    GPIO_setPinConfig (GPIO_12_SPIA_CLK);// SPIA -CLK

    GPIO_setPadConfig (GPIO_PIN_SPIA_SIMO、GPIO_PIN_TYPE_PULLUP);
    GPIO_setQualificationMode (GPIO_PIN_SPIA_SIMO、GPIO_QUAL_异 步);
    GPIO_setPinConfig (GPIO_16_SPIA_SIMO);// SPIA-SIMO

    GPIO_setPadConfig (GPIO_PIN_SPIA_SOMI、GPIO_PIN_TYPE_PULLUP);
    GPIO_setQualificationMode (GPIO_PIN_SPIA_SOMI、GPIO_QUAL_异 步);
    GPIO_setPinConfig (GPIO_17_SPIA_SOMI);// SPIB-SOMI

    我使用的库与您参考和参考的 SPI 示例相同。

    您能不能检查一下、并告诉我是否缺少了一些东西、我去了某个地方出错了。  
    因为我参考了 C2000ware 中提供的几乎所有示例。

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

    Vikas、

    您没有使用我建议的 C2000Ware driverlib 示例代码。 您使用的是位字段方法。 我建议您使用 driverlib 方法、因为它支持 SysConfig、允许您以图形方式配置 GPIO 和 SPI 模块、该工具会自动生成代码。  

    此外、您是否正在探测 TMDSHSECDOCK 电路板中的信号? 如果没有、请提供原理图。 您已将 SPI_CS_GPIO (GPIO11)配置为输出引脚、但似乎也使用 GPIO_QUAL_SYNC。 此选项仅在 GPIO 用作输入引脚并且不能用作输出引脚时使用。

    检查  SPISWRESET 是否 在 SPI 配置结束时设置为1。 只有这样、SPI 才会准备好发送/接收下一个字符。 使用 SysConfig 将有助于避免不正确的 SPI/GPIO 配置。

    此致、

    曼诺伊

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

    感谢您的回复、

    实际上、我最初使用的是 driverlib API 方法、但这种方法不起作用、然后我切换到了位字段方法。 我可以重试并再次检查。

    我有定制板和 TI 控制卡、在这里我检查 GPIO 引脚。 此外、对于 GPIO 11、我最初将其配置为 SPI_ste、但这不起作用、因此我更改为正常的 GPIO 输出引脚。  

    我将设置 SPISWRESET 位。 可能是我没有共享代码。

    您能告诉我是否需要在板上或代码中执行任何额外的配置/设置、但我缺少这些配置/设置吗?

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

    尝试切换用作 SPI 引脚的所有 GPIO 作为输出引脚、并确保 按预期切换。 使用 SysConfig 和 driverlib 方法更容易。 因此 、我不会尝试使用位字段方法。

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

    您好!

    我收到了定制板、我们尝试在 TI MCU 上配置 SPI。
    我们可以获得 SPI_CLK、SPI_CS 和 SPI_MOSI。 我们检查 CRO、并根据配置获得这些引脚上的波形。
    但我们没有在 SPI_MISO 上获得任何内容(在 CRO 上检查)。

    此外、
    1) 1)我们从 SPI_O_RXBUF 寄存器读取数据、但不提供任何值(仅为"0x0000"值)
    当我们将 SPI_O_RXEMU 寄存器设置为读取时、它会在观察窗口中提供一些输出(但在 CRO 上没有、例如在 SPI_MISO 引脚上)

    2)我们从 SPI_O_TXBUF 发送数据、然后在寄存器(SPI_O_RXBUF/SPI_O_RXEMU)和上未接收任何数据  
    当我们使用 SPI_O_DAT 时、我们开始接收数据、但不传输任何数据(即 SPI_O_TXBUF 上没有任何数据)。

    您能检查一下这个并告诉我们吗?

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

    Vikas、

    我不知道您想要检查什么。 事实上、SPIA/SPIB 在器件上作为主器件(发送器/接收器)(或)从器件(发送器/接收器)工作、因为每个单独的器件在交付给客户之前都经过详尽测试。

    您的 C2000 SPI 主器件/从器件吗? 您尝试连接到什么? 您对 C2000Ware 示例代码进行了哪些修改?

    您是否尝试运行示例代码以了解它们的工作原理?

    此致、

    曼诺伊

x 出现错误。请重试或与管理员联系。