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.

[参考译文] TMS320F28075:挺杆上的 SPISOMIA 问题

Guru**** 2590580 points
Other Parts Discussed in Thread: TMS320F28075

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/661394/tms320f28075-spisomia-problem-on-mappig

器件型号:TMS320F28075

您好!
我正在使用 TMS320F28075 SPIA 接口、如果我在 GPIO55上映射 SPISOMIA:

   GpioCtrlRegs.GPBPUD.bit.GPIO54 = 0; //启用 GPIO16上的上拉电阻(SPISIMOA)
   GpioCtrlRegs.GPBPUD.bit.GPIO55 = 0; //启用 GPIO17上的上拉电阻(SPISOMIA)
   GpioCtrlRegs.GPBPUD.bit.GPIO56 = 0; //启用 GPIO18上的上拉电阻器(SPICLKA)
   GpioCtrlRegs.GPBPUD.bit.GPIO57 = 0; //启用 GPIO19上的上拉电阻器(SPISTEA)
   GpioCtrlRegs.GPBQSEL2.bit.GPIO54 = 3;//异步输入 GPIO16 (SPISIMOA)
   GpioCtrlRegs.GPBQSEL2.bit.GPIO55 = 3;//异步输入 GPIO17 (SPISOMIA)
   GpioCtrlRegs.GPBQSEL2.bit.GPIO56 = 3;//异步输入 GPIO18 (SPICLKA)
   GpioCtrlRegs.GPBQSEL2.bit.GPIO57 = 3;//异步输入 GPIO19 (SPISTEA)

   GpioCtrlRegs.GPBGMUX2.bit.GPIO54 = 0;//将 GPIO16配置为 SPISIMOA
   GpioCtrlRegs.GPBMUX2.bit.GPIO54 = 1;//将 GPIO16配置为 SPISIMOA
   GpioCtrlRegs.GPBGMUX2.bit.GPIO55 = 0;//将 GPIO17配置为 SPISOMIA
   GpioCtrlRegs.GPBMUX2.bit.GPIO55=1;//将 GPIO17配置为 SPISOMIA
   GpioCtrlRegs.GPBGMUX2.bit.GPIO56 = 0;//将 GPIO18配置为 SPICLKA
   GpioCtrlRegs.GPBMUX2.bit.GPIO56=1;//将 GPIO18配置为 SPICLKA
   GpioCtrlRegs.GPBGMUX2.bit.GPIO57=0;//将 GPIO19配置为 SPISTEA
   GpioCtrlRegs.GPBMUX2.bit.GPIO57=1;//将 GPIO19配置为 SPISTEA

它不起作用、它似乎被锁定到0xFFFF。 考虑到 SPISIMOA、SPICLKA 和 SPISTEA 运行良好。
如果我在 GPIO59上映射 SPISOMIA、它将按预期工作。
SPI 为1兆波特率。
同时,我也在使用 SPIB (GPIO64上的 SPISOMIB)和***(GPIO51上的 SPISOMIC),它们工作正常。

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

    一些意见/问题:
    -您的配置代码正确。 我假设您在引用代码块之前有 EALLOW、在之后有 EDIS?
    -SPIA 是否为主器件?
    -您是否在该信号上放置了一个示波器以查看引脚是否切换?
    -您的 PCB 上是否有任何额外的连接到 GPIO55? 这是定制板还是 TI 评估套件?
    -您是否已在其他地方验证了代码中没有任何改变 GPIO55的 GPIO 配置?

    这些问题应能帮助您入门、请提供回复、并让我知道您可能拥有的任何其他信息、这些信息可能会对您有所帮助。

    此致、
    标记
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Mark、您好!
    -我已按要求提供 EALLOW AD EDIS;
    -SPIA 是一个主器件;
    -引脚与从器件上的 Rrigth 信号翻转;
    -任何额外的东西都连接到 GPIO55、而 GPIO55的 GPIO 配置没有任何改变。
    我对 SPIB 和***也做了同样的事,结果很好。
    此致、
    菲奥罗
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    菲奥罗、

    您能否验证是否没有同时配置两个 GPIO 作为 SPISOMIA?
    您何时会看到0xFFFF 的值? 它是否观察 SPIRXBUF 寄存器?
    您是否在使用 DMA、并将其存储在数据缓冲器中? 包含接收数据缓冲器的存储器区域是否设置为供 CPU 访问?

    假设为 SPISOMIA 正确设置了引脚、SPIRXBUF 应反映引脚的正确状态。

    您可能还需要测试您的引脚是否未损坏。
    1、将 GPIO55设置为 GPIO 输出。 您能否在引脚上驱动0和1?
    2.将 GPIO55设置为 GPIO 输入。 如果您在引脚上驱动0或1、GPIO 数据寄存器是否反映引脚的状态?

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

    -只有 Gpio55配置为 SPISOMIA。
    -我已经看到0xFFFF 通过 SCI ModBus 观察 SPIRXBUF 寄存器并在我自己的接口上观察到一个适当的变量。
    -将 GPIO55设置为 GPIO 输入我可以看到 GPIO 反映了引脚的状态。
    我在两个板上的情况相同。

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

    我不太确定问题是什么。
    如果您将 SPISOMIA 连接到 SPISIMOA 并执行外部回送测试、那么 SPIRXBUF 是否仍然卡住?

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

    Mark、

    SPIA 在 GPIO59中与 SPISOMIA 配合工作、为什么不与 GPIO55配合工作?
    似乎 SPIA 未进入 GPIO55。

    菲奥罗

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

    您是否正在使用定制硬件? 您能否仅分享此电路的原理图?
    您使用的是什么器件封装? GPIO55在100引脚 PZP 封装中不可用。 它仅在176引脚 PTP 封装中提供。 请参阅数据表中的图像。 www.ti.com/.../terminal-configuration-and-functions。 您刚才提到过、您可以在驱动输入时看到输入发生变化、因此我认为您使用的是176引脚 PTP 封装、但这是值得验证的。

    如果您已验证在简单的外部回送模式下设置 SPI 时会发生相同的行为、请告诉我。 根据需要配置 GPIO、然后用电线将 SPISIMOA 短接至 SPISOMIA。 确保 SPILBK 位为0。

    我已经在工作台上验证了这个引脚是否切换并正确采用 SPISOMIA。 这是一个我以前从未见过的非常奇怪的问题。 GPIO 工作正常、但 SPI 在同一引脚上不工作。

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

    几个星期以来,我没有听到您的声音,因此我假设您能够解决您的问题。 如果情况并非如此,请拒绝此解决方案或回复此主题。 如果此主题被锁定、请制作一个描述问题当前状态的新主题。

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

    Mark、您好!
    这是我的错。 找到问题并不容易。
    定义 EPwm9 GPIO:
    空 InitEPwm9Gpio (空)

       EALLOW;
       //
       //禁用所选输出引脚的内部上拉
       //以降低功耗
       //用户可以启用或禁用上拉。
       //这将启用指定引脚的上拉电阻。
       //注释掉其他不需要的行。
       //
       GpioCtrlRegs.GPAPUD.bit.GPIO16=1;   //禁用 GPIO16上的上拉电阻(EPWM9A)
       GpioCtrlRegs.GPAPUD.bit.GPIO17 = 1;   //禁用 GPIO17上的上拉电阻(EPWM9B)

       //
       //使用 GPIO 寄存器配置 EPWM-6引脚
       //这指定哪个可能的 GPIO 引脚将是 EPWM6功能
       //引脚。
       //注释掉其他不需要的行。
       //
       GpioCtrlRegs.GPAMUX2.bit.GPIO16=1;  //将 GPIO16配置为 EPWM9A
       GpioCtrlRegs.GPAMUX2.bit.GPIO17 = 1;  //将 GPIO17配置为 EPWM9B

       EDIS;


    我忘记了:

       GpioCtrlRegs.GPAGMUX2.bit.GPIO16=1;  //将 GPIO16配置为 EPWM9A
       ----
       GpioCtrlRegs.GPAGMUX2.bit.GPIO17 = 1;  //将 GPIO17配置为 EPWM9B
       ----

    因此、将 GPIO17定义为 SPISIMOA 输入引脚、这与 GPIO55配置冲突。
    我很抱歉这个问题。 感谢你的帮助。
    菲奥罗

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

    我很高兴您能够发现 GPIO 多路复用器设置不正确。 这是一个很难找到的问题、因为您的 GPIO55配置没有变化。 遗憾的是、调试此问题的最佳方法是检查将外设函数带到不同 GPIO 的每个位置、并查看是否有相同的配置方式。

    如果您遇到更多问题、请随时创建新帖子。

    此致、
    标记