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万:在定制板上使用SPI-B外设时出现问题

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/572154/tms320f28069-trouble-using-spi-b-peripheral-on-custom-board

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

我在自定义板上启动SPI-B外设时遇到问题。 此SPI通道连接到两个DRV8305s,我已从主板上删除这些DRV8305s以隔离问题。

我已经将SPI-A外设分解为引脚插头,并根据使用TMS320F2.8069万的电路板的汽车器件示例代码对其进行配置,使其正常工作(可以发送和接收数据)。
使用SPI-B外设尝试相同的步骤时,无法从配置的引脚获得任何有用的输出。
我正在分别为SDO,SCLK和SDI使用GPIO 13,14和14 (希望使用3线SPI并自己处理CS线路,因为总线上将有两个设备)。 我按如下方式配置它们:

// SPI_SDI_B
gPIO_setMode(obj->gPIOHandle,gPIO_NUMBER_24,gPIO_24_Mode_SPIMOB);
obj_setDirection(obj->gPIOHandle,gPIO_Number_24,gPIO_Direction_Output);//不需要

//////// gPIO_SDO_B obj_setMode(GPIO_13


//不需要

// SPI_CLK_B
GPIO _setMode(obj->gpioHandle,gPIO_NUMBER_14,gPIO_14_Mode_SPICLKB);
gPI_setDirection(obj->gPIOHandle,gPIO_NUMBER_14,gPIO_Direction_Output);//不需要 

在 HAL_setupGpios()函数内。

SPI句柄的初始化如下:

//初始化SPI句柄
obj->spiHandle = SPI_INIT((void *)SPIA_base_ADDR,sizeof(SPI_Obj));
obj->spiBHandle = SPI_INIT((void *)SPIB_base_ADDR,sizeof(SPI_Obj)); 
void HAL_setupSpiB(HAL_Handle Handle)
{
HAL_Obj *OBJ =(HAL_Obj *)Handle;

SPI_RESET(obj->spiBHandle);
SPI_setMode(obj_Mode_Master);
SPI_setTriWire(SPI->spiHandle, TriWire_ThreeWire_ThreeWire); //!!!
SPI_setClkPolarity (obj->spiBHandle,SPI_ClkPolarity_OutputRisingEdge_InputFallingEdge);
SPI_enableTx (SPI->spiBHandle);
SPI_enableTxFifoEnh (obj->enableBHandle);obj_spiTxFifo
(obj->spiHandle)

SPI_setBaudRate(obj->spiBHandle,(SPI_Baudrate_e)(0x000d));
SPI_setCharLength (obj->spiBHandle,SPI_CharLength_16_Bits);
SPI_setSuspend(}-->objBHandle,obj_TxSuspend_free);obj_enable(SPI->spiHandle;
SPI BspiHandle


// HAL_setupSpiB()函数结束 

我尝试复制与SPI-A完全相同的设置,但没有结果。

我已尝试将相同的GPIO配置为输出并切换其状态,我可以使用示波器成功查看这些状态。

我真的不知道为什么SPI-B外设在SPI-A使用相同设置时不工作。 在整个设置过程中,我一直在注意确保为B和A调用初始化例程。

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

    我忘记了使用CLK_enableSpibClock()函数启用SPI外设的时钟。 一切都如现在所应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好Lucas:

    感谢您发布您的解决方案!

    此致,
    Adam Dunhoft