## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
##
-# SPI protocol decoder
-
import sigrokdecode as srd
'''
'format': ['Data format', 'hex'],
}
annotations = [
- ['MISO/MOSI data', 'MISO/MOSI SPI data'],
- ['MISO data', 'MISO SPI data'],
- ['MOSI data', 'MOSI SPI data'],
- ['Warnings', 'Human-readable warnings'],
+ ['miso-data', 'MISO SPI data'],
+ ['mosi-data', 'MOSI SPI data'],
+ ['warnings', 'Human-readable warnings'],
]
def __init__(self):
self.bitcount = 0
self.mosidata = 0
self.misodata = 0
- self.bytesreceived = 0
self.startsample = -1
self.samplenum = -1
self.cs_was_deasserted_during_data_word = 0
self.out_bitrate = self.register(srd.OUTPUT_META,
meta=(int, 'Bitrate', 'Bitrate during transfers'))
- def report(self):
- return 'SPI: %d bytes received' % self.bytesreceived
-
def putpw(self, data):
self.put(self.startsample, self.samplenum, self.out_proto, data)
self.putpw(['DATA', self.mosidata, self.misodata])
# Annotations
- self.putw([0, ['%02X/%02X' % (self.mosidata, self.misodata)]])
- self.putw([1, ['%02X' % self.misodata]])
- self.putw([2, ['%02X' % self.mosidata]])
+ self.putw([0, ['%02X' % self.misodata]])
+ self.putw([1, ['%02X' % self.mosidata]])
# Meta bitrate
elapsed = 1 / float(self.samplerate) * (self.samplenum - self.startsample + 1)
self.put(self.startsample, self.samplenum, self.out_bitrate, bitrate)
if self.cs_was_deasserted_during_data_word:
- self.putw([3, ['CS# was deasserted during this data word!']])
+ self.putw([2, ['CS# was deasserted during this data word!']])
# Reset decoder state.
self.mosidata = self.misodata = self.bitcount = 0
- # Keep stats for summary.
- self.bytesreceived += 1
-
def find_clk_edge(self, miso, mosi, sck, cs):
if self.have_cs and self.oldcs != cs:
# Send all CS# pin value changes.