This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
First of all, thank you for taking time to read my post.
My team is trying to design a EMG system with 16 channels. We try to use multiple ads1298 (possibly 4) as the adcs. The MCU we choose is a PIC24f 44pin. We have some issues that would like some helps from the forum:
1. We are planning to use bipolar configuration with +-2.5V power supply, 4kHz sampling rate for each channel. What should i use for Vref+ and Vref- ? (I am still new to how adc works). I read somewhere that Vref+ is the max voltage that the adc can convert, does that mean that we set Vref+ = +2.5V?, how about Vref-. Also I read that Vref = Vref+ - Vref- = dynamic range?
2. Since the MCU will be communication with multiple ads1298. The adcs need to be connected to spi through either cascade or daisy-chain configuration. Since we will not be able to control settings of each adc device in daisy-chain configuration, we decided to use the cascade configuration. Now the main concern is that if we will be able to make sure there will be no sample loss due to MCU communicating with each device in sequence. (for example, if the MCU is getting data from device 4, will the data in device 1 be replaced by new samples since the MCU can not talk to all 4 devices simultaneously?)
3. Trough some research, I also found out that DMA can be used to smooth out data throughput in MCU. So I am wondering if I should use DMA with SPI to alleviate problem 2. (I am also new with DMA, never used it before.)
4. The data collected from adcs will than be processed (or just leave it raw), then send to MatLab in PC through UART. So another question is that if I should use DMA with UART as well (or just with SPI) to make data transition more smooth.
I would really appreciate it if any one can help me with these questions.
Thank you
Hello Xinyuan,
Thank you for your questions!
1. All 8 ADCs in the ADS1298 will compare the differential voltage at the input of each channel ([INxP - INxN] x Gain) to the differential reference voltage (VREF = VREFP - VREFN) and make a conversion. Therefore, the reference voltage sets the maximum differential amplitude that the ADC can measure, while the minimum is limited by the noise of each channel. The ratio between min and max measurable signals is how you get dynamic range.
VREFN must be tied to your negative analog supply, AVSS = -2.5 V. So for VREF = 2.4 V, VREFP will measure -0.1 V with respect to ground. Likewise, for VREF = 4 V, VREFP will measure +1.5 V with respect to ground. Both of these options are offered internally, so you do not have to connect an external voltage to VREFP. Simply enable the internal reference buffer and choose the 2.4-V or 4-V VREF setting. The external connections that you still need are shown in Figure 31.
2. The ADS1298 features 8 simultaneously-sampling channels. For a data rate of 4kSPS, all 8 channels will be synchronized and new data will be available every 250us, as indicated by the falling edge of /DRDY. Your SCLK will need to be fast enough to clock out the STATUS word (24 bits) plus 8ch x 24bits = 216 bits per device before the next samples are ready. Using Equation 6 on page 58, your minimum SCLK will need to be: SCLK = 2 devices x [(4kSPS x 24 bits x 8 ch) + 24 ] = 1.537 MHz.
You may still daisy-chain the devices together if you want the register settings to be the same; however, there are some challenges with inserting an extra "dead bit" as shown in Figure 67. A cascaded configuration will still work fine as long as each device's /CS pin is tied to a separate pin on the MCU. There will be some added delay between reading from the first device and reading from the second device, so SCLK may need to be a little faster to make sure everything is read before the next samples are ready.
Questions 3. and 4. are not really pertinent to the ADS1298 but rather to your MCU. My gut feeling is that you probably don't have to use DMA since this is a relatively slow-speed application.
Best Regards,