页次: 1
添加一下初始化IIC的代码:
#include "esp_err.h"
#include "driver/i2c.h"
#define I2C_MASTER_SCL_IO 48
#define I2C_MASTER_SDA_IO 47
#define I2C_MASTER_NUM 0
#define I2C_MASTER_FREQ_HZ 100000
#define I2C_MASTER_TX_BUF 0
#define I2C_MASTER_RX_BUF 0
#define I2C_MASTER_TIMEOUT_MS 1000
int i2c0_init(void)
{
int i2c_master_port = I2C_MASTER_NUM;
i2c_config_t conf = {
.mode = I2C_MODE_MASTER,
.sda_io_num = I2C_MASTER_SDA_IO,
.scl_io_num = I2C_MASTER_SCL_IO,
.sda_pullup_en = GPIO_PULLUP_ENABLE,
.scl_pullup_en = GPIO_PULLUP_ENABLE,
.master.clk_speed = I2C_MASTER_FREQ_HZ,
};
i2c_param_config(i2c_master_port, &conf);
return i2c_driver_install(i2c_master_port, conf.mode, I2C_MASTER_RX_BUF, I2C_MASTER_TX_BUF, 0);
}
int i2c0_deinit(void)
{
int i2c_master_port = I2C_MASTER_NUM;
return i2c_driver_delete(i2c_master_port);
}
SCH_7INCH2_2022-09-22.pdf使用这个才对的
我用的是楼主的同款板子,我引脚是这样定义的,请问为什么不亮呢?
这里是ESP32-S3R2的管脚配置,请确认是否是ESP32-S3R2,如果是R2,频率应该到不了18Mhz,适当降低频率
zhang235hai 说:@ailunwowo
rgb_panel这个例程你不改动任何东西的情况下能编译通过吗?如果不能,那就要检查安装环境配置的问题了,不要从demo方面入手编译通过不了
用这个安装,直接就可以用了
https://dl.espressif.cn/dl/idf-installer/esp-idf-tools-setup-offline-5.0.exe
https://whycan.com/files/members/3638/919b47a66f85c6739ed080efea121b1b.mp4
我的可以运行起来,但是不知道怎么添加电阻触摸的驱动,用的IDF5.0,直接用rgb_panel这个例程,把IO的定义改一下,分辨率改一下
适配NS2016驱动,直接拿你的板适配还快些,你可以提供板子吗
IDF-5.0主线
关于点屏幕时钟频率的问题,大可不必担心频率的问题,ESP32S3是双核,一个核心用于处理UI,一个核心处理业务,目前量产的7寸屏幕已经验证过了是完全可行的。
DEMO程序早已经内置到ESP-IDF中:https://github.com/espressif/esp-idf/tree/439a709c4298b0f613d09b47fc0b7b9728fc5733/examples/peripherals/lcd/rgb_panel
且官方说明文档也提供了提升帧率的办法:
这是适配这款触摸的的驱动:
https://gitee.com/andida/esp32s3-gt911.git
CTP用的是这家的,有TP需求的可以购买搭配的是5号触摸:
https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-23934136401.12.2dd271d8wHtYtF&id=589754805405
好消息,目前量产了,坛友可以买来自己玩玩,已经有链接了,提我网名可以打折哦,选7寸就可以:
https://item.taobao.com/item.htm?spm=a1z10.5-c-s.w4002-23186186811.29.40e427baDVWRvy&id=646117487645
这是原理图,请大家多多点赞支持活跃下。
SCH_7INCH_2022-10-21.pdf
RAM带宽能撑住吗,分辨率太高的话。
SPI PSRAM最高就是Octal 8位宽,SPI速度最高80M,别的啥也不干,只从PSRAM连续读取数据,最高也就达到80MB/S的速度。刷屏16bit宽,像素时钟40MHz应该是极限。
对于1024*600屏额定时钟超过40MHz了。
"Enable CONFIG_EXAMPLE_USE_BOUNCE_BUFFER, which will make the LCD controller fetch data from internal SRAM (instead of the PSRAM), but at the cost of increasing CPU usage."
少见了吧,牺牲点算力,还有另外一个核心空着可以干活呢
主控芯片:ESP32S3。
驱动屏幕:480X480分辨率(4寸屏幕)
800X480分辨率(7寸屏幕)
1024X600分辨率(10.1寸屏幕)
1024X768分辨率(12.1寸屏幕)
屏幕方向:90°,180°,270° 可自由切换。
存储空间:16MB SPI-NORFLASH,4GB SD-NAND。
通信接口:CAN2.0b,RS485,WIFI,BLE5.0。
音频接口:IIS输出,DAC则提供8欧姆2Wx2立体声输出。
USB接口:可通过USB更新固件,或者用户资源。支持OTA。
5个按键:BOOT,RST, +, -,SET 设置菜单使用后三个。
触摸屏:GT911电容式触摸屏。
RTC:外置RTC可离线保存时间。
背光:可在设置菜单调节亮暗。
音量:可在设置菜单调节大小。
支持的媒体格式:MP3,AAC,WAV,JPEG,PNG,BMP,GIF等。
供电:USB5V和 3.96-4P供电支持5-40V宽电压输入。
ESP32S3真强大,就怕不舍得折腾。还可以开发那些功能的请各位大神多多指点。
5、做相册应用时,当使用文件系统切换上一张和下一张照片时,会出现bug,可能是内存没释放或者没有关闭文件导致的。使用的函数是lv_img_set_src(img, name);
这个bug是lv_obj_del() 的对象有问题;改为下面的就可以
int8_t img_num = 0;
static void btn_2_event_handler(lv_obj_t * btn, lv_event_t event)
{
if (event == LV_EVENT_SHORT_CLICKED)
{
static lv_obj_t * imgtxjg = NULL;
lv_obj_t * page = lv_obj_get_parent(btn);
if (imgtxjg)
lv_obj_del(imgtxjg, NULL);
img_num++;
if (img_num > 12)
img_num = 0;
char name[30] = { 0 };
sprintf(name, "P:/lv_apk/%s", img_name[img_num]);
printf("%s\r\n", name);
// lv_img_set_src(lv_obj_get_child(lv_obj_get_parent(btn), NULL), name);
imgtxjg = lv_img_create(page, NULL);
lv_img_set_src(imgtxjg, name);
lv_obj_align(imgtxjg, page, LV_ALIGN_CENTER, 0, 20);
}
}
static void btn_1_event_handler(lv_obj_t * btn, lv_event_t event)
{
if (event == LV_EVENT_SHORT_CLICKED)
{
lv_obj_t * imgtxjg = NULL;
lv_obj_t * page = lv_obj_get_parent(btn);
if (imgtxjg) {
lv_obj_del(imgtxjg, NULL);
}
img_num--;
if (img_num < 0)
img_num = 12;
char name[30] = { 0 };
sprintf(name, "P:/lv_apk/%s", img_name[img_num]);
imgtxjg = lv_img_create(page, NULL);
lv_img_set_src(imgtxjg, name);
lv_obj_align(imgtxjg, page, LV_ALIGN_CENTER, 0, 20);
}
}
页次: 1