Пример #1
0
    def disp_spi_send(self, data, dma=False):
        if len(data) == 0: return  # no need to send anything

        self.trans.length = len(
            data) * 8  # Length is in bytes, transaction length is in bits.
        self.trans.tx_buffer = data

        if dma:
            self.trans.user = self.spi_callbacks
            esp.spi_device_queue_trans(self.spi, self.trans, -1)
        else:
            self.trans.user = None
            esp.spi_device_polling_transmit(self.spi, self.trans)
Пример #2
0
 def do_cmds(self):
     trans = esp.spi_transaction_t({
         "length": self.buflen * 8,
         "tx_buffer": self.txbuf,
         "rx_buffer": self.rxbuf
     })
     rxbuf = self.rxbuf.__dereference__(self.buflen)
     res = esp.spi_device_polling_transmit(self.spi, trans)
     # print("got:", res, ["%02x"%v for v in rxbuf])
     vals = [(rxbuf[1 + 2 * i] << 5) | (rxbuf[2 + 2 * i] >> 3)
             for i in range(self.buflen // 2)]
     # print("res:", res, "vals:", vals)
     res = [(vals[c * REP + REP - 2] + vals[c * REP + REP - 1]) // 2
            for c in range(len(self.CMDS))]
     return res
Пример #3
0
 def spi_send(self, data):
     self.trans.length = len(
         data) * 8  # Length is in bytes, transaction length is in bits.
     self.trans.tx_buffer = data  # data should be allocated as DMA-able memory
     self.trans.user = None
     esp.spi_device_polling_transmit(self.spi, self.trans)