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.

[参考译文] TMS320F28388S:SPI 时钟未生成。

Guru**** 2390755 points
Other Parts Discussed in Thread: TMDSCNCD28388D, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1480272/tms320f28388s-spi-clock-is-not-generating

器件型号:TMS320F28388S
主题中讨论的其他器件:TMDSCNCD28388DC2000WARE

工具与软件:

需要紧急帮助、仅修改代码"spi_ex6_eeproM"的应用程序级别后、我的 SPI 时钟无法生成

我在下面提供了我的代码,我是比较新的 C2000平台,我需要一个指导  

// Included Files
//
#include "driverlib.h"
#include "device.h"
#include "board.h"

//
// Defines
//
#define MAX6675_CS_GPIO   11    // Chip Select GPIO Pin
#define SPI_BASE_ADDR     SPIA_BASE

void initSPI(void);
uint16_t readMAX6675(void);
void selectChip(void);
void deselectChip(void);

void initSPI(void)
{
    // Configure GPIO pins for SPI
    GPIO_setPinConfig(GPIO_16_SPIA_SIMO);
    GPIO_setPinConfig(GPIO_17_SPIA_SOMI);
    GPIO_setPinConfig(GPIO_18_SPIA_CLK);
    GPIO_setPadConfig(16, GPIO_PIN_TYPE_STD);
    GPIO_setPadConfig(17, GPIO_PIN_TYPE_STD);
    GPIO_setPadConfig(18, GPIO_PIN_TYPE_STD);
    GPIO_setQualificationMode(16, GPIO_QUAL_ASYNC);
    GPIO_setQualificationMode(17, GPIO_QUAL_ASYNC);
    GPIO_setQualificationMode(18, GPIO_QUAL_ASYNC);
    GPIO_setDirectionMode(16, GPIO_DIR_MODE_OUT);
    GPIO_setDirectionMode(17, GPIO_DIR_MODE_IN);
    GPIO_setDirectionMode(18, GPIO_DIR_MODE_OUT);

    // Configure Chip Select GPIO
    GPIO_setPadConfig(MAX6675_CS_GPIO, GPIO_PIN_TYPE_STD);
    GPIO_setQualificationMode(MAX6675_CS_GPIO, GPIO_QUAL_SYNC);
    GPIO_setDirectionMode(MAX6675_CS_GPIO, GPIO_DIR_MODE_OUT);
    GPIO_setControllerCore(MAX6675_CS_GPIO, GPIO_CORE_CPU1);
    GPIO_writePin(MAX6675_CS_GPIO, 1);

    // Initialize SPI Module
    SPI_disableModule(SPI_BASE_ADDR);
    SPI_setConfig(SPI_BASE_ADDR, DEVICE_LSPCLK_FREQ, SPI_PROT_POL0PHA0, SPI_MODE_MASTER, 4000000, 8);
    SPI_setPTESignalPolarity(SPI_BASE_ADDR, SPI_PTE_ACTIVE_LOW);
    SPI_disableFIFO(SPI_BASE_ADDR);
    SPI_disableLoopback(SPI_BASE_ADDR);
    SPI_setEmulationMode(SPI_BASE_ADDR, SPI_EMULATION_STOP_AFTER_TRANSMIT);
    SPI_enableModule(SPI_BASE_ADDR);
}

void selectChip(void)
{
    GPIO_writePin(MAX6675_CS_GPIO, 0);
    DEVICE_DELAY_US(10);
}

void deselectChip(void)
{
    GPIO_writePin(MAX6675_CS_GPIO, 1);
    DEVICE_DELAY_US(10);
}

uint16_t readMAX6675(void)
{
    uint16_t receivedData = 0;

    selectChip();

    SPI_writeDataBlockingNonFIFO(SPI_BASE_ADDR, 0x0000);
    receivedData = SPI_readDataBlockingNonFIFO(SPI_BASE_ADDR);

    deselectChip();

    if(receivedData & 0x04) // Check for Fault Bit
    {
        return 0xFFFF; // Error Value
    }

    return (receivedData >> 3) * 0.25; // Temperature Conversion
}

void main(void)
{
    Device_init();
    Device_initGPIO();
    initSPI();

    while(1)
    {
        uint16_t temperature = readMAX6675();
        if(temperature != 0xFFFF)
        {
            // Valid temperature reading
        }
        DEVICE_DELAY_US(1000000); // Delay 1 second
    }
}


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

    尊敬的 Ramakrishna:

    专家将很快就此问题与您联系。 谢谢你。  

    此致、

    Aishwarya.  

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

    您好!

    我建议做的第一件事是将 SPI_EMULATION_STOP_AFTER_TRANSMIT 更改为 SPI_EMULATION_FREE_RUN、看看这是否会改变行为。 根据当前配置 SPI_EMULATION_STOP_AFTER_TRANSMIT、可以使用调试暂停来完全停止 SPI 外设。 乍一看、您的配置中其他所有内容看起来都正确、因此我直接担心的是它与仿真相关。

    此致、
    Jason Osborn

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

    感谢您宝贵的意见。
    实际上、在从  SPI_EMULATION_STOP_AFTER_TRANSMITH 更改为 SPI_EMULATION_FREE_RUN 之后、它也没有解决我的问题 、但当我从 GPIO_setPadConfig (16、GPIO_PIN_TYPE_STD)更改为 GPIO_setPadConfig (16、GPIO_PIN_TYPE_PULLUP)时、它实际上开始工作了。
    但我没有得到它背后的逻辑。
    您能否解释专门用于  TMS320F28388S 的 C2000系列控制器的正确配置??

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

    嗯。 根据我们的文档、应该没有要求设置这些引脚来使用内部上拉电阻。 如果信号上出现意外/显著的噪声、尤其是在启动时、或者信号以其他方式被拉至未知状态、则将 IO 设置为上拉电阻通常很有用。 您是否正在使用 TMDSCNCD28388D controlCARD 硬件、还是正在使用定制硬件?

    此致、
    Jason Osborn

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

    是的、我使用的是  TMDSCNCD28388D controlCARD 硬件180引脚。 很遗憾、此卡引脚排列文档也不完整、我在 I2C 外设中面临同样的时钟、因为内部上拉电阻也无法解决我的问题。 ‍male sign️ μ A

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

    Ramakrishna

     TMDSCNCD28388D 原理图应具有完整的引脚排列。 对于 I2C、器件 TRM 第33.2节介绍了 GPIO 设置、第33.3.2节提到了外部上拉电阻器、并提供了指向计算这些电阻器的应用手册的链接。 此外、如果 I2C 外设未正常运行、请考虑根据 TRM 的 I2C 部分中所述的设置来验证控制寄存器的内容。

    如果此建议不起作用、请针对 I2C 问题创建新主题、以便可以分配相关的 SME、并确保在情境上下文变得相关时在正文中链接此帖子。

    此致、
    Jason Osborn

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

    但遗憾的是、 TMDSCNCD28388D 原理图不是完整的引脚排列。

    请参阅下面的 SNAP、根据 C2000ware 库 I2CA 使用 GPIO PIN 104和105。

     TMDSCNCD28388D 原理图的引脚布局缺少 GPIO 105和106。



    而且我还做了新的线程 I2C 问题3天前,但仍然没有收到响应。 ‍male sign️ μ A

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

    因为我不知道为什么,我就不能和她做爱了。"

    参考器件原理图、GPIO 105和106直接路由到 DP83822IRHBR 以太网收发器 U17进行串行控制。 我不能确定为什么 C2000Ware 中定义的默认信号在这种情况下使用 GPIO105。

    说到器件 TRM、I2CA SCL 也可用于其他引脚、包括 IO 32、33、43、57、 和92. 尝试改用这些方法之一。

    此致、
    Jason Osborn