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.
我在自定义板上启动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调用初始化例程。