Last week my DSOX3EMBD software upgrade for my Agilent DSO-X 3014A oscilloscope arrived, which enables serial triggering and analysis for the I²C and SPI procotol. In this article I want to give a brief overview what is possible with the upgrade and how it looks like.
As I wanted to implement the communication between an Atmel ATxmega128A1 and a Maxim DS1340 RTC for my current clock project, this was the perfect chance to test the functions under real conditions. The setup was real simple. Just connect the SDA and SCL lines which the µC, add two pull-up resistors to 3.3V and supply the RTC with power. As I wanted to use the hardware support for I²C (Atmel calls this TWI) of the xmega device the application note AVR1308 - Using the XMEGA TWI was a nice start. After implementing the software part I connected to the channels 1 and 2 to the SCL and SDA lines and selected the serial decoding option using the Serial button. After selecting the correct channels in the Signals submenu the oscilloscopes detected the threshold voltages automatically correct and displayed the transmitted data.
Besides using the usual trigger options the oscilloscope also adds to possibility to trigger on special I²C events such as Start/Stop/Restart conditions, ACK and NACK or special address or data patterns. In the shown example I wanted to check if the RTC chip transmits the correct month. So I triggered on the Write data 0x04 to address 0x68 pattern which tells the RTC to send the month byte. In the serial analysis line above we can see the 68WA 04A S68RA 03~A packet, which tells us that we sent an 0x04 write command to the address 0x68 which was acknowledged by the slave and after a restart condition we sent a read command to the same address which replied with a 0x03 data byte which the master did not acknowledge (as he did not want to read further data). So I could easily see, that the RTC sent the correct month.
For debugging longer communication sequences there is the possibility to display a Listener frame, which summarizes all display data in a nice table view. In the displayed example we see to start of the conversion with my RTC which transmits the first four bytes
of the current date (12:20:30 03.03.2012). It is also possible to export the Listener data as a CSV file and receive something linke
Marked,Time,Serial Bus,Restart,Address,Data,Missing Ack ,-58.00ns,Serial1,,68W,00, ,104.4us,Serial1,X,68R,30,X ,144.9us,Serial1,,68W,01, ,247.1us,Serial1,X,68R,20,X ,287.6us,Serial1,,68W,02, ,389.8us,Serial1,X,68R,12,X ,430.2us,Serial1,,68W,03, ,532.5us,Serial1,X,68R,01,X ,572.9us,Serial1,,68W,04, ,675.1us,Serial1,X,68R,03,X ,715.5us,Serial1,,68W,05, ,817.7us,Serial1,X,68R,03,X ,858.1us,Serial1,,68W,06, ,960.4us,Serial1,X,68R,12,X
A few weeks ago, I used an HMO724 oscilloscope at our university lab to do similar measurements, but the I²C decoding option is by far not comparable. It worked only when setting to channel scales to 500 mV or 1 V and triggering was only working when the corresponding channels were also displayed and Start/Stop triggering wasn't working for me at all. So I was rather disappointed and hoped that the Agilent would performed better and indeed it does! It is very intuitive to use and everything I used just works!
As I did not use any SPI communication in my current project I used a ATxmega256A3BU microcontroller which communicates via SPI with its LCD. For debugging the SPI communication I connected the SCK, MOSI, MISO and CS lines to the channels 1 to 4 and set them up in the Signals menu.
The oscilloscope displays a nice overview if you enable the Display Info checkbox which summarizes the current configuration and threshold voltages. In addition to threshold voltages it is possible to set the clock to trigger on rising or falling edges and CS can be setup up as positive or negative and even as a clock timeout which for example is used by the WS2801 LED driver.
As the SPI has to predefined data with the oscilloscope display the length of the data transmission after each cycle. As in the I²C case there is also the possibility to summarize the communication in a Listener view. Triggering is possible data patterns
on the MOSI or MISO line.
The DSOX3EMBD is a very nice upgrade to the 3000X series oscilloscopes from Agilent. It is very intuitive to use and offers a lot of extra options. Besides having to option to upgrading to 16 channels (instead of 8 for the 2000X series) I made the right decision to spend some extra money for the 3000X series to have the possibility to upgrade to several triggering, decoding and analysis options. I think this I²C/SPI option will save me a lot of debugging time in the future.