#include #include "GT5DL32A3W.h" #include "FONT_LIB.h" #include "esp_log.h" #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "freertos/queue.h" static const char *LOG_TAG = "FONTLIB"; static void task_delay_ms(uint32_t ms_count) { vTaskDelay(ms_count / portTICK_PERIOD_MS); } void gt_font_pin_init() { gpio_config_t fontLib_pin_cfg = {}; fontLib_pin_cfg.intr_type = GPIO_INTR_DISABLE; fontLib_pin_cfg.mode = GPIO_MODE_OUTPUT; fontLib_pin_cfg.pin_bit_mask =FONT_OUTPUT_PIN_SEL; fontLib_pin_cfg.pull_down_en = 0; fontLib_pin_cfg.pull_up_en = 0; gpio_config(&fontLib_pin_cfg); fontLib_pin_cfg.intr_type = GPIO_INTR_DISABLE; fontLib_pin_cfg.mode = GPIO_MODE_INPUT; fontLib_pin_cfg.pin_bit_mask =FONT_INPUT_PIN_SEL; fontLib_pin_cfg.pull_down_en = 0; fontLib_pin_cfg.pull_up_en = 1; gpio_config(&fontLib_pin_cfg); } void font_init() { gt_font_pin_init(); FONT_CLK_1; FONT_SDA_1; FONT_CS_HIGHT; font_exit_sleep(); //退出睡眠 //task_delay_ms(500); #if 1 uint8_t id = GT_Font_Init(); while(id==0) { ESP_LOGE(LOG_TAG,"font fail"); task_delay_ms(500); id = GT_Font_Init(); } #endif ESP_LOGI(LOG_TAG,"font OK"); } void font_spi_write(unsigned char value) { int i=0,data=value; gpio_set_level(FONT_CLK_PIN,LOW_LEVEL); for(i=0;i<8;i++) { if(data&0x0080) { FONT_SDA_1; } else { FONT_SDA_0; } //ets_delay_us(1); gpio_set_level(FONT_CLK_PIN,HIGH_LEVEL); //ets_delay_us(1); gpio_set_level(FONT_CLK_PIN,LOW_LEVEL); data=((data<<1)&0xff); } } void Send_Byte(unsigned char out) { unsigned char i=0; for(i=0;i<8;i++) { FONT_CLK_0; if(((out<>16; addrMid=address>>8; addrLow=(unsigned char)address; FONT_CS_LOW; //片选选中字库芯片 Send_Byte(0x03); //普通读取首先送0X03,然后发送地址高八位addrHigh,中八位addrMid,低八位addrLow。 SPI_Address(addrHigh,addrMid,addrLow); for(i=0;i>16; addrMid=address>>8; addrLow=(unsigned char)address; FONT_CS_LOW; Send_Byte(0x03); SPI_Address(addrHigh,addrMid,addrLow); buff = Get_Byte(); FONT_CS_HIGHT; return buff; } /****************************************************** 客户自己实现, 库文件函数内部需要调用该函数匹配芯片ID号 根据说明文件或头文件是否需要, 没有就不需要实现 ******************************************************/ unsigned char CheckID(unsigned char CMD, unsigned long address, unsigned long byte_long,unsigned char *p_arr) { unsigned long j; FONT_CS_LOW; Send_Byte(CMD); Send_Byte((unsigned char)((address)>>16)); Send_Byte((unsigned char)((address)>>8)); Send_Byte((unsigned char)address); for(j=0;j