Other Parts Discussed in Thread: AMC1303E2520
Hi, I'm using AMC1303E2520 to measure the current, which has a Manchester-Encoded Delta-Sigma modulator, and I iinit the SDFM module with the following code:
void SDFM_init()
{
//
// GPIO Init
//
EALLOW;
GpioCtrlRegs.GPDQSEL2.bit.GPIO122 = 3; //GPIO ASYNC
GpioCtrlRegs.GPDGMUX2.bit.GPIO122 = 1;
GpioCtrlRegs.GPDMUX2.bit.GPIO122 = 3;
EDIS;
//
// Configure Input Control Mode: Manchester decoded
//
EALLOW;
Sdfm1Regs.SDCTLPARM1.bit.MOD = 2; //2: The data from the modulator is Manchester decoded
EDIS;
//
//Configure Data filter modules filter type, OSR value and filter.
//
EALLOW;
Sdfm1Regs.SDDFPARM1.bit.FEN = 1; ////Enable filter
Sdfm1Regs.SDDFPARM1.bit.SST = 3; //Sinc3 filter
Sdfm1Regs.SDDFPARM1.bit.DOSR = 255; //over sampling
Sdfm1Regs.SDDFPARM1.bit.AE = 1; //Ack enable
Sdfm1Regs.SDDPARM1.bit.DR = 0; //0->16-bits, 1->32-bits
Sdfm1Regs.SDDPARM1.bit.SH = 9; //shift 9 bits
Sdfm1Regs.SDMFILEN.bit.MFE = 1; //Master Filter bit is enabled
EDIS;
}
When there's no signal, Sdfm1Regs.SDDATA1 read nothing.
Next, a Deita-Sigma signal started to transmit, Sdfm1Regs.SDDATA1 register locked to 1000000000000000(Binary) and stop updating, which is not a correct behavior.
The correct read out should look like this(it should update automatically and read almost zero):
It will be awesome if the issue can be solved.
Regards,