Part Number: ADS1299EEGFE-PDK
Other Parts Discussed in Thread: ADS1299
Hello,
We've been working with the ADS1299 demo board being controlled by a RaspberryPi 4. Essentially, the job of the RaspberryPi 4 is to setup the ADS1299 board and then to enable RDATAC and continuously read in the data from it using SPI. This data is then plotted and displayed using PyQtGraph like so.

The display looks good, except for that it very often gets these "spikes". The data being displayed is only using the internal Test Signal and should just depict a square wave.


When we connect the demo board to the computer with the official software, the data is able to come through perfectly clear, but when connected to the Raspberry Pi it has a lot of incorrect data on the line. The ADS demo board usually is powered from the Raspberry Pi using the 5V, 3.3V and Gnd connections, but even when the board was powered through a power supply and the mmb0 board, and communicating with the raspberry pi the spikes issue persisted.
Currently, I have all of the channels except for the first channel disabled, but through the oscilloscope we actually see data in channels 6, 7, and 8.

The corresponding data that the Raspberry Pi read in is below

The Raspberry Pi is reading exactly what it should be from the SPI, however the MISO line seems to have interference often which looks to cause these spikes
Zoomed in views of channels on oscilloscope:


Status Register
1100 0000 0000 0000 0000 0000 <-> 12,582,912


Channel 1
1111 1110 1011 0100 1011 1000 <-> 16,692,408


Channel 6
0000 0000 0000 1110 0000 0000 <-> 3,584


Channel 7
0000 0000 0000 0111 1111 0101 <-> 2,037


Channel 8
1010 0101 1110 0000 0000 0000 <-> 10,870,784
Register Values
# --- Write to the Registers --- #
# Global Settings Across Channels
self.Reg_Write(REG_CONFIG1, 0xD6) # Was D4
self.Reg_Write(REG_CONFIG2, 0xD0)
self.Reg_Write(REG_CONFIG3, 0xE0)
self.Reg_Write(REG_LOFF, 0x00)
# Channel-Specific Settings
self.Reg_Write(REG_CH1SET, 0x65) # Test Signal
self.Reg_Write(REG_CH2SET, 0xF1) # Normal Electrode Input
self.Reg_Write(REG_CH3SET, 0xF1) # Input Shorted
self.Reg_Write(REG_CH4SET, 0xF1) # Power Supply Measurement
self.Reg_Write(REG_CH5SET, 0xF1)
self.Reg_Write(REG_CH6SET, 0xF1)
self.Reg_Write(REG_CH7SET, 0xF1)
self.Reg_Write(REG_CH8SET, 0xF1) #50
self.Reg_Write(REG_BIAS_SENSP, 0x00)
self.Reg_Write(REG_BIAS_SENSN, 0x00)
self.Reg_Write(REG_LOFF_SENSP, 0x00)
self.Reg_Write(REG_LOFF_SENSN, 0x00)
self.Reg_Write(REG_LOFF_FLIP, 0x00)
# GPIO and OTHER Registers
self.Reg_Write(REG_GPIO, 0x0F) # Set this up 0Fh
self.Reg_Write(REG_MISC1, 0x00)
self.Reg_Write(REG_MISC2, 0x00)
self.Reg_Write(REG_CONFIG4, 0x00) # Set this up 00h
Any help would be greatly appreciated, if any more information is needed/wanted just let me know!









