Files

  • Not Found
  • Invalid object requested. SHA must identify a commit or a tree.
Last update 1 week 1 day by Blaze-Pascal
FilesCodeGFX_Library_for_Arduinosrcdatabus
..
Arduino_AVRPAR16.cpp
Arduino_RPiPicoPAR16.cpp
Arduino_RTLPAR8.cpp
Arduino_RPiPicoSPI.h
Arduino_RPiPicoSPI.cpp
Arduino_RPiPicoPAR8.h
Arduino_RPiPicoPAR8.cpp
Arduino_RPiPicoPAR16.h
Arduino_NRFXSPI.h
Arduino_STM32PAR8.cpp
Arduino_NRFXSPI.cpp
Arduino_HWSPI.h
Arduino_HWSPI.cpp
Arduino_ESP8266SPI.h
Arduino_ESP8266SPI.cpp
Arduino_ESP32SPIDMA.h
Arduino_RTLPAR8.h
Arduino_STM32PAR8.h
Arduino_ESP32SPI.h
Arduino_Wire.cpp
Arduino_mbedSPI.cpp
Arduino_XL9535SWSPI.h
Arduino_XL9535SWSPI.cpp
Arduino_XCA9554SWSPI.h
Arduino_XCA9554SWSPI.cpp
Arduino_Wire.h
Arduino_UNOPAR8.h
Arduino_SWPAR16.cpp
Arduino_UNOPAR8.cpp
Arduino_SWSPI.h
Arduino_SWSPI.cpp
Arduino_SWPAR8.h
Arduino_SWPAR8.cpp
Arduino_SWPAR16.h
Arduino_ESP32SPIDMA.cpp
Arduino_ESP32SPI.cpp
Arduino_AVRPAR16.h
Arduino_ESP32LCD8.h
Arduino_ESP32PAR16QQ.h
Arduino_ESP32PAR16QQ.cpp
Arduino_ESP32PAR16Q.h
Arduino_ESP32PAR16Q.cpp
Arduino_ESP32PAR16.h
Arduino_ESP32PAR16.cpp
Arduino_ESP32LCD8.cpp
Arduino_ESP32PAR8.h
Arduino_ESP32LCD16.h
Arduino_ESP32LCD16.cpp
Arduino_DUEPAR16.h
Arduino_DUEPAR16.cpp
Arduino_AVRPAR8.h
Arduino_AVRPAR8.cpp
Arduino_ESP32PAR8.cpp
Arduino_ESP32PAR8Q.cpp
Arduino_ESP32S2PAR8Q.h
Arduino_ESP32S2PAR16.cpp
Arduino_ESP32S2PAR8Q.cpp
Arduino_ESP32S2PAR8.h
Arduino_ESP32S2PAR8.cpp
Arduino_ESP32S2PAR16Q.h
Arduino_ESP32S2PAR16Q.cpp
Arduino_ESP32S2PAR16.h
Arduino_ESP32RGBPanel.h
Arduino_ESP32PAR8Q.h
Arduino_ESP32RGBPanel.cpp
Arduino_ESP32QSPI.h
Arduino_ESP32QSPI.cpp
Arduino_ESP32PAR8QQQ.h
Arduino_ESP32PAR8QQQ.cpp
Arduino_ESP32PAR8QQ.h
Arduino_ESP32PAR8QQ.cpp
Arduino_mbedSPI.h
Arduino_RPiPicoSPI.cpp
#if defined(TARGET_RP2040) #include "Arduino_DataBus.h" #include "Arduino_RPiPicoSPI.h" Arduino_RPiPicoSPI::Arduino_RPiPicoSPI(int8_t dc /* = GFX_NOT_DEFINED */, int8_t cs /* = GFX_NOT_DEFINED */, int8_t sck /* = 18 */, int8_t mosi /* = 19 */, int8_t miso /* = 16 */, spi_inst_t *spi /* = spi0 */) : _dc(dc), _cs(cs), _sck(sck), _mosi(mosi), _miso(miso), _spi(spi) { } bool Arduino_RPiPicoSPI::begin(int32_t speed /* = 0 */, int8_t dataMode /* = GFX_NOT_DEFINED */) { // set SPI parameters _speed = (speed == GFX_NOT_DEFINED) ? SPI_DEFAULT_FREQ : speed; _dataMode = (dataMode != GFX_NOT_DEFINED) ? dataMode : SPI_MODE0; _spis = SPISettings(_speed, _bitOrder, _dataMode); // set pin mode pinMode(_dc, OUTPUT); digitalWrite(_dc, HIGH); // Data mode if (_cs != GFX_NOT_DEFINED) { pinMode(_cs, OUTPUT); digitalWrite(_cs, HIGH); // disable chip select } gpio_set_function(_miso, GPIO_FUNC_SPI); gpio_set_function(_sck, GPIO_FUNC_SPI); gpio_set_function(_mosi, GPIO_FUNC_SPI); // set fastIO variables _dcPinMask = digitalPinToBitMask(_dc); _dcPortSet = (PORTreg_t)&sio_hw->gpio_set; _dcPortClr = (PORTreg_t)&sio_hw->gpio_clr; if (_cs != GFX_NOT_DEFINED) { _csPinMask = digitalPinToBitMask(_cs); _csPortSet = (PORTreg_t)&sio_hw->gpio_set; _csPortClr = (PORTreg_t)&sio_hw->gpio_clr; } spi_init(_spi, _spis.getClockFreq()); spi_set_format(_spi, 8, SPI_CPOL_0, SPI_CPHA_0, SPI_MSB_FIRST); return true; } void Arduino_RPiPicoSPI::beginWrite() { DC_HIGH(); CS_LOW(); } void Arduino_RPiPicoSPI::endWrite() { CS_HIGH(); } void Arduino_RPiPicoSPI::writeCommand(uint8_t c) { DC_LOW(); WRITE(c); DC_HIGH(); } void Arduino_RPiPicoSPI::writeCommand16(uint16_t c) { DC_LOW(); WRITE16(c); DC_HIGH(); } void Arduino_RPiPicoSPI::writeCommandBytes(uint8_t *data, uint32_t len) { DC_LOW(); while (len--) { WRITE(*data++); } DC_HIGH(); } void Arduino_RPiPicoSPI::write(uint8_t d) { WRITE(d); } void Arduino_RPiPicoSPI::write16(uint16_t d) { WRITE16(d); } void Arduino_RPiPicoSPI::writeRepeat(uint16_t p, uint32_t len) { MSB_16_SET(p, p); uint32_t bufLen = (len < RPIPICOSPI_MAX_PIXELS_AT_ONCE) ? len : RPIPICOSPI_MAX_PIXELS_AT_ONCE; uint32_t xferLen; for (uint32_t i = 0; i < bufLen; i++) { _buffer16[i] = p; } while (len) { xferLen = (bufLen < len) ? bufLen : len; WRITEBUF(_buffer, xferLen * 2); len -= xferLen; } } void Arduino_RPiPicoSPI::writePixels(uint16_t *data, uint32_t len) { uint32_t xferLen; uint8_t *p; union { uint16_t val; struct { uint8_t lsb; uint8_t msb; }; } t; while (len) { xferLen = (len < RPIPICOSPI_MAX_PIXELS_AT_ONCE) ? len : RPIPICOSPI_MAX_PIXELS_AT_ONCE; p = _buffer; for (uint32_t i = 0; i < xferLen; i++) { t.val = *data++; *p++ = t.msb; *p++ = t.lsb; } len -= xferLen; xferLen += xferLen; // uint16_t to uint8_t, double length WRITEBUF(_buffer, xferLen); } } void Arduino_RPiPicoSPI::writeC8D8(uint8_t c, uint8_t d) { DC_LOW(); WRITE(c); DC_HIGH(); WRITE(d); } void Arduino_RPiPicoSPI::writeC8D16(uint8_t c, uint16_t d) { DC_LOW(); WRITE(c); DC_HIGH(); WRITE16(d); } void Arduino_RPiPicoSPI::writeC8D16D16(uint8_t c, uint16_t d1, uint16_t d2) { DC_LOW(); WRITE(c); DC_HIGH(); WRITE16(d1); WRITE16(d2); } void Arduino_RPiPicoSPI::writeBytes(uint8_t *data, uint32_t len) { WRITEBUF(data, len); } INLINE void Arduino_RPiPicoSPI::WRITE(uint8_t d) { spi_write_blocking(_spi, (const uint8_t *)&d, 1); } INLINE void Arduino_RPiPicoSPI::WRITE16(uint16_t d) { MSB_16_SET(d, d); spi_write_blocking(_spi, (const uint8_t *)&d, 2); } INLINE void Arduino_RPiPicoSPI::WRITEBUF(uint8_t *buf, size_t count) { spi_write_blocking(_spi, (const uint8_t *)buf, count); } /******** low level bit twiddling **********/ INLINE void Arduino_RPiPicoSPI::DC_HIGH(void) { *_dcPortSet = _dcPinMask; } INLINE void Arduino_RPiPicoSPI::DC_LOW(void) { *_dcPortClr = _dcPinMask; } INLINE void Arduino_RPiPicoSPI::CS_HIGH(void) { if (_cs != GFX_NOT_DEFINED) { *_csPortSet = _csPinMask; } } INLINE void Arduino_RPiPicoSPI::CS_LOW(void) { if (_cs != GFX_NOT_DEFINED) { *_csPortClr = _csPinMask; } } #endif // #if defined(TARGET_RP2040)
Report a bug