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.

[参考译文] CCS/TMS320F28335:具有 Wiznet W5500的 TMS320F28335接口

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/881967/ccs-tms320f28335-tms320f28335-interface-with-wiznet-w5500

器件型号:TMS320F28335

工具/软件:Code Composer Studio

您好!

我尝试将28335与 wiz-net W5500连接,但在尝试建立连接时遇到了一些问题。

下面显示了我需要发送的帧格式

出于测试目的、w5500中有一个回读寄存器、如果连接完美、该寄存器应回读值0x04。 但不幸的是、每次都能得到错误的值。  
相同的源代码如下所示

InitSpiaGpio()

EALLOW;


GpioCtrlRegs.GPBPUD.bit.GPIO54 = 0;//启用 GPIO54上的上拉电阻(SPISIMOA)
GpioCtrlRegs.GPBPUD.bit.GPIO55 = 0;//启用 GPIO55上的上拉电阻器(SPISOMIA)
GpioCtrlRegs.GPBPUD.bit.GPIO56 = 0;//启用 GPIO56上的上拉电阻器(SPICLKA)
GpioCtrlRegs.GPBPUD.bit.GPIO57=1;//启用 GPIO57上的上拉电阻器(SPISTEA)

GpioCtrlRegs.GPBQSEL2.bit.GPIO55 = 3;//异步输入 GPIO17 (SPISOMIA)
GpioCtrlRegs.GPBQSEL2.bit.GPIO56 = 3;//异步输入 GPIO18 (SPICLKA)
GpioCtrlRegs.GPBQSEL2.bit.GPIO57 = 3;//异步输入 GPIO19 (SPISTEA)

GpioCtrlRegs.GPBMUX2.bit.GPIO54 = 1;//将 GPIO54配置为 SPISIMOA
GpioCtrlRegs.GPBMUX2.bit.GPIO55 = 1;//将 GPIO55配置为 SPISOMIA
GpioCtrlRegs.GPBMUX2.bit.GPIO56 = 1;//将 GPIO56配置为 SPICLKA
GpioCtrlRegs.GPBMUX2.bit.GPIO57=1;//将 GPIO57配置为 SPISTEA
GpioDataRegs.GPBSET.BIO57 = 1;//将 SPISTEA 置为高电平空闲


// GPIO 引脚配置为复位引脚
GpioCtrlRegs.GPBPUD.bit.GPIO63 = 1;//启用上拉
GpioCtrlRegs.GPBQSEL2.bit.GPIO63 = 3;
GpioCtrlRegs.GPBMUX2.bit.GPIO63 = 1;//

GpioDataRegs.GPBCLEAR.bit.GPIO63=1;
uint16 tmp = 0xFF;
while (tmp--);
GpioDataRegs.GPBSET.BIO63 = 1;

void SPI_init()

SpiaRegs.SPICCR.all =0x0047;//复位打开、下降沿、8位字符位
SpiaRegs.SPICTL.ALL =0x00E;//启用主控模式、正常相位、
//启用 TALK、禁用 SPI int。
SpiaRegs.SPIBRR = 0x001F;
SpiaRegs.SPICCR.all =0x00C7;//从复位中撤回 SPI
SpiaRegs.SPIPRI.bit.FREE = 1;//设置断点以避免干扰 xmission

void_ReadVersionReg ()

GpioDataRegs.GPBCLEAR.bit.GPIO57=1;//STE 低电平
sdata = 0x0039;
SPI_xmit (sdata);

sdata = sdata>>8;
SPI_xmit (sdata);

sdata = 0x0000;
SPI_xmit (sdata);

sdata =sdata>>8;
SPI_xmit (sdata);

GpioDataRegs.GPBSET.BIO57=1; //STEA 高电平

RDATA = 0x00;
RDATA = SpiaRegs.SPIRXBUF;

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

    Sooraj、

    W5500 1字节数据读取格式为:

    16位地址阶段:0x0039 (当您尝试访问芯片版本寄存器时)

    8位控制阶段:          0x00 (在 VDM 模式下读取)(或) 0x0001 (在 FDM 模式下读取命令寄存器(1字节)

    8位数据阶段              :0x00 (虚拟发送从 W5500接收1个字节。

    1) 1)首先、如果要将 GPIO57配置为 SPISTEA、则无需手动设置和清除 GPIO57、SPI 硬件将自动控制它。 如果您希望手动控制它、则需要将 GPIO57配置为 GPIO 输出引脚。

    2) 2)您是否尝试使用 SPI 协议分析器探测 SPI 总线? SPI 帧是什么样的? 它是否与 W5500的 SPI 帧格式相匹配

    3) 3)在读取 SPIRXBUF 寄存器之前检查 SPISTS.INT_FLAG。 这将确认 SPI 已收到指定的完整字符。

    此致、

    曼诺伊

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

    此问题是否已解决?

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

    主席先生,

    感谢帮助。

    是的,我将 GPIO57配置更改为 GPIO 输出。
    我探测 SPI 总线、信号似乎符合要求。 这是 MOSI 线路和时钟的屏幕截图。

    黄色表示 SPI 时钟、绿色表示 MOSI 线路。

    我更改了数据传输代码、如...can 您确认代码正在执行所需的操作、

    uint8 SPI_DATA[4]={0、};
    uint8 i;
    SPI_DATA[0]= 0x00;
    SPI_DATA[1]= 0x39;
    SPI_DATA[2]= 0x00;
    SPI_DATA[3]= 0x00;
    GpioDataRegs.GPBCLEAR.bit.GPIO57=1;/cs 低电平
    对于(i=0;i<4;i++)

    SpiaRegs.SPITXBUF =(SPI_DATA[I]<<8);

    RDATA =SpiaRegs.SPIRXBUF>>8;

     GpioDataRegs.GPBSET.BIO57 = 1;


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

    此外、读取 SpiaRegs.SPISTS.bit.INT_FLAG 也会为我提供0。 这是否意味着我的数据无法正确发送?

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

    我在您的代码片段中没有看到任何明显的错误。 但是、您的示波器快照在 SPICLK 和 MOSI 信号上都显示了大量噪声。 观察到的 EMI 噪声可能是由于阻抗匹配不当而产生的振铃噪声引起的。 这里的问题是噪声足够高、以至于错误读取错误的位会破坏您的通信。

    此致、

    曼诺伊

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

    Manoj、

    感谢主席先生的支持和帮助。  

    我能够解决这个问题。 我认为问题是 SPI 模式和 STEA 信号。 我能够纠正它。

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

    您能解释更多有关问题是什么以及如何解决的说明吗?

    此致、

    曼诺伊