I have bought this display http://www.buydisplay.com/default/7-inc ... spi-serial and I want to use it with raspberry. I downloaded the Arduino library from the same web site and I'm triyng to rewrite it in Python, but I'm facing a problem, with the SPI interface. The problem is in the begin function:
Code: Select all
boolean Adafruit_RA8875::begin(enum RA8875sizes s) {
_size = s;
if (_size == RA8875_480x272) {
_width = 480;
_height = 272;
}
if (_size == RA8875_800x480) {
_width = 800;
_height = 480;
}
pinMode(_cs, OUTPUT);
digitalWrite(_cs, HIGH);
pinMode(_rst, OUTPUT);
digitalWrite(_rst, LOW);
digitalWrite(_rst, LOW);
delay(100);
digitalWrite(_rst, HIGH);
delay(100);
SPI.begin();
#ifdef __AVR__
SPI.setClockDivider(SPI_CLOCK_DIV128);
SPI.setDataMode(SPI_MODE0);
#endif
if (readReg(0) != 0x75) {
return false;
}
.................
}
uint8_t Adafruit_RA8875::readReg(uint8_t reg)
{
writeCommand(reg);
return readData();
}
uint8_t Adafruit_RA8875::readData(void)
{
digitalWrite(_cs, LOW);
SPI.transfer(RA8875_DATAREAD);
uint8_t x = SPI.transfer(0x0);
digitalWrite(_cs, HIGH);
return x;
}
void Adafruit_RA8875::writeCommand(uint8_t d)
{
digitalWrite(_cs, LOW);
SPI.transfer(RA8875_CMDWRITE);
SPI.transfer(d);
digitalWrite(_cs, HIGH);
}
Code: Select all
#!/usr/bin/python
import spidev
import time
import RPi.GPIO as GPIO
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
RA8875_DATAREAD = 0x40
RA8875_CMDWRITE = 0x80
RA8875_DATAWRITE = 0x00
# Open SPI bus
spi = spidev.SpiDev()
spi.open(0,1)
spi.max_speed_hz = 12000000
rst = 21
cs = 7
GPIO.setup(cs, GPIO.OUT)
GPIO.output(cs, False)
GPIO.setup(rst, GPIO.OUT)
GPIO.output(rst, False)
time.sleep(0.1)
GPIO.output(rst, True)
time.sleep(0.1)
if readReg(0) != 0x75:
return False
def readReg(reg):
writeCommand(reg)
return readData()
def writeCommand(com):
spi.xfer2([RA8875_CMDWRITE])
spi.xfer2([com])
def readData():
spi.xfer2([RA8875_DATAREAD])
x = spi.xfer([0x0])
print(x)
Anybody can help me to find where I'm wrong?
Thanks