Quellcode durchsuchen

更新CPU和MCU工程(iram版本和sram-nos版本)驱动代码逻辑
1.优化CPU工程emmc初始化逻辑。(跳过sdio和sd卡识别过程)
2.优化MCU工程RTC模块配置sleep_mode逻辑。(由demo中配置改为统一在RTC_PowerDown函数中配置)
3.优化MCU工程RTC模块驱动注释错误问题。

helen vor 6 Monaten
Ursprung
Commit
cb5c7a54d7

+ 31 - 28
amt630hv160-freertos-beta/ArkmicroFiles/libcpu-amt630hv160/source/sdio/mmcsd_core.c

@@ -772,35 +772,38 @@ void mmcsd_detect(void *param)
 
 	                mmcsd_send_if_cond(host, host->valid_ocr);
 
-	                err = sdio_io_send_op_cond(host, 0, &ocr);
-	                if (!err)
-	                {
-	                    if (init_sdio(host, ocr)) {
-	                        mmcsd_power_off(host);
-						}else {
-							xEventGroupSetBits(mmcsd_dev_status[mmc_obj->id], MMCSD_STATUS_READY);
-						}
-	                    mmcsd_host_unlock(host);
-	                    continue;
-	                }
-
-					/*
-					 * detect SD card
-					 */
-					err = mmcsd_send_app_op_cond(host, 0, &ocr);
-					if (!err)
-					{
-					    if (init_sd(host, ocr)) {
-					            mmcsd_power_off(host);
-					            continue;
-					    }
-						sdmmc_cardinfo[mmc_obj->id] = host->card;
-					    mmcsd_host_unlock(host);
-						sdmmc_disk[mmc_obj->id] = FF_SDDiskInit(disk);
-						if(sdmmc_disk[mmc_obj->id]) {
-							xEventGroupSetBits(mmcsd_dev_status[mmc_obj->id], MMCSD_STATUS_READY);
+					if (mmcsd_dev->hotpluge_support
+						 || mmcsd_dev->sdio_card) {
+		                err = sdio_io_send_op_cond(host, 0, &ocr);
+		                if (!err)
+		                {
+		                    if (init_sdio(host, ocr)) {
+		                        mmcsd_power_off(host);
+							}else {
+								xEventGroupSetBits(mmcsd_dev_status[mmc_obj->id], MMCSD_STATUS_READY);
+							}
+		                    mmcsd_host_unlock(host);
+		                    continue;
+		                }
+
+						/*
+						 * detect SD card
+						 */
+						err = mmcsd_send_app_op_cond(host, 0, &ocr);
+						if (!err)
+						{
+						    if (init_sd(host, ocr)) {
+						            mmcsd_power_off(host);
+						            continue;
+						    }
+							sdmmc_cardinfo[mmc_obj->id] = host->card;
+						    mmcsd_host_unlock(host);
+							sdmmc_disk[mmc_obj->id] = FF_SDDiskInit(disk);
+							if(sdmmc_disk[mmc_obj->id]) {
+								xEventGroupSetBits(mmcsd_dev_status[mmc_obj->id], MMCSD_STATUS_READY);
+							}
+						    continue;
 						}
-					    continue;
 					}
 
 	                /*

+ 0 - 4
amt630hv160-mcu/amt630hv160-mcu-iram/src/App/rtc_demo.c

@@ -29,7 +29,6 @@ void entry_acc_sleep(int fastboot, u8 wakeup_mode)
 		return;
 
 	printf("entry sleep.\n");
-	RTC_SendCmd(RTC_SleepMode, 1);
 	RTC_PowerDown(fastboot);
 }
 
@@ -53,7 +52,6 @@ void entry_rtc_sleep(u32 time_s)
 		time_s += 1;
 
 	RTC_WriteReg(RTC_RAMH, &RTC->RAM_H, RTC->CNT_H + time_s);//config sleep time
-	RTC_SendCmd(RTC_SleepMode, 1);
 	RTC_PowerDown(0);
 }
 #elif RTC_DEMO == RTC_GPIO0WAKEUP_DEMO
@@ -73,7 +71,6 @@ void entry_gpio0_sleep(int fastboot, u8 wakeup_mode)
 	RTC_SetWakeup(RTC_WAKEUP_ACC, RTC_WAKEUP_RISING, 0);
 
 	printf("entry sleep.\n");
-	RTC_SendCmd(RTC_SleepMode, 1);
 	RTC_PowerDown(fastboot);
 }
 #elif RTC_DEMO == RTC_GPIO1WAKEUP_DEMO
@@ -93,7 +90,6 @@ void entry_gpio1_sleep(int fastboot, u8 wakeup_mode)
 	RTC_SetWakeup(RTC_WAKEUP_ACC, RTC_WAKEUP_RISING, 0);
 
 	printf("entry sleep.\n");
-	RTC_SendCmd(RTC_SleepMode, 1);
 	RTC_PowerDown(fastboot);
 }
 #endif

+ 2 - 1
amt630hv160-mcu/amt630hv160-mcu-iram/src/ArkmicroFiles/libcpu-amt630hv160/source/amt630hv160_rtc.c

@@ -115,6 +115,7 @@ void RTC_PowerDown(int fastboot)
 
 	__disable_interrupt();
 
+	RTC_SendCmd(RTC_SleepMode, 1);
 	RTC_SendCmd(RTC_ISOForce, 0);
 
 	val &= ~(0xffff << 16);
@@ -135,7 +136,7 @@ void RTC_PowerDown(int fastboot)
 	//rtc mcu power on/off delay 100ms
 	val = RTC->PMC;
 	val &= ~(0xff << 8);
-	val |= (100 << 8);			//确保延时时间的一半大于休眠时从power信号拉低到外部器件完全掉电的时间
+	val |= (100 << 8);			//确保延时时间的两倍大于休眠时从power信号拉低到外部器件完全掉电的时间
 	RTC_WriteReg(RTC_PMC, &RTC->PMC, val);
 
 	//rtc switch to 32k crystal

+ 0 - 4
amt630hv160-mcu/amt630hv160-mcu-sram-nos/src/App/rtc_demo.c

@@ -29,7 +29,6 @@ void entry_acc_sleep(int fastboot, u8 wakeup_mode)
 		return;
 
 	printf("entry sleep.\n");
-	RTC_SendCmd(RTC_SleepMode, 1);
 	RTC_PowerDown(fastboot);
 }
 
@@ -53,7 +52,6 @@ void entry_rtc_sleep(u32 time_s)
 		time_s += 1;
 
 	RTC_WriteReg(RTC_RAMH, &RTC->RAM_H, RTC->CNT_H + time_s);//config sleep time
-	RTC_SendCmd(RTC_SleepMode, 1);
 	RTC_PowerDown(0);
 }
 #elif RTC_DEMO == RTC_GPIO0WAKEUP_DEMO
@@ -73,7 +71,6 @@ void entry_gpio0_sleep(int fastboot, u8 wakeup_mode)
 	RTC_SetWakeup(RTC_WAKEUP_ACC, RTC_WAKEUP_RISING, 0);
 
 	printf("entry sleep.\n");
-	RTC_SendCmd(RTC_SleepMode, 1);
 	RTC_PowerDown(fastboot);
 }
 #elif RTC_DEMO == RTC_GPIO1WAKEUP_DEMO
@@ -93,7 +90,6 @@ void entry_gpio1_sleep(int fastboot, u8 wakeup_mode)
 	RTC_SetWakeup(RTC_WAKEUP_ACC, RTC_WAKEUP_RISING, 0);
 
 	printf("entry sleep.\n");
-	RTC_SendCmd(RTC_SleepMode, 1);
 	RTC_PowerDown(fastboot);
 }
 #endif

+ 2 - 1
amt630hv160-mcu/amt630hv160-mcu-sram-nos/src/ArkmicroFiles/libcpu-amt630hv160/source/amt630hv160_rtc.c

@@ -115,6 +115,7 @@ void RTC_PowerDown(int fastboot)
 
 	__disable_interrupt();
 
+	RTC_SendCmd(RTC_SleepMode, 1);
 	RTC_SendCmd(RTC_ISOForce, 0);
 
 	val &= ~(0xffff << 16);
@@ -135,7 +136,7 @@ void RTC_PowerDown(int fastboot)
 	//rtc mcu power on/off delay 100ms
 	val = RTC->PMC;
 	val &= ~(0xff << 8);
-	val |= (100 << 8);			//确保延时时间的一半大于休眠时从power信号拉低到外部器件完全掉电的时间
+	val |= (100 << 8);			//确保延时时间的两倍大于休眠时从power信号拉低到外部器件完全掉电的时间
 	RTC_WriteReg(RTC_PMC, &RTC->PMC, val);
 
 	//rtc switch to 32k crystal