#include "libSSD1306/spiInterface.h"
// already done in HAL
void
ssd1306spiInit (void)
{
}
void
ssd1306commandSPIwrite (uint8_t c)
{
HAL_GPIO_WritePin (SPI_CD_GPIO_Port, SPI_CD_Pin, GPIO_PIN_RESET);
uint8_t buffer[1];
buffer[0] = c;
HAL_GPIO_WritePin (SPI_CS_GPIO_Port, SPI_CS_Pin, GPIO_PIN_RESET);
HAL_SPI_Transmit (&SPI_IF, buffer, 1, 2); // allow 2mS for transfer
HAL_GPIO_WritePin (SPI_CS_GPIO_Port, SPI_CS_Pin, GPIO_PIN_SET);
}
void
ssd1306resetDisplay (void)
{
HAL_GPIO_WritePin (SPI_RESET_GPIO_Port, SPI_RESET_Pin, GPIO_PIN_SET);
// VDD (3.3V) goes high at start, lets just chill for a ms
HAL_Delay (1);
// bring reset low
HAL_GPIO_WritePin (SPI_RESET_GPIO_Port, SPI_RESET_Pin, GPIO_PIN_RESET);
// wait 10ms
HAL_Delay (10);
// bring out of reset
HAL_GPIO_WritePin (SPI_RESET_GPIO_Port, SPI_RESET_Pin, GPIO_PIN_SET);
}
void
ssd1306SendDisplay (uint8_t *buffer, uint8_t len)
{
// set data pin
HAL_GPIO_WritePin (SPI_CD_GPIO_Port, SPI_CD_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin (SPI_CS_GPIO_Port, SPI_CS_Pin, GPIO_PIN_RESET);
HAL_SPI_Transmit (&SPI_IF, buffer, len, 100); // allow 100mS for transfer
HAL_GPIO_WritePin (SPI_CS_GPIO_Port, SPI_CS_Pin, GPIO_PIN_SET);
}