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.

[参考译文] TMS320F28P650DH:无 SPI 的 SysConfig 配置

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1525723/tms320f28p650dh-no-sysconfig-configuration-for-spi

器件型号:TMS320F28P650DH
主题:SysConfig 中讨论的其他器件

工具/软件:

您好、专家。 目前我正在为 CCS-A 工程配置 SPI。 由于此工程没有 sisconfig、因此我必须自行配置。 目前、A 工程已成功配置 SCI、发送和接收正确、这证明 A 工程的低速时钟正确。 但是、SPI 的配置目前不正确。

我在项目 B 中正确配置了 SPI(在开发板上已成功验证)、但当我将代码从项目 B 传输到项目 A 以便运行时、它无法正常工作。 您能告诉我缺少什么配置、以及如何解决此问题吗?

void main (void)

//
//通过等待繁忙时间刷新 SCIA TX 端口、driverlib。
//
// sciaFlush ();

//
//初始化器件和 GPIO、driverlib。
//
设备初始化 ();
device_initGPIO();

//
//初始化中断和矢量表、drivelib。
//
interrupt_initModule();
Interrupt_initVectorTable();
//
//
//启用全局中断 (INTM) 和实时中断 (DBGM)
//
EINT;
ERTM;

//
//在 200MHz、外部振荡器的执行等待状态为 4。 修改
//更改系统时钟频率时的等待状态。
//
Flash_initModule (FLASH0CTRL_BASE、FLASH0ECC_BASE、4);

//
//泵访问必须由模芯使用泵信标获得
//
EALLOW;
IPC_claimFlashSemaphore (IPC_FLASHSEM_Owner_CPU1);
SysCtl_allocateFlashBank (SYSCTL_FLASH_BANK0、SYSCTL_CPUSEL_CPU1);
SysCtl_allocateFlashBank (SYSCTL_FLASH_BANK1、SYSCTL_CPUSEL_CPU1);
SysCtl_allocateFlashBank (SYSCTL_FLASH_BANK2、SYSCTL_CPUSEL_CPU1);
SysCtl_allocateFlashBank (SYSCTL_FLASH_BANK3、SYSCTL_CPUSEL_CPU1);
SysCtl_allocateFlashBank (SYSCTL_FLASH_BANK4、SYSCTL_CPUSEL_CPU1);
// Example_Call FlashAPI();
//
//初始化 FLASH_SECTORS、fapi + driverlib
//
initFlashSectors();
EDIS;
SysCtl_enablePeripheral (SYSCTL_PERIPH_CLK_SCIA);
SysCtl_setLowSpeedClock (SYSCTL_LSPCLK_PRESCALE_4);
/*SCIA*/
GPIO_setControllerCore (DEVICE_GPIO_PIN_UARTARXDA、GPIO_CORE_CPU1);
GPIO_setPinConfig (DEVICE_GPIO_CFG_UARTARXDA);
GPIO_setDirectionMode (DEVICE_GPIO_PIN_UARTARXDA、GPIO_DIR_MODE_IN);
GPIO_setPadConfig (DEVICE_GPIO_PIN_UARTARXDA、GPIO_PIN_TYPE_STD);
GPIO_setQualificationMode (DEVICE_GPIO_PIN_UARTARXDA、GPIO_QUAL_ASYNC);

//
// GPIO42 是 SCI Tx 引脚。
//
GPIO_setControllerCore (DEVICE_GPIO_PIN_UARTATXDA、GPIO_CORE_CPU1);
GPIO_setPinConfig (DEVICE_GPIO_CFG_UARTATXDA);
GPIO_setDirectionMode (DEVICE_GPIO_PIN_UARTATXDA、GPIO_DIR_MODE_OUT);
GPIO_setPadConfig (DEVICE_GPIO_PIN_UARTATXDA、GPIO_PIN_TYPE_STD);
GPIO_setQualificationMode (DEVICE_GPIO_PIN_UARTATXDA、GPIO_QUAL_ASYNC);
Sci_performSoftwareReset (SCIA_BASE);
initSCIA ();
INTERRUPT_REGISTER (INT_SCIA_RX、INT_SCIA_BASE_RX_ISR);
INTERRUPT_REGISTER (INT_SCIA_TX、INT_SCIA_BASE_TX_ISR);
SCI_enableTxModule (SCIA_BASE);
SCI_enableRxModule (SCIA_BASE);
INTERRUPT_ENABLE (INT_SCIA_RX);
INTERRUPT_ENABLE (INT_SCIA_TX);
INTERRUPT_CLEARACKGROUP (INTERRUPT_ACK_group9);
////uint32_t EntryAddr;
//
////
////对于 GPIO28 (RX)、29 (TX)、参数 SCI_BOOT_ALT5
////
////EntryAddr = sciGetFunction (SCI_BOOT_ALT5);
////return (EntryAddr);
//
memcpy (&RamfuncsLoadStart、&RamfuncsLoadEnd、RamfuncsRunStart);//将初始化Flash代码复制到RAM
//初始闪存 ();
memset (memset.RX Byte_Data_Buf_、0、sizeof (Byte_Data_Buf_));
memset (memset (Byte_Data_Buf_、0、sizeof (Byte_Data_Buf_));
memset (memset.RX Word_Data_Buf_、0、sizeof (Word_Data_Buf_));
memset (Word_Data_Buf_、0、sizeof (Word_Data_Buf_ TRX));
Bytes_RX_D=0;
bytes_cehsi=0;
// SysCtl_setPeripheralAccessControl (SYSCTL_ACCESS_SPIA、
// SysCtl_access_CPUx、SysCtl_access_full);
// SysCtl_setPeripheralAccessControl (SYSCTL_ACCESS_SPIA、
// SysCtl_ACCESS_CLA1、SysCtl_ACCESS_FULL);
// SysCtl_setPeripheralAccessControl (SYSCTL_ACCESS_SPIA、
// SysCtl_ACCESS_DMA1、SysCtl_ACCESS_FULL);
// SysCtl_enablePeripheral (SYSCTL_PERIPH_CLK_SPIA);
第 61 章
GPIO_setPadConfig (FLASH_CS、GPIO_PIN_TYPE_STD);
GPIO_setQualificationMode (FLASH_CS、GPIO_QUAL_SYNC);
GPIO_setDirectionMode (FLASH_CS、GPIO_DIR_MODE_OUT);
GPIO_setControllerCore (FLASH_CS、GPIO_CORE_CPU2);
//
// SPIA -> FLASH_SPIA Pinmux
//
//
// SPIA_PICO - GPIO 设置
//
#define GPIO_PIN_SPIA_PICO 16
#define FLASH_SPIA_SPIPICO_GPIO 16
#define FLASH_SPIA_SPIPICO_PIN_CONFIG GPIO_16_SPIA_PICO
//
// SPIA_POCI - GPIO 设置
//
#define GPIO_PIN_SPIA_POCI 17
define FLASH_SPIA_SPI_CI_GPIO 17
define FLASH_SPIA_SPIPOCI PIN_CONFIG GPIO_17_SPIA_POCI
//
// SPIA_CLK - GPIO 设置
//
#define GPIO_PIN_SPIA_CLK 18
#define FLASH_SPIA_SPIA_SPICLK_GPIO 18
#define FLASH_SPIA_SPIA_SPICLK_PIN_CONFIG GPIO_18_SPIA_CLK
//
// SPIA -> FLASH_SPIA Pinmux
//
GPIO_setPinConfig (FLASH_SPIA_SPIPICO_PIN_CONFIG);
GPIO_setPadConfig (FLASH_SPIA_SPIPICO_GPIO、GPIO_PIN_TYPE_STD);
GPIO_setQualificationMode (FLASH_SPIA_SPIPICO_GPIO、GPIO_QUAL_ASYNC);

GPIO_setPinConfig (FLASH_SPIA_SPIPOCI PIN_CONFIG);
GPIO_setPadConfig (FLASH_SPIA_SPI_CI_GPIO、GPIO_PIN_TYPE_STD);
GPIO_setQualificationMode (FLASH_SPIA_SPI_CI_GPIO、GPIO_QUAL_ASYNC);

GPIO_setPinConfig (FLASH_SPIA_SPICLK_PIN_CONFIG);
GPIO_setPadConfig (FLASH_SPIA_SPICLK_GPIO、GPIO_PIN_TYPE_STD);
GPIO_setQualificationMode (FLASH_SPIA_SPICLK_GPIO、GPIO_QUAL_ASYNC);
Flash_SPIA_init ();
FlashEnableWrite();
闪存擦除 (0x20、0);
FLASH_NVM Byte_Write(缓冲器,0、8);
FlashReadData (0、BufferA、8、0);
//
////////app_UPDATA_CHK();//FlashAPI. Example_Call
while (1)


}
}

}

void FLASH_SPIA_init (void)

//spi_disableModule (FLASH_SPIA_BASE);
SPI_setConfig (FLASH_SPIA_BASE、DEVICE_LSPCLK_FREQ、SPI_PROT_POL0PHA1、
SPI_MODE_CONTROLLER、11000000、8);
SPI_setPTESignalPolarity (FLASH_SPIA_BASE、SPI_Pte ACTIVE_LOW);
SPI_disableFIFO (FLASH_SPIA_BASE);
SPI_disableLoopback (FLASH_SPIA_BASE);
SPI_setEmulationMode (FLASH_SPIA_BASE、SPI_emulation_stop_midway);
//SPI_enableModule (FLASH_SPIA_BASE);
}

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

    嗨、Nie、

    让我明天再回到您的身边。 谢谢。

    此致、

    Aishwarya

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

    大家好、专家、对于此工程、SPI 由 DSP 作为主机处理、而从器件则是外部芯片闪存。

    我比较了工程 A 和工程 B 的寄存器配置。这两个工程都在同一个开发板上运行。

    工程 B 的正确寄存器配置

    工程错误 A — 寄存器配置

      工程 A 的 SPI 主机正在与外部闪存芯片的从器件通信、而从器件没有响应、因此主机继续等待、工程 B 无法进入主函数的主循环。 比较两个工程寄存器的配置时、存在许多差异、波特率配置也不同。 工程 A 的 GPIO 配置和 SPI 配置相同。 我还启用了 SPI 时钟。

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

    NIE、

    这两个项目之间有什么区别? 您提到 GPIO 和 SPI 配置是相同的。 配置是否应该相同?  

    此致、

    Aishwarya

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

     您好专家、非常感谢您的答复。 我的目的是在某个项目中执行固件升级 — 远程程序烧录。

     ----- A 工程是引导工程。 由于工程遵循 TI 的官方流程、因此没有 SysConfig。

     ----- B 工程(使用 SysConfig)是工程的算法程序。 我需要将 B 工程的所有 SPI 配置传输到 A 工程。 目前、A 项目无法正常工作、我正在寻找问题。

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

    NIE、

    对延迟深表歉意。 如果您有任何更新或任何其他问题、想检查一下?  

    在执行任何配置时确保禁用 SPI、因为我看到 SPI 已注释掉、SPI 模式 (POL0PHA1) 与外部闪存芯片的目标匹配。 请注意、不同单元的模式名称可能不同、因此请仔细检查 SPI 的时序图。 对其进行范围界定时、请确保在开始任何 SPI 传输之前 CS 也处于活动状态。

    此致、

    Aishwarya