]> sigrok.org Git - libsigrokdecode.git/commitdiff
spiflash: Initial RDSR2 implementation (incomplete).
authorUwe Hermann <redacted>
Sun, 6 Nov 2016 16:55:13 +0000 (17:55 +0100)
committerUwe Hermann <redacted>
Mon, 7 Nov 2016 01:01:00 +0000 (02:01 +0100)
This is not entirely correct yet, will be fixed later.

decoders/spiflash/lists.py
decoders/spiflash/pd.py

index 9a06992746d2433944522abf323ddb2f3365620c..a692119bd9c9b1617059ad197de360fe849e0e26 100644 (file)
@@ -24,6 +24,7 @@ cmds = {
     0x04: ('WRDI', 'Write disable'),
     0x9f: ('RDID', 'Read identification'),
     0x05: ('RDSR', 'Read status register'),
+    0x35: ('RDSR2', 'Read status register 2'),
     0x01: ('WRSR', 'Write status register'),
     0x03: ('READ', 'Read data'),
     0x0b: ('FAST/READ', 'Fast read data'),
index 3afafba1587584fff17214ea49974e5a353ddb16..4c5c06b232011d3121668406274b1bc9d91ef10f 100644 (file)
@@ -173,6 +173,22 @@ class Decoder(srd.Decoder):
 
         self.cmdstate += 1
 
+    def handle_rdsr2(self, mosi, miso):
+        # Read status register 2: Master asserts CS#, sends RDSR2 command,
+        # reads status register 2 byte. If CS# is kept asserted, the status
+        # register 2 can be read continuously / multiple times in a row.
+        # When done, the master de-asserts CS# again.
+        if self.cmdstate == 1:
+            # Byte 1: Master sends command ID.
+            self.putx([3, ['Command: %s' % cmds[self.state][1]]])
+        elif self.cmdstate >= 2:
+            # Bytes 2-x: Slave sends status register 2 as long as master clocks.
+            self.putx([24, ['Status register 2: 0x%02x' % miso]])
+            self.putx([25, [decode_status_reg(miso)]])
+            # TODO: Handle status register 2 correctly.
+
+        self.cmdstate += 1
+
     def handle_wrsr(self, mosi, miso):
         # Write status register: Master asserts CS#, sends WRSR command,
         # writes 1 or 2 status register byte(s).