You've already forked TEF6686_ESP32
clean up some things (tested)
This commit is contained in:
@@ -32,63 +32,6 @@ RTC_DATA_ATTR static bool overflow;
|
||||
static bool overflow;
|
||||
#endif
|
||||
|
||||
|
||||
/*!
|
||||
@brief Constructor for ESP32Time
|
||||
*/
|
||||
ESP32Time::ESP32Time(){
|
||||
}
|
||||
|
||||
/*!
|
||||
@brief Constructor for ESP32Time
|
||||
@param offest
|
||||
gmt offset in seconds
|
||||
*/
|
||||
ESP32Time::ESP32Time(long offset){
|
||||
this->offset = offset;
|
||||
}
|
||||
|
||||
/*!
|
||||
@brief set the internal RTC time
|
||||
@param sc
|
||||
second (0-59)
|
||||
@param mn
|
||||
minute (0-59)
|
||||
@param hr
|
||||
hour of day (0-23)
|
||||
@param dy
|
||||
day of month (1-31)
|
||||
@param mt
|
||||
month (1-12)
|
||||
@param yr
|
||||
year ie 2021
|
||||
@param ms
|
||||
microseconds (optional)
|
||||
*/
|
||||
void ESP32Time::setTime(int sc, int mn, int hr, int dy, int mt, int yr, int ms) const {
|
||||
// seconds, minute, hour, day, month, year $ microseconds(optional)
|
||||
// ie setTime(20, 34, 8, 1, 4, 2021) = 8:34:20 1/4/2021
|
||||
struct tm t = {0, 0, 0, 0, 0, 0, 0, 0, 0}; // Initalize to all 0's
|
||||
t.tm_year = yr - 1900; // This is year-1900, so 121 = 2021
|
||||
t.tm_mon = mt - 1;
|
||||
t.tm_mday = dy;
|
||||
t.tm_hour = hr;
|
||||
t.tm_min = mn;
|
||||
t.tm_sec = sc;
|
||||
time_t timeSinceEpoch = mktime(&t);
|
||||
setTime(timeSinceEpoch, ms);
|
||||
}
|
||||
|
||||
/*!
|
||||
@brief set time from struct
|
||||
@param tm
|
||||
time struct
|
||||
*/
|
||||
void ESP32Time::setTimeStruct(tm t) const {
|
||||
time_t timeSinceEpoch = mktime(&t);
|
||||
setTime(timeSinceEpoch, 0);
|
||||
}
|
||||
|
||||
/*!
|
||||
@brief set the internal RTC time
|
||||
@param epoch
|
||||
@@ -119,14 +62,7 @@ tm ESP32Time::getTimeStruct() const {
|
||||
localtime_r(&now, &timeinfo);
|
||||
time_t tt = mktime (&timeinfo);
|
||||
|
||||
if (overflow){
|
||||
tt += 63071999;
|
||||
}
|
||||
if (offset > 0){
|
||||
tt += (unsigned long) offset;
|
||||
} else {
|
||||
tt -= (unsigned long) (offset * -1);
|
||||
}
|
||||
if (overflow) tt += 63071999;
|
||||
struct tm * tn = localtime(&tt);
|
||||
if (overflow){
|
||||
tn->tm_year += 64;
|
||||
@@ -134,245 +70,10 @@ tm ESP32Time::getTimeStruct() const {
|
||||
return *tn;
|
||||
}
|
||||
|
||||
/*!
|
||||
@brief get the time and date as an Arduino String object
|
||||
@param mode
|
||||
true = Long date format
|
||||
false = Short date format
|
||||
*/
|
||||
String ESP32Time::getDateTime(bool mode) const {
|
||||
struct tm timeinfo = getTimeStruct();
|
||||
char s[51];
|
||||
if (mode)
|
||||
{
|
||||
strftime(s, 50, "%A, %B %d %Y %H:%M:%S", &timeinfo);
|
||||
}
|
||||
else
|
||||
{
|
||||
strftime(s, 50, "%a, %b %d %Y %H:%M:%S", &timeinfo);
|
||||
}
|
||||
return String(s);
|
||||
}
|
||||
|
||||
/*!
|
||||
@brief get the time and date as an Arduino String object
|
||||
@param mode
|
||||
true = Long date format
|
||||
false = Short date format
|
||||
*/
|
||||
String ESP32Time::getTimeDate(bool mode) const {
|
||||
struct tm timeinfo = getTimeStruct();
|
||||
char s[51];
|
||||
if (mode)
|
||||
{
|
||||
strftime(s, 50, "%H:%M:%S %A, %B %d %Y", &timeinfo);
|
||||
}
|
||||
else
|
||||
{
|
||||
strftime(s, 50, "%H:%M:%S %a, %b %d %Y", &timeinfo);
|
||||
}
|
||||
return String(s);
|
||||
}
|
||||
|
||||
/*!
|
||||
@brief get the time as an Arduino String object
|
||||
*/
|
||||
String ESP32Time::getTime() const {
|
||||
struct tm timeinfo = getTimeStruct();
|
||||
char s[51];
|
||||
strftime(s, 50, "%H:%M:%S", &timeinfo);
|
||||
return String(s);
|
||||
}
|
||||
|
||||
/*!
|
||||
@brief get the time as an Arduino String object with the specified format
|
||||
@param format
|
||||
time format
|
||||
http://www.cplusplus.com/reference/ctime/strftime/
|
||||
*/
|
||||
String ESP32Time::getTime(String format) const {
|
||||
struct tm timeinfo = getTimeStruct();
|
||||
char s[128];
|
||||
char c[128];
|
||||
format.toCharArray(c, 127);
|
||||
strftime(s, 127, c, &timeinfo);
|
||||
return String(s);
|
||||
}
|
||||
|
||||
/*!
|
||||
@brief get the date as an Arduino String object
|
||||
@param mode
|
||||
true = Long date format
|
||||
false = Short date format
|
||||
*/
|
||||
String ESP32Time::getDate(bool mode) const {
|
||||
struct tm timeinfo = getTimeStruct();
|
||||
char s[51];
|
||||
if (mode)
|
||||
{
|
||||
strftime(s, 50, "%A, %B %d %Y", &timeinfo);
|
||||
}
|
||||
else
|
||||
{
|
||||
strftime(s, 50, "%a, %b %d %Y", &timeinfo);
|
||||
}
|
||||
return String(s);
|
||||
}
|
||||
|
||||
/*!
|
||||
@brief get the current milliseconds as unsigned long
|
||||
*/
|
||||
unsigned long ESP32Time::getMillis() const {
|
||||
struct timeval tv;
|
||||
gettimeofday(&tv, NULL);
|
||||
return tv.tv_usec/1000;
|
||||
}
|
||||
|
||||
/*!
|
||||
@brief get the current microseconds as unsigned long
|
||||
*/
|
||||
unsigned long ESP32Time::getMicros() const {
|
||||
struct timeval tv;
|
||||
gettimeofday(&tv, NULL);
|
||||
return tv.tv_usec;
|
||||
}
|
||||
|
||||
/*!
|
||||
@brief get the current epoch seconds as unsigned long
|
||||
*/
|
||||
unsigned long ESP32Time::getEpoch() const {
|
||||
struct tm timeinfo = getTimeStruct();
|
||||
return mktime(&timeinfo);
|
||||
}
|
||||
|
||||
/*!
|
||||
@brief get the current epoch seconds as unsigned long from the rtc without offset
|
||||
*/
|
||||
unsigned long ESP32Time::getLocalEpoch() const {
|
||||
struct timeval tv;
|
||||
gettimeofday(&tv, NULL);
|
||||
unsigned long epoch = tv.tv_sec;
|
||||
if (overflow){
|
||||
epoch += 63071999 + 2019686400;
|
||||
}
|
||||
return epoch;
|
||||
}
|
||||
|
||||
/*!
|
||||
@brief get the current seconds as int
|
||||
*/
|
||||
int ESP32Time::getSecond() const {
|
||||
struct tm timeinfo = getTimeStruct();
|
||||
return timeinfo.tm_sec;
|
||||
}
|
||||
|
||||
/*!
|
||||
@brief get the current minutes as int
|
||||
*/
|
||||
int ESP32Time::getMinute() const {
|
||||
struct tm timeinfo = getTimeStruct();
|
||||
return timeinfo.tm_min;
|
||||
}
|
||||
|
||||
/*!
|
||||
@brief get the current hour as int
|
||||
@param mode
|
||||
true = 24 hour mode (0-23)
|
||||
false = 12 hour mode (1-12)
|
||||
*/
|
||||
int ESP32Time::getHour(bool mode) const {
|
||||
struct tm timeinfo = getTimeStruct();
|
||||
if (mode)
|
||||
{
|
||||
return timeinfo.tm_hour;
|
||||
}
|
||||
else
|
||||
{
|
||||
int hour = timeinfo.tm_hour;
|
||||
if (hour > 12)
|
||||
{
|
||||
return timeinfo.tm_hour-12;
|
||||
}
|
||||
else if (hour == 0)
|
||||
{
|
||||
return 12; // 12 am
|
||||
}
|
||||
else
|
||||
{
|
||||
return timeinfo.tm_hour;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/*!
|
||||
@brief return current hour am or pm
|
||||
@param lowercase
|
||||
true = lowercase
|
||||
false = uppercase
|
||||
*/
|
||||
String ESP32Time::getAmPm(bool lowercase) const {
|
||||
struct tm timeinfo = getTimeStruct();
|
||||
if (timeinfo.tm_hour >= 12)
|
||||
{
|
||||
if (lowercase)
|
||||
{
|
||||
return "pm";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "PM";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (lowercase)
|
||||
{
|
||||
return "am";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "AM";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*!
|
||||
@brief get the current day as int (1-31)
|
||||
*/
|
||||
int ESP32Time::getDay() const {
|
||||
struct tm timeinfo = getTimeStruct();
|
||||
return timeinfo.tm_mday;
|
||||
}
|
||||
|
||||
/*!
|
||||
@brief get the current day of week as int (0-6)
|
||||
*/
|
||||
int ESP32Time::getDayofWeek() const {
|
||||
struct tm timeinfo = getTimeStruct();
|
||||
return timeinfo.tm_wday;
|
||||
}
|
||||
|
||||
/*!
|
||||
@brief get the current day of year as int (0-365)
|
||||
*/
|
||||
int ESP32Time::getDayofYear() const {
|
||||
struct tm timeinfo = getTimeStruct();
|
||||
return timeinfo.tm_yday;
|
||||
}
|
||||
|
||||
/*!
|
||||
@brief get the current month as int (0-11)
|
||||
*/
|
||||
int ESP32Time::getMonth() const {
|
||||
struct tm timeinfo = getTimeStruct();
|
||||
return timeinfo.tm_mon;
|
||||
}
|
||||
|
||||
/*!
|
||||
@brief get the current year as int
|
||||
*/
|
||||
int ESP32Time::getYear() const {
|
||||
struct tm timeinfo = getTimeStruct();
|
||||
return timeinfo.tm_year+1900;
|
||||
}
|
||||
}
|
||||
@@ -22,46 +22,15 @@
|
||||
SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef ESP32TIME_H
|
||||
#define ESP32TIME_H
|
||||
#pragma once
|
||||
|
||||
#include <Arduino.h>
|
||||
|
||||
class ESP32Time {
|
||||
|
||||
|
||||
public:
|
||||
ESP32Time();
|
||||
ESP32Time(long offset);
|
||||
void setTime(unsigned long epoch = 1609459200, int ms = 0) const; // default (1609459200) = 1st Jan 2021
|
||||
void setTime(int sc, int mn, int hr, int dy, int mt, int yr, int ms = 0) const;
|
||||
void setTimeStruct(tm t) const;
|
||||
void setTime(unsigned long epoch, int ms = 0) const;
|
||||
tm getTimeStruct() const;
|
||||
String getTime(String format) const;
|
||||
|
||||
String getTime() const;
|
||||
String getDateTime(bool mode = false) const;
|
||||
String getTimeDate(bool mode = false) const;
|
||||
String getDate(bool mode = false) const;
|
||||
String getAmPm(bool lowercase = false) const;
|
||||
|
||||
|
||||
unsigned long getEpoch() const;
|
||||
unsigned long getMillis() const;
|
||||
unsigned long getMicros() const;
|
||||
int getSecond() const;
|
||||
int getMinute() const;
|
||||
int getHour(bool mode = false) const;
|
||||
int getDay() const;
|
||||
int getDayofWeek() const;
|
||||
int getDayofYear() const;
|
||||
int getMonth() const;
|
||||
int getYear() const;
|
||||
|
||||
long offset = 0;
|
||||
unsigned long getLocalEpoch() const;
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
};
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "ESP32Time",
|
||||
"version": "2.0.6",
|
||||
"version": "2.0.6l",
|
||||
"keywords": "Arduino, ESP32, Time, Internal RTC",
|
||||
"description": "An Arduino library for setting and retrieving internal RTC time on ESP32 boards",
|
||||
"repository":
|
||||
|
||||
@@ -7,10 +7,10 @@ SPIClass spi = SPIClass(VSPI);
|
||||
spi_device_handle_t dmaHAL;
|
||||
spi_host_device_t spi_host = VSPI_HOST;
|
||||
|
||||
volatile uint32_t* _spi_cmd = (volatile uint32_t*)(SPI_CMD_REG(SPI_PORT));
|
||||
volatile uint32_t* _spi_user = (volatile uint32_t*)(SPI_USER_REG(SPI_PORT));
|
||||
volatile uint32_t* _spi_mosi_dlen = (volatile uint32_t*)(SPI_MOSI_DLEN_REG(SPI_PORT));
|
||||
volatile uint32_t* _spi_w = (volatile uint32_t*)(SPI_W0_REG(SPI_PORT));
|
||||
volatile uint32_t* _spi_cmd = (volatile uint32_t*)(SPI_CMD_REG(VSPI));
|
||||
volatile uint32_t* _spi_user = (volatile uint32_t*)(SPI_USER_REG(VSPI));
|
||||
volatile uint32_t* _spi_mosi_dlen = (volatile uint32_t*)(SPI_MOSI_DLEN_REG(VSPI));
|
||||
volatile uint32_t* _spi_w = (volatile uint32_t*)(SPI_W0_REG(VSPI));
|
||||
|
||||
void TFT_eSPI::pushBlock(uint16_t color, uint32_t len) {
|
||||
|
||||
@@ -45,31 +45,31 @@ void TFT_eSPI::pushSwapBytePixels(const void* data_in, uint32_t len) {
|
||||
uint32_t color[16];
|
||||
|
||||
if (len > 31) {
|
||||
WRITE_PERI_REG(SPI_MOSI_DLEN_REG(SPI_PORT), 511);
|
||||
WRITE_PERI_REG(SPI_MOSI_DLEN_REG(VSPI), 511);
|
||||
while(len>31) {
|
||||
uint32_t i = 0;
|
||||
while(i<16) {
|
||||
color[i++] = DAT8TO32(data);
|
||||
data+=4;
|
||||
}
|
||||
while (READ_PERI_REG(SPI_CMD_REG(SPI_PORT))&SPI_USR);
|
||||
WRITE_PERI_REG(SPI_W0_REG(SPI_PORT), color[0]);
|
||||
WRITE_PERI_REG(SPI_W1_REG(SPI_PORT), color[1]);
|
||||
WRITE_PERI_REG(SPI_W2_REG(SPI_PORT), color[2]);
|
||||
WRITE_PERI_REG(SPI_W3_REG(SPI_PORT), color[3]);
|
||||
WRITE_PERI_REG(SPI_W4_REG(SPI_PORT), color[4]);
|
||||
WRITE_PERI_REG(SPI_W5_REG(SPI_PORT), color[5]);
|
||||
WRITE_PERI_REG(SPI_W6_REG(SPI_PORT), color[6]);
|
||||
WRITE_PERI_REG(SPI_W7_REG(SPI_PORT), color[7]);
|
||||
WRITE_PERI_REG(SPI_W8_REG(SPI_PORT), color[8]);
|
||||
WRITE_PERI_REG(SPI_W9_REG(SPI_PORT), color[9]);
|
||||
WRITE_PERI_REG(SPI_W10_REG(SPI_PORT), color[10]);
|
||||
WRITE_PERI_REG(SPI_W11_REG(SPI_PORT), color[11]);
|
||||
WRITE_PERI_REG(SPI_W12_REG(SPI_PORT), color[12]);
|
||||
WRITE_PERI_REG(SPI_W13_REG(SPI_PORT), color[13]);
|
||||
WRITE_PERI_REG(SPI_W14_REG(SPI_PORT), color[14]);
|
||||
WRITE_PERI_REG(SPI_W15_REG(SPI_PORT), color[15]);
|
||||
SET_PERI_REG_MASK(SPI_CMD_REG(SPI_PORT), SPI_USR);
|
||||
while (READ_PERI_REG(SPI_CMD_REG(VSPI))&SPI_USR);
|
||||
WRITE_PERI_REG(SPI_W0_REG(VSPI), color[0]);
|
||||
WRITE_PERI_REG(SPI_W1_REG(VSPI), color[1]);
|
||||
WRITE_PERI_REG(SPI_W2_REG(VSPI), color[2]);
|
||||
WRITE_PERI_REG(SPI_W3_REG(VSPI), color[3]);
|
||||
WRITE_PERI_REG(SPI_W4_REG(VSPI), color[4]);
|
||||
WRITE_PERI_REG(SPI_W5_REG(VSPI), color[5]);
|
||||
WRITE_PERI_REG(SPI_W6_REG(VSPI), color[6]);
|
||||
WRITE_PERI_REG(SPI_W7_REG(VSPI), color[7]);
|
||||
WRITE_PERI_REG(SPI_W8_REG(VSPI), color[8]);
|
||||
WRITE_PERI_REG(SPI_W9_REG(VSPI), color[9]);
|
||||
WRITE_PERI_REG(SPI_W10_REG(VSPI), color[10]);
|
||||
WRITE_PERI_REG(SPI_W11_REG(VSPI), color[11]);
|
||||
WRITE_PERI_REG(SPI_W12_REG(VSPI), color[12]);
|
||||
WRITE_PERI_REG(SPI_W13_REG(VSPI), color[13]);
|
||||
WRITE_PERI_REG(SPI_W14_REG(VSPI), color[14]);
|
||||
WRITE_PERI_REG(SPI_W15_REG(VSPI), color[15]);
|
||||
SET_PERI_REG_MASK(SPI_CMD_REG(VSPI), SPI_USR);
|
||||
len -= 32;
|
||||
}
|
||||
}
|
||||
@@ -82,30 +82,30 @@ void TFT_eSPI::pushSwapBytePixels(const void* data_in, uint32_t len) {
|
||||
color[i++] = DAT8TO32(data);
|
||||
data+=4;
|
||||
}
|
||||
while (READ_PERI_REG(SPI_CMD_REG(SPI_PORT))&SPI_USR);
|
||||
WRITE_PERI_REG(SPI_MOSI_DLEN_REG(SPI_PORT), 255);
|
||||
WRITE_PERI_REG(SPI_W0_REG(SPI_PORT), color[0]);
|
||||
WRITE_PERI_REG(SPI_W1_REG(SPI_PORT), color[1]);
|
||||
WRITE_PERI_REG(SPI_W2_REG(SPI_PORT), color[2]);
|
||||
WRITE_PERI_REG(SPI_W3_REG(SPI_PORT), color[3]);
|
||||
WRITE_PERI_REG(SPI_W4_REG(SPI_PORT), color[4]);
|
||||
WRITE_PERI_REG(SPI_W5_REG(SPI_PORT), color[5]);
|
||||
WRITE_PERI_REG(SPI_W6_REG(SPI_PORT), color[6]);
|
||||
WRITE_PERI_REG(SPI_W7_REG(SPI_PORT), color[7]);
|
||||
SET_PERI_REG_MASK(SPI_CMD_REG(SPI_PORT), SPI_USR);
|
||||
while (READ_PERI_REG(SPI_CMD_REG(VSPI))&SPI_USR);
|
||||
WRITE_PERI_REG(SPI_MOSI_DLEN_REG(VSPI), 255);
|
||||
WRITE_PERI_REG(SPI_W0_REG(VSPI), color[0]);
|
||||
WRITE_PERI_REG(SPI_W1_REG(VSPI), color[1]);
|
||||
WRITE_PERI_REG(SPI_W2_REG(VSPI), color[2]);
|
||||
WRITE_PERI_REG(SPI_W3_REG(VSPI), color[3]);
|
||||
WRITE_PERI_REG(SPI_W4_REG(VSPI), color[4]);
|
||||
WRITE_PERI_REG(SPI_W5_REG(VSPI), color[5]);
|
||||
WRITE_PERI_REG(SPI_W6_REG(VSPI), color[6]);
|
||||
WRITE_PERI_REG(SPI_W7_REG(VSPI), color[7]);
|
||||
SET_PERI_REG_MASK(SPI_CMD_REG(VSPI), SPI_USR);
|
||||
len -= 16;
|
||||
}
|
||||
|
||||
if (len)
|
||||
{
|
||||
while (READ_PERI_REG(SPI_CMD_REG(SPI_PORT))&SPI_USR);
|
||||
WRITE_PERI_REG(SPI_MOSI_DLEN_REG(SPI_PORT), (len << 4) - 1);
|
||||
while (READ_PERI_REG(SPI_CMD_REG(VSPI))&SPI_USR);
|
||||
WRITE_PERI_REG(SPI_MOSI_DLEN_REG(VSPI), (len << 4) - 1);
|
||||
for (uint32_t i=0; i <= (len<<1); i+=4) {
|
||||
WRITE_PERI_REG(SPI_W0_REG(SPI_PORT)+i, DAT8TO32(data)); data+=4;
|
||||
WRITE_PERI_REG(SPI_W0_REG(VSPI)+i, DAT8TO32(data)); data+=4;
|
||||
}
|
||||
SET_PERI_REG_MASK(SPI_CMD_REG(SPI_PORT), SPI_USR);
|
||||
SET_PERI_REG_MASK(SPI_CMD_REG(VSPI), SPI_USR);
|
||||
}
|
||||
while (READ_PERI_REG(SPI_CMD_REG(SPI_PORT))&SPI_USR);
|
||||
while (READ_PERI_REG(SPI_CMD_REG(VSPI))&SPI_USR);
|
||||
|
||||
}
|
||||
|
||||
@@ -119,37 +119,37 @@ void TFT_eSPI::pushPixels(const void* data_in, uint32_t len){
|
||||
uint32_t *data = (uint32_t*)data_in;
|
||||
|
||||
if (len > 31) {
|
||||
WRITE_PERI_REG(SPI_MOSI_DLEN_REG(SPI_PORT), 511);
|
||||
WRITE_PERI_REG(SPI_MOSI_DLEN_REG(VSPI), 511);
|
||||
while(len>31) {
|
||||
while (READ_PERI_REG(SPI_CMD_REG(SPI_PORT))&SPI_USR);
|
||||
WRITE_PERI_REG(SPI_W0_REG(SPI_PORT), *data++);
|
||||
WRITE_PERI_REG(SPI_W1_REG(SPI_PORT), *data++);
|
||||
WRITE_PERI_REG(SPI_W2_REG(SPI_PORT), *data++);
|
||||
WRITE_PERI_REG(SPI_W3_REG(SPI_PORT), *data++);
|
||||
WRITE_PERI_REG(SPI_W4_REG(SPI_PORT), *data++);
|
||||
WRITE_PERI_REG(SPI_W5_REG(SPI_PORT), *data++);
|
||||
WRITE_PERI_REG(SPI_W6_REG(SPI_PORT), *data++);
|
||||
WRITE_PERI_REG(SPI_W7_REG(SPI_PORT), *data++);
|
||||
WRITE_PERI_REG(SPI_W8_REG(SPI_PORT), *data++);
|
||||
WRITE_PERI_REG(SPI_W9_REG(SPI_PORT), *data++);
|
||||
WRITE_PERI_REG(SPI_W10_REG(SPI_PORT), *data++);
|
||||
WRITE_PERI_REG(SPI_W11_REG(SPI_PORT), *data++);
|
||||
WRITE_PERI_REG(SPI_W12_REG(SPI_PORT), *data++);
|
||||
WRITE_PERI_REG(SPI_W13_REG(SPI_PORT), *data++);
|
||||
WRITE_PERI_REG(SPI_W14_REG(SPI_PORT), *data++);
|
||||
WRITE_PERI_REG(SPI_W15_REG(SPI_PORT), *data++);
|
||||
SET_PERI_REG_MASK(SPI_CMD_REG(SPI_PORT), SPI_USR);
|
||||
while (READ_PERI_REG(SPI_CMD_REG(VSPI))&SPI_USR);
|
||||
WRITE_PERI_REG(SPI_W0_REG(VSPI), *data++);
|
||||
WRITE_PERI_REG(SPI_W1_REG(VSPI), *data++);
|
||||
WRITE_PERI_REG(SPI_W2_REG(VSPI), *data++);
|
||||
WRITE_PERI_REG(SPI_W3_REG(VSPI), *data++);
|
||||
WRITE_PERI_REG(SPI_W4_REG(VSPI), *data++);
|
||||
WRITE_PERI_REG(SPI_W5_REG(VSPI), *data++);
|
||||
WRITE_PERI_REG(SPI_W6_REG(VSPI), *data++);
|
||||
WRITE_PERI_REG(SPI_W7_REG(VSPI), *data++);
|
||||
WRITE_PERI_REG(SPI_W8_REG(VSPI), *data++);
|
||||
WRITE_PERI_REG(SPI_W9_REG(VSPI), *data++);
|
||||
WRITE_PERI_REG(SPI_W10_REG(VSPI), *data++);
|
||||
WRITE_PERI_REG(SPI_W11_REG(VSPI), *data++);
|
||||
WRITE_PERI_REG(SPI_W12_REG(VSPI), *data++);
|
||||
WRITE_PERI_REG(SPI_W13_REG(VSPI), *data++);
|
||||
WRITE_PERI_REG(SPI_W14_REG(VSPI), *data++);
|
||||
WRITE_PERI_REG(SPI_W15_REG(VSPI), *data++);
|
||||
SET_PERI_REG_MASK(SPI_CMD_REG(VSPI), SPI_USR);
|
||||
len -= 32;
|
||||
}
|
||||
}
|
||||
|
||||
if (len) {
|
||||
while (READ_PERI_REG(SPI_CMD_REG(SPI_PORT))&SPI_USR);
|
||||
WRITE_PERI_REG(SPI_MOSI_DLEN_REG(SPI_PORT), (len << 4) - 1);
|
||||
for (uint32_t i=0; i <= (len<<1); i+=4) WRITE_PERI_REG((SPI_W0_REG(SPI_PORT) + i), *data++);
|
||||
SET_PERI_REG_MASK(SPI_CMD_REG(SPI_PORT), SPI_USR);
|
||||
while (READ_PERI_REG(SPI_CMD_REG(VSPI))&SPI_USR);
|
||||
WRITE_PERI_REG(SPI_MOSI_DLEN_REG(VSPI), (len << 4) - 1);
|
||||
for (uint32_t i=0; i <= (len<<1); i+=4) WRITE_PERI_REG((SPI_W0_REG(VSPI) + i), *data++);
|
||||
SET_PERI_REG_MASK(SPI_CMD_REG(VSPI), SPI_USR);
|
||||
}
|
||||
while (READ_PERI_REG(SPI_CMD_REG(SPI_PORT))&SPI_USR);
|
||||
while (READ_PERI_REG(SPI_CMD_REG(VSPI))&SPI_USR);
|
||||
}
|
||||
|
||||
void TFT_eSPI::dmaWait()
|
||||
|
||||
@@ -3,11 +3,17 @@
|
||||
#include <Arduino.h>
|
||||
#include <SPI.h>
|
||||
|
||||
#include <User_Setup_Select.h>
|
||||
#define SPI_FREQUENCY 7500000
|
||||
#define SPI_READ_FREQUENCY 20000000
|
||||
#define SPI_TOUCH_FREQUENCY 2500000
|
||||
|
||||
#define TFT_WIDTH 240
|
||||
#define TFT_HEIGHT 320
|
||||
|
||||
#include <ILI9341_Defines.h>
|
||||
|
||||
#include <pgmspace.h>
|
||||
|
||||
#define SPI_PORT VSPI
|
||||
#include "soc/spi_reg.h"
|
||||
#include "driver/spi_master.h"
|
||||
#include "hal/gpio_ll.h"
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#define SPI_FREQUENCY 7500000
|
||||
#define SPI_READ_FREQUENCY 20000000
|
||||
#define SPI_TOUCH_FREQUENCY 2500000
|
||||
|
||||
#define TFT_WIDTH 240
|
||||
#define TFT_HEIGHT 320
|
||||
|
||||
#include <ILI9341_Defines.h>
|
||||
Reference in New Issue
Block a user