Estoy usando el controlador MPC5748G, ya que quiero comunicar mi SPI con el chip SBC incorporado, es decir, MC33905. Al revisar la hoja de datos, estoy enviando los comandos correspondientes a SBC a través de las API de SPI para INIT WDG, INIT regd, ... Por favor, consulte el archivo adjunto para el conjunto de comandos que he enviado. Ahora tengo que observar la línea MISO, ¿cuál debería ser la respuesta de SBC después de que enviemos cada comando que no estamos recibiendo? Por favor, ayúdeme a comprender la respuesta de SBC para cada comando SPI. He intentado depurarlo y capturar las líneas en el analizador Beagle SPI. Estoy recibiendo algunos datos, pero no estoy seguro de que los datos sean correctos o no. ¿Cómo puedo leer el modo de SBC? Esta es la tarea principal para nosotros.
Por favor, ayúdame en esto, ya que es de alta prioridad.
Este es mi código
volatile Spi_StatusType SpiStatus01;
unsigned short int Init_WDG[1] = {0x4C10}; // command to initialize WDG
unsigned short int Init_Regd[1] = {0x4A00}; // Command to initialize registers
unsigned short int Init_Misc[1] = {0x5000}; // Command for Misc initializations
unsigned short int Init_WDG_Time[1] = {0x541F}; // command to initialize WDG time
unsigned short int WDG_Refresh[1] = {0x5A00}; // command to refresh WDG
unsigned short int Read1[1] = {0x2500}; // Command to read the status of SBC
unsigned short int Read2[1] = {0x1F00}; // command to read the status of SBC
unsigned short tc_01[1],tc_02[1]; // Receive buffers
/*******************************************************************************
** Local Function Declarations **
*******************************************************************************/
/*******************************************************************************
** Function Definitions **
*******************************************************************************/
/*Init test case*/
void TC_Init()
{
uint8 i;
/* Spi initialization */
Spi_Init(&SpiDriver_0);
/* Get the status of Spi after initialization */
SpiStatus01 = Spi_GetStatus();
Spi_WriteIB(SpiConf_SpiChannel_SpiChannel_0,Init_WDG);
Spi_SyncTransmit(SpiConf_SpiSequence_SpiSequence_0);
for(i=0; i<=100; i++);
Spi_WriteIB(SpiConf_SpiChannel_SpiChannel_0,Init_Regd);
Spi_SyncTransmit(SpiConf_SpiSequence_SpiSequence_0);
for(i=0; i<=100; i++);
Spi_WriteIB(SpiConf_SpiChannel_SpiChannel_0,Init_Misc);
Spi_SyncTransmit(SpiConf_SpiSequence_SpiSequence_0);
for(i=0; i<=100; i++);
Spi_WriteIB(SpiConf_SpiChannel_SpiChannel_0,Init_WDG_Time);
Spi_SyncTransmit(SpiConf_SpiSequence_SpiSequence_0);
for(i=0; i<=100; i++);
//module initialisation
Can_Init(&CanConfigSet_0);
// set the controller mode to START
Can_SetControllerMode(0,CAN_T_START);
Can_SetControllerMode(1,CAN_T_START);
while (1)
{
Spi_WriteIB(SpiConf_SpiChannel_SpiChannel_0,WDG_Refresh);
Spi_SyncTransmit(SpiConf_SpiSequence_SpiSequence_0);
for(i=0; i<=100; i++);
Spi_WriteIB(SpiConf_SpiChannel_SpiChannel_0,Read1);
Spi_SyncTransmit(SpiConf_SpiSequence_SpiSequence_0);
for(i=0; i<=100; i++);
Spi_ReadIB (SpiConf_SpiChannel_SpiChannel_0,tc_01);
Spi_WriteIB(SpiConf_SpiChannel_SpiChannel_0,Read2);
Spi_SyncTransmit(SpiConf_SpiSequence_SpiSequence_0);
for(i=0; i<=100; i++);
Spi_ReadIB (SpiConf_SpiChannel_SpiChannel_0,tc_02);
for(i=0; i<=100; i++);
/*Transmit test case */
Test_transmit(3,1,1);
}
}