Part Number: AMC1210
My customer is developing a 3 phase inverter project. They want to use 2pcs AD7401(AMC1305) to sample 2 phase current. The DSP they selected is F28066 which cannot deal with the delta-sigma bit stream so they want to use a AMC1210 to deal with the data from 2pcs AD7401(AMC1305). So my question is:
1. Do we have any reference design for the whole system including AMC1305 and AMC1210?
2. As AMC1305/AD7401 doesn't have a clock output pin, we need to use AMC1210 to generate a clk and feed into AD7401. For AD7401 and AMC1305, their maximum input frequency is 20 MHz. If we want to use AMC1210 to generate a 20MHz clock output, pin 16(CLK) frequency can be divided down by a programmed number between 1 and 8 by bits MD2–MD0 to generate the output clock. This means, to generate a 20MHz output, pin 16(CLK) can use 20MHz or 40MHzz or 60MHz or 80MHz(the maximum limilatation on CLK pin is 90MHz from our datasheet). Please help confirm if my above understanding is correct or not.
3. If we use CLK1 to feed into AD7401 No.1 and use CLK2 to feed into AD7401 No.2, do we need to worry about the clk synchronization issue between the 2 pcs AD7401? Can we just only use CLK1 to feed into 2pcs AD7401 at the same time?
4. For SH1 and SH2, is it a must-have function when measuring the current? can we leave them floating?
5. For PWM1 and PWM2, is it a must-have function when measuring the current? can we leave them floating?
1. There is not currently a reference design interfacing the AMC1210 to the AMC1305 specifically. However, there is a reference design which uses the AMC1106 which is also a second order modulator. The output will be essentially the same compared to the AMC1305, so the interface with the AMC1210 will be the same.
2. While there is technically a clock divider in the AMC1210, the way it operates is a little different than might be expected. The pulse width of every clock will always be equal to the pulse width of the original input clock to the AMC1210, regardless of the divider that is selected. The only difference is that when the clock is divided, the pulses will occur less often. This can cause some problems with devices that clock their data out on the falling edge of the clock signal, and this includes the AMC1305. Because of this, the input clock to the AMC1210 should not be divided if it is used with the AMC1305.
3. If you are driving the CLK pin from an external source and feeding it to the CLKx pins, they will be synchronized since they share the same source. You could also use one clock output sent to both of the modulators, but then you would lose the ability to independently turn the clock on and off to each of the modulators.
4. The SHx pins are used if you want to measure the modulator clock frequency or determine the number of bits that have been clocked into the device over a certain time period. This is not necessary if you are driving the modulator clock from the AMC1210. This pin can be left floating.
.5.The PWMx outputs are dependent on the application, and is usually used in something like resolver demodulation. For current sensing they are not necessary, and they can be left floating.
Precision ADC Applications
We are glad that we were able to resolve this issue, and will now proceed to close this thread.
If you have further questions related to this thread, you may click "Ask a related question" below. The newly created question will be automatically linked to this question.
In reply to Scott Cummins:
Thanks for your detailed reply. Customer has finished the demo but we met a issue about the SPI reading. Please see the attacehd for customer's schematic
Test 1. When we configure a register using SPI wirte command, the command can work normally.
The proof is that before we write anything to the REG0x01, AMC1210's CLKx doesn't have any clk output. After we write a value of 0x0013 to REG0x01, AMC1210's CLKx show up clk output. This means the write command to AMC1210 does works.
Test 2. When we read a register value using SPI read command, the command doesn't work and AMC1210 keeps output bit 0.
First, we write a value of 0x0013 to REG0x01(test 1 can prove this write command succeeds). Then we perform a SPI reading command to read out REG0x01
Below waveform is SPI read timing(Yellow=/WR, Blue=/RD, Purple=AD0)
If you zoom in the waveform, it is as below:
The first 8 bits of /RD signal is 1000,0001. This means reading REG0x01. In the waveform, AD0 always output bit 0 after the read command but it should ouptut a value of 0x0013
Then, we also tried to readout REG0x04 before writing anything to AMC1210. In theory, REG0x04 should have a default value of 0x7FFF. But AD0 also always output bit 0 when we perform a SPI reading command to REG0x04.
So my question is:
1. could you please help analyze what may cause the SPI reading command doesn't work?
2. Can you try to perform a read command using AMC1210 EVM and capture the SPI timing so I can compare it with customer's result?
In reply to Wayne Wang20:
Do you have any scope captures that also show the CS pin? Does CS remain low for the entire transaction?
I will look into getting an example waveform for you.
My mistake on the CS. I see that the CS pin is tied to ground in the schematic. I don't believe that that can be done with the AMC1210. Is there a way for the customer to control the CS pin with their master device? It should be held high until they wish to begin a transaction and then pulled low.
Thanks for your help. When we control the CS pin with their master device, the SPI reading issue is gone. Now we can write/read the regiters correctly.
But when we move on to sample the data following AD7401, we met a new issue.
The test condition is: Analog signal—>AD7401—>AMC1210's module 1—>C2000.
The configuration of AMC1210 module 1 is as below. And the module 1 final result is read out from AMC1210's REG0x1D
Test 1: When AD7401 analog input is floating, AD7401 output waveform is as below. It is a 50% duty cycle 0/1 pulse which means AD7401 output is corresponding to its input.
But the AMC1210 output code is as below. It is not a constant value
Test 2. Input a +100mV DC voltage to AD7401. AMC1210 output code is as below. And its value is around 9018
Test 3. Input a -100mV DC voltage to AD7401. AMC1210 output code is as below. And its value is around 57780. So If you compare between Test 3 and Test 2, the -100mV sample result value is higher than +100mV sample result value.
So can you help analyze what may cause the outptu code mismatch with the actual input? Is there anything wrong with customer's REG configuration? And do we have any reference configuration for customer? thanks.
Add some more test.
We input a 320mVpp, 100Hz Sine wave to AD7401. AMC1210 output code is below. It seems the nagative period and positive period are mismatch. Hope this waveform could give you some hint. Thanks.
We have found the root cause. Customer made a mistake on the C2000 side dealing with the data format. So no need to worry about this question any more. Thanks.
I'm glad the customer got their problem fixed.
Sorry to bother again. Now customer has successfully got the right output data from AMC1210. But we still have some concern about AMC1210's ACK signal.
In customer's use case, they only use module 1 and module 2.
For module 1 and module 2, their CLK1 and CLK2 signal are fed by AMC1210 internal. And their IN1 and IN2 are from 2pcs AD7401 respectively.
For module 3 and module 4, IN3, IN4, CLK3 and CLK4 are all connected to GND. And customer didn't program any register for module 3 and module 4 which means their registers are both in default status.
So I have below question about the ACK siganl:
1. For module 3 and module 4, will they also trigger ACK signal?
2. For module 1 and module 2, will they always trigger their own acknowledge flag in below bit 13 and bit 12 at the same time? Aka if module 1 and module 2 always operate simultaneously？
3. In customer's system, the target PWM carrier frequency is 12kHz. But they found that ACK pin's frequency is only 4kHz. This means every 3 PWM cycles can customer get a valid output code. This is not acceptable to control the motor. So my question is how can we determine how long it is from 'module starts to work' to 'output data is available'？ Is there any way we can do to accelerate the 'process speed' so we can get more valid data in a fixed time length. Is this speed determined by AD7401 or AMC1210?
Do you have any advice on my question in previous reply?
And one more question, when we read out the data from REG 0x1D, is it a signed data or unsigned data? How should we deal with the raw data from REG 0x1D to convert it to the final result corresponding to input?
For example, customer inputs a Sine wave to —>AD7401—>AMC1210—>C2000
When customer uses the raw data from AMC1210 REG 0x1D as the final result , the result is as below
When customer deal with the raw data (Read_Dat1) from AMC1210 REG 0x1D in below format converting it to final result(ReadDatV), the result of ReadDatV is as below:
So from above test, we could see that only when we dealed with the raw data, can it represent the actual input signal. So I just want to double check with you if this is normal? Is the way that customer deal with the data as a signed data correct? Thanks.
All content and materials on this site are provided "as is". TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with regard to these materials, including but not limited to all implied warranties and conditions of merchantability, fitness for a particular purpose, title and non-infringement of any third party intellectual property right. No license, either express or implied, by estoppel or otherwise, is granted by TI. Use of the information on this site may require a license from a third party, or a license from TI.
TI is a global semiconductor design and manufacturing company. Innovate with 100,000+ analog ICs andembedded processors, along with software, tools and the industry’s largest sales/support staff.