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.

[参考译文] RTOS/TMS320C6748:用于 SPI 的 J15引脚

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/663434/rtos-tms320c6748-j15-pins-for-spi

器件型号:TMS320C6748
Thread 中讨论的其他器件:OMAPL138

工具/软件:TI-RTOS

您好!

我正在为 SPI0编写 SPI 驱动程序。 问题 是、当我将 J15 SPI 输出(SIMO 和 CLK 值)连接到示波器时、我看不到任何值。 我正在尝试模拟 SPI 0 CLK 信号(J15 25引脚)。

当我使用 XDS110调试驱动器时、我可以检查寄存器配置是否正确、SPIPC2 (CLKDIN)寄存器在每个周期中更新为高电平至低电平、但示波器不会读取任何输出。

另外、在查看 Starterware 示例和技术手册后、我还有一些问题:

-在 Starterware SPI 示例中,在开始通信之前 CS 未设置为低值。  根据技术手册、变速器在 CS 处于低电平时启动。 正确吗?

-如果 SPI 被定义为主器件、则应配置 SPIPC1位? 我理解阅读参考手册并不是必要的、尽管在我的代码中我配置了以避免错误。

我的代码如下(我不编写所有代码、仅编写重要代码):

InitSPI 从 main 调用、其输入值为 uiSPIReg = SOC_SPI_0_regs  

CS 配置为2

#define CS_none_UI 0x00
#define CS_HOLT1_UI 0x04

#define SIMO_SOMI_CLK_CS_UI 0x00000E04 //将 SIMO、SOMI、CLK 和 CS 引脚配置为功能引脚*
#define SIMO_SOMI_CLK_CS_IO_UI 0x00000604 /*值以配置 SMIO、SOMI、CLK 和 CS 引脚输入/输出*

空 InitSPI (const Int_ui uiSPIReg)

DataFormat_st stDataFormat;


/*唤醒 SPI1实例。 *
PSCModuleControl (uiSPIReg、HW_PSC_SPI0、PSC_POWERDOMAIN_AYST_ON、
PSC_MDCTL_NEW_ENABLE);

/*执行 SPI1的引脚复用。 *
SPIPinMuxSetup (uiSPIReg);

/*
**使用 SPI1的芯片选择(CS) 2引脚进行通信
*
SPI0CSPinMuxSetup (2);

/*重置 SPI*/
SPIReset (uiSPIReg);

/*活动 SPI (复位后)*/
SPIOutOfReset (uiSPIReg);


/*将 SPI 配置为主接口*/
SPIModeConfigure (uiSPIReg、SPI_MASTER_MODE_UI);

/*设置 SPI 操作4引脚 CS */
SetSPIPinControl (uiSPIReg、SPIIPC0_UI、SIMO_SOMI_CLK_CS_UI);

/*Set Holt1默认 CS 选择 TBD*/
SPIDefaultCSSet (uiSPIReg、CS_HOLT1_UI);

/*配置 SPI 数据格式0*/
stDataFormat.uiWDelay = 0;
stDataFormat.ucbparityPolarity = SPI_evo_parity;
stDataFormat.ucbParityEnable = SPI_paracy_disable_UI;
stDataFormat.ucbWaitEna = SPI_WAITENA_DISABLE_UI;
stDataFormat.ucbShiftDir = SPI_MSB_UI;
stDataFormat.ucbDisableTimer = DISCSTIMERS_DISABLE_UI;
stDataFormat.ucbPolarity = SPI_CLK_POL_LOW_UI;
stDataFormat.ucbPhase = SPI_CLK_INPHASE_UI;
stDataFormat.uiSPIModuleCLK = SPI_MOD_CLK_UI;
stDataFormat.uiSPIClkFreq = SPI_CLK_FREQ_UI;
stDataFormat.uiCharLen = SPI_DATA_L8_UI;

SPIConfigDataFmtReg (uiSPIReg、SPIDAT1_FORMAT0_UI、stDataFormat);

SetSPIPinControl (uiSPIReg、SPIIPC1_UI、SIMO_SOMI_CLK_CS_IO_UI);
SPIEnable (uiSPIReg);

Affer 配置此函数称为循环函数  

ExchangeSPIData (Int_ui uiSPIReg、
const Char_uC* pucOutBuffer、
char_uC* pucInBuffer、
INT_ui * puiBufferLength)

/*初始化返回值*/
eUSTATUS_e eResult = eSTATUSECU_OK;
INT_ui uiRecLength = 0;

(笑声)

INT_ui uiStatusSPI = SPIFlagStatus (uiSPIReg);

while (uiStatusSPI >0 &&*puBufferLength >0)

/*接收器寄存器满->清除 SPI 标志状态中的位*/
if (uiStatusSPI & SPI_SPIFLG_RXINTFLG_UI){
/*读取 SPIBuf*/
*puInBuffer=(char) SPIDataReceive(uiSPIReg);
uiRecLength ++;

/*Transmitter reg empty*/
IF (uiStatusSPI 和 SPI_SPIFLG_TXINTFLG_UI)

/*在 SPI_SPIDAT1->清除 SPI 标志状态中的位*/
SPIDat1ConfigCSNR (uiSPIReg、CS_none_UI);
SPITransmitData1 (uiSPIReg、* puOutBuffer);
*puiBufferLength --;
UARTSendMessage ("发送\n"、10);
puOutBuffer++;


(笑声) ->错误管理

/*更新 SPI 状态值*/
uiStatusSPI = SPIFlagStatus (uiSPIReg);

/*断言 CS 引脚(线路)-完成与 CS 的通信*/
SPIDat1ConfigCSNR (uiSPIReg、CS_HOLT1_UI);
//缓冲区长度现在是接收到的数据长度
* puiBufferLength = uiRecLength;


 非常感谢您的帮助!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否查看了 TI Processor SDK RTOS 中的示例驱动程序:
    www.ti.com/.../processor-sdk-c6748

    SPI 示例应在 TI 处理器 SDK 中工作。 将该驱动程序的设置与您的配置进行比较。

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    我已经安装了用于 OMAPL 的 SDK、但我找不到任何可以在 CSS 中进行调试和工作的 C6748 SPI 示例。

    我正在使用 StarterWare 提供的 SPI 驱动程序来访问寄存器。

    非常感谢、

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

    我咨询了 Starterware 团队。 他们将直接在此处发布反馈。

    您能否共享您使用的是哪个 Starterware 版本?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    Starterware versión 是  1.20.04.01。我修改了提供的驱动程序、以单独设置某些寄存器字段或设置整个寄存器值。  

    上周五粘贴的代码有误。 PSC 模块控制器具有下一个参数、但更改不能解决我的问题。

       PSCModuleControl (SOC_PSC_0_regs、HW_PSC_SPI0、PSC_POWERDOMAIN_AYS_ON、
                        PSC_MDCTL_NEW_ENABLE);

    谢谢!

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

    SDK 中提供了 SPI 示例、但需要使用 PDK 中的脚本构建该示例。 您可以运行以下命令来构建它:

    > CD C:\ti\pdk_omapl138_1_0_3\packages
    > pdksetupenv.bat
    > pdkProjectCreate.bat OMAPL138全小型 SPI 全 DSP

    运行上述命令后、CCS 工程将位于 C:\ti\pdk_omapl138_1_0_3\packages\MyExampleProjects 目录中。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    问题在于 J15中的 SPI0引脚不能直接在 LCDK 中使用、一些电阻器必须在事先更改。
    非常感谢您的回答!