TMS320F280039C: PMBUS

Part Number: TMS320F280039C


    PMBUSGpio_Init();
    PMBUS_Init();

    uint16_t i;
    for(i=0; i<256; i++)
    {
        tx_buffer[i] = 0x77;
    }


    while(complete != 1);
    if(rx_buffer[0] != 0x88)
    {
        ESTOP0;
        ErrorStop();
    }
    ESTOP0;
    RightStop();
}

__interrupt void PMBUS_INT(void)
{
     status = PMBus_getStatus(PMBUSA_BASE);

     if( (status & PMBUS_PMBSTS_DATA_READY) == PMBUS_PMBSTS_DATA_READY )
     {
         num_of_bytes =  PMBus_getSlaveData(PMBUSA_BASE, &rx_buffer[0], status);
         PMBus_ackTransaction(PMBUSA_BASE);
//         PMBus_ackCommand(PMBUSA_BASE,PMBUS_CMD_READ_VIN,status,&rx_buffer[0]);
     }
     if( (status & PMBUS_PMBSTS_DATA_REQUEST) == PMBUS_PMBSTS_DATA_REQUEST )
     {
         PMBus_putTargetData(PMBUSA_BASE, &tx_buffer[0],2,1);
         complete = 1;
     }
     Interrupt_clearACKGroup(INTERRUPT_ACK_GROUP8);
}

void PMBUS_Init()
{
    EALLOW;
    uint32_t moduleFreq;

    PMBus_disableModule(PMBUSA_BASE);
    PMBus_disableI2CMode(PMBUSA_BASE);
    PMBus_deassertAlertLine(PMBUSA_BASE);

    moduleFreq = PMBus_configModuleClock(PMBUSA_BASE, 10000000, 120000000);//moduleFrequency,sysFrequency
    PMBus_configBusClock(PMBUSA_BASE, PMBUS_CLOCKMODE_STANDARD, moduleFreq);
    PMBus_initTargetMode(PMBUSA_BASE, 0x6A, 0x7F);
    PMBus_configTarget(PMBUSA_BASE, PMBUS_TARGET_AUTO_ACK_1_BYTES | PMBUS_TARGET_ENABLE_PEC_PROCESSING);
    PMBus_disableInterrupt(PMBUSA_BASE, PMBUS_INT_ALL);
    PMBus_enableInterrupt(PMBUSA_BASE, PMBUS_INT_DATA_READY | PMBUS_INT_DATA_REQUEST);

    PMBus_enableModule(PMBUSA_BASE);
    EDIS;
}

我正在使用39C进行PMBUS读字类型的工程,这是我的从机代码,为什么从机没有发送PEC呢?这是我用分析仪抓取的波形,谢谢。

image.png