Phy665a and MC33777: LOOPBACK_METHOD_2 not working Hi, I want to use LOOPBACK_METHOD_2 on Phy665a on a daisy chain (CADD=2) consisting of a single MC33777 device. However, no communication is possible. All transfers lead to a timeout. I verified that both TPL ports work in single-ended mode. Below is my configuration: Re: Phy665a and MC33777: LOOPBACK_METHOD_2 not working Hi @alexandrutabalai,
Could you or someone else from the BMS SW team please help with this question?
Thanks & BRs, Tomas Re: Phy665a and MC33777: LOOPBACK_METHOD_2 not working Hi @PhilippH , Are you calling Bjb_D1xx_SetMADD() prior to populating the TD with data? Can you please provide more details regarding your scenario?
Best regards,
Alex Re: Phy665a and MC33777: LOOPBACK_METHOD_2 not working Hi @PhilippH,
Can you update the Phy port configuration as shown in the attached image and try again?
When you send messages with MADD = 0, they should be sent from TPL_PORT_2 and received on TPL_PORT_3, which has reception enabled.
Best regards,
Alex Re: Phy665a and MC33777: LOOPBACK_METHOD_2 not working Hi, I tried with both Bjb_D1xx_SetMADD(BJB_CHAIN_ADDR, BJB_DEVICE_ADDR, true); and MADD = false. I also added Bjb_D1xx_LoopbackConfigure(BJB_CHAIN_ADDR, LOOPBACK_METHOD_2); However, I don't quite understand the purpose of Bjb_D1xx_SetMADD(). I thought a MADD-attribute was inherent to a TPL port, not a single device on the chain. Anyway, calling this function makes no difference, I still get PHY_TS_TIMEOUT == td->PhyTD->Status on every transmission. My setup now is a single MC33777 on a chain (CADD=2, Loopback method 2, hence connected to two TPL ports, Config is given in my original post). I want to transmit on one port and receive on the other (hence RESPCFG = Opposite). My initialization code for completeness, now with Bjb_D1xx_SetMADD() and Bjb_D1xx_LoopbackConfigure(): Std_ReturnType status = E_OK;
status |= (phyIf_init() == true) ? E_OK : E_NOT_OK; // Initialize transceiver
status |= (bjbConfiguration_initDriver() == true) ? E_OK : E_NOT_OK; // Initialize driver data structures (no communication yet)
Bjb_D1xx_SetMADD(BJB_CHAIN_ADDR, BJB_DEVICE_ADDR, true);
Bjb_D1xx_LoopbackConfigure(BJB_CHAIN_ADDR, LOOPBACK_METHOD_2);
status |= Bjb_D1xx_COM_WakeupChain(BJB_CHAIN_ADDR, &BmsTDCfg_1); // Append wakeup sequence to TD
status |= Bms_TD_InsertPhyEvent(&BmsTDCfg_1, PHY_TIMER, 2400); // Wait 2.4 ms for device to wake up
status |= Bjb_D1xx_Enumerate(BJB_CHAIN_ADDR, BJB_DEVICE_ADDR, &BmsTDCfg_1); // Append writing of INIT register to TD
status |= Bjb_D1xx_COM_ReadRegisters(BJB_CHAIN_ADDR, BJB_DEVICE_ADDR, BJBD1XX_SYS_COM_CFG_OFFSET, 1U, &BmsTDCfg_1); // Readback Init register
status |= (phyIf_sendAndWait(&BmsTDCfg_1) == true) ? E_OK : E_NOT_OK; Re: Phy665a and MC33777: LOOPBACK_METHOD_2 not working Thanks, now it works! Apparently, I did not test all combinations before. The calls of Bjb_D1xx_SetMADD() and Bjb_D1xx_LoopbackConfigure() are in fact not necessary.
View full article