DeltaSigma, DMA write into Array and wrong results

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
lock attach
Attachments are accessible only for community members.
OlPe_282281
Level 2
Level 2
Welcome! 10 replies posted 5 replies posted

Hi,

the attached project tries to sample a differentiell voltage into an array. Each time a button is pressed these shall be sampled and stored into an array. After aquiring the sample array shall be written out to the UART.

I'm using the Cy8CKit-059 and see useless values even I short cut the inputs and ground them (expecting to see 0V).

---8<--

Press Trigger button to sample

Start sampling

Dump samples:

Sample   0: -24576 mV

Sample   1: -28672 mV

Sample   2: -28672 mV

Sample   3: -28672 mV

Sample   4: -28672 mV

Sample   5: -28672 mV

Sample   6: -32768 mV

Sample   7: -28672 mV

Sample   8: -24576 mV

Sample   9: -28672 mV

Sample  10: -28672 mV

Sample  11: -28672 mV

Sample  12: -28672 mV

Sample  13: -28672 mV

Sample  14: -28672 mV

Sample  15: -28672 mV

Sample  16: -24576 mV

Sample  17: -24576 mV

Sample  18: -24576 mV

Sample  19: -28672 mV

Sample  20: -28672 mV

....

Sample 188: -24576 mV

Sample 189: -24576 mV

Sample 190: -32768 mV

Sample 191: -32768 mV

Sample 192: -28672 mV

Sample 193: -28672 mV

Sample 194: -28672 mV

Sample 195: -24576 mV

Sample 196: -28672 mV

Sample 197: -28672 mV

Sample 198: -32768 mV

Sample 199: -28672 mV

--- 8<----

I expect to see values between +/- 2048 mV, even not approx. 20V

What's gone wrong here and how can  fix it?

Thanks

0 Likes
1 Solution
lock attach
Attachments are accessible only for community members.
odissey1
Level 9
Level 9
First comment on KBA 1000 replies posted 750 replies posted

OlPe,

Attached is a demo project showing DellSig_ADC acquisition of 1000 points to RAM buffer using DMA. On button press, hardware trigger opens DMA channel until RAM buffer is full, then interrupt is fired to begin plotting acquired data. Once data output is complete, system is ready for the next trigger (button press). Button's Pin_17 is set to Resistive pull High. Button switch Debouncer is optional. Instead of the switch button, a digital pulse can be used to trigger the acquisition.

Project utilizes optional PSoC Annotation Library v1.0, which can be found here:

PSoC Annotation Library v1.0

/odissey1

DelSig_ADC-DMA-RAM_02a_async_A.png

DelSig_ADC-DMA-RAM_02a_async_B.png

DelSig_ADC-DMA-RAM_02a_async_SerialPlot.png

View solution in original post

2 Replies
lock attach
Attachments are accessible only for community members.
odissey1
Level 9
Level 9
First comment on KBA 1000 replies posted 750 replies posted

OlPe,

Attached is a demo project showing DellSig_ADC acquisition of 1000 points to RAM buffer using DMA. On button press, hardware trigger opens DMA channel until RAM buffer is full, then interrupt is fired to begin plotting acquired data. Once data output is complete, system is ready for the next trigger (button press). Button's Pin_17 is set to Resistive pull High. Button switch Debouncer is optional. Instead of the switch button, a digital pulse can be used to trigger the acquisition.

Project utilizes optional PSoC Annotation Library v1.0, which can be found here:

PSoC Annotation Library v1.0

/odissey1

DelSig_ADC-DMA-RAM_02a_async_A.png

DelSig_ADC-DMA-RAM_02a_async_B.png

DelSig_ADC-DMA-RAM_02a_async_SerialPlot.png

Thank you for your lib and answer! I'm inspired by this and changed my project accordingly!  Basically I've see same results as prior - shortened differential inputs to cable shield show raw samples near by 65536. I've applied 1000mV and now it works as expected. Probably I faced a numeric overrun before ...

0 Likes