Noise is always an issue. I could do a serial port over USB, or TTL USART, but I thought that the SD card would be the most quiet, not requiring any electrical connection to the PC. It also means that I automatically have my recordings available for regression testing.
On Fri, Mar 18, 2022 at 12:32 PM Marcus Müller <mmuel...@gnuradio.org> wrote: > Ah cool! Thanks for clarifying :) This sounds to be a rather nice setup, > analog-wise! > > Yeah, then just dumping the raw 32bit unsigned to SD Card is probably > easiest. > > (by the way, this is << 1Mb/s, so just dumping the raw data over a UART or > SPI interface > to some serial-to-USB converter might work as well to get the data into > your PC. If your > ARM does have USB2 built-in, then that would also be a rather cool thing, > but knowing the > varying quality of chip vendor USB hardware abstractions, that might or > might not be easy > to implement :) In both cases, UART/SPI serial output converted to USB, or > native USB, > you'd probably have to afterwards write a schmall C/C++ driver, so that > SoapySDR or GNU > Radio directly can talk to it.) > > Cheers, > Marcus > > On 18.03.22 19:26, david vanhorn wrote: > > I'm using a PCB that I designed with an ARM chip, codec, and SD card for > logging, as my > > data capture platform. > > Feeding that is a QSD (Tayloe) front end that I designed, specifically > for the 630m ham > > band, converting down to 1kHz differential I and Q signals to the codec, > which has a 105dB > > SNR. > > The front end appears to have a 90dB linear dynamic range so far as I > can measure with my > > equipment. I'll improve that if I can. > > Once I capture to SD, then I can pull the SD and process on the PC to > develop weak signal > > detection. > > > > > > > > On Fri, Mar 18, 2022 at 12:12 PM Marcus Müller <mmuel...@gnuradio.org > > <mailto:mmuel...@gnuradio.org>> wrote: > > > > Hey :) > > > > CSV might or might not be convenient, but if C or assembler is your > tool: The things that > > the GNU Radio file source reads or the file sink writes is exactly > what you get when you > > take a buffer of samples and do an `fwrite` on that :) Just a dump > of the raw memory to a > > file. 32 bit unsigned should be directly digestible by GNU Radio > (even if there were > > endianness issues – you can just read as bytes and reshuffle as > needed :)). > > > > I didn't fully get how you're currently interfacing your hardware. > Care to explain in a > > bit more breadth? What are the components of your system, and how > does the computer > > running GNU Radio relate? > > > > Best and slightly excited regards, > > Marcus > > > > On 18.03.22 18:37, david vanhorn wrote: > > > Hi! > > > > > > I'm trying to interface some radio hardware I built to GnuRadio > by way of data > > captured to > > > SD cards. > > > I have two channels (I and Q) of 32 bit unsigned data internally, > and I originally > > assumed > > > CSV would be the easy path, but now I see it's not. > > > Coming in through the PC sound card is not an option for me, I'm > using a particular > > codec > > > selected for the application, and my goal is to develop signal > processing > > algorithms to > > > then be implemented back on my processor in C or ASM. > > > > > > I suppose it would be easiest if I rework my hardware to log data > as if it were the > > > "Signal Source" block with complex output. > > > Where can I see what that looks like at the level of raw data? > > > > > > > > > > > > > > > On Fri, Mar 18, 2022 at 4:59 AM Marcus Müller < > mmuel...@gnuradio.org > > <mailto:mmuel...@gnuradio.org> > > > <mailto:mmuel...@gnuradio.org <mailto:mmuel...@gnuradio.org>>> > wrote: > > > > > > Hi David, > > > > > > you could write a quick python block that just reads values > from the CSV file > > and outputs > > > them. That'd be a very nice, basic exercise, and I think our > freshly overhauled > > > tutorials[1] should bring you there very quickly! > > > If you want help with that, hit us up in this mailing list > (ideally after > > reading the > > > tutorials up to the point of roughly understanding how to > write (embedded) Python > > > blocks), > > > and tell us more about the data in your CSV files. > > > > > > Alternatively, you could also write a converter of CSV to a > format that GNU > > Radio by > > > itself already has a reader for – and the main candidate here > would probably > > just be > > > plain > > > raw data files (as e.g. numpy's `ndarray.tofile("filename")` > does) – the File > > Source > > > could > > > directly read that. But with our freshly rewrite Wavfile sink > and source > > blocks, we can > > > write and read most audio files, just as well. > > > > > > Then your flow graph could do the signal processing you want > – e.g frequency > > translation, > > > low-pass filtering… and finally output it to any device that > you have a GNU Radio > > > interface to (e.g., your sound card). The hardware runs at a > sample rate – GNU > > Radio > > > itself just tries to feed it as fast as possible. So, the > signal processing in > > GNU Radio > > > itself isn't concerned with rate at all! > > > > > > Hope this helps, > > > Marcus > > > > > > [1] https://tutorials.gnuradio.org < > https://tutorials.gnuradio.org> > > <https://tutorials.gnuradio.org <https://tutorials.gnuradio.org>> > > > > > > PS: you'll often find me online, recommending not to use CSV > as a sample > > storage format. > > > I'll do the same to you here, but not because I think it's in > any way invalid > > to have > > > data > > > in CSV files; I just want to point out it might be worth > thinking about using > > something > > > else. So take this with a "I think it's pretty cool you're > doing this!". > > > > > > That has the reasons that > > > a) unless you're more restricted than "CSV" says, you don't > know how many bits > > are there > > > per sample, as numbers might be represented in different > lengths, so seeking > > exactly only > > > works by reading and understanding the whole file up to the > point you seek to, > > > b) conversion of floating point numbers to human-readable > form incurs rounding > > errors, > > > and > > > that can really wreck your day if you need to rerun *exactly* > the same > > experiment twice, > > > c) printing numbers as text is really inefficient, both > storage-wise as well as > > compute > > > wise (which will only matter at higher sampling rates) and > sometimes, but only > > sometimes, > > > ( d) people say that CSV is good because it's human-readable, > but I challenge > > anyone to > > > read a text file with only 10000 values and be happier about > that than if he > > used a tool > > > that displayed the values graphically, zoomably, and then > allows for inspection > > of single > > > values once zoomed sufficiently in.) > > > > > > > > > On 18.03.22 04:55, david vanhorn wrote: > > > > I've done a little with Gnuradio a couple years ago, but > I'd now like to > > apply it to a > > > > serious problem. > > > > > > > > I have a design I'm working on that will output raw data > that could be > > interpreted > > > as an > > > > audio stream centered on 1kHz. I'd like to work on > extracting CW signals > > that are > > > rather > > > > slow, from a rather narrow bandwidth, and see how far down > into the noise I can > > > actually > > > > extract the signals. > > > > > > > > Is there a block that can bring in CSV data from a file at > a specific rate, and > > > serve as > > > > the input to my CW detection system? > > > > > > > > > > > > -- > > > > K1FZY (WA4TPW) SK 9/29/37-4/13/15 > > > > > > > > > > > > -- > > > K1FZY (WA4TPW) SK 9/29/37-4/13/15 > > > > > > > > -- > > K1FZY (WA4TPW) SK 9/29/37-4/13/15 > -- K1FZY (WA4TPW) SK 9/29/37-4/13/15