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.

[参考译文] TDA4AEN-Q1:TDA4AEN (mid) mcspi 问题

Guru**** 2391235 points
Other Parts Discussed in Thread: TDA4VM

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1499549/tda4aen-q1-tda4aen-mid-mcspi-issue

器件型号:TDA4AEN-Q1
Thread 中讨论的其他器件:TDA4VMTDA4VL、TDA4VH

工具/软件:

 我正在尝试在 TDA4AEN (TDA4 MID)上测试 MCSPI、但它始终在 SPI 总线上输出0x0208、即使发送不同的数据、例如0x5a5a 或0x3333等。但它在 TDA4 AL (Low)和 TDA4 AH (High)上运行相同的代码

中高/低之间是否有任何差异?

静态 uint8_t Us_Platform_Spi_Init (void)

Uint8_t spiInitStatus = ME_NOT_OK;
Uint8_t spiInitRetryCount = US_PLATFORM_MAX_RETRY_COUNT_SPI;

SPI_HWAttrs SPI_cfg =

.baseAddr = CSL_MCSPI0_CFG_BASE、
.intNum = CSLR_MAIN2MCU_LVL_INTR0_IN_MCSPI0_INTR_SPI_0、
pinMode =(uint32_t) SPI_PINMODE_4_PIN、
.chNum = MCSPI_CHANNEL_0、
.chMode = MCSPI_SINGLE_CH、
enableIntr =(bool) me_false、
.inputClkFreq = 48000000U、
.initDelay = MCSPI_INITDLY_0、
.rxTrigLvl = MCSPI_RX_TX_FIFO_SIZE、
.txTrigLvl = MCSPI_RX_TX_FIFO_SIZE、
.chnCfg =

[0]=

.csPolarity = MCSPI_CS_POL_LOW、
.dataLineCommMode = MCSPI_DATA_LINE_COMM_MODE_7、
.tcs = MCSPI_CH0CONF_TCS0_ZEROCYCLEDLY、
.trMode = MCSPI_TX_RX_MODE、
}、
}、
.rxDmaEventNumber = CSL_PDMA_CH_MAIN_MCSPI0_CH0_RX、
.txDmaEventNumber = CSL_PDMA_CH_MAIN_MCSPI0_CH0_TX、
};

spi_cfg.edmaHandle =(void *) MCSPIApp_udmaInit (&spi_cfg);
spi_cfg.dmaMode =(bool) true;
SPI_DEVICE_Instance = 0;

/*执行 SPI 初始化并在失败时重试*/
执行

spi_init ();

if ((spi_socSetInitCfg (SPI_MCSPI_MCSPI_DOMAIN_MAIN、spi_device_instance、&spi_cfg))= 0)

if ((SPI_Handle = SPI_open (SPI_MCSPI_MCSPI_DOMAIN_MAIN、SPI_DEVICE_Instance、&params))!= NULL)

SpiInitStatus = ME_OK;
US_ECUFlag Diagnostic_Clr (DIAG_FLAG_ECU_SPI_Initial_ERR);
break;/*当 SPI 初始化成功时退出循环*/
}
暴露

;/*无操作*/
}
}
暴露

;/*无操作*/
}
US_ECUFlag Diagnostic_Set (DIAG_FLAG_ECU_SPI_Initial_ERR);
SpiInitRetryCount--;

} while (spiInitRetryCount!=零);

memset ((void *) SPITX、0x33、64*4*2);
while (1)

if ((chtest &1)== 1)

US_DSI3Drv_triggerDmaSpiTxRx (0、(uint8_t *) SPITX[0]、(uint8_t *) SPITX[0]、64);
}
if ((chtest &4)== 4)

US_sleep (2);
}
if ((chtest &2)== 2)

US_DSI3Drv_triggerDmaSpiTxRx (0、(uint8_t *) SPITX[1]、(uint8_t *) SPITX[1]、64);
}
US_sleep (2);
}

退货(spiInitStatus);
}