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.

[参考译文] TMS320F2.8069万M:SPI的问题-为什么引脚没有响应以及如何使其工作?

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/629289/tms320f28069m-issues-with-spi---why-are-the-pins-not-responding-and-how-to-make-it-work

部件号:TMS320F2.8069万M
主题中讨论的其他部件:controlSUITEMOTORWAREISO7241A

您好,

我正在尝试在我的drv-8301-spi-kit上使用69 m ,但无法获得任何结果。 我将SPI-A模块设置为与SPI-B相同(实际上复制并粘贴设置),尝试在代码中写入一些基本数据,但在J8引脚上没有输出! 我缺少什么? 我记得左移数据,SPIDAT寄存器似乎写和移动正确(可以通过监视窗口看到它的变化)。

下面是我正在做的事情:

1)在HAL_INIT()中:

//初始化SPI句柄
obj->spiAhandle = SPI_INIT((void *)SPIA_base_ADDR,sizeof(SPI_Obj));// SPI a
obj->spibHandle = SPI_init((void *)SPIB_base_ADDR,sizeof(SPI_Obj));//用于DRV301的SPI B 

2)在HAL_setParams()中

 2.1 HAL_setupGpios():

// SPI SIMO A
GPIO_setMode(obj->gPIOHandle,gPIO_NUMBER_16,GPIO _16_Mode_SPISIMOA);

// SOMI A
gPIO_setMode(SPI_>gPIOHandle,gPIO_NUMBER_17,gPIO_17_Mode_SPISOMIA;

// gPI_21




;gPI_21 gPI_21;gPI_21;gPI_21;gPI_21;gPI_21;gPI_gPI_21;gPI_21;gPI_gPI_21;gPI_gPI_21;gPI_gPI_21;gPI_gPI_gPI_21;gPI_gPI_gPI_21;gPI_gPI_gPI_21;gPI_gPI_gPI_gPI_gPI_21;gPI_gPI_gPI_gPI_ 

2.2 HAL_setupSpiA():

{
HAL_Obj *OBJ =(HAL_Obj *)句柄;

SPI_RESET(obj->spiAhhandle);
SPI_setMode(obj->spi_Mode_Master);
SPI_setClkPolarity(obj->spiAhhandle,SPI_ClkPolarity_OutputRisingEdge_InputspiingEdge);ally(obj_FalleTx);

SPI_enableTxFifoEnh(obj->spiAhHandle);
SPI_enableTxFifo(obj->spiAhHandle);
obj_setTxDelay(obj->spiAhHandle,0x0018);
SPI_setBaudRate(SPI->spiHandle,(SPI_baudate_e)(0x000spi_Handle_16);

SPI_setSuspend(obj->spiAhandle,SPI_TxSuspend_00);
SPI_enable(obj->spiAhHandle);


return;
}// HAL_setupSpiA()函数结束 

 

3.在 HAL_setupPeripheralClks()中:

clk_enableSpiaClock(obj->clkHandle);
clk_enableSpibClock(obj->clkHandle); 

...ca我错过了什么?

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

    代码中没有任何内容看起来不合适。 其他GPIO是否能够正确切换? 如果从controlSUITE运行基本SPI示例,SPI是否会切换引脚? SPIA和SPIB针脚是否都不工作?

    您使用的是哪个版本的Motorware?

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

    您好,感谢您的快速响应。

    我刚刚尝试了简单的GPIO切换示例,J8中唯一要切换的引脚是GPIO 17。 其余的一直都很高!  

    我的PCB单元是否出现故障? 或者,我可能需要更换一些物理交换机或跳线?

    现在,关于您的特定问题:

    >其他GPIO是否能够正确切换?

    有一个捕获,我不得不专门设置引脚输出方向(默认情况下输入-尽管已分配给示例驱动LED),但执行此操作后,它们工作正常-切换了几个随机引脚并使用逻辑分析器进行检查。 我想这应该不是SPI覆盖引脚的问题(尝试过,但没有帮助)。


    >如果从controlSUITE运行基本SPI示例,SPI是否会切换引脚? SPIA和SPIB针脚是否都不工作?

    对于SPIB来说,它似乎工作正常,但我仍然看不到SPIA引脚(在J8接头处)的任何响应。



    >您使用的是哪个版本的Motorware?

    Motorware_1_01_00_18

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

    你好,Jakub,

    首先,我想确保我看到的是您所拥有的相同主板。 您能否确认您正在使用 DRV8301-69M-Kit

    我正在查看U5周围的电路,即设备和J8之间的ISO7241。 此隔离器的配置仅允许SPI-SOMI到达J8。 此隔离器也只允许单向信号。 SPISIMO,SPICLK和SPISTE将来自通过J8驱动SPI信号的外部芯片。如果输入(即J8)未驱动,则输出(朝向MCU)将较高。 我已将ISO7241A的器件功能表与 SLLS905E链接。 对我来说,您只能在J8上看到GPIO17更改,因为它是唯一能够从MCU驱动的更改。

    您也可以使用CCS的表达式视图检查寄存器本身。 确保将SPIA信号的Mux位置正确设置为1。 (GpioCtrlRegs.GPAMUX2.bit.GPIOx = 1)。 这将确认您的软件正在正确配置IOS。

    要验证SPIA是否正常工作,可以将SPI配置为SPI从属设备,并将外部SPI驱动到J8中。 如果SPIA需要成为主控,我认为您需要对主板进行一些修改。  

    此致,

    标记

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

    感谢您的帮助,Mark。 您似乎已经明白了-我想使用J8引脚作为输出,但不知道隔离电路可能会阻止它。 是的,我正在使用  DRV8301-69M-Kit

    我只是好奇-我以前怎么知道? 我如何才能在  将来找到这种'渔获物'? 作为一名软件工程师,我没有想到深入挖掘电气零件,也没有在 DRV8301-69M-Kit 相关文档中找到任何直接信息。

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

    Jakub,

    我很高兴能够解决您的问题。

    这是您提出的一个有趣的问题。 我们尽力记录这些事情,但并不总是被抓住。 在设计套件时,通常会这样做以满足某些要求。 虽然您希望将SPIA用作主服务器,但可能的目的是让SPIA用作从属服务器,并由外部主服务器控制整个应用程序。 在这种情况下,它“应该”起作用,您几乎需要忽略以前对您的情况的所有假设。如果您的软件看起来应该起作用,因为它与其他SPI实例没有什么不同,那么接下来要查看的路径是HW, 您需要了解是否有任何事情可能导致这种情况发生。 这就是我对原理图的处理方式。 调试嵌入式软件(尤其是嵌入式通信)通常不是只能关注硬件或软件的情况。 MCU上的编程通常与HW紧密结合,因此在调试这种情况时必须将两者都考虑在内。 将来,作为一名软件工程师,我建议与您的硬件工程师合作,一起分析问题。 这是一个专门设计的开发套件,我可以想象,当您将来开发自己的自定义硬件时,您将遇到类似的情况,并且需要采取相同的方法。

    很抱歉,我没有更好的答案,但我希望这能让您有所了解。 至少,我可以建议我们的团队在文档中添加有关此问题的备注,以便将来的人不会遇到相同的问题。

    此致,
    标记