Originally posted by CAS
View Post
I'll try to zip the project and put it here for anyone who needs it. It is a complete definition for the nucleo board, with pins selected and code generated for the following:
The SainSmart LCD 1602 shield for the arduino. It has also been configure so that the adafruit shield will work. It supports 3 sample lines, two rotary encoders, two toggle switches, a pushbutton
for pinpointing, USB AND SD card, a pwm for transmit, Two analog channels to support the addafruit 1.8 lcd shied and the Sainsmart. (these use to different channels for the push buttons). The pushbuttons on the shields are handled by switching resistors into an analog channel. It supports in addition, an analog channel for receive, an analog channel to digitize the transmit signal, and 3 other channels, one for the X,Y and G channels on a whites IDX/6000/5900 detector, so it can be used as a VDI, among other items. There are at least 2 spare I/O's. Going off memory at the moment.
Now I have to get the ADC running in continous mode, with dma control into a buffer. The demo code uses ADC3 which is not on the F411, so I have to change that to ADC1. It uses DMA to move the data into 1 memory location instead of a buffer.
Intention is to alternate channel samples between two channels, one for transmit, one for receive. Since it take about 15 cycles at 96 mhz to do a sample, this will allow digitizing the transmit and the receive with only 1 sample worth of skew between them. That way the channels will be interleaved in the buffer, with one being on even locations, the other on odd locations.
If you want to simply sample the data 8 times like the original code I posted, then grab the appropriate indexes into the array for one cycle. To integrate them, capture 10 cycles into the buffer, and process that.
The adc has a channel sequencer, so you can program it to digitize any of the channels in any sequence, and it will digitize 1 channel, move to the next, and digitize that one etc. By setting two channels, it will switch automatically between the channels. So tie one to the receive and one to the transmit, and let it rip. Now you have both, and can determine very accurately, the relationship between them....
I think that it might be possible with a resistor and cap on an I/O line, feeding into the amplifier after the receive signal has been amplified, to inject a bit's worth of noise, so that you can use decimation to increase the resolution.
I am guessing that is what the KROT3 is doing by using the DAC to feed into the amplifier. Been trying to figure out what he hell he was doing, but I think he is using that to inject a slight bit of
noise, which can be used to increase the resolution.....
Leave a comment: