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呢?这是我用分析仪抓取的波形,谢谢。
