| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 | /****************************************************************************** | File      	:   DEV_Config.c* | Author      :   Waveshare team* | Function    :   Hardware underlying interface* | Info        :*----------------* |	This version:   V1.0* | Date        :   2020-02-19* | Info        :## Permission is hereby granted, free of charge, to any person obtaining a copy# of this software and associated documnetation files (the "Software"), to deal# in the Software without restriction, including without limitation the rights# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell# copies of the Software, and to permit persons to  whom the Software is# furished to do so, subject to the following conditions:## The above copyright notice and this permission notice shall be included in# all copies or substantial portions of the Software.## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN# THE SOFTWARE.#******************************************************************************/#include "DEV_Config.h"void GPIO_Config(void){    pinMode(EPD_BUSY_PIN,  INPUT);    pinMode(EPD_RST_PIN , OUTPUT);    pinMode(EPD_DC_PIN  , OUTPUT);    pinMode(EPD_PWR_PIN  , OUTPUT);    pinMode(EPD_CS_M_PIN , OUTPUT);    pinMode(EPD_CS_S_PIN , OUTPUT);    pinMode(EPD_SCK_PIN, OUTPUT);    pinMode(EPD_MOSI_PIN, OUTPUT);    digitalWrite(EPD_PWR_PIN , HIGH);    digitalWrite(EPD_CS_M_PIN , HIGH);    digitalWrite(EPD_CS_S_PIN , HIGH);}void GPIO_Mode(UWORD GPIO_Pin, UWORD Mode){    if(Mode == 0) {        pinMode(GPIO_Pin , INPUT);	} else {		pinMode(GPIO_Pin , OUTPUT);	}}/******************************************************************************function:	Module Initialize, the BCM2835 library and initialize the pins, SPI protocolparameter:Info:******************************************************************************/UBYTE DEV_Module_Init(void){	//gpio	GPIO_Config();	//serial printf	Serial.begin(115200);	// // spi	// SPI.begin();    // SPI.beginTransaction(SPISettings(4000000, MSBFIRST, SPI_MODE0));	return 0;}void DEV_GPIO_Init(void){    SPI.end();     pinMode(EPD_SCK_PIN, OUTPUT);    pinMode(EPD_MOSI_PIN, OUTPUT);}void DEV_SPI_Init(void){    SPI.begin();    SPI.beginTransaction(SPISettings(4000000, MSBFIRST, SPI_MODE0));}/******************************************************************************function:			SPI read and write******************************************************************************/void DEV_SPI_WriteByte(UBYTE data){    SPI.transfer(data);}void DEV_SPI_Write_nByte(UBYTE *pData, UDOUBLE len){    for (int i = 0; i < len; i++)        DEV_SPI_WriteByte(pData[i]);}void DEV_SPI_SendnByte(UBYTE *pData, UDOUBLE len){    for (int i = 0; i < len; i++)        DEV_SPI_SendByte(pData[i]);}void DEV_SPI_SendByte(UBYTE data){    for (int i = 0; i < 8; i++)    {        if ((data & 0x80) == 0) digitalWrite(EPD_MOSI_PIN, GPIO_PIN_RESET);         else                    digitalWrite(EPD_MOSI_PIN, GPIO_PIN_SET);        data <<= 1;        digitalWrite(EPD_SCK_PIN, GPIO_PIN_SET);             digitalWrite(EPD_SCK_PIN, GPIO_PIN_RESET);    }}UBYTE DEV_SPI_ReadByte(){    UBYTE j=0xff;    GPIO_Mode(EPD_MOSI_PIN, INPUT);    for (int i = 0; i < 8; i++)    {        j = j << 1;        if (digitalRead(EPD_MOSI_PIN))  j = j | 0x01;        else                            j = j & 0xfe;                digitalWrite(EPD_SCK_PIN, GPIO_PIN_SET);             digitalWrite(EPD_SCK_PIN, GPIO_PIN_RESET);    }    GPIO_Mode(EPD_MOSI_PIN, 1);    return j;}void DEV_Module_Exit(void){    digitalWrite(EPD_PWR_PIN , LOW);}
 |