Parcourir la source

1、添加伊欧LCM的点亮时序,版本号与达明光电LCM的区分,用宏定义DMG_LCM区分
2、修改上传头像失败的问题
1)在分配临时内存前先清除内存,避免被占用而内存空间不够,如果分配失败则停止本次头像传输;
2)如果在传输过程中因漏数据等待超时,超时中断函数里将清除定时器运行标志,使其在下一帧数据传过来时重启超时定时器来计时。

robbin il y a 3 semaines
Parent
commit
782e308882

+ 10 - 1
application/aem_watch/src/user_cfg/device_info_cfg.h

@@ -3,9 +3,18 @@
 */
 #ifndef __DEVICE_INFO_CONFIG_H__
 #define __DEVICE_INFO_CONFIG_H__
+//#define DMG_LCM  //达明光电的LCM
+
+#ifdef DMG_LCM
 #define MAJOR_VERSION 1
 #define MINOR_VERSION 1
-#define MICRO_VERSION 0
+#define MICRO_VERSION 1
+#else
+#define MAJOR_VERSION 2
+#define MINOR_VERSION 0
+#define MICRO_VERSION 2
+#endif
+
 #define DEVICE_ID "CJ01"//3085
 #define DEVICE_NAME "Catsights"//"3085S WATCH"
 #define DEVICE_NAME_UI "Catsights"//"3085S WATCH"

+ 1 - 1
thirdparty/lib/aem/config/aem_project.h

@@ -4,7 +4,7 @@
 #pragma warning(error : 4013)
 #endif
 #define AEM_VERSION "BL_Develop_NOR"
-#define BUILD_TIME "202504291020"
+#define BUILD_TIME "202505262045"
 #define AEM_GUI_FWK_LIB_VER "2.0.0.0"
 #define APP_DOWNLOAD_URL "https://customer.com"
 #define AEM_APP_TRANS_ANIMATION 1

+ 119 - 187
zephyr/drivers/display/panel/panel_st77916.c

@@ -51,6 +51,7 @@ static inline void _panel_transmit_p1(const struct device *dev, uint32_t cmd, ui
 	_panel_transmit(dev, cmd, &tx_data, 1);
 }
 
+#ifdef DMG_LCM  // DMG LCM
 static void _panel_transmit_p2(const struct device *dev, uint32_t cmd, uint8_t data1, uint8_t data2)
 {
 	uint8_t data_array[2] = {
@@ -60,7 +61,7 @@ static void _panel_transmit_p2(const struct device *dev, uint32_t cmd, uint8_t d
 
 	_panel_transmit(dev, cmd, data_array, 2);
 }
-
+#endif
 static int _panel_set_brightness(const struct device *dev, uint8_t brightness)
 {
 	_panel_transmit_p1(dev, DDIC_CMD_WRDISBV, brightness);
@@ -177,7 +178,7 @@ static int _panel_init(const struct device *dev)
 	
 	printk("st77916 panel_init \r\n ");
 	
-#if 1
+#ifdef DMG_LCM  // DMG LCM
 	_panel_transmit_p1(dev, 0xf0, 0x08);
 	_panel_transmit_p1(dev, 0xF2, 0x08);
 	_panel_transmit_p1(dev, 0x9B, 0x51);
@@ -506,51 +507,62 @@ static int _panel_init(const struct device *dev)
 	//_panel_transmit_cmd(dev, 0x1c);
 	//k_msleep(120);
 	
-#else
+#else  //伊欧 LCM  2025.5.12
 
-  _panel_transmit_p1(dev, 0xf0, 0x08);
-	_panel_transmit_p1(dev, 0xF2, 0x08);
-	_panel_transmit_p1(dev, 0x9B, 0x51);
-	_panel_transmit_p1(dev, 0x86, 0x53);
+    _panel_transmit_p1(dev, 0xf0, 0x28);
+	_panel_transmit_p1(dev, 0xF2, 0x28);
+	_panel_transmit_p1(dev, 0x73, 0xF0);
+	_panel_transmit_p1(dev, 0x7C, 0xD1);
 
-	_panel_transmit_p1(dev, 0xF2, 0x08);
+	_panel_transmit_p1(dev, 0x83, 0xE0);
+	_panel_transmit_p1(dev, 0x84, 0x61);
+	_panel_transmit_p1(dev, 0xF2, 0x82);
 	_panel_transmit_p1(dev, 0xF0, 0x00);
+
 	_panel_transmit_p1(dev, 0xF0, 0x01);
 	_panel_transmit_p1(dev, 0xF1, 0x01);
+	_panel_transmit_p1(dev, 0xB0, 0x65);
+	_panel_transmit_p1(dev, 0xB1, 0x3E);
 
-	_panel_transmit_p1(dev, 0xB0, 0x54);
-	_panel_transmit_p1(dev, 0xB1, 0x3F);
-	_panel_transmit_p1(dev, 0xB2, 0x2A);
-	_panel_transmit_p1(dev, 0xB4, 0x46);
+	_panel_transmit_p1(dev, 0xB2, 0x33);
+	_panel_transmit_p1(dev, 0xB3, 0x01);
+	_panel_transmit_p1(dev, 0xB4, 0x69);
+	_panel_transmit_p1(dev, 0xB5, 0x45);
 
-	_panel_transmit_p1(dev, 0xB5, 0x34);
-	_panel_transmit_p1(dev, 0xB6, 0xD5);
-	_panel_transmit_p1(dev, 0xB7, 0x30);
-	_panel_transmit_p1(dev, 0xB8, 0x04);
+	_panel_transmit_p1(dev, 0xB6, 0x8B);
+	_panel_transmit_p1(dev, 0xB7, 0x41);
+	_panel_transmit_p1(dev, 0xB8, 0x86);
+	_panel_transmit_p1(dev, 0xB9, 0x15);
 
 	_panel_transmit_p1(dev, 0xBA, 0x00);
 	_panel_transmit_p1(dev, 0xBB, 0x08);
 	_panel_transmit_p1(dev, 0xBC, 0x08);
 	_panel_transmit_p1(dev, 0xBD, 0x00);
 
+	_panel_transmit_p1(dev, 0xBE, 0x00);
+	_panel_transmit_p1(dev, 0xBF, 0x07);
 	_panel_transmit_p1(dev, 0xC0, 0x80);
 	_panel_transmit_p1(dev, 0xC1, 0x10);
+
 	_panel_transmit_p1(dev, 0xC2, 0x37);
 	_panel_transmit_p1(dev, 0xC3, 0x80);
-
 	_panel_transmit_p1(dev, 0xC4, 0x10);
 	_panel_transmit_p1(dev, 0xC5, 0x37);
+
 	_panel_transmit_p1(dev, 0xC6, 0xA9);
 	_panel_transmit_p1(dev, 0xC7, 0x41);
-
-	_panel_transmit_p1(dev, 0xC8, 0x51);
+	_panel_transmit_p1(dev, 0xC8, 0x01);
 	_panel_transmit_p1(dev, 0xC9, 0xA9);
+
 	_panel_transmit_p1(dev, 0xCA, 0x41);
-	_panel_transmit_p1(dev, 0xCB, 0x51);
+	_panel_transmit_p1(dev, 0xCB, 0x01);
+	_panel_transmit_p1(dev, 0xCC, 0x7F);
+	_panel_transmit_p1(dev, 0xCD, 0x7F);
 
+	_panel_transmit_p1(dev, 0xCE, 0xFF);
 	_panel_transmit_p1(dev, 0xD0, 0x91);
 	_panel_transmit_p1(dev, 0xD1, 0x68);
-	_panel_transmit_p1(dev, 0xD2, 0x69);
+	_panel_transmit_p1(dev, 0xD2, 0x68);
 
 	const uint8_t data_0xf5[] = {
 		0x00,
@@ -558,41 +570,38 @@ static int _panel_init(const struct device *dev)
 	};
 	_panel_transmit(dev, 0xF5, data_0xf5, sizeof(data_0xf5));
 
-	_panel_transmit_p1(dev, 0xDD, 0x35);
-	_panel_transmit_p1(dev, 0xDE, 0x35);
 	_panel_transmit_p1(dev, 0xF1, 0x10);
 	_panel_transmit_p1(dev, 0xF0, 0x00);
 	_panel_transmit_p1(dev, 0xF0, 0x02);
 
 	const uint8_t data_0xe0[] = {
-		0x70, 0x09, 0x12, 0x0C, 0x0B, 0x27, 0x38, 0x54, 0x4E, 0x19, 0x15, 0x15, 0x2C, 0x2F,
+		0xF0, 0x09, 0x0F, 0x09, 0x0A, 0x16, 0x35, 0x33, 0x4A, 0x18, 0x15, 0x15, 0x2E, 0x34,
 	};
-
 	_panel_transmit(dev, 0xE0, data_0xe0, sizeof(data_0xe0));
 
 	const uint8_t data_0xe1[] = {
-		0x70, 0x08, 0x11, 0x0C, 0x0B, 0x27, 0x38, 0x43, 0x4C, 0x18, 0x14, 0x14, 0x2B, 0x2D,
+		0xF0, 0x09, 0x0F, 0x09, 0x09, 0x16, 0x34, 0x33, 0x4A, 0x18, 0x14, 0x15, 0x2D, 0x33,
 	};
 	_panel_transmit(dev, 0xE1, data_0xe1, sizeof(data_0xe1));
 
 	_panel_transmit_p1(dev, 0xF0, 0x10);
 	_panel_transmit_p1(dev, 0xF3, 0x10);
-	_panel_transmit_p1(dev, 0xE0, 0x0A);
+	_panel_transmit_p1(dev, 0xE0, 0x08);
 	_panel_transmit_p1(dev, 0xE1, 0x00);
 
-	_panel_transmit_p1(dev, 0xE2, 0x0B);
+	_panel_transmit_p1(dev, 0xE2, 0x00);
 	_panel_transmit_p1(dev, 0xE3, 0x00);
 	_panel_transmit_p1(dev, 0xE4, 0xE0);
 	_panel_transmit_p1(dev, 0xE5, 0x06);
 
 	_panel_transmit_p1(dev, 0xE6, 0x21);
-	_panel_transmit_p1(dev, 0xE7, 0x00);
+	_panel_transmit_p1(dev, 0xE7, 0x03);
 	_panel_transmit_p1(dev, 0xE8, 0x05);
-	_panel_transmit_p1(dev, 0xE9, 0x82);
+	_panel_transmit_p1(dev, 0xE9, 0x02);
 
-	_panel_transmit_p1(dev, 0xEA, 0xDF);
-	_panel_transmit_p1(dev, 0xEB, 0x89);
-	_panel_transmit_p1(dev, 0xEC, 0x20);
+	_panel_transmit_p1(dev, 0xEA, 0xE9);
+	_panel_transmit_p1(dev, 0xEB, 0x00);
+	_panel_transmit_p1(dev, 0xEC, 0x00);
 	_panel_transmit_p1(dev, 0xED, 0x14);
 
 	_panel_transmit_p1(dev, 0xEE, 0xFF);
@@ -607,235 +616,158 @@ static int _panel_init(const struct device *dev)
 
 	_panel_transmit_p1(dev, 0xFE, 0x00);
 	_panel_transmit_p1(dev, 0xFF, 0x00);
-	_panel_transmit_p1(dev, 0x60, 0x42);
-	_panel_transmit_p1(dev, 0x61, 0xE0);
+	_panel_transmit_p1(dev, 0x60, 0x40);
+	_panel_transmit_p1(dev, 0x61, 0x05);
 
-	_panel_transmit_p1(dev, 0x62, 0x40);
-	_panel_transmit_p1(dev, 0x63, 0x40);
-	_panel_transmit_p1(dev, 0x64, 0x02);
+	_panel_transmit_p1(dev, 0x62, 0x00);
+	_panel_transmit_p1(dev, 0x63, 0x42);
+	_panel_transmit_p1(dev, 0x64, 0xDA);
 	_panel_transmit_p1(dev, 0x65, 0x00);
 
-	_panel_transmit_p1(dev, 0x66, 0x40);
-	_panel_transmit_p1(dev, 0x67, 0x03);
+	_panel_transmit_p1(dev, 0x66, 0x00);
+	_panel_transmit_p1(dev, 0x67, 0x00);
 	_panel_transmit_p1(dev, 0x68, 0x00);
 	_panel_transmit_p1(dev, 0x69, 0x00);
 
 	_panel_transmit_p1(dev, 0x6A, 0x00);
 	_panel_transmit_p1(dev, 0x6B, 0x00);
-	_panel_transmit_p1(dev, 0x70, 0x42);
-	_panel_transmit_p1(dev, 0x71, 0xE0);
+	_panel_transmit_p1(dev, 0x70, 0x40);
+	_panel_transmit_p1(dev, 0x71, 0x04);
 
-	_panel_transmit_p1(dev, 0x72, 0x40);
-	_panel_transmit_p1(dev, 0x73, 0x40);
-	_panel_transmit_p1(dev, 0x74, 0x02);
+	_panel_transmit_p1(dev, 0x72, 0x00);
+	_panel_transmit_p1(dev, 0x73, 0x42);
+	_panel_transmit_p1(dev, 0x74, 0xD9);
 	_panel_transmit_p1(dev, 0x75, 0x00);
 
-	_panel_transmit_p1(dev, 0x76, 0x40);
-	_panel_transmit_p1(dev, 0x77, 0x03);
+	_panel_transmit_p1(dev, 0x76, 0x00);
+	_panel_transmit_p1(dev, 0x77, 0x00);
 	_panel_transmit_p1(dev, 0x78, 0x00);
 	_panel_transmit_p1(dev, 0x79, 0x00);
 
 	_panel_transmit_p1(dev, 0x7A, 0x00);
 	_panel_transmit_p1(dev, 0x7B, 0x00);
-	_panel_transmit_p1(dev, 0x80, 0x38);
+	_panel_transmit_p1(dev, 0x80, 0x48);
 	_panel_transmit_p1(dev, 0x81, 0x00);
 
-	_panel_transmit_p1(dev, 0x82, 0x04);
+	_panel_transmit_p1(dev, 0x82, 0x07);
 	_panel_transmit_p1(dev, 0x83, 0x02);
-	_panel_transmit_p1(dev, 0x84, 0xDC);
-	_panel_transmit_p1(dev, 0x85, 0x00);
+	_panel_transmit_p1(dev, 0x84, 0xD7);
+	_panel_transmit_p1(dev, 0x85, 0x04);
 
 	_panel_transmit_p1(dev, 0x86, 0x00);
 	_panel_transmit_p1(dev, 0x87, 0x00);
-	_panel_transmit_p1(dev, 0x88, 0x38);
+	_panel_transmit_p1(dev, 0x88, 0x48);
 	_panel_transmit_p1(dev, 0x89, 0x00);
 
-	_panel_transmit_p1(dev, 0x8A, 0x06);
+	_panel_transmit_p1(dev, 0x8A, 0x09);
 	_panel_transmit_p1(dev, 0x8B, 0x02);
-	_panel_transmit_p1(dev, 0x8C, 0xDE);
-	_panel_transmit_p1(dev, 0x8D, 0x00);
+	_panel_transmit_p1(dev, 0x8C, 0xD9);
+	_panel_transmit_p1(dev, 0x8D, 0x04);
 
 	_panel_transmit_p1(dev, 0x8E, 0x00);
 	_panel_transmit_p1(dev, 0x8F, 0x00);
-	_panel_transmit_p1(dev, 0x90, 0x38);
+	_panel_transmit_p1(dev, 0x90, 0x48);
 	_panel_transmit_p1(dev, 0x91, 0x00);
 
-	_panel_transmit_p1(dev, 0x92, 0x08);
+	_panel_transmit_p1(dev, 0x92, 0x0B);
 	_panel_transmit_p1(dev, 0x93, 0x02);
-	_panel_transmit_p1(dev, 0x94, 0xE0);
-	_panel_transmit_p1(dev, 0x95, 0x00);
+	_panel_transmit_p1(dev, 0x94, 0xDB);
+	_panel_transmit_p1(dev, 0x95, 0x04);
 
 	_panel_transmit_p1(dev, 0x96, 0x00);
 	_panel_transmit_p1(dev, 0x97, 0x00);
-	_panel_transmit_p1(dev, 0x98, 0x38);
+	_panel_transmit_p1(dev, 0x98, 0x48);
 	_panel_transmit_p1(dev, 0x99, 0x00);
 
-	_panel_transmit_p1(dev, 0x9A, 0x0A);
+	_panel_transmit_p1(dev, 0x9A, 0x0D);
 	_panel_transmit_p1(dev, 0x9B, 0x02);
-	_panel_transmit_p1(dev, 0x9C, 0xE2);
-	_panel_transmit_p1(dev, 0x9D, 0x00);
+	_panel_transmit_p1(dev, 0x9C, 0xDD);
+	_panel_transmit_p1(dev, 0x9D, 0x04);
 
 	_panel_transmit_p1(dev, 0x9E, 0x00);
 	_panel_transmit_p1(dev, 0x9F, 0x00);
-	_panel_transmit_p1(dev, 0xA0, 0x38);
+	_panel_transmit_p1(dev, 0xA0, 0x48);
 	_panel_transmit_p1(dev, 0xA1, 0x00);
 
-	_panel_transmit_p1(dev, 0xA2, 0x03);
+	_panel_transmit_p1(dev, 0xA2, 0x06);
 	_panel_transmit_p1(dev, 0xA3, 0x02);
-	_panel_transmit_p1(dev, 0xA4, 0xDB);
-	_panel_transmit_p1(dev, 0xA5, 0x00);
+	_panel_transmit_p1(dev, 0xA4, 0xD6);
+	_panel_transmit_p1(dev, 0xA5, 0x04);
 
 	_panel_transmit_p1(dev, 0xA6, 0x00);
 	_panel_transmit_p1(dev, 0xA7, 0x00);
-	_panel_transmit_p1(dev, 0xA8, 0x38);
+	_panel_transmit_p1(dev, 0xA8, 0x48);
 	_panel_transmit_p1(dev, 0xA9, 0x00);
 
-	_panel_transmit_p1(dev, 0xAA, 0x05);
+	_panel_transmit_p1(dev, 0xAA, 0x08);
 	_panel_transmit_p1(dev, 0xAB, 0x02);
-	_panel_transmit_p1(dev, 0xAC, 0xDD);
-	_panel_transmit_p1(dev, 0xAD, 0x00);
+	_panel_transmit_p1(dev, 0xAC, 0xD8);
+	_panel_transmit_p1(dev, 0xAD, 0x04);
 
 	_panel_transmit_p1(dev, 0xAE, 0x00);
 	_panel_transmit_p1(dev, 0xAF, 0x00);
-	_panel_transmit_p1(dev, 0xB0, 0x38);
+	_panel_transmit_p1(dev, 0xB0, 0x48);
 	_panel_transmit_p1(dev, 0xB1, 0x00);
 
-	_panel_transmit_p1(dev, 0xB2, 0x07);
+	_panel_transmit_p1(dev, 0xB2, 0x0A);
 	_panel_transmit_p1(dev, 0xB3, 0x02);
-	_panel_transmit_p1(dev, 0xB4, 0xDF);
-	_panel_transmit_p1(dev, 0xB5, 0x00);
+	_panel_transmit_p1(dev, 0xB4, 0xDA);
+	_panel_transmit_p1(dev, 0xB5, 0x04);
 
 	_panel_transmit_p1(dev, 0xB6, 0x00);
 	_panel_transmit_p1(dev, 0xB7, 0x00);
-	_panel_transmit_p1(dev, 0xB8, 0x38);
+	_panel_transmit_p1(dev, 0xB8, 0x48);
 	_panel_transmit_p1(dev, 0xB9, 0x00);
 
-	_panel_transmit_p1(dev, 0xBA, 0x09);
+	_panel_transmit_p1(dev, 0xBA, 0x0C);
 	_panel_transmit_p1(dev, 0xBB, 0x02);
-	_panel_transmit_p1(dev, 0xBC, 0xE1);
-	_panel_transmit_p1(dev, 0xBD, 0x00);
+	_panel_transmit_p1(dev, 0xBC, 0xDC);
+	_panel_transmit_p1(dev, 0xBD, 0x04);
 
 	_panel_transmit_p1(dev, 0xBE, 0x00);
 	_panel_transmit_p1(dev, 0xBF, 0x00);
-	_panel_transmit_p1(dev, 0xC0, 0x22);
-	_panel_transmit_p1(dev, 0xC1, 0xAA);
-
-	_panel_transmit_p1(dev, 0xC2, 0x65);
-	_panel_transmit_p1(dev, 0xC3, 0x74);
-	_panel_transmit_p1(dev, 0xC4, 0x47);
-	_panel_transmit_p1(dev, 0xC5, 0x56);
-
-	_panel_transmit_p1(dev, 0xC6, 0x00);
-	_panel_transmit_p1(dev, 0xC7, 0x88);
-	_panel_transmit_p1(dev, 0xC8, 0x99);
-	_panel_transmit_p1(dev, 0xC9, 0x33);
-
-	_panel_transmit_p1(dev, 0xD0, 0x11);
-	_panel_transmit_p1(dev, 0xD1, 0xAA);
-	_panel_transmit_p1(dev, 0xD2, 0x65);
-	_panel_transmit_p1(dev, 0xD3, 0x74);
-
-	_panel_transmit_p1(dev, 0xD4, 0x47);
-	_panel_transmit_p1(dev, 0xD5, 0x56);
-	_panel_transmit_p1(dev, 0xD6, 0x00);
-	_panel_transmit_p1(dev, 0xD7, 0x88);
-
-	_panel_transmit_p1(dev, 0xD8, 0x99);
-	_panel_transmit_p1(dev, 0xD9, 0x33);
+	_panel_transmit_p1(dev, 0xC0, 0x10);
+	_panel_transmit_p1(dev, 0xC1, 0x47);
+
+	_panel_transmit_p1(dev, 0xC2, 0x56);
+	_panel_transmit_p1(dev, 0xC3, 0x65);
+	_panel_transmit_p1(dev, 0xC4, 0x74);
+	_panel_transmit_p1(dev, 0xC5, 0x88);
+
+	_panel_transmit_p1(dev, 0xC6, 0x99);
+	_panel_transmit_p1(dev, 0xC7, 0x01);
+	_panel_transmit_p1(dev, 0xC8, 0xBB);
+	_panel_transmit_p1(dev, 0xC9, 0xAA);
+
+	_panel_transmit_p1(dev, 0xD0, 0x10);
+	_panel_transmit_p1(dev, 0xD1, 0x47);
+	_panel_transmit_p1(dev, 0xD2, 0x56);
+	_panel_transmit_p1(dev, 0xD3, 0x65);
+
+	_panel_transmit_p1(dev, 0xD4, 0x74);
+	_panel_transmit_p1(dev, 0xD5, 0x88);
+	_panel_transmit_p1(dev, 0xD6, 0x99);
+	_panel_transmit_p1(dev, 0xD7, 0x01);
+
+	_panel_transmit_p1(dev, 0xD8, 0xBB);
+	_panel_transmit_p1(dev, 0xD9, 0xAA);
 	_panel_transmit_p1(dev, 0xF3, 0x01);
 	_panel_transmit_p1(dev, 0xF0, 0x00);
 
-	_panel_transmit_p1(dev, 0xF0, 0x01);
-	_panel_transmit_p1(dev, 0xF1, 0x01);
-	_panel_transmit_p1(dev, 0xA0, 0x0B);
-
-	_panel_transmit_p1(dev, 0xA3, 0x2A);
-	_panel_transmit_p1(dev, 0xA5, 0xC3);
-	k_msleep(1);
-
-	_panel_transmit_p1(dev, 0xA3, 0x2B);
-	_panel_transmit_p1(dev, 0xA5, 0xC3);
-	k_msleep(1);
-
-	_panel_transmit_p1(dev, 0xA3, 0x2C);
-	_panel_transmit_p1(dev, 0xA5, 0xC3);
-	k_msleep(1);
-
-	_panel_transmit_p1(dev, 0xA3, 0x2D);
-	_panel_transmit_p1(dev, 0xA5, 0xC3);
-	k_msleep(1);
-
-	_panel_transmit_p1(dev, 0xA3, 0x2E);
-	_panel_transmit_p1(dev, 0xA5, 0xC3);
-	k_msleep(1);
-
-	_panel_transmit_p1(dev, 0xA3, 0x2F);
-	_panel_transmit_p1(dev, 0xA5, 0xC3);
-	k_msleep(1);
-
-	_panel_transmit_p1(dev, 0xA3, 0x30);
-	_panel_transmit_p1(dev, 0xA5, 0xC3);
-	k_msleep(1);
-
-	_panel_transmit_p1(dev, 0xA3, 0x31);
-	_panel_transmit_p1(dev, 0xA5, 0xC3);
-	k_msleep(1);
-
-	_panel_transmit_p1(dev, 0xA3, 0x32);
-	_panel_transmit_p1(dev, 0xA5, 0xC3);
-	k_msleep(1);
-
-	_panel_transmit_p1(dev, 0xA3, 0x33);
-	_panel_transmit_p1(dev, 0xA5, 0xC3);
-	k_msleep(1);
-
-	_panel_transmit_p1(dev, 0xA0, 0x09);
-	_panel_transmit_p1(dev, 0xF1, 0x10);
-	_panel_transmit_p1(dev, 0xF0, 0x00);
-
-	const uint8_t data_0x2a[] = {
-		0x00,
-		0x00,
-		0x01,
-		0x67,
-	};
-	_panel_transmit(dev, 0x2a, data_0x2a, sizeof(data_0x2a));
-
-	const uint8_t data_0x2b[] = {
-		0x01,
-		0x68,
-		0x01,
-		0x68,
-	};
-	_panel_transmit(dev, 0x2b, data_0x2b, sizeof(data_0x2b));
-
-	_panel_transmit_p1(dev, 0x4D, 0x00);
-	_panel_transmit_p1(dev, 0x4E, 0x00);
-	_panel_transmit_p1(dev, 0x4F, 0x00);
-	_panel_transmit_p1(dev, 0x4C, 0x01);
-	k_msleep(10);
-
-	_panel_transmit_p1(dev, 0x4C, 0x00);
-	_panel_transmit(dev, 0x2a, data_0x2a, sizeof(data_0x2a));
-	_panel_transmit(dev, 0x2b, data_0x2a, sizeof(data_0x2a));
+	_panel_transmit_p1(dev, 0x3A, 0x05);
+	_panel_transmit_p1(dev, 0x36, 0x00);
+	_panel_transmit_p1(dev, 0x35, 0x00);  //TE
 
 	_panel_transmit_cmd(dev, 0x21);
 
-            	/* TE */
-	_panel_transmit_p2(dev, DDIC_CMD_STESL,
-			CONFIG_PANEL_TE_SCANLINE >> 8, CONFIG_PANEL_TE_SCANLINE & 0xff);
-	_panel_transmit_p1(dev, DDIC_CMD_TEON, 0x00);
-
-    _panel_transmit_p1(dev, 0x53, 0x20);
-
 	_panel_transmit_cmd(dev, 0x11); /* Sleep Out */
 	k_msleep(120);
 
 	_panel_transmit_cmd(dev, 0x29); /* Display On */
-	k_msleep(120);
+	//k_msleep(120);
 	
-	_panel_transmit_cmd(dev, 0x1c);
-	k_msleep(120);
+	//_panel_transmit_cmd(dev, 0x1c);
+	//k_msleep(120);
 #endif
 	// _panel_init_te(dev);
 	printk("st77916 panel_init exit\r\n ");

+ 17 - 15
zephyr/drivers/display/panel/panel_st77916.h

@@ -12,8 +12,8 @@
 #define DDIC_CMD_RDDID			0x04 /* Read Display ID */
 #define DDIC_CMD_RDNUMED		0x05 /* Read Number of Errors on DSI */
 #define DDIC_CMD_RDDPM			0x0A /* Read Display Power Mode */
-#define DDIC_CMD_RDDMADCTR	0x0B /* Read Display MADCTR */
-#define DDIC_CMD_RDDCOLMOD	0x0C /* Read Display Pixel Format */
+#define DDIC_CMD_RDDMADCTR	    0x0B /* Read Display MADCTR */
+#define DDIC_CMD_RDDCOLMOD	    0x0C /* Read Display Pixel Format */
 #define DDIC_CMD_RDDIM			0x0D /* Read Display Image Mode */
 #define DDIC_CMD_RDDSM			0x0E /* Read Display Signal Mode */
 #define DDIC_CMD_RDDSDR			0x0F /* Read Display Self-Diagnostic Result */
@@ -33,7 +33,7 @@
 #define DDIC_CMD_PTLAR 			0x30 /* Partial Area */
 #define DDIC_CMD_VPTLAR 		0x31 /* Vertical Partial Area */
 #define DDIC_CMD_TEOFF			0x34 /* Tearing Effect Line OFF */
-#define DDIC_CMD_TEON				0x35 /* Tearing Effect Line ON */
+#define DDIC_CMD_TEON			0x35 /* Tearing Effect Line ON */
 #define DDIC_CMD_MADCTR 		0x36 /* Scan Direction Control */
 #define DDIC_CMD_IDMOFF			0x38 /* Idle Mode Off */
 #define DDIC_CMD_IDMON			0x39 /* Idle Mode On */
@@ -41,18 +41,18 @@
 #define DDIC_CMD_RAMWRC 		0x3C /* Memory Continuous Write */
 
 #define DDIC_CMD_STESL 			0x44 /* Set Tear Scanline */
-#define DDIC_CMD_GSL 				0x45 /* Get Scanline */
+#define DDIC_CMD_GSL 			0x45 /* Get Scanline */
 #define DDIC_CMD_DSTBON 		0x4F /* Deep Standby Mode On */
 #define DDIC_CMD_WRDISBV 		0x51 /* Write Display Brightness */
 #define DDIC_CMD_RDDISBV 		0x52 /* Read Display Brightness */
 #define DDIC_CMD_WRCTRLD 		0x53 /* Write Display Control */
 #define DDIC_CMD_RDCTRLD 		0x54 /* Read Display Control */
-#define DDIC_CMD_WRRADACL 	0x55 /* RAD_ACL Control */
-#define DDIC_CMD_SCE 				0x58 /* Set Color Enhance */
-#define DDIC_CMD_GCE 				0x59 /* Read Color Enhance */
-#define DDIC_CMD_WRHBMDISBV 0x63 /* Write HBM Display Brightness */
-#define DDIC_CMD_RDHBMDISBV 0x64 /* Read HBM Display Brightness */
-#define DDIC_CMD_HBM 				0x66 /* Set HBM Mode */
+#define DDIC_CMD_WRRADACL 	    0x55 /* RAD_ACL Control */
+#define DDIC_CMD_SCE 			0x58 /* Set Color Enhance */
+#define DDIC_CMD_GCE 			0x59 /* Read Color Enhance */
+#define DDIC_CMD_WRHBMDISBV     0x63 /* Write HBM Display Brightness */
+#define DDIC_CMD_RDHBMDISBV     0x64 /* Read HBM Display Brightness */
+#define DDIC_CMD_HBM 			0x66 /* Set HBM Mode */
 #define DDIC_CMD_DEEPIDM 		0x67 /* Set Deep Idle Mode */
 
 #define DDIC_CMD_COLSET 		0x70 /* Interface Pixel Format Set */
@@ -61,16 +61,18 @@
 #define DDIC_CMD_RDDDBC 		0xA8 /* Read DDB Continous */
 #define DDIC_CMD_RDFCS			0xAA /* Read First Checksum */
 #define DDIC_CMD_RDCCS 			0xAF /* Read Continue Checksum */
-#define DDIC_CMD_SETDISPMOD 0xC2 /* Set DISP Mode */
-#define DDIC_CMD_SETDSPIMOD 0xC4 /* Set DSPI Mode */
+#define DDIC_CMD_SETDISPMOD     0xC2 /* Set DISP Mode */
+#define DDIC_CMD_SETDSPIMOD     0xC4 /* Set DSPI Mode */
 
 #define DDIC_CMD_RDID1			0xDA /* Read ID1 */
 #define DDIC_CMD_RDID2			0xDB /* Read ID2 */
 #define DDIC_CMD_RDID3			0xDC /* Read ID3 */
 #define DDIC_CMD_MAUCCTR 		0xFE /* CMD Mode Switch */
-#define DDIC_CMD_RDMAUCCTR 	0xFF /* Read CMD Status */
+#define DDIC_CMD_RDMAUCCTR 	    0xFF /* Read CMD Status */
 
-#define ST77916_RD_CMD(cmd) ((0x33 << 24) | ((uint32_t)(cmd) << 8))
-#define ST77916_WR_CMD(cmd) ((0x32 << 24) | ((uint32_t)(cmd) << 8))
+#define ST77916_RD_CMD(cmd)     ((0x33 << 24) | ((uint32_t)(cmd) << 8))
+#define ST77916_WR_CMD(cmd)     ((0x32 << 24) | ((uint32_t)(cmd) << 8))
+
+//#define DMG_LCM  //达明光电的LCM
 
 #endif /* PANEL_ST77916_DRIVER_H__ */

+ 40 - 19
zephyr/drivers/serial/uart2_rec.c

@@ -60,7 +60,9 @@ struct uart2_rec_data {
 
 static uint8_t byAACnt = 0;
 static uint8_t by55Cnt = 0;
+static uint16_t wOneFrameCnt = 0;
 static bool bReceiveFrameDone = false; // 接收帧完成标志
+static bool bHrTimerIsRunning = false; // 定时器是否在运行
 
 static struct uart2_rec_data str_uart2_rec_data;
 static struct hrtimer g_rtc_uart_proc;
@@ -637,7 +639,17 @@ static void flash_write_proc_timer_acts_handler(struct k_work *work)
 					bSetPhotoReady = true;  // 设置准备标志
 				}
 
-				str_uart2_rec_data.pic_data = (uint8_t *)ui_mem_res_alloc(REC_PIC_BUFFER_SIZE);
+                lvgl_res_clear_decoder_cache();
+
+                if (str_uart2_rec_data.pic_data == NULL)
+                {
+                    str_uart2_rec_data.pic_data = (uint8_t *)ui_mem_res_alloc(REC_PIC_BUFFER_SIZE);
+
+                    if (str_uart2_rec_data.pic_data == NULL)  //申请失败
+                    {
+                        tx_buff[0] = 0x55;
+                    }
+                }
 				memset(str_uart2_rec_data.pic_data, 0, 3);  // 清零
 				//flash_erase(photo_name);  // 清空flash
 
@@ -757,20 +769,27 @@ static void htimer_flash_write_proc(struct hrtimer *ttimer, void *expiry_fn_arg)
 	k_work_submit(&flash_write_proc_timer_acts);  //向系统工作队列提交一个工作项,让工作队列的线程将执行该工作
 }
 
-static void htimer_rec_data_timeout_proc(struct hrtimer *ttimer, void *expiry_fn_arg)
+static void rec_data_timeout_acts_handler(struct k_work *work)
 {
-	uint8_t tx_buff[2];
+    uint8_t tx_buff[2];
 	
 	by55Cnt = 0;
 	byAACnt = 0;
-	//cnt = 0;
+	wOneFrameCnt = 0;
+    bHrTimerIsRunning = false;
 	tx_buff[0] = 0x52;
 	send_frame(str_uart2_rec_data.rec_data[2], tx_buff, 1);
 	memset(str_uart2_rec_data.rec_data, 0, REC_DATA_BUFFER_SIZE);
-	//k_work_submit(&flash_write_proc_timer_acts);  //向系统工作队列提交一个工作项,让工作队列的线程将执行该工作
+}
+K_WORK_DEFINE(rec_data_timeout_acts, rec_data_timeout_acts_handler);
+
+static void htimer_rec_data_timeout_proc(struct hrtimer *ttimer, void *expiry_fn_arg)
+{
+	
+	k_work_submit(&rec_data_timeout_acts);  //向系统工作队列提交一个工作项,让工作队列的线程将执行该工作
 }
 
-static bool bHrTimerIsRunning = false;
+
 
 static void uart_fifo_callback(const struct device *dev, void *user_data)
 {
@@ -778,7 +797,7 @@ static void uart_fifo_callback(const struct device *dev, void *user_data)
 	uint8_t tx_buff[UART_FIFO_MAX];
 	char mac_str[7] = { 0 }; // MAC地址字符串
 	int read_size;
-	static uint16_t cnt;
+	
 	aem_dev_info_t info; // 定义AEM设备信息结构体
 
     //aic_gpio_set_outvalue(64, 0);
@@ -810,7 +829,7 @@ static void uart_fifo_callback(const struct device *dev, void *user_data)
 
 			    if (by55Cnt == 0 && byAACnt == 1)
 				{
-					cnt = 0;
+					wOneFrameCnt = 0;
 					bReceiveFrameDone = false;
 				}
 				else if (by55Cnt == 2 && byAACnt == 2)
@@ -821,45 +840,45 @@ static void uart_fifo_callback(const struct device *dev, void *user_data)
 					hrtimer_stop(&g_rtc_rec_data_timeout_proc);  //停止执行此时钟
 					bHrTimerIsRunning = false;
 				}
-				str_uart2_rec_data.rec_data[cnt++] = rx_buff[i];
+				str_uart2_rec_data.rec_data[wOneFrameCnt++] = rx_buff[i];
 				break;
 
 			case FRAME_HEADER2:
-				if (by55Cnt == 0 && cnt == 1)
+				if (by55Cnt == 0 && byAACnt == 1)
 					by55Cnt++;
 
-				if (cnt > 4 && ((cnt - 5) == str_uart2_rec_data.rec_data[3]))  //长度大于4且与接收数据的长度相等
+				if (wOneFrameCnt > 4 && ((wOneFrameCnt - 5) == str_uart2_rec_data.rec_data[3]))  //长度大于4且与接收数据的长度相等
 					by55Cnt++;
 
-				str_uart2_rec_data.rec_data[cnt++] = rx_buff[i];
+				str_uart2_rec_data.rec_data[wOneFrameCnt++] = rx_buff[i];
 				break;
 
 			default:
 
 				if (byAACnt == 1 && by55Cnt == 1)
 				{
-					if (cnt > 4 && ((cnt - 5) > str_uart2_rec_data.rec_data[3]))  //长度大于4且大于接收数据的长度
+					if ((wOneFrameCnt > 4) && ((wOneFrameCnt - 5) > str_uart2_rec_data.rec_data[3]))  //长度大于4且大于接收数据的长度
 					{
 						by55Cnt = 0;
 						byAACnt = 0;
-						cnt = 0;
+						wOneFrameCnt = 0;
 						tx_buff[0] = 0x51;
 						send_frame(str_uart2_rec_data.rec_data[2], tx_buff, 1);
 						memset(str_uart2_rec_data.rec_data, 0, REC_DATA_BUFFER_SIZE);
 						break;
 					}
 
-					str_uart2_rec_data.rec_data[cnt++] = rx_buff[i];
+					str_uart2_rec_data.rec_data[wOneFrameCnt++] = rx_buff[i];
 
 					/* protection data cannot exceed boundary */
-					if (cnt >= REC_DATA_BUFFER_SIZE)
-						cnt--;
+					if (wOneFrameCnt >= REC_DATA_BUFFER_SIZE)
+                        wOneFrameCnt--;
 				}
 				else
 				{
 					by55Cnt = 0;
 					byAACnt = 0;
-					cnt = 0;
+					wOneFrameCnt = 0;
 					//tx_buff[0] = 0x52;
 					//send_frame(str_uart2_rec_data.rec_data[2], tx_buff, 1);
 					memset(str_uart2_rec_data.rec_data, 0, REC_DATA_BUFFER_SIZE);
@@ -870,7 +889,7 @@ static void uart_fifo_callback(const struct device *dev, void *user_data)
 
 		if (bReceiveFrameDone)
 		{
-			cnt = 0;
+			wOneFrameCnt = 0;
 
 			if (check_receive_frame(str_uart2_rec_data.rec_data))
 			{
@@ -1049,6 +1068,8 @@ static int uart2_rec_init(const struct device *dev)
 
 	hrtimer_init(&g_rtc_rec_data_timeout_proc, htimer_rec_data_timeout_proc, NULL); //初始化定时器
 
+    str_uart2_rec_data.pic_data = NULL;
+
 	//aic_gpio_set_dir(64);
     //aic_gpio_set_outvalue(64, 1);