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.

[参考译文] TMS320F28035 SPI 读取问题

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/568919/tms320f28035-spi-read-problem

主题中讨论的其他器件:TMS320F28035

大家好、我将 TMS320F28035 SPI 设置为从器件。  它部分工作。   它检测 CLK、它计数16位并输出信息。 主器件正确接收。

但它始终在 SIMO 引脚(GPIO24)上读取0xFFFF。  即使我在它上归零也是如此。 我尝试了所有我想到的东西。 没有用处。

问题是什么?

以下是我的设置:

EALLOW;

 GpioCtrlRegs.GPAPUD.bit.GPIO24 = 0;    //启用 GPIO24上的上拉电阻(SPISIMOB)    //此引脚始终接收0xFFFF
   GpioCtrlRegs.GPAPUD.bit.GPIO13 = 0;    //启用 GPIO13上的上拉电阻器(SPISOMIB)
   GpioCtrlRegs.GPAPUD.bit.GPIO14 = 0;    //启用 GPIO14上的上拉电阻(SPICLKB)
   GpioCtrlRegs.GPAPUD.bit.GPIO15 = 0;    //启用 GPIO15上的上拉电阻器(SPISTEB)
 GpioCtrlRegs.GPAQSEL2.bit.GPIO24 = 3;  //异步输入 GPIO24 (SPISIMOB)      //此引脚接收0xFFFF
   GpioCtrlRegs.GPAQSEL1.bit.GPIO13 = 3;  //异步输入 GPIO13 (SPISOMIB)
   GpioCtrlRegs.GPAQSEL1.bit.GPIO14 = 3;  //异步输入 GPIO14 (SPICLKB)

  GpioCtrlRegs.GPAQSEL1.bit.GPIO15 = 3;  //异步输入 GPIO15 (SPISTEB)
 GpioCtrlRegs.GPAMUX2.bit.GPIO24 = 3;   //将 GPIO24配置为 SPISIMOB    //此引脚接收0xFFFF
 GpioCtrlRegs.GPAMUX1.bit.GPIO13 = 3;   //将 GPIO13配置为 SPISOMIB

 GpioCtrlRegs.GPAMUX1.bit.GPIO14 = 3;   //将 GPIO14配置为 SPICLKB
 GpioCtrlRegs.GPAMUX1.bit.GPIO15 = 3;   //将 GPIO15配置为 SPISTEB

   EDIS;

  SpibRegs.SPICCR.bit.SPISWRESET=0;//复位 SPI

  SpibRegs.SPICCR.All=0x000F;      //16位字符
  SpibRegs.SPICTL.All=0x0003;      //中断被启用、从器件、 主器件/从器件 Xmit 被启用
  SpibRegs.SPISTS.All=0x0000;
//  SpibRegs.SPIBRR=0x0063;          //波特率
  SpibRegs.SPIPRI.All=0x0010;

  SpibRegs.SPICCR.bit.CLKPOLARITY = 0; //1;//0;//1;//0
  SpibRegs.SPICTL.bit.CLK_PHASE_=0; //1; //1;//0;//0

  SpibRegs.SPICCR.bit.SPISWRESET=1; //启用 SPI


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

    器件安装在什么位置? 您是否正在使用定制板 controlCARD? 是否有任何组件将其直接绑定到 VDDIO?
    您能否尝试将引脚配置为 GPIO 并手动切换? 这将有助于确定引脚是否损坏。
    您是否有其他器件可以尝试使用相同的代码? 您是否看到相同的行为?

    我看不到您的代码有任何明显的问题、目前没有电路板可用于测试。

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

    谢谢、Mark。 这是 方案的一部分。 SPISIMO-B (GPIO24 pin80)存在问题 SPIB 的所有其他引脚工作正常、SPIB 接收所有时钟并发回数据( 28034作为从器件工作)、ESP8266接收数据正确。   但我始终在 SPIBRXBUF=0xFFFF 上(尽管 ESP8266 仅发送零、我在示波器上检查过)。  我不使用 FIFO 、因为在前一条消息中已注意到这一点。 28034的封装为 PN (这些引脚上的 SPIB 允许)。  当我将 GPIO24用作简单输入引脚时,它工作正常,读取1和0。 上拉,下拉无关紧要。 它的工作原理是简单的输入。  我认为在秘密 环境中有一些不好的事情,我不介意这是什么秘密。  

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

    您是否能够解决此问题? 我已经查看了原理图、再说一次、没有任何东西会跳出来。
    您已确认引脚可以在标准 GPIO 输入模式下检测到信号。 您还已确认 ESP 正在正确传输数据。

    是否可以尝试外部回送测试? 将 SIMO 直接连接到 SOMI 并传输数据。 不要将 SPI 配置为使用内部回送模式、只需尝试查看 SOMI 是否能够由 SIMO 驱动。

    下周我将尝试获得一个调查委员会。

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

    Michael、

    我有一个电路板、并使用您的 SPIB 和 GPIO 配置测试了 SPIA 和 SPIB 之间的一些简单代码。 SPIB 能够按预期接收数据。

    如果可能、请在您的电路板或其他开发板上尝试使用随附的代码。 使用此代码、您可以确认 SPISIMOB 能够接收数据。 您已声明您已确认 ESP 正在正确传输数据。 因此、您的板上可能还有其他东西在运行。 您能确认迹线中没有断点吗?  

    这是文件。

    /cfs-file/__key/communityserver-discussions-components-files/171/spisimob_5F00_pin80_5F00_e2e.c

    如果您仍然无法解决问题、请尝试这些操作并告知我。

    谢谢、
    标记

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

    您好、Mark。 感谢您的困扰。 但事实证明、问题 非常原始。 我在这个论坛上找到了一些提示。 事实是、我将 TI 的样片项目作为基础(我猜还有其他人)。  当设计发生一些变化时、检查 GPIO 的所有设置链非常重要。 我没有这么做。 我根据 新设计更改了 SIMOB 的位置、但没有查看 TI 基本设计的旧设置。 结果发现、一个 SPI 通道中的两个 GPIO 被设置为 SIMOB、因此 在通信期间提供的值全部为"1"。 在我将一个 GPIO 设置为 SIMOB 之后-程序开始正常工作。 我唯一的过错 是,我很抱歉,目前没有公布这一决定。  问题已解决。 感谢你的帮助。

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

    Michael、

    很高兴听到您解决了这个问题。 我以前也经历过同样的事情、所以我绝对理解! 如果您有任何疑问、请随时发帖。

    -Mark