I'm using the Matrix Orbital Eve2_81x.c "library", and initialization code cribbed from the "Eve-school" example. I'm driving it from a Teensy 3.2, and using its hardware SPI interface and the Arduino SPI library, as used in the example code.
It was installed fresh from its anti-static bag. It's being fed a clean 3.3V from a dedicated regulator, and drawing about 7 mA. The red power LED is on. SPI clock and MOSI signals are present on the board at the exposed pads on the connector. No MISO signals are present.
Actual intialization code is:
(in Arduino_HL.h)
Code: Select all
#define EveCS_PIN 10 // PB1
#define EveRST_PIN 8 // PB0
(in the main program file:)
Code: Select all
void setup()
{
// Initializations. Order is important
GlobalInit();
FT81x_Init();
(...)}(...)
void GlobalInit(void)
{
Serial.begin(115200); // Setup serial port for debug
while (!Serial) {;} // wait for serial port to connect.
// Matrix Orbital Eve display interface initialization
pinMode(EveRST_PIN, OUTPUT); // Pin setup as output for Eve PDN pin.
digitalWrite(EveRST_PIN, LOW); // Apply a resetish condition on Eve
pinMode(EveCS_PIN, OUTPUT); // SPI CS Initialization
digitalWrite(EveCS_PIN, HIGH); // Deselect Eve
SPI.begin(); // Enable SPI
(...)
Code: Select all
void FT81x_Init(void)
{
uint32_t Ready = false;
sLog("Reseting");
Eve_Reset(); // Hard reset of the Eve chip
// Wakeup Eve
HostCommand(HCMD_CLKEXT);
delay(10);
//HostCommand(HCMD_CLKSEL);
delay(10);
HostCommand(HCMD_ACTIVE);
delay(300);
sLog("Reading ID...");
do
{
Ready = Cmd_READ_REG_ID();
}while (!Ready);
sLog("Eve now ACTIVE\n"); //
Ready = rd32(REG_CHIP_ID);
Code: Select all
// Reset Eve
digitalWrite(EveRST_PIN, LOW); // actually _RST , or PDN
delay(100); // delay
digitalWrite(EveRST_PIN, HIGH); //
delay(500); // delay -- should only require 20 ms if it's like the older EVE_80x
The sLog() function is a serial logger the prints strings to the serial port.
The routine never gets past the while(!ready) test, never prints "Eve now ACTIVE", and Ready is always zero.
Inspecting the SPI lines with a scope shows repeated sending of 0x30, 0x20, 0x00 on MOSI, but never any activity on MISO.
I tried SPI clock rates of 100 kbps (as used in the example code), 200 kbps, and 1Mbps.
I tried both polarities of the RST/_RST/PDN line to reset the device, with the same non-result.
I tried driving it with my known-good code for the EVE 801 display, but nothing.
Am I missing something, or do I have a dead display?