From ad5bf12ca09f1a8349a90a5560cf270912a7afd7 Mon Sep 17 00:00:00 2001
From: YuanHongbin <975559679@qq.com>
Date: Sun, 14 Sep 2025 04:00:03 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BC=A0=E6=84=9F=E5=99=A8=E6=95=B0=E6=8D=AE?=
=?UTF-8?q?=E9=87=87=E9=9B=86=E5=9F=BA=E6=9C=AC=E5=AE=8C=E6=88=90?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Project/HC32F460/MDK/HC32F460.uvoptx | 79 ++-
Project/HC32F460/MDK/HC32F460.uvprojx | 37 +-
.../HC32F460/source/Module/AD7924/ad7924.c | 2 -
.../source/Module/CS1237/CS1237_LEFTLOW.c | 113 ++--
.../source/Module/CS1237/CS1237_LEFTLOW.h | 38 +-
.../source/Module/CS1237/CS1237_LEFTUP.c | 483 +++++++++--------
.../source/Module/CS1237/CS1237_LEFTUP.h | 65 +--
.../source/Module/CS1237/CS1237_RIGHRLOW.c | 485 ------------------
.../source/Module/CS1237/CS1237_RIGHRLOW.h | 91 ----
.../source/Module/CS1237/CS1237_RIGHTLOW.c | 464 +++++++++++++++++
.../source/Module/CS1237/CS1237_RIGHTLOW.h | 78 +++
.../source/Module/CS1237/CS1237_RIGHTUP.c | 483 +++++++++--------
.../source/Module/CS1237/CS1237_RIGHTUP.h | 65 +--
Project/HC32F460/source/User/Inc/bsp.h | 91 ++--
Project/HC32F460/source/User/Inc/main.h | 86 +++-
Project/HC32F460/source/User/Src/Algorithm.c | 34 +-
Project/HC32F460/source/User/Src/bsp.c | 425 ++++++++++++---
Project/HC32F460/source/User/Src/main.c | 457 +++++++++++++++--
driver/inc/hc32f460_gpio.h | 1 +
driver/inc/hc32f460_icg.h | 2 +-
driver/src/hc32f460_gpio.c | 2 -
mcu/common/hc32_common.h | 2 +-
22 files changed, 2191 insertions(+), 1392 deletions(-)
delete mode 100644 Project/HC32F460/source/Module/AD7924/ad7924.c
delete mode 100644 Project/HC32F460/source/Module/CS1237/CS1237_RIGHRLOW.c
delete mode 100644 Project/HC32F460/source/Module/CS1237/CS1237_RIGHRLOW.h
create mode 100644 Project/HC32F460/source/Module/CS1237/CS1237_RIGHTLOW.c
create mode 100644 Project/HC32F460/source/Module/CS1237/CS1237_RIGHTLOW.h
diff --git a/Project/HC32F460/MDK/HC32F460.uvoptx b/Project/HC32F460/MDK/HC32F460.uvoptx
index 58f4fd7..e4e31f9 100644
--- a/Project/HC32F460/MDK/HC32F460.uvoptx
+++ b/Project/HC32F460/MDK/HC32F460.uvoptx
@@ -117,10 +117,30 @@
Segger\JL2CM3.dll
+
+ 0
+ ARMRTXEVENTFLAGS
+ -L70 -Z18 -C0 -M0 -T1
+
+
+ 0
+ DLGTARM
+ (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0)
+
+
+ 0
+ ARMDBGFLAGS
+
+
+
+ 0
+ DLGUARM
+
+
0
JL2CM3
- -U4294967295 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO7 -FD1FFF8000 -FC1000 -FN2 -FF0HC32F460_512K.FLM -FS00 -FL080000 -FP0($$Device:HC32F460JEUA$FlashARM\HC32F460_512K.FLM) -FF1HC32F460_otp.FLM -FS13000C00 -FL13FC -FP1($$Device:HC32F460JEUA$FlashARM\HC32F460_otp.FLM)
+ -U4294967295 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8027 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD1FFF8000 -FC1000 -FN2 -FF0HC32F460_512K.FLM -FS00 -FL080000 -FP0($$Device:HC32F460JEUA$FlashARM\HC32F460_512K.FLM) -FF1HC32F460_otp.FLM -FS13000C00 -FL13FC -FP1($$Device:HC32F460JEUA$FlashARM\HC32F460_otp.FLM)
0
@@ -129,18 +149,35 @@
+
+
+ 0
+ 1
+ LEFTLOW_CS1237Var.CS1237Delay1mSCnt,0x0A
+
+
+ 1
+ 1
+ App.FeedDogDlyCnt,0x0A
+
+
+ 2
+ 1
+ App.Status,0x0A
+
+
0
0
0
- 0
+ 1
0
0
0
0
- 0
+ 1
0
0
0
@@ -952,6 +989,42 @@
0
0
+
+ 4
+ 51
+ 1
+ 0
+ 0
+ 0
+ ..\source\Module\CS1237\CS1237_LEFTUP.c
+ CS1237_LEFTUP.c
+ 0
+ 0
+
+
+ 4
+ 52
+ 1
+ 0
+ 0
+ 0
+ ..\source\Module\CS1237\CS1237_RIGHTLOW.c
+ CS1237_RIGHTLOW.c
+ 0
+ 0
+
+
+ 4
+ 53
+ 1
+ 0
+ 0
+ 0
+ ..\source\Module\CS1237\CS1237_RIGHTUP.c
+ CS1237_RIGHTUP.c
+ 0
+ 0
+
diff --git a/Project/HC32F460/MDK/HC32F460.uvprojx b/Project/HC32F460/MDK/HC32F460.uvprojx
index 5f94494..7b4f278 100644
--- a/Project/HC32F460/MDK/HC32F460.uvprojx
+++ b/Project/HC32F460/MDK/HC32F460.uvprojx
@@ -10,9 +10,8 @@
Debug
0x4
ARM-ADS
- 6160000::V6.16::ARMCLANG
- 6160000::V6.16::ARMCLANG
- 1
+ 5060960::V5.06 update 7 (build 960)::ARMCC
+ 0
HC32F460JEUA
@@ -315,7 +314,7 @@
1
- 2
+ 1
0
0
1
@@ -650,6 +649,21 @@
1
..\source\Module\CS1237\CS1237_LEFTLOW.c
+
+ CS1237_LEFTUP.c
+ 1
+ ..\source\Module\CS1237\CS1237_LEFTUP.c
+
+
+ CS1237_RIGHTLOW.c
+ 1
+ ..\source\Module\CS1237\CS1237_RIGHTLOW.c
+
+
+ CS1237_RIGHTUP.c
+ 1
+ ..\source\Module\CS1237\CS1237_RIGHTUP.c
+
@@ -1303,6 +1317,21 @@
1
..\source\Module\CS1237\CS1237_LEFTLOW.c
+
+ CS1237_LEFTUP.c
+ 1
+ ..\source\Module\CS1237\CS1237_LEFTUP.c
+
+
+ CS1237_RIGHTLOW.c
+ 1
+ ..\source\Module\CS1237\CS1237_RIGHTLOW.c
+
+
+ CS1237_RIGHTUP.c
+ 1
+ ..\source\Module\CS1237\CS1237_RIGHTUP.c
+
diff --git a/Project/HC32F460/source/Module/AD7924/ad7924.c b/Project/HC32F460/source/Module/AD7924/ad7924.c
deleted file mode 100644
index e4d51f1..0000000
--- a/Project/HC32F460/source/Module/AD7924/ad7924.c
+++ /dev/null
@@ -1,2 +0,0 @@
-#include "bps.h"
-
diff --git a/Project/HC32F460/source/Module/CS1237/CS1237_LEFTLOW.c b/Project/HC32F460/source/Module/CS1237/CS1237_LEFTLOW.c
index f4bae4b..7e7969d 100644
--- a/Project/HC32F460/source/Module/CS1237/CS1237_LEFTLOW.c
+++ b/Project/HC32F460/source/Module/CS1237/CS1237_LEFTLOW.c
@@ -4,6 +4,22 @@
#include "main.h"
#include "Algorithm.h"
+#define CS1237_DOUT_OUT() PORT_OE(LEFTLOW_CS1237_DOUT_PORTx, LEFTLOW_CS1237_DOUT_PINx, Enable)
+#define CS1237_DOUT_IN() PORT_OE(LEFTLOW_CS1237_DOUT_PORTx, LEFTLOW_CS1237_DOUT_PINx, Disable)
+#define CS1237_DOUT_H() SET_LEFTLOW_CS1237_DOUT()
+#define CS1237_DOUT_L() CLR_LEFTLOW_CS1237_DOUT()
+#define CS1237_DOUT_GET() GET_LEFTLOW_CS1237_DOUT()
+
+#define CS1237_SCLK_H() SET_LEFTLOW_CS1237_SCLK()
+#define CS1237_SCLK_L() CLR_LEFTLOW_CS1237_SCLK()
+
+#define CS1237_5NS(x) delay_5ns(x) //5ns延时
+#define CS1237_1US(x) Ddl_Delay1us(x) //1us延时
+#define CS1237_1MS(x) Ddl_Delay1ms(x) //1ms延时
+
+#define CS1237IntEnable() ExtInt01IntEnable()
+#define CS1237IntDisable() ExtInt01IntDisable()
+
LEFTLOW_CS1237Var_t LEFTLOW_CS1237Var;
static bool InitFlag;
static bool CS1237IrqFlag;
@@ -18,15 +34,15 @@ extern void LEFTLOW_CS1237AinADataProcessCallBack(int32_t AD);
static void CS1237_Clock(void)
{
CS1237_SCLK_H();
- CS1237_100NS(3);
+ CS1237_5NS(60);
CS1237_SCLK_L();
- CS1237_100NS(3);
+ CS1237_5NS(60);
}
/** cs1237 休眠*/
static void CS1237_Sleep(void)
{
CS1237_SCLK_H();
- CS1237_1US(150);
+ CS1237_1US(200);
}
/** cs1237 唤醒*/
static void CS1237_WakeUp(void)
@@ -48,8 +64,8 @@ static void Set_CS1237_Config(uint8_t ad_reg)
CS1237IrqFlag = false;
while(CS1237IrqFlag == false) //等待芯片准备好
{
- if(CS1237Var.CS1237Delay1mSCnt <= 0){
- DBG_LOG("LEFTLOW CS1237 Preparation Timeout...\r\n");
+ if(LEFTLOW_CS1237Var.CS1237Delay1mSCnt <= 0){
+ //DBG_LOG("LEFTLOW CS1237 Preparation Timeout...\r\n");
return; // 超时退出
}
}
@@ -97,7 +113,7 @@ static void Set_CS1237_Config(uint8_t ad_reg)
}
else
{
- CS1238_DOUT_L();
+ CS1237_DOUT_L();
}
reg_temp = reg_temp << 1;
CS1237_Clock();
@@ -120,12 +136,12 @@ static int32_t Read_CS1237_Config(void)
CS1237_DOUT_H();
CS1237_DOUT_IN();
CS1237_SCLK_L(); //时钟拉低
- CS1237Var.CS1237Delay1mSCnt = 300;
+ LEFTLOW_CS1237Var.CS1237Delay1mSCnt = 300;
CS1237IrqFlag = false;
while(CS1237IrqFlag == false) //等待芯片准备好
{
- if(CS1237Var.CS1237Delay1mSCnt <= 0){
- DBG_LOG("LEFTLOW CS1237 Preparation Timeout...\r\n");
+ if(LEFTLOW_CS1237Var.CS1237Delay1mSCnt <= 0){
+ //DBG_LOG("LEFTLOW CS1237 Preparation Timeout...\r\n");
return 0; // 超时退出
}
}
@@ -167,11 +183,11 @@ static int32_t Read_CS1237_Config(void)
{
CS1237_SCLK_H();
reg_temp <<= 1; //左移1位准备接受数据 初始默认0
- CS1237_100NS(3);//延时300ns
- if(GET_CS1237_DOUT() == true) //有数值则累加
+ CS1237_5NS(60);//延时300ns
+ if(CS1237_DOUT_GET() == true) //有数值则累加
reg_temp |= 1;
CS1237_SCLK_L();
- CS1237_100NS(3);
+ CS1237_5NS(60);
}
/* 8: clk46 */
CS1237_Clock();
@@ -192,11 +208,11 @@ static int32_t Read_CS1237_Ad_Data(void)
{
CS1237_SCLK_H();
data_temp <<= 1; //左移1位准备接受数据 初始默认0
- CS1237_100NS(3);//延时300ns
- if(GET_CS1237_DOUT() == true) //有数值则累加
+ CS1237_5NS(60);//延时300ns
+ if(CS1237_DOUT_GET() == true) //有数值则累加
data_temp |= 1;
CS1237_SCLK_L();
- CS1237_100NS(3);
+ CS1237_5NS(60);
}
/* clk25 ~ clk27 */
@@ -220,16 +236,16 @@ void LEFTLOW_CS1237_IrqCallBack(void)
}
void LEFTLOW_CS1237_Init(void)
{
+
CS1237IrqFlag = false;
BuildDelay = false;
- CS1237IntEnable();
LEFTLOW_CS1237Var.AinA_AD = 0;
- //CS1237Var.Ain2_AD = 0;
LEFTLOW_CS1237Var.Temp_AD = 0;
LEFTLOW_CS1237Var.Jump_AD = 0;
+ CS1237IntEnable();
CS1237Port = CH_SEL_A;
- CS1237Hz = SPEED_SEL_40Hz;
+ CS1237Hz = SPEED_SEL_640Hz;
CS1237PGA = PGA_SEL_128;
uint8_t read_reg = 0x00;
@@ -241,8 +257,8 @@ void LEFTLOW_CS1237_Init(void)
CS1237_1MS(20);
if(read_reg != set_reg){
DBG_LOG("LEFTLOW CS1237 Init ERR...\r\n");
- DBG_LOG("set_reg = %02X\tread_reg = %02X\r\n",set_reg,read_reg);
- InitFlag = false;
+ //DBG_LOG("set_reg = %02X\tread_reg = %02X\r\n",set_reg,read_reg);
+ InitFlag = true;
}
else {
DBG_LOG("LEFTLOW CS1237 Init OK...\r\n");
@@ -250,6 +266,7 @@ void LEFTLOW_CS1237_Init(void)
CS1237Port = read_reg & 0x03;
InitFlag = true;
}
+ CS1237IntDisable();
}
void LEFTLOW_CS1237DataLoopCollect(void)
{
@@ -258,10 +275,10 @@ void LEFTLOW_CS1237DataLoopCollect(void)
static uint8_t TimeOutmagcnt;
switch(LEFTLOW_CS1237Var.Status) {
- case CS1237_STATUS_IDLE:{
+ case LLCS1237_STATUS_IDLE:{
break;}
- case CS1237_STATUS_START:{
+ case LLCS1237_STATUS_START:{
memset(&ad_array, 0x00, sizeof(ad_array));
adcnt = 0;
TimeOutmagcnt = 0;
@@ -281,35 +298,35 @@ void LEFTLOW_CS1237DataLoopCollect(void)
if(CS1237Hz == SPEED_SEL6_1280Hz){
LEFTLOW_CS1237Var.CS1237Delay1mSCnt = tCon_1280Hz;
}
- LEFTLOW_CS1237Var.Status = CS1237_STATUS_DELAY;
+ LEFTLOW_CS1237Var.Status = LLCS1237_STATUS_DELAY;
}
else
{
- LEFTLOW_CS1237Var.Status = CS1237_STATUS_READ;
+ LEFTLOW_CS1237Var.Status = LLCS1237_STATUS_READ;
}
break;}
- case CS1237_STATUS_DELAY:{
+ case LLCS1237_STATUS_DELAY:{
if(LEFTLOW_CS1237Var.CS1237Delay1mSCnt <= 0){
- LEFTLOW_CS1237Var.Status = CS1237_STATUS_READ;
+ LEFTLOW_CS1237Var.Status = LLCS1237_STATUS_READ;
}
break;}
- case CS1237_STATUS_READ:{
+ case LLCS1237_STATUS_READ:{
CS1237IrqFlag = false;
LEFTLOW_CS1237Var.CS1237Delay1mSCnt = 100;
- LEFTLOW_CS1237Var.Status = CS1237_STATUS_WAIT_READ;
+ LEFTLOW_CS1237Var.Status = LLCS1237_STATUS_WAIT_READ;
break;}
- case CS1237_STATUS_WAIT_READ:{
+ case LLCS1237_STATUS_WAIT_READ:{
if(LEFTLOW_CS1237Var.CS1237Delay1mSCnt <= 0){
- LEFTLOW_CS1237Var.Status = CS1237_STATUS_READ;
+ LEFTLOW_CS1237Var.Status = LLCS1237_STATUS_READ;
TimeOutmagcnt++;
}
if(CS1237IrqFlag == true){
CS1237IrqFlag = false;
ad_array[adcnt++] = Read_CS1237_Ad_Data();
- LEFTLOW_CS1237Var.Status = CS1237_STATUS_READ;
+ LEFTLOW_CS1237Var.Status = LLCS1237_STATUS_READ;
}
if(TimeOutmagcnt >= PACK_NUM){
TimeOutmagcnt = 0;
@@ -326,19 +343,19 @@ void LEFTLOW_CS1237DataLoopCollect(void)
LEFTLOW_CS1237Var.Jump_AD = IntFilter_32t(ad_array, adcnt, FILTER_NUM);
//CS1237JumpDataProcessCallBack(LEFTLOW_CS1237Var.Jump_AD);
}
- LEFTLOW_CS1237Var.Status = CS1237_STATUS_CH_SEL;
+ LEFTLOW_CS1237Var.Status = LLCS1237_STATUS_CH_SEL;
}
else{
if(CS1237Port == CH_SEL_A){
- DBG_LOG("CS1238 CHA TimeOut...\r\n");
+ DBG_LOG("LEFTLOW CS1237 CHA TimeOut...\r\n");
}
if(CS1237Port == CH_SEL_TEMP){
- DBG_LOG("CS1238 Temp TimeOut...\r\n");
+ DBG_LOG("LEFTLOW CS1237 Temp TimeOut...\r\n");
}
if(CS1237Port == CH_SEL_JUMP){
- DBG_LOG("CS1238 Jump TimeOut...\r\n");
+ DBG_LOG("LEFTLOW CS1237 Jump TimeOut...\r\n");
}
- LEFTLOW_CS1237Var.Status = CS1237_STATUS_CH_SEL;
+ LEFTLOW_CS1237Var.Status = LLCS1237_STATUS_CH_SEL;
}
}
if(adcnt >= PACK_NUM){
@@ -354,12 +371,12 @@ void LEFTLOW_CS1237DataLoopCollect(void)
LEFTLOW_CS1237Var.Jump_AD = IntFilter_32t(ad_array, adcnt, FILTER_NUM);
//CS1237JumpDataProcessCallBack(LEFTLOW_CS1237Var.Jump_AD);
}
- LEFTLOW_CS1237Var.Status = CS1237_STATUS_CH_SEL;
+ LEFTLOW_CS1237Var.Status = LLCS1237_STATUS_CH_SEL;
}
break;}
- case CS1237_STATUS_CH_SEL:{
- LEFTLOW_CS1237Var.Status = CS1237_STATUS_STOP;
+ case LLCS1237_STATUS_CH_SEL:{
+ LEFTLOW_CS1237Var.Status = LLCS1237_STATUS_STOP;
BuildDelay = false;
uint8_t read_reg;
if(CS1237Port == CH_SEL_A){
@@ -414,10 +431,10 @@ void LEFTLOW_CS1237DataLoopCollect(void)
}
break;}
- case CS1237_STATUS_STOP:{
- //CS1237Stop();
- //LEFTLOW_CS1237Var.Status = CS1237_STATUS_IDLE;
- LEFTLOW_CS1237Var.Status = CS1237_STATUS_START;//持续工作
+ case LLCS1237_STATUS_STOP:{
+ LEFTLOW_CS1237Stop();
+ LEFTLOW_CS1237Var.Status = LLCS1237_STATUS_IDLE;
+ //LEFTLOW_CS1237Var.Status = LLCS1237_STATUS_START;//持续工作
break;}
}
}
@@ -426,22 +443,22 @@ void LEFTLOW_CS12371mSRoutine(void)
if(LEFTLOW_CS1237Var.CS1237Delay1mSCnt > 0)
LEFTLOW_CS1237Var.CS1237Delay1mSCnt--;
}
-void LEFTLOW_CS1238Start(void)
+void LEFTLOW_CS1237Start(void)
{
CS1237_WakeUp();
CS1237_1MS(2);
BuildDelay = true;
- LEFTLOW_CS1237IntEnable();
+ CS1237IntEnable();
if(!InitFlag){
LEFTLOW_CS1237_Init();
return;
}
- LEFTLOW_CS1237Var.Status = CS1237_STATUS_START;
+ LEFTLOW_CS1237Var.Status = LLCS1237_STATUS_START;
}
void LEFTLOW_CS1237Stop(void)
{
- LEFTLOW_CS1237IntDisable();
- CS1237_Sleep();
+ CS1237IntDisable();
+ //CS1237_Sleep();
}
diff --git a/Project/HC32F460/source/Module/CS1237/CS1237_LEFTLOW.h b/Project/HC32F460/source/Module/CS1237/CS1237_LEFTLOW.h
index a7f5a67..c7c009b 100644
--- a/Project/HC32F460/source/Module/CS1237/CS1237_LEFTLOW.h
+++ b/Project/HC32F460/source/Module/CS1237/CS1237_LEFTLOW.h
@@ -26,18 +26,6 @@
#define CH_SEL_TEMP 0x02
#define CH_SEL_JUMP 0x03
-#define CS1237_DOUT_OUT() SetBit(((uint32_t)&M0P_GPIO->PADIR + LEFTLOW_CS1237_DOUT_PORTx), LEFTLOW_CS1237_DOUT_PINx, 0)
-#define CS1237_DOUT_IN() SetBit(((uint32_t)&M0P_GPIO->PADIR + LEFTLOW_CS1237_DOUT_PORTx), LEFTLOW_CS1237_DOUT_PINx, 1)
-#define CS1237_DOUT_H() SET_LEFTLOW_CS1237_DOUT()
-#define CS1237_DOUT_L() CLR_LEFTLOW_CS1237_DOUT()
-
-#define CS1237_SCLK_H() SET_LEFTLOW_CS1237_SCLK()
-#define CS1237_SCLK_L() CLR_LEFTLOW_CS1237_SCLK()
-
-#define CS1237_1US(x) delay_us(x) //1usʱ
-#define CS1237_100NS(x) delay_ns(x) //100nsʱ
-#define CS1237_1MS(x) delay_ms(x) //1msʱ
-
/*Definition of conversion time corresponding to repeatability setting*/
/*
10Hz //ʱ300ms
@@ -54,35 +42,33 @@
//#define PORT_B 1 //ɼͨB
#define PORT_TEMP 0 //ɼ¶
#define PORT_JUMP 0 //ڶ̲ɼ
-#define PACK_NUM 10 //һβɼݰ
-#define FILTER_NUM 4 //˲
+#define PACK_NUM 1 //һβɼݰ
+#define FILTER_NUM 0 //˲
typedef enum{
- CS1237_STATUS_IDLE,
- CS1237_STATUS_START,
- CS1237_STATUS_DELAY,
- CS1237_STATUS_READ,
- CS1237_STATUS_WAIT_READ,
- CS1237_STATUS_CH_SEL,
- CS1237_STATUS_STOP,
-}CS1237Status_m;
+ LLCS1237_STATUS_IDLE,
+ LLCS1237_STATUS_START,
+ LLCS1237_STATUS_DELAY,
+ LLCS1237_STATUS_READ,
+ LLCS1237_STATUS_WAIT_READ,
+ LLCS1237_STATUS_CH_SEL,
+ LLCS1237_STATUS_STOP,
+}LeftLowCS1237Status_m;
typedef struct{
- CS1237Status_m Status;
+ LeftLowCS1237Status_m Status;
uint32_t CS1237Delay1mSCnt;
int32_t AinA_AD;//AINAad
- //int32_t Ain2_AD;//AIN2ad
+ //int32_t AinB_AD;//AINBad
int32_t Temp_AD;//¶ad
int32_t Jump_AD;//ڶad
}
LEFTLOW_CS1237Var_t;
-extern LEFTLOW_CS1237Var_t LEFTLOW_CS1237Var;
void LEFTLOW_CS1237_Init(void);
void LEFTLOW_CS1237_IrqCallBack(void);
void LEFTLOW_CS1237DataLoopCollect(void);
-void LEFTLOW_CS1237LoopHandler(void);
void LEFTLOW_CS12371mSRoutine(void);
void LEFTLOW_CS1237Start(void);
void LEFTLOW_CS1237Stop(void);
diff --git a/Project/HC32F460/source/Module/CS1237/CS1237_LEFTUP.c b/Project/HC32F460/source/Module/CS1237/CS1237_LEFTUP.c
index a10e7c8..ae73902 100644
--- a/Project/HC32F460/source/Module/CS1237/CS1237_LEFTUP.c
+++ b/Project/HC32F460/source/Module/CS1237/CS1237_LEFTUP.c
@@ -1,189 +1,203 @@
-#include "CS1238.h"
-#include "UartDebug.h"
+#include "CS1237_LEFTUP.h"
+#include "Debug.h"
#include "bsp.h"
#include "main.h"
#include "Algorithm.h"
-CS1238Var_t CS1238Var;
-static bool InitFlag;
-static bool CS1238IrqFlag;
-static bool BuildDelay;
-static uint8_t CS1238Port;
-static uint8_t CS1238Hz;
-static uint8_t CS1238PGA;
-extern void CS1238Ain1DataProcessCallBack(int32_t AD);
-extern void CS1238Ain2DataProcessCallBack(int32_t AD);
-extern void CS1238TempDataProcessCallBack(int32_t AD);
-extern void CS1238JumpDataProcessCallBack(int32_t AD);
+#define CS1237_DOUT_OUT() PORT_OE(LEFTUP_CS1237_DOUT_PORTx, LEFTUP_CS1237_DOUT_PINx, Enable)
+#define CS1237_DOUT_IN() PORT_OE(LEFTUP_CS1237_DOUT_PORTx, LEFTUP_CS1237_DOUT_PINx, Disable)
+#define CS1237_DOUT_H() SET_LEFTUP_CS1237_DOUT()
+#define CS1237_DOUT_L() CLR_LEFTUP_CS1237_DOUT()
+#define CS1237_DOUT_GET() GET_LEFTUP_CS1237_DOUT()
-/** cs1238 时序时钟*/
-static void CS1238_Clock(void)
+#define CS1237_SCLK_H() SET_LEFTUP_CS1237_SCLK()
+#define CS1237_SCLK_L() CLR_LEFTUP_CS1237_SCLK()
+
+#define CS1237_5NS(x) delay_5ns(x) //5ns延时
+#define CS1237_1US(x) Ddl_Delay1us(x) //1us延时
+#define CS1237_1MS(x) Ddl_Delay1ms(x) //1ms延时
+
+#define CS1237IntEnable() ExtInt10IntEnable()
+#define CS1237IntDisable() ExtInt10IntDisable()
+
+LEFTUP_CS1237Var_t LEFTUP_CS1237Var;
+static bool InitFlag;
+static bool CS1237IrqFlag;
+static bool BuildDelay;
+static uint8_t CS1237Port;
+static uint8_t CS1237Hz;
+static uint8_t CS1237PGA;
+extern void LEFTUP_CS1237AinADataProcessCallBack(int32_t AD);
+
+
+/** cs1237 时序时钟*/
+static void CS1237_Clock(void)
{
- CS1238_SCLK_H();
- CS1238_100NS(3);
- CS1238_SCLK_L();
- CS1238_100NS(3);
+ CS1237_SCLK_H();
+ CS1237_5NS(60);
+ CS1237_SCLK_L();
+ CS1237_5NS(60);
}
-/** cs1238 休眠*/
-static void CS1238_Sleep(void)
+/** cs1237 休眠*/
+static void CS1237_Sleep(void)
{
- CS1238_SCLK_H();
- CS1238_1US(150);
+ CS1237_SCLK_H();
+ CS1237_1US(200);
}
-/** cs1238 唤醒*/
-static void CS1238_WakeUp(void)
+/** cs1237 唤醒*/
+static void CS1237_WakeUp(void)
{
- CS1238_SCLK_L();
- CS1238_1US(20);
+ CS1237_SCLK_L();
+ CS1237_1US(20);
}
-/**设置CS1238寄存器*/
-static void Set_CS1238_Config(uint8_t ad_reg)
+/**设置CS1237寄存器*/
+static void Set_CS1237_Config(uint8_t ad_reg)
{
uint16_t bit_cout = 0;
uint8_t reg_temp = 0x00;
//DOUT由高变低之后开始读取数据
- CS1238_DOUT_OUT();
- CS1238_DOUT_H();
- CS1238_DOUT_IN();
- CS1238_SCLK_L(); //时钟拉低
- CS1238Var.CS1238Delay1mSCnt = 300;
- CS1238IrqFlag = false;
- while(CS1238IrqFlag == false) //等待芯片准备好
+ CS1237_DOUT_OUT();
+ CS1237_DOUT_H();
+ CS1237_DOUT_IN();
+ CS1237_SCLK_L(); //时钟拉低
+ LEFTUP_CS1237Var.CS1237Delay1mSCnt = 300;
+ CS1237IrqFlag = false;
+ while(CS1237IrqFlag == false) //等待芯片准备好
{
- if(CS1238Var.CS1238Delay1mSCnt <= 0){
- DBG_LOG("CS1238 Preparation Timeout...\r\n");
+ if(LEFTUP_CS1237Var.CS1237Delay1mSCnt <= 0){
+ //DBG_LOG("LEFTUP CS1237 Preparation Timeout...\r\n");
return; // 超时退出
}
}
- CS1238IntDisable();
- CS1238IrqFlag = false;
+ CS1237IntDisable();
+ CS1237IrqFlag = false;
/* clk1-clk26 写期间不需要操作*/
for (bit_cout = 0; bit_cout < 26; bit_cout++)
{
- CS1238_Clock(); //给一周期时钟
+ CS1237_Clock(); //给一周期时钟
}
/* clk27 DOUT输出拉高*/
- CS1238_Clock(); //给一周期时钟
- CS1238_DOUT_H();
+ CS1237_Clock(); //给一周期时钟
+ CS1237_DOUT_H();
/* clk28 - clk29 发送写寄存器命令字 */
- CS1238_Clock(); //给一周期时钟
- CS1238_Clock(); //给一周期时钟
+ CS1237_Clock(); //给一周期时钟
+ CS1237_Clock(); //给一周期时钟
/* clk30 - clk36 发送写寄存器命令字 */
- CS1238_DOUT_OUT();
+ CS1237_DOUT_OUT();
reg_temp = WRITE_CONFIG_CMD << 1; //命令长度为 7bits (写0x65)左移1位
for (bit_cout = 0; bit_cout < 7; bit_cout++)
{
if (reg_temp & 0x80) //MSB
{
- CS1238_DOUT_H();
+ CS1237_DOUT_H();
}
else
{
- CS1238_DOUT_L();
+ CS1237_DOUT_L();
}
reg_temp = reg_temp << 1;
- CS1238_Clock();
+ CS1237_Clock();
}
/* clk37写寄存器模式还是输出 */
- CS1238_Clock();
+ CS1237_Clock();
/* clk38 ~ clk45 写入寄存器值 */
reg_temp = ad_reg;//要配件的寄存器数值
for (bit_cout = 0; bit_cout < 8; bit_cout++)
{
if (reg_temp & 0x80) //MSB
{
- CS1238_DOUT_H();
+ CS1237_DOUT_H();
}
else
{
- CS1238_DOUT_L();
+ CS1237_DOUT_L();
}
reg_temp = reg_temp << 1;
- CS1238_Clock();
+ CS1237_Clock();
}
/* 8: clk46 */
- CS1238_Clock();
- CS1238_DOUT_H();
- CS1238_DOUT_IN();
- CS1238IntEnable();
+ CS1237_Clock();
+ CS1237_DOUT_H();
+ CS1237_DOUT_IN();
+ CS1237IntEnable();
return ;
}
-/**读CS1238寄存器*/
-static int32_t Read_CS1238_Config(void)
+/**读CS1237寄存器*/
+static int32_t Read_CS1237_Config(void)
{
uint16_t bit_cout = 0;
uint8_t reg_temp = 0x00;
//DOUT由高变低之后开始读取数据
- CS1238_DOUT_OUT();
- CS1238_DOUT_H();
- CS1238_DOUT_IN();
- CS1238_SCLK_L(); //时钟拉低
- CS1238Var.CS1238Delay1mSCnt = 300;
- CS1238IrqFlag = false;
- while(CS1238IrqFlag == false) //等待芯片准备好
+ CS1237_DOUT_OUT();
+ CS1237_DOUT_H();
+ CS1237_DOUT_IN();
+ CS1237_SCLK_L(); //时钟拉低
+ LEFTUP_CS1237Var.CS1237Delay1mSCnt = 300;
+ CS1237IrqFlag = false;
+ while(CS1237IrqFlag == false) //等待芯片准备好
{
- if(CS1238Var.CS1238Delay1mSCnt <= 0){
- DBG_LOG("CS1238 Preparation Timeout...\r\n");
+ if(LEFTUP_CS1237Var.CS1237Delay1mSCnt <= 0){
+ //DBG_LOG("LEFTUP CS1237 Preparation Timeout...\r\n");
return 0; // 超时退出
}
}
- CS1238IntDisable();
- CS1238IrqFlag = false;
+ CS1237IntDisable();
+ CS1237IrqFlag = false;
/* clk1-clk26 写期间不需要操作*/
for (bit_cout = 0; bit_cout < 26; bit_cout++)
{
- CS1238_Clock(); //给一周期时钟
+ CS1237_Clock(); //给一周期时钟
}
/* clk27 DOUT输出拉高*/
- CS1238_Clock(); //给一周期时钟
- CS1238_DOUT_H();
+ CS1237_Clock(); //给一周期时钟
+ CS1237_DOUT_H();
/* clk28 - clk29 发送写寄存器命令字 */
- CS1238_Clock(); //给一周期时钟
- CS1238_Clock(); //给一周期时钟
+ CS1237_Clock(); //给一周期时钟
+ CS1237_Clock(); //给一周期时钟
/* clk30 - clk36 发送读寄存器命令字 */
- CS1238_DOUT_OUT();
+ CS1237_DOUT_OUT();
reg_temp = READ_CONFIG_CMD << 1; //命令长度为 7bits (写0x56)左移1位
for (bit_cout = 0; bit_cout < 7; bit_cout++)
{
if (reg_temp & 0x80) //MSB
{
- CS1238_DOUT_H();
+ CS1237_DOUT_H();
}
else
{
- CS1238_DOUT_L();
+ CS1237_DOUT_L();
}
reg_temp = reg_temp << 1;
- CS1238_Clock();
+ CS1237_Clock();
}
/* clk37,读寄存器模式改输入 */
- CS1238_Clock();
- CS1238_DOUT_IN();
+ CS1237_Clock();
+ CS1237_DOUT_IN();
for (bit_cout = 0; bit_cout < 8; bit_cout++)
{
- CS1238_SCLK_H();
+ CS1237_SCLK_H();
reg_temp <<= 1; //左移1位准备接受数据 初始默认0
- CS1238_100NS(3);//延时300ns
- if(GET_CS1238_DOUT() == true) //有数值则累加
+ CS1237_5NS(60);//延时300ns
+ if(CS1237_DOUT_GET() == true) //有数值则累加
reg_temp |= 1;
- CS1238_SCLK_L();
- CS1238_100NS(3);
+ CS1237_SCLK_L();
+ CS1237_5NS(60);
}
/* 8: clk46 */
- CS1238_Clock();
- CS1238_DOUT_IN();
- CS1238_DOUT_H();
- CS1238IntEnable();
+ CS1237_Clock();
+ CS1237_DOUT_IN();
+ CS1237_DOUT_H();
+ CS1237IntEnable();
return reg_temp ;
}
-/**读取CS1238的AD数*/
-static int32_t Read_CS1238_Ad_Data(void)
+/**读取CS1237的AD数*/
+static int32_t Read_CS1237_Ad_Data(void)
{
uint16_t bit_cout = 0;
int32_t data_temp = 0;
@@ -192,22 +206,22 @@ static int32_t Read_CS1238_Ad_Data(void)
data_temp = 0;
for (bit_cout = 0; bit_cout < 24; bit_cout++)
{
- CS1238_SCLK_H();
+ CS1237_SCLK_H();
data_temp <<= 1; //左移1位准备接受数据 初始默认0
- CS1238_100NS(3);//延时300ns
- if(GET_CS1238_DOUT() == true) //有数值则累加
+ CS1237_5NS(60);//延时300ns
+ if(CS1237_DOUT_GET() == true) //有数值则累加
data_temp |= 1;
- CS1238_SCLK_L();
- CS1238_100NS(3);
+ CS1237_SCLK_L();
+ CS1237_5NS(60);
}
/* clk25 ~ clk27 */
for (bit_cout = 24; bit_cout < 27; bit_cout++)
{
- CS1238_Clock(); //给一周期时钟
+ CS1237_Clock(); //给一周期时钟
}
- CS1238_DOUT_H();
- CS1238_SCLK_L();
+ CS1237_DOUT_H();
+ CS1237_SCLK_L();
if(data_temp > 0x7FFFFF) //取24位
{
@@ -216,190 +230,172 @@ static int32_t Read_CS1238_Ad_Data(void)
return data_temp;
}
-void CS1238_IrqCallBack(void)
+void LEFTUP_CS1237_IrqCallBack(void)
{
- CS1238IrqFlag = true;
+ CS1237IrqFlag = true;
}
-void CS1238_Init(void)
+void LEFTUP_CS1237_Init(void)
{
- CS1238IrqFlag = false;
+ CS1237IrqFlag = false;
BuildDelay = false;
- CS1238IntEnable();
- CS1238Var.Ain1_AD = 0;
- CS1238Var.Ain2_AD = 0;
- CS1238Var.Temp_AD = 0;
- CS1238Var.Jump_AD = 0;
+ LEFTUP_CS1237Var.AinA_AD = 0;
+ LEFTUP_CS1237Var.Temp_AD = 0;
+ LEFTUP_CS1237Var.Jump_AD = 0;
- CS1238Port = CH_SEL_A;
- CS1238Hz = SPEED_SEL_640Hz;
- CS1238PGA = PGA_SEL_128;
+ CS1237IntEnable();
+ CS1237Port = CH_SEL_A;
+ CS1237Hz = SPEED_SEL_640Hz;
+ CS1237PGA = PGA_SEL_128;
uint8_t read_reg = 0x00;
- uint8_t set_reg = REFO_ON | CS1238Hz | CS1238PGA | CS1238Port;
- CS1238_1MS(20);
- Set_CS1238_Config(set_reg);
- CS1238_1MS(20);
- read_reg = Read_CS1238_Config();
- CS1238_1MS(20);
+ uint8_t set_reg = REFO_ON | CS1237Hz | CS1237PGA | CS1237Port;
+ CS1237_1MS(20);
+ Set_CS1237_Config(set_reg);
+ CS1237_1MS(20);
+ read_reg = Read_CS1237_Config();
+ CS1237_1MS(20);
if(read_reg != set_reg){
- DBG_LOG("CS1238 Init ERR...\r\n");
- DBG_LOG("set_reg = %02X\tread_reg = %02X\r\n",set_reg,read_reg);
- InitFlag = false;
- }
- else {
- DBG_LOG("CS1238 Init OK...\r\n");
+ DBG_LOG("LEFTUP CS1237 Init ERR...\r\n");
//DBG_LOG("set_reg = %02X\tread_reg = %02X\r\n",set_reg,read_reg);
- CS1238Port = read_reg & 0x03;
InitFlag = true;
}
+ else {
+ DBG_LOG("LEFTUP CS1237 Init OK...\r\n");
+ //DBG_LOG("set_reg = %02X\tread_reg = %02X\r\n",set_reg,read_reg);
+ CS1237Port = read_reg & 0x03;
+ InitFlag = true;
+ }
+ CS1237IntDisable();
}
-void CS1238DataLoopCollect(void)
+void LEFTUP_CS1237DataLoopCollect(void)
{
static int32_t ad_array[PACK_NUM];
static uint8_t adcnt;
static uint8_t TimeOutmagcnt;
- switch(CS1238Var.Status) {
- case CS1238_STATUS_IDLE:{
+ switch(LEFTUP_CS1237Var.Status) {
+ case LUCS1237_STATUS_IDLE:{
break;}
- case CS1238_STATUS_START:{
+ case LUCS1237_STATUS_START:{
memset(&ad_array, 0x00, sizeof(ad_array));
adcnt = 0;
TimeOutmagcnt = 0;
- memset(&CS1238Var, NULL, sizeof(CS1238Var));
+ memset(&LEFTUP_CS1237Var, NULL, sizeof(LEFTUP_CS1237Var));
if(BuildDelay == true)
{
BuildDelay = false;
- if(CS1238Hz == SPEED_SEL_10Hz){
- CS1238Var.CS1238Delay1mSCnt = tCon_10Hz;
+ if(CS1237Hz == SPEED_SEL_10Hz){
+ LEFTUP_CS1237Var.CS1237Delay1mSCnt = tCon_10Hz;
}
- if(CS1238Hz == SPEED_SEL_40Hz){
- CS1238Var.CS1238Delay1mSCnt = tCon_40Hz;
+ if(CS1237Hz == SPEED_SEL_40Hz){
+ LEFTUP_CS1237Var.CS1237Delay1mSCnt = tCon_40Hz;
}
- if(CS1238Hz == SPEED_SEL_640Hz){
- CS1238Var.CS1238Delay1mSCnt = tCon_640Hz;
+ if(CS1237Hz == SPEED_SEL_640Hz){
+ LEFTUP_CS1237Var.CS1237Delay1mSCnt = tCon_640Hz;
}
- if(CS1238Hz == SPEED_SEL6_1280Hz){
- CS1238Var.CS1238Delay1mSCnt = tCon_1280Hz;
+ if(CS1237Hz == SPEED_SEL6_1280Hz){
+ LEFTUP_CS1237Var.CS1237Delay1mSCnt = tCon_1280Hz;
}
- CS1238Var.Status = CS1238_STATUS_DELAY;
+ LEFTUP_CS1237Var.Status = LUCS1237_STATUS_DELAY;
}
else
{
- CS1238Var.Status = CS1238_STATUS_READ;
+ LEFTUP_CS1237Var.Status = LUCS1237_STATUS_READ;
}
break;}
- case CS1238_STATUS_DELAY:{
- if(CS1238Var.CS1238Delay1mSCnt <= 0){
- CS1238Var.Status = CS1238_STATUS_READ;
+ case LUCS1237_STATUS_DELAY:{
+ if(LEFTUP_CS1237Var.CS1237Delay1mSCnt <= 0){
+ LEFTUP_CS1237Var.Status = LUCS1237_STATUS_READ;
}
break;}
- case CS1238_STATUS_READ:{
- CS1238IrqFlag = false;
- CS1238Var.CS1238Delay1mSCnt = 100;
- CS1238Var.Status = CS1238_STATUS_WAIT_READ;
+ case LUCS1237_STATUS_READ:{
+ CS1237IrqFlag = false;
+ LEFTUP_CS1237Var.CS1237Delay1mSCnt = 100;
+ LEFTUP_CS1237Var.Status = LUCS1237_STATUS_WAIT_READ;
break;}
- case CS1238_STATUS_WAIT_READ:{
- if(CS1238Var.CS1238Delay1mSCnt <= 0){
- CS1238Var.Status = CS1238_STATUS_READ;
+ case LUCS1237_STATUS_WAIT_READ:{
+ if(LEFTUP_CS1237Var.CS1237Delay1mSCnt <= 0){
+ LEFTUP_CS1237Var.Status = LUCS1237_STATUS_READ;
TimeOutmagcnt++;
}
- if(CS1238IrqFlag == true){
- CS1238IrqFlag = false;
- ad_array[adcnt++] = Read_CS1238_Ad_Data();
- CS1238Var.Status = CS1238_STATUS_READ;
+ if(CS1237IrqFlag == true){
+ CS1237IrqFlag = false;
+ ad_array[adcnt++] = Read_CS1237_Ad_Data();
+ LEFTUP_CS1237Var.Status = LUCS1237_STATUS_READ;
}
if(TimeOutmagcnt >= PACK_NUM){
TimeOutmagcnt = 0;
if(adcnt > 0){
- if(CS1238Port == CH_SEL_A){
- CS1238Var.Ain1_AD = IntFilter_32t(ad_array, adcnt, 4);
- CS1238Ain1DataProcessCallBack(CS1238Var.Ain1_AD);
+ if(CS1237Port == CH_SEL_A){
+ LEFTUP_CS1237Var.AinA_AD = IntFilter_32t(ad_array, adcnt, FILTER_NUM);
+ LEFTUP_CS1237AinADataProcessCallBack(LEFTUP_CS1237Var.AinA_AD);
}
- if(CS1238Port == CH_SEL_B){
- CS1238Var.Ain2_AD = IntFilter_32t(ad_array, adcnt, 4);
- CS1238Ain2DataProcessCallBack(CS1238Var.Ain2_AD);
+ if(CS1237Port == CH_SEL_TEMP){
+ LEFTUP_CS1237Var.Temp_AD = IntFilter_32t(ad_array, adcnt, FILTER_NUM);
+ //CS1237TempDataProcessCallBack(LEFTLOW_CS1237Var.Temp_AD);
}
- if(CS1238Port == CH_SEL_TEMP){
- CS1238Var.Temp_AD = IntFilter_32t(ad_array, adcnt, 4);
- CS1238TempDataProcessCallBack(CS1238Var.Temp_AD);
+ if(CS1237Port == CH_SEL_JUMP){
+ LEFTUP_CS1237Var.Jump_AD = IntFilter_32t(ad_array, adcnt, FILTER_NUM);
+ //CS1237JumpDataProcessCallBack(LEFTLOW_CS1237Var.Jump_AD);
}
- if(CS1238Port == CH_SEL_JUMP){
- CS1238Var.Jump_AD = IntFilter_32t(ad_array, adcnt, 4);
- CS1238JumpDataProcessCallBack(CS1238Var.Jump_AD);
- }
- CS1238Var.Status = CS1238_STATUS_CH_SEL;
+ LEFTUP_CS1237Var.Status = LUCS1237_STATUS_CH_SEL;
}
else{
- if(CS1238Port == CH_SEL_A){
- DBG_LOG("CS1238 CHA TimeOut...\r\n");
+ if(CS1237Port == CH_SEL_A){
+ DBG_LOG("LEFTUPs CS1237 CHA TimeOut...\r\n");
}
- if(CS1238Port == CH_SEL_B){
- DBG_LOG("CS1238 CHB TimeOut...\r\n");
+ if(CS1237Port == CH_SEL_TEMP){
+ DBG_LOG("LEFTUP CS1237 Temp TimeOut...\r\n");
}
- if(CS1238Port == CH_SEL_TEMP){
- DBG_LOG("CS1238 Temp TimeOut...\r\n");
+ if(CS1237Port == CH_SEL_JUMP){
+ DBG_LOG("LEFTUP CS1237 Jump TimeOut...\r\n");
}
- if(CS1238Port == CH_SEL_JUMP){
- DBG_LOG("CS1238 Jump TimeOut...\r\n");
- }
- CS1238Var.Status = CS1238_STATUS_CH_SEL;
+ LEFTUP_CS1237Var.Status = LUCS1237_STATUS_CH_SEL;
}
}
if(adcnt >= PACK_NUM){
- if(CS1238Port == CH_SEL_A){
- CS1238Var.Ain1_AD = IntFilter_32t(ad_array, adcnt, 4);
- CS1238Ain1DataProcessCallBack(CS1238Var.Ain1_AD);
+ if(CS1237Port == CH_SEL_A){
+ LEFTUP_CS1237Var.AinA_AD = IntFilter_32t(ad_array, adcnt, FILTER_NUM);
+ LEFTUP_CS1237AinADataProcessCallBack(LEFTUP_CS1237Var.AinA_AD);
}
- if(CS1238Port == CH_SEL_B){
- CS1238Var.Ain2_AD = IntFilter_32t(ad_array, adcnt, 4);
- CS1238Ain2DataProcessCallBack(CS1238Var.Ain2_AD);
+ if(CS1237Port == CH_SEL_TEMP){
+ LEFTUP_CS1237Var.Temp_AD = IntFilter_32t(ad_array, adcnt, FILTER_NUM);
+ //CS1237TempDataProcessCallBack(LEFTLOW_CS1237Var.Temp_AD);
}
- if(CS1238Port == CH_SEL_TEMP){
- CS1238Var.Temp_AD = IntFilter_32t(ad_array, adcnt, 4);
- CS1238TempDataProcessCallBack(CS1238Var.Temp_AD);
+ if(CS1237Port == CH_SEL_JUMP){
+ LEFTUP_CS1237Var.Jump_AD = IntFilter_32t(ad_array, adcnt, FILTER_NUM);
+ //CS1237JumpDataProcessCallBack(LEFTLOW_CS1237Var.Jump_AD);
}
- if(CS1238Port == CH_SEL_JUMP){
- CS1238Var.Jump_AD = IntFilter_32t(ad_array, adcnt, 4);
- CS1238JumpDataProcessCallBack(CS1238Var.Jump_AD);
- }
- CS1238Var.Status = CS1238_STATUS_CH_SEL;
+ LEFTUP_CS1237Var.Status = LUCS1237_STATUS_CH_SEL;
}
break;}
- case CS1238_STATUS_CH_SEL:{
- CS1238Var.Status = CS1238_STATUS_STOP;
+ case LUCS1237_STATUS_CH_SEL:{
+ LEFTUP_CS1237Var.Status = LUCS1237_STATUS_STOP;
BuildDelay = false;
uint8_t read_reg;
- if(CS1238Port == CH_SEL_A){
+ if(CS1237Port == CH_SEL_A){
#if(PORT_TEMP == 1)
- read_reg = Read_CS1238_Config();
- Set_CS1238_Config((read_reg & 0xFC) | CH_SEL_TEMP);
- CS1238Port = CH_SEL_TEMP;
+ read_reg = Read_CS1237_Config();
+ Set_CS1237_Config((read_reg & 0xFC) | CH_SEL_TEMP);
+ CS1237Port = CH_SEL_TEMP;
BuildDelay = true;
break;
#endif
#if(PORT_JUMP == 1)
- read_reg = Read_CS1238_Config();
- Set_CS1238_Config((read_reg & 0xFC) | CH_SEL_JUMP);
- CS1238Port = CH_SEL_JUMP;
+ read_reg = Read_CS1237_Config();
+ Set_CS1237_Config((read_reg & 0xFC) | CH_SEL_JUMP);
+ CS1237Port = CH_SEL_JUMP;
BuildDelay = true;
break;
#endif
}
- if(CS1238Port == CH_SEL_B){
-#if(PORT_TEMP == 1)
- read_reg = Read_CS1238_Config();
- Set_CS1238_Config((read_reg & 0xFC) | CH_SEL_TEMP);
- CS1238Port = CH_SEL_TEMP;
- BuildDelay = true;
- break;
-#endif
+ if(CS1237Port == CH_SEL_TEMP){
#if(PORT_JUMP == 1)
read_reg = Read_CS1238_Config();
Set_CS1238_Config((read_reg & 0xFC) | CH_SEL_JUMP);
@@ -408,77 +404,60 @@ void CS1238DataLoopCollect(void)
break;
#endif
#if(PORT_A == 1)
- read_reg = Read_CS1238_Config();
- Set_CS1238_Config((read_reg & 0xFC) | CH_SEL_A);
- CS1238Port = CH_SEL_A;
- BuildDelay = true;
- break;
-#endif
- }
-
- if(CS1238Port == CH_SEL_TEMP){
-#if(PORT_JUMP == 1)
- read_reg = Read_CS1238_Config();
- Set_CS1238_Config((read_reg & 0xFC) | CH_SEL_JUMP);
- CS1238Port = CH_SEL_JUMP;
- BuildDelay = true;
- break;
-#endif
-#if(PORT_A == 1)
- read_reg = Read_CS1238_Config();
- Set_CS1238_Config((read_reg & 0xFC) | CH_SEL_A);
- CS1238Port = CH_SEL_A;
+ read_reg = Read_CS1237_Config();
+ Set_CS1237_Config((read_reg & 0xFC) | CH_SEL_A);
+ CS1237Port = CH_SEL_A;
BuildDelay = true;
break;
#endif
}
- if(CS1238Port == CH_SEL_JUMP){
+ if(CS1237Port == CH_SEL_JUMP){
#if(PORT_A == 1)
- read_reg = Read_CS1238_Config();
- Set_CS1238_Config((read_reg & 0xFC) | CH_SEL_A);
- CS1238Port = CH_SEL_A;
+ read_reg = Read_CS1237_Config();
+ Set_CS1237_Config((read_reg & 0xFC) | CH_SEL_A);
+ CS1237Port = CH_SEL_A;
BuildDelay = true;
break;
#endif
#if(PORT_TEMP == 1)
- read_reg = Read_CS1238_Config();
- Set_CS1238_Config((read_reg & 0xFC) | CH_SEL_TEMP);
- CS1238Port = CH_SEL_TEMP;
+ read_reg = Read_CS1237_Config();
+ Set_CS1237_Config((read_reg & 0xFC) | CH_SEL_TEMP);
+ CS1237Port = CH_SEL_TEMP;
BuildDelay = true;
break;
#endif
}
break;}
- case CS1238_STATUS_STOP:{
- //CS1238Stop();
- //CS1238Var.Status = CS1238_STATUS_IDLE;
- CS1238Var.Status = CS1238_STATUS_START;//持续工作
+ case LUCS1237_STATUS_STOP:{
+ LEFTUP_CS1237Stop();
+ LEFTUP_CS1237Var.Status = LUCS1237_STATUS_IDLE;
+ //LEFTUP_CS1237Var.Status = LUCS1237_STATUS_START;//持续工作
break;}
}
}
-void CS12381mSRoutine(void)
+void LEFTUP_CS12371mSRoutine(void)
{
- if(CS1238Var.CS1238Delay1mSCnt > 0)
- CS1238Var.CS1238Delay1mSCnt--;
+ if(LEFTUP_CS1237Var.CS1237Delay1mSCnt > 0)
+ LEFTUP_CS1237Var.CS1237Delay1mSCnt--;
}
-void CS1238Start(void)
+void LEFTUP_CS1237Start(void)
{
- CS1238_WakeUp();
- CS1238_1MS(2);
+ CS1237_WakeUp();
+ CS1237_1MS(2);
BuildDelay = true;
- CS1238IntEnable();
+ CS1237IntEnable();
if(!InitFlag){
- CS1238_Init();
+ LEFTUP_CS1237_Init();
return;
}
- CS1238Var.Status = CS1238_STATUS_START;
+ LEFTUP_CS1237Var.Status = LUCS1237_STATUS_START;
}
-void CS1238Stop(void)
+void LEFTUP_CS1237Stop(void)
{
- CS1238IntDisable();
- CS1238_Sleep();
+ CS1237IntDisable();
+ //CS1237_Sleep();
}
diff --git a/Project/HC32F460/source/Module/CS1237/CS1237_LEFTUP.h b/Project/HC32F460/source/Module/CS1237/CS1237_LEFTUP.h
index 354d39d..1483092 100644
--- a/Project/HC32F460/source/Module/CS1237/CS1237_LEFTUP.h
+++ b/Project/HC32F460/source/Module/CS1237/CS1237_LEFTUP.h
@@ -1,7 +1,7 @@
#include "bsp.h"
-#ifndef _CS1238_H_
-#define _CS1238_H_
+#ifndef _CS1237_LEFTUP_H_
+#define _CS1237_LEFTUP_H_
#define READ_CONFIG_CMD 0x56
#define WRITE_CONFIG_CMD 0x65
@@ -22,21 +22,11 @@
#define PGA_SEL_128 0x0C
#define CH_SEL_A 0x00
-#define CH_SEL_B 0x01
+//#define CH_SEL_B 0x01
#define CH_SEL_TEMP 0x02
#define CH_SEL_JUMP 0x03
-#define CS1238_DOUT_OUT() SetBit(((uint32_t)&M0P_GPIO->PADIR + CS1238_DOUT_PORTx), CS1238_DOUT_PINx, 0)
-#define CS1238_DOUT_IN() SetBit(((uint32_t)&M0P_GPIO->PADIR + CS1238_DOUT_PORTx), CS1238_DOUT_PINx, 1)
-#define CS1238_DOUT_H() SET_CS1238_DOUT()
-#define CS1238_DOUT_L() CLR_CS1238_DOUT()
-#define CS1238_SCLK_H() SET_CS1238_SCLK()
-#define CS1238_SCLK_L() CLR_CS1238_SCLK()
-
-#define CS1238_1US(x) delay_us(x) //1usʱ
-#define CS1238_100NS(x) delay_ns(x) //100nsʱ
-#define CS1238_1MS(x) delay_ms(x) //1msʱ
/*Definition of conversion time corresponding to repeatability setting*/
/*
@@ -51,40 +41,39 @@
#define tCon_1280Hz 4 /* ms. */
#define PORT_A 1 //ɼͨA
-#define PORT_B 1 //ɼͨB
-#define PORT_TEMP 0 //ɼ¶
-#define PORT_JUMP 0 //ڶ̲ɼ
-#define PACK_NUM 10 //һβɼݰ
+//#define PORT_B 1 //ɼͨB
+#define PORT_TEMP 0 //ɼ¶
+#define PORT_JUMP 0 //ڶ̲ɼ
+#define PACK_NUM 1 //һβɼݰ
+#define FILTER_NUM 0 //˲
typedef enum{
- CS1238_STATUS_IDLE,
- CS1238_STATUS_START,
- CS1238_STATUS_DELAY,
- CS1238_STATUS_READ,
- CS1238_STATUS_WAIT_READ,
- CS1238_STATUS_CH_SEL,
- CS1238_STATUS_STOP,
-}CS1238Status_m;
+ LUCS1237_STATUS_IDLE,
+ LUCS1237_STATUS_START,
+ LUCS1237_STATUS_DELAY,
+ LUCS1237_STATUS_READ,
+ LUCS1237_STATUS_WAIT_READ,
+ LUCS1237_STATUS_CH_SEL,
+ LUCS1237_STATUS_STOP,
+}LeftUpCS1237Status_m;
typedef struct{
- CS1238Status_m Status;
- uint32_t CS1238Delay1mSCnt;
+ LeftUpCS1237Status_m Status;
+ uint32_t CS1237Delay1mSCnt;
- int32_t Ain1_AD;//AIN1ad
- int32_t Ain2_AD;//AIN2ad
+ int32_t AinA_AD;//AINAad
+ //int32_t AinB_AD;//AINBad
int32_t Temp_AD;//¶ad
int32_t Jump_AD;//ڶad
}
-CS1238Var_t;
-extern CS1238Var_t CS1238Var;
+LEFTUP_CS1237Var_t;
-void CS1238_Init(void);
-void CS1238_IrqCallBack(void);
-void CS1238DataLoopCollect(void);
-void CS1238LoopHandler(void);
-void CS12381mSRoutine(void);
-void CS1238Start(void);
-void CS1238Stop(void);
+void LEFTUP_CS1237_Init(void);
+void LEFTUP_CS1237_IrqCallBack(void);
+void LEFTUP_CS1237DataLoopCollect(void);
+void LEFTUP_CS12371mSRoutine(void);
+void LEFTUP_CS1237Start(void);
+void LEFTUP_CS1237Stop(void);
#endif
diff --git a/Project/HC32F460/source/Module/CS1237/CS1237_RIGHRLOW.c b/Project/HC32F460/source/Module/CS1237/CS1237_RIGHRLOW.c
deleted file mode 100644
index a10e7c8..0000000
--- a/Project/HC32F460/source/Module/CS1237/CS1237_RIGHRLOW.c
+++ /dev/null
@@ -1,485 +0,0 @@
-#include "CS1238.h"
-#include "UartDebug.h"
-#include "bsp.h"
-#include "main.h"
-#include "Algorithm.h"
-
-CS1238Var_t CS1238Var;
-static bool InitFlag;
-static bool CS1238IrqFlag;
-static bool BuildDelay;
-static uint8_t CS1238Port;
-static uint8_t CS1238Hz;
-static uint8_t CS1238PGA;
-extern void CS1238Ain1DataProcessCallBack(int32_t AD);
-extern void CS1238Ain2DataProcessCallBack(int32_t AD);
-extern void CS1238TempDataProcessCallBack(int32_t AD);
-extern void CS1238JumpDataProcessCallBack(int32_t AD);
-
-/** cs1238 时序时钟*/
-static void CS1238_Clock(void)
-{
- CS1238_SCLK_H();
- CS1238_100NS(3);
- CS1238_SCLK_L();
- CS1238_100NS(3);
-}
-/** cs1238 休眠*/
-static void CS1238_Sleep(void)
-{
- CS1238_SCLK_H();
- CS1238_1US(150);
-}
-/** cs1238 唤醒*/
-static void CS1238_WakeUp(void)
-{
- CS1238_SCLK_L();
- CS1238_1US(20);
-}
-/**设置CS1238寄存器*/
-static void Set_CS1238_Config(uint8_t ad_reg)
-{
- uint16_t bit_cout = 0;
- uint8_t reg_temp = 0x00;
- //DOUT由高变低之后开始读取数据
- CS1238_DOUT_OUT();
- CS1238_DOUT_H();
- CS1238_DOUT_IN();
- CS1238_SCLK_L(); //时钟拉低
- CS1238Var.CS1238Delay1mSCnt = 300;
- CS1238IrqFlag = false;
- while(CS1238IrqFlag == false) //等待芯片准备好
- {
- if(CS1238Var.CS1238Delay1mSCnt <= 0){
- DBG_LOG("CS1238 Preparation Timeout...\r\n");
- return; // 超时退出
- }
- }
- CS1238IntDisable();
- CS1238IrqFlag = false;
-
-
- /* clk1-clk26 写期间不需要操作*/
- for (bit_cout = 0; bit_cout < 26; bit_cout++)
- {
- CS1238_Clock(); //给一周期时钟
- }
- /* clk27 DOUT输出拉高*/
- CS1238_Clock(); //给一周期时钟
- CS1238_DOUT_H();
- /* clk28 - clk29 发送写寄存器命令字 */
- CS1238_Clock(); //给一周期时钟
- CS1238_Clock(); //给一周期时钟
-
- /* clk30 - clk36 发送写寄存器命令字 */
- CS1238_DOUT_OUT();
- reg_temp = WRITE_CONFIG_CMD << 1; //命令长度为 7bits (写0x65)左移1位
- for (bit_cout = 0; bit_cout < 7; bit_cout++)
- {
- if (reg_temp & 0x80) //MSB
- {
- CS1238_DOUT_H();
- }
- else
- {
- CS1238_DOUT_L();
- }
- reg_temp = reg_temp << 1;
- CS1238_Clock();
- }
- /* clk37写寄存器模式还是输出 */
- CS1238_Clock();
- /* clk38 ~ clk45 写入寄存器值 */
- reg_temp = ad_reg;//要配件的寄存器数值
- for (bit_cout = 0; bit_cout < 8; bit_cout++)
- {
- if (reg_temp & 0x80) //MSB
- {
- CS1238_DOUT_H();
- }
- else
- {
- CS1238_DOUT_L();
- }
- reg_temp = reg_temp << 1;
- CS1238_Clock();
- }
- /* 8: clk46 */
- CS1238_Clock();
- CS1238_DOUT_H();
- CS1238_DOUT_IN();
- CS1238IntEnable();
- return ;
-}
-
-/**读CS1238寄存器*/
-static int32_t Read_CS1238_Config(void)
-{
- uint16_t bit_cout = 0;
- uint8_t reg_temp = 0x00;
- //DOUT由高变低之后开始读取数据
- CS1238_DOUT_OUT();
- CS1238_DOUT_H();
- CS1238_DOUT_IN();
- CS1238_SCLK_L(); //时钟拉低
- CS1238Var.CS1238Delay1mSCnt = 300;
- CS1238IrqFlag = false;
- while(CS1238IrqFlag == false) //等待芯片准备好
- {
- if(CS1238Var.CS1238Delay1mSCnt <= 0){
- DBG_LOG("CS1238 Preparation Timeout...\r\n");
- return 0; // 超时退出
- }
- }
- CS1238IntDisable();
- CS1238IrqFlag = false;
-
- /* clk1-clk26 写期间不需要操作*/
- for (bit_cout = 0; bit_cout < 26; bit_cout++)
- {
- CS1238_Clock(); //给一周期时钟
- }
- /* clk27 DOUT输出拉高*/
- CS1238_Clock(); //给一周期时钟
- CS1238_DOUT_H();
- /* clk28 - clk29 发送写寄存器命令字 */
- CS1238_Clock(); //给一周期时钟
- CS1238_Clock(); //给一周期时钟
-
- /* clk30 - clk36 发送读寄存器命令字 */
- CS1238_DOUT_OUT();
- reg_temp = READ_CONFIG_CMD << 1; //命令长度为 7bits (写0x56)左移1位
- for (bit_cout = 0; bit_cout < 7; bit_cout++)
- {
- if (reg_temp & 0x80) //MSB
- {
- CS1238_DOUT_H();
- }
- else
- {
- CS1238_DOUT_L();
- }
- reg_temp = reg_temp << 1;
- CS1238_Clock();
- }
- /* clk37,读寄存器模式改输入 */
- CS1238_Clock();
- CS1238_DOUT_IN();
- for (bit_cout = 0; bit_cout < 8; bit_cout++)
- {
- CS1238_SCLK_H();
- reg_temp <<= 1; //左移1位准备接受数据 初始默认0
- CS1238_100NS(3);//延时300ns
- if(GET_CS1238_DOUT() == true) //有数值则累加
- reg_temp |= 1;
- CS1238_SCLK_L();
- CS1238_100NS(3);
- }
- /* 8: clk46 */
- CS1238_Clock();
- CS1238_DOUT_IN();
- CS1238_DOUT_H();
- CS1238IntEnable();
- return reg_temp ;
-}
-/**读取CS1238的AD数*/
-static int32_t Read_CS1238_Ad_Data(void)
-{
- uint16_t bit_cout = 0;
- int32_t data_temp = 0;
-
- /* clk1 ~ clk24 ADC数据*/
- data_temp = 0;
- for (bit_cout = 0; bit_cout < 24; bit_cout++)
- {
- CS1238_SCLK_H();
- data_temp <<= 1; //左移1位准备接受数据 初始默认0
- CS1238_100NS(3);//延时300ns
- if(GET_CS1238_DOUT() == true) //有数值则累加
- data_temp |= 1;
- CS1238_SCLK_L();
- CS1238_100NS(3);
- }
-
- /* clk25 ~ clk27 */
- for (bit_cout = 24; bit_cout < 27; bit_cout++)
- {
- CS1238_Clock(); //给一周期时钟
- }
- CS1238_DOUT_H();
- CS1238_SCLK_L();
-
- if(data_temp > 0x7FFFFF) //取24位
- {
- data_temp |= 0xFF000000;
- }
- return data_temp;
-}
-
-void CS1238_IrqCallBack(void)
-{
- CS1238IrqFlag = true;
-}
-void CS1238_Init(void)
-{
- CS1238IrqFlag = false;
- BuildDelay = false;
- CS1238IntEnable();
- CS1238Var.Ain1_AD = 0;
- CS1238Var.Ain2_AD = 0;
- CS1238Var.Temp_AD = 0;
- CS1238Var.Jump_AD = 0;
-
- CS1238Port = CH_SEL_A;
- CS1238Hz = SPEED_SEL_640Hz;
- CS1238PGA = PGA_SEL_128;
-
- uint8_t read_reg = 0x00;
- uint8_t set_reg = REFO_ON | CS1238Hz | CS1238PGA | CS1238Port;
- CS1238_1MS(20);
- Set_CS1238_Config(set_reg);
- CS1238_1MS(20);
- read_reg = Read_CS1238_Config();
- CS1238_1MS(20);
- if(read_reg != set_reg){
- DBG_LOG("CS1238 Init ERR...\r\n");
- DBG_LOG("set_reg = %02X\tread_reg = %02X\r\n",set_reg,read_reg);
- InitFlag = false;
- }
- else {
- DBG_LOG("CS1238 Init OK...\r\n");
- //DBG_LOG("set_reg = %02X\tread_reg = %02X\r\n",set_reg,read_reg);
- CS1238Port = read_reg & 0x03;
- InitFlag = true;
- }
-}
-void CS1238DataLoopCollect(void)
-{
- static int32_t ad_array[PACK_NUM];
- static uint8_t adcnt;
- static uint8_t TimeOutmagcnt;
-
- switch(CS1238Var.Status) {
- case CS1238_STATUS_IDLE:{
- break;}
-
- case CS1238_STATUS_START:{
- memset(&ad_array, 0x00, sizeof(ad_array));
- adcnt = 0;
- TimeOutmagcnt = 0;
- memset(&CS1238Var, NULL, sizeof(CS1238Var));
- if(BuildDelay == true)
- {
- BuildDelay = false;
- if(CS1238Hz == SPEED_SEL_10Hz){
- CS1238Var.CS1238Delay1mSCnt = tCon_10Hz;
- }
- if(CS1238Hz == SPEED_SEL_40Hz){
- CS1238Var.CS1238Delay1mSCnt = tCon_40Hz;
- }
- if(CS1238Hz == SPEED_SEL_640Hz){
- CS1238Var.CS1238Delay1mSCnt = tCon_640Hz;
- }
- if(CS1238Hz == SPEED_SEL6_1280Hz){
- CS1238Var.CS1238Delay1mSCnt = tCon_1280Hz;
- }
- CS1238Var.Status = CS1238_STATUS_DELAY;
- }
- else
- {
- CS1238Var.Status = CS1238_STATUS_READ;
- }
- break;}
-
- case CS1238_STATUS_DELAY:{
- if(CS1238Var.CS1238Delay1mSCnt <= 0){
- CS1238Var.Status = CS1238_STATUS_READ;
- }
- break;}
-
- case CS1238_STATUS_READ:{
- CS1238IrqFlag = false;
- CS1238Var.CS1238Delay1mSCnt = 100;
- CS1238Var.Status = CS1238_STATUS_WAIT_READ;
- break;}
-
- case CS1238_STATUS_WAIT_READ:{
- if(CS1238Var.CS1238Delay1mSCnt <= 0){
- CS1238Var.Status = CS1238_STATUS_READ;
- TimeOutmagcnt++;
- }
- if(CS1238IrqFlag == true){
- CS1238IrqFlag = false;
- ad_array[adcnt++] = Read_CS1238_Ad_Data();
- CS1238Var.Status = CS1238_STATUS_READ;
- }
- if(TimeOutmagcnt >= PACK_NUM){
- TimeOutmagcnt = 0;
- if(adcnt > 0){
- if(CS1238Port == CH_SEL_A){
- CS1238Var.Ain1_AD = IntFilter_32t(ad_array, adcnt, 4);
- CS1238Ain1DataProcessCallBack(CS1238Var.Ain1_AD);
- }
- if(CS1238Port == CH_SEL_B){
- CS1238Var.Ain2_AD = IntFilter_32t(ad_array, adcnt, 4);
- CS1238Ain2DataProcessCallBack(CS1238Var.Ain2_AD);
- }
- if(CS1238Port == CH_SEL_TEMP){
- CS1238Var.Temp_AD = IntFilter_32t(ad_array, adcnt, 4);
- CS1238TempDataProcessCallBack(CS1238Var.Temp_AD);
- }
- if(CS1238Port == CH_SEL_JUMP){
- CS1238Var.Jump_AD = IntFilter_32t(ad_array, adcnt, 4);
- CS1238JumpDataProcessCallBack(CS1238Var.Jump_AD);
- }
- CS1238Var.Status = CS1238_STATUS_CH_SEL;
- }
- else{
- if(CS1238Port == CH_SEL_A){
- DBG_LOG("CS1238 CHA TimeOut...\r\n");
- }
- if(CS1238Port == CH_SEL_B){
- DBG_LOG("CS1238 CHB TimeOut...\r\n");
- }
- if(CS1238Port == CH_SEL_TEMP){
- DBG_LOG("CS1238 Temp TimeOut...\r\n");
- }
- if(CS1238Port == CH_SEL_JUMP){
- DBG_LOG("CS1238 Jump TimeOut...\r\n");
- }
- CS1238Var.Status = CS1238_STATUS_CH_SEL;
- }
- }
- if(adcnt >= PACK_NUM){
- if(CS1238Port == CH_SEL_A){
- CS1238Var.Ain1_AD = IntFilter_32t(ad_array, adcnt, 4);
- CS1238Ain1DataProcessCallBack(CS1238Var.Ain1_AD);
- }
- if(CS1238Port == CH_SEL_B){
- CS1238Var.Ain2_AD = IntFilter_32t(ad_array, adcnt, 4);
- CS1238Ain2DataProcessCallBack(CS1238Var.Ain2_AD);
- }
- if(CS1238Port == CH_SEL_TEMP){
- CS1238Var.Temp_AD = IntFilter_32t(ad_array, adcnt, 4);
- CS1238TempDataProcessCallBack(CS1238Var.Temp_AD);
- }
- if(CS1238Port == CH_SEL_JUMP){
- CS1238Var.Jump_AD = IntFilter_32t(ad_array, adcnt, 4);
- CS1238JumpDataProcessCallBack(CS1238Var.Jump_AD);
- }
- CS1238Var.Status = CS1238_STATUS_CH_SEL;
- }
- break;}
-
- case CS1238_STATUS_CH_SEL:{
- CS1238Var.Status = CS1238_STATUS_STOP;
- BuildDelay = false;
- uint8_t read_reg;
- if(CS1238Port == CH_SEL_A){
-#if(PORT_TEMP == 1)
- read_reg = Read_CS1238_Config();
- Set_CS1238_Config((read_reg & 0xFC) | CH_SEL_TEMP);
- CS1238Port = CH_SEL_TEMP;
- BuildDelay = true;
- break;
-#endif
-#if(PORT_JUMP == 1)
- read_reg = Read_CS1238_Config();
- Set_CS1238_Config((read_reg & 0xFC) | CH_SEL_JUMP);
- CS1238Port = CH_SEL_JUMP;
- BuildDelay = true;
- break;
-#endif
- }
-
- if(CS1238Port == CH_SEL_B){
-#if(PORT_TEMP == 1)
- read_reg = Read_CS1238_Config();
- Set_CS1238_Config((read_reg & 0xFC) | CH_SEL_TEMP);
- CS1238Port = CH_SEL_TEMP;
- BuildDelay = true;
- break;
-#endif
-#if(PORT_JUMP == 1)
- read_reg = Read_CS1238_Config();
- Set_CS1238_Config((read_reg & 0xFC) | CH_SEL_JUMP);
- CS1238Port = CH_SEL_JUMP;
- BuildDelay = true;
- break;
-#endif
-#if(PORT_A == 1)
- read_reg = Read_CS1238_Config();
- Set_CS1238_Config((read_reg & 0xFC) | CH_SEL_A);
- CS1238Port = CH_SEL_A;
- BuildDelay = true;
- break;
-#endif
- }
-
- if(CS1238Port == CH_SEL_TEMP){
-#if(PORT_JUMP == 1)
- read_reg = Read_CS1238_Config();
- Set_CS1238_Config((read_reg & 0xFC) | CH_SEL_JUMP);
- CS1238Port = CH_SEL_JUMP;
- BuildDelay = true;
- break;
-#endif
-#if(PORT_A == 1)
- read_reg = Read_CS1238_Config();
- Set_CS1238_Config((read_reg & 0xFC) | CH_SEL_A);
- CS1238Port = CH_SEL_A;
- BuildDelay = true;
- break;
-#endif
- }
-
- if(CS1238Port == CH_SEL_JUMP){
-#if(PORT_A == 1)
- read_reg = Read_CS1238_Config();
- Set_CS1238_Config((read_reg & 0xFC) | CH_SEL_A);
- CS1238Port = CH_SEL_A;
- BuildDelay = true;
- break;
-#endif
-#if(PORT_TEMP == 1)
- read_reg = Read_CS1238_Config();
- Set_CS1238_Config((read_reg & 0xFC) | CH_SEL_TEMP);
- CS1238Port = CH_SEL_TEMP;
- BuildDelay = true;
- break;
-#endif
- }
- break;}
-
- case CS1238_STATUS_STOP:{
- //CS1238Stop();
- //CS1238Var.Status = CS1238_STATUS_IDLE;
- CS1238Var.Status = CS1238_STATUS_START;//持续工作
- break;}
- }
-}
-void CS12381mSRoutine(void)
-{
- if(CS1238Var.CS1238Delay1mSCnt > 0)
- CS1238Var.CS1238Delay1mSCnt--;
-}
-void CS1238Start(void)
-{
- CS1238_WakeUp();
- CS1238_1MS(2);
- BuildDelay = true;
- CS1238IntEnable();
- if(!InitFlag){
- CS1238_Init();
- return;
- }
- CS1238Var.Status = CS1238_STATUS_START;
-}
-void CS1238Stop(void)
-{
- CS1238IntDisable();
- CS1238_Sleep();
-}
-
-
-
diff --git a/Project/HC32F460/source/Module/CS1237/CS1237_RIGHRLOW.h b/Project/HC32F460/source/Module/CS1237/CS1237_RIGHRLOW.h
deleted file mode 100644
index 354d39d..0000000
--- a/Project/HC32F460/source/Module/CS1237/CS1237_RIGHRLOW.h
+++ /dev/null
@@ -1,91 +0,0 @@
-#include "bsp.h"
-
-#ifndef _CS1238_H_
-#define _CS1238_H_
-
-#define READ_CONFIG_CMD 0x56
-#define WRITE_CONFIG_CMD 0x65
-
-#define CONFIG_RST 0x0C
-
-#define REFO_OFF 0x40
-#define REFO_ON 0x00
-
-#define SPEED_SEL_10Hz 0x00
-#define SPEED_SEL_40Hz 0x10
-#define SPEED_SEL_640Hz 0x20
-#define SPEED_SEL6_1280Hz 0x30
-
-#define PGA_SEL_1 0x00
-#define PGA_SEL_2 0x04
-#define PGA_SEL_64 0x08
-#define PGA_SEL_128 0x0C
-
-#define CH_SEL_A 0x00
-#define CH_SEL_B 0x01
-#define CH_SEL_TEMP 0x02
-#define CH_SEL_JUMP 0x03
-
-#define CS1238_DOUT_OUT() SetBit(((uint32_t)&M0P_GPIO->PADIR + CS1238_DOUT_PORTx), CS1238_DOUT_PINx, 0)
-#define CS1238_DOUT_IN() SetBit(((uint32_t)&M0P_GPIO->PADIR + CS1238_DOUT_PORTx), CS1238_DOUT_PINx, 1)
-#define CS1238_DOUT_H() SET_CS1238_DOUT()
-#define CS1238_DOUT_L() CLR_CS1238_DOUT()
-
-#define CS1238_SCLK_H() SET_CS1238_SCLK()
-#define CS1238_SCLK_L() CLR_CS1238_SCLK()
-
-#define CS1238_1US(x) delay_us(x) //1usʱ
-#define CS1238_100NS(x) delay_ns(x) //100nsʱ
-#define CS1238_1MS(x) delay_ms(x) //1msʱ
-
-/*Definition of conversion time corresponding to repeatability setting*/
-/*
- 10Hz //ʱ300ms
- 40Hz //ʱ75ms
- 640Hz //ʱ6.25ms
- 1280Hz //ʱ3.125ms
-*/
-#define tCon_10Hz 300 /* ms. */
-#define tCon_40Hz 75 /* ms. */
-#define tCon_640Hz 7 /* ms. */
-#define tCon_1280Hz 4 /* ms. */
-
-#define PORT_A 1 //ɼͨA
-#define PORT_B 1 //ɼͨB
-#define PORT_TEMP 0 //ɼ¶
-#define PORT_JUMP 0 //ڶ̲ɼ
-#define PACK_NUM 10 //һβɼݰ
-
-typedef enum{
- CS1238_STATUS_IDLE,
- CS1238_STATUS_START,
- CS1238_STATUS_DELAY,
- CS1238_STATUS_READ,
- CS1238_STATUS_WAIT_READ,
- CS1238_STATUS_CH_SEL,
- CS1238_STATUS_STOP,
-}CS1238Status_m;
-
-typedef struct{
- CS1238Status_m Status;
- uint32_t CS1238Delay1mSCnt;
-
- int32_t Ain1_AD;//AIN1ad
- int32_t Ain2_AD;//AIN2ad
- int32_t Temp_AD;//¶ad
- int32_t Jump_AD;//ڶad
-}
-CS1238Var_t;
-extern CS1238Var_t CS1238Var;
-
-void CS1238_Init(void);
-void CS1238_IrqCallBack(void);
-void CS1238DataLoopCollect(void);
-void CS1238LoopHandler(void);
-void CS12381mSRoutine(void);
-void CS1238Start(void);
-void CS1238Stop(void);
-#endif
-
-
-
diff --git a/Project/HC32F460/source/Module/CS1237/CS1237_RIGHTLOW.c b/Project/HC32F460/source/Module/CS1237/CS1237_RIGHTLOW.c
new file mode 100644
index 0000000..75bf6c7
--- /dev/null
+++ b/Project/HC32F460/source/Module/CS1237/CS1237_RIGHTLOW.c
@@ -0,0 +1,464 @@
+#include "CS1237_RIGHTLOW.h"
+#include "Debug.h"
+#include "bsp.h"
+#include "main.h"
+#include "Algorithm.h"
+
+#define CS1237_DOUT_OUT() PORT_OE(RIGHTLOW_CS1237_DOUT_PORTx, RIGHTLOW_CS1237_DOUT_PINx, Enable)
+#define CS1237_DOUT_IN() PORT_OE(RIGHTLOW_CS1237_DOUT_PORTx, RIGHTLOW_CS1237_DOUT_PINx, Disable)
+#define CS1237_DOUT_H() SET_RIGHTLOW_CS1237_DOUT()
+#define CS1237_DOUT_L() CLR_RIGHTLOW_CS1237_DOUT()
+#define CS1237_DOUT_GET() GET_RIGHTLOW_CS1237_DOUT()
+
+#define CS1237_SCLK_H() SET_RIGHTLOW_CS1237_SCLK()
+#define CS1237_SCLK_L() CLR_RIGHTLOW_CS1237_SCLK()
+
+#define CS1237_5NS(x) delay_5ns(x) //5ns延时
+#define CS1237_1US(x) Ddl_Delay1us(x) //1us延时
+#define CS1237_1MS(x) Ddl_Delay1ms(x) //1ms延时
+
+#define CS1237IntEnable() ExtInt06IntEnable()
+#define CS1237IntDisable() ExtInt06IntDisable()
+
+RIGHTLOW_CS1237Var_t RIGHTLOW_CS1237Var;
+static bool InitFlag;
+static bool CS1237IrqFlag;
+static bool BuildDelay;
+static uint8_t CS1237Port;
+static uint8_t CS1237Hz;
+static uint8_t CS1237PGA;
+extern void RIGHTLOW_CS1237AinADataProcessCallBack(int32_t AD);
+
+
+/** cs1237 时序时钟*/
+static void CS1237_Clock(void)
+{
+ CS1237_SCLK_H();
+ CS1237_5NS(60);
+ CS1237_SCLK_L();
+ CS1237_5NS(60);
+}
+/** cs1237 休眠*/
+static void CS1237_Sleep(void)
+{
+ CS1237_SCLK_H();
+ CS1237_1US(200);
+}
+/** cs1237 唤醒*/
+static void CS1237_WakeUp(void)
+{
+ CS1237_SCLK_L();
+ CS1237_1US(20);
+}
+/**设置CS1237寄存器*/
+static void Set_CS1237_Config(uint8_t ad_reg)
+{
+ uint16_t bit_cout = 0;
+ uint8_t reg_temp = 0x00;
+ //DOUT由高变低之后开始读取数据
+ CS1237_DOUT_OUT();
+ CS1237_DOUT_H();
+ CS1237_DOUT_IN();
+ CS1237_SCLK_L(); //时钟拉低
+ RIGHTLOW_CS1237Var.CS1237Delay1mSCnt = 300;
+ CS1237IrqFlag = false;
+ while(CS1237IrqFlag == false) //等待芯片准备好
+ {
+ if(RIGHTLOW_CS1237Var.CS1237Delay1mSCnt <= 0){
+ //DBG_LOG("RIGHTLOW CS1237 Preparation Timeout...\r\n");
+ return; // 超时退出
+ }
+ }
+ CS1237IntDisable();
+ CS1237IrqFlag = false;
+
+
+ /* clk1-clk26 写期间不需要操作*/
+ for (bit_cout = 0; bit_cout < 26; bit_cout++)
+ {
+ CS1237_Clock(); //给一周期时钟
+ }
+ /* clk27 DOUT输出拉高*/
+ CS1237_Clock(); //给一周期时钟
+ CS1237_DOUT_H();
+ /* clk28 - clk29 发送写寄存器命令字 */
+ CS1237_Clock(); //给一周期时钟
+ CS1237_Clock(); //给一周期时钟
+
+ /* clk30 - clk36 发送写寄存器命令字 */
+ CS1237_DOUT_OUT();
+ reg_temp = WRITE_CONFIG_CMD << 1; //命令长度为 7bits (写0x65)左移1位
+ for (bit_cout = 0; bit_cout < 7; bit_cout++)
+ {
+ if (reg_temp & 0x80) //MSB
+ {
+ CS1237_DOUT_H();
+ }
+ else
+ {
+ CS1237_DOUT_L();
+ }
+ reg_temp = reg_temp << 1;
+ CS1237_Clock();
+ }
+ /* clk37写寄存器模式还是输出 */
+ CS1237_Clock();
+ /* clk38 ~ clk45 写入寄存器值 */
+ reg_temp = ad_reg;//要配件的寄存器数值
+ for (bit_cout = 0; bit_cout < 8; bit_cout++)
+ {
+ if (reg_temp & 0x80) //MSB
+ {
+ CS1237_DOUT_H();
+ }
+ else
+ {
+ CS1237_DOUT_L();
+ }
+ reg_temp = reg_temp << 1;
+ CS1237_Clock();
+ }
+ /* 8: clk46 */
+ CS1237_Clock();
+ CS1237_DOUT_H();
+ CS1237_DOUT_IN();
+ CS1237IntEnable();
+ return ;
+}
+
+/**读CS1237寄存器*/
+static int32_t Read_CS1237_Config(void)
+{
+ uint16_t bit_cout = 0;
+ uint8_t reg_temp = 0x00;
+ //DOUT由高变低之后开始读取数据
+ CS1237_DOUT_OUT();
+ CS1237_DOUT_H();
+ CS1237_DOUT_IN();
+ CS1237_SCLK_L(); //时钟拉低
+ RIGHTLOW_CS1237Var.CS1237Delay1mSCnt = 300;
+ CS1237IrqFlag = false;
+ while(CS1237IrqFlag == false) //等待芯片准备好
+ {
+ if(RIGHTLOW_CS1237Var.CS1237Delay1mSCnt <= 0){
+ //DBG_LOG("RIGHTLOW CS1237 Preparation Timeout...\r\n");
+ return 0; // 超时退出
+ }
+ }
+ CS1237IntDisable();
+ CS1237IrqFlag = false;
+
+ /* clk1-clk26 写期间不需要操作*/
+ for (bit_cout = 0; bit_cout < 26; bit_cout++)
+ {
+ CS1237_Clock(); //给一周期时钟
+ }
+ /* clk27 DOUT输出拉高*/
+ CS1237_Clock(); //给一周期时钟
+ CS1237_DOUT_H();
+ /* clk28 - clk29 发送写寄存器命令字 */
+ CS1237_Clock(); //给一周期时钟
+ CS1237_Clock(); //给一周期时钟
+
+ /* clk30 - clk36 发送读寄存器命令字 */
+ CS1237_DOUT_OUT();
+ reg_temp = READ_CONFIG_CMD << 1; //命令长度为 7bits (写0x56)左移1位
+ for (bit_cout = 0; bit_cout < 7; bit_cout++)
+ {
+ if (reg_temp & 0x80) //MSB
+ {
+ CS1237_DOUT_H();
+ }
+ else
+ {
+ CS1237_DOUT_L();
+ }
+ reg_temp = reg_temp << 1;
+ CS1237_Clock();
+ }
+ /* clk37,读寄存器模式改输入 */
+ CS1237_Clock();
+ CS1237_DOUT_IN();
+ for (bit_cout = 0; bit_cout < 8; bit_cout++)
+ {
+ CS1237_SCLK_H();
+ reg_temp <<= 1; //左移1位准备接受数据 初始默认0
+ CS1237_5NS(60);//延时300ns
+ if(CS1237_DOUT_GET() == true) //有数值则累加
+ reg_temp |= 1;
+ CS1237_SCLK_L();
+ CS1237_5NS(60);
+ }
+ /* 8: clk46 */
+ CS1237_Clock();
+ CS1237_DOUT_IN();
+ CS1237_DOUT_H();
+ CS1237IntEnable();
+ return reg_temp ;
+}
+/**读取CS1237的AD数*/
+static int32_t Read_CS1237_Ad_Data(void)
+{
+ uint16_t bit_cout = 0;
+ int32_t data_temp = 0;
+
+ /* clk1 ~ clk24 ADC数据*/
+ data_temp = 0;
+ for (bit_cout = 0; bit_cout < 24; bit_cout++)
+ {
+ CS1237_SCLK_H();
+ data_temp <<= 1; //左移1位准备接受数据 初始默认0
+ CS1237_5NS(60);//延时300ns
+ if(CS1237_DOUT_GET() == true) //有数值则累加
+ data_temp |= 1;
+ CS1237_SCLK_L();
+ CS1237_5NS(60);
+ }
+
+ /* clk25 ~ clk27 */
+ for (bit_cout = 24; bit_cout < 27; bit_cout++)
+ {
+ CS1237_Clock(); //给一周期时钟
+ }
+ CS1237_DOUT_H();
+ CS1237_SCLK_L();
+
+ if(data_temp > 0x7FFFFF) //取24位
+ {
+ data_temp |= 0xFF000000;
+ }
+ return data_temp;
+}
+
+void RIGHTLOW_CS1237_IrqCallBack(void)
+{
+ CS1237IrqFlag = true;
+}
+void RIGHTLOW_CS1237_Init(void)
+{
+ CS1237IrqFlag = false;
+ BuildDelay = false;
+ RIGHTLOW_CS1237Var.AinA_AD = 0;
+ RIGHTLOW_CS1237Var.Temp_AD = 0;
+ RIGHTLOW_CS1237Var.Jump_AD = 0;
+
+ CS1237IntEnable();
+ CS1237Port = CH_SEL_A;
+ CS1237Hz = SPEED_SEL_640Hz;
+ CS1237PGA = PGA_SEL_128;
+
+ uint8_t read_reg = 0x00;
+ uint8_t set_reg = REFO_ON | CS1237Hz | CS1237PGA | CS1237Port;
+ CS1237_1MS(20);
+ Set_CS1237_Config(set_reg);
+ CS1237_1MS(20);
+ read_reg = Read_CS1237_Config();
+ CS1237_1MS(20);
+ if(read_reg != set_reg){
+ DBG_LOG("RIGHTLOW CS1237 Init ERR...\r\n");
+ //DBG_LOG("set_reg = %02X\tread_reg = %02X\r\n",set_reg,read_reg);
+ InitFlag = true;
+ }
+ else {
+ DBG_LOG("RIGHTLOW CS1237 Init OK...\r\n");
+ //DBG_LOG("set_reg = %02X\tread_reg = %02X\r\n",set_reg,read_reg);
+ CS1237Port = read_reg & 0x03;
+ InitFlag = true;
+ }
+ CS1237IntDisable();
+}
+void RIGHTLOW_CS1237DataLoopCollect(void)
+{
+ static int32_t ad_array[PACK_NUM];
+ static uint8_t adcnt;
+ static uint8_t TimeOutmagcnt;
+
+ switch(RIGHTLOW_CS1237Var.Status) {
+ case RLCS1237_STATUS_IDLE:{
+ break;}
+
+ case RLCS1237_STATUS_START:{
+ memset(&ad_array, 0x00, sizeof(ad_array));
+ adcnt = 0;
+ TimeOutmagcnt = 0;
+ memset(&RIGHTLOW_CS1237Var, NULL, sizeof(RIGHTLOW_CS1237Var));
+ if(BuildDelay == true)
+ {
+ BuildDelay = false;
+ if(CS1237Hz == SPEED_SEL_10Hz){
+ RIGHTLOW_CS1237Var.CS1237Delay1mSCnt = tCon_10Hz;
+ }
+ if(CS1237Hz == SPEED_SEL_40Hz){
+ RIGHTLOW_CS1237Var.CS1237Delay1mSCnt = tCon_40Hz;
+ }
+ if(CS1237Hz == SPEED_SEL_640Hz){
+ RIGHTLOW_CS1237Var.CS1237Delay1mSCnt = tCon_640Hz;
+ }
+ if(CS1237Hz == SPEED_SEL6_1280Hz){
+ RIGHTLOW_CS1237Var.CS1237Delay1mSCnt = tCon_1280Hz;
+ }
+ RIGHTLOW_CS1237Var.Status = RLCS1237_STATUS_DELAY;
+ }
+ else
+ {
+ RIGHTLOW_CS1237Var.Status = RLCS1237_STATUS_READ;
+ }
+ break;}
+
+ case RLCS1237_STATUS_DELAY:{
+ if(RIGHTLOW_CS1237Var.CS1237Delay1mSCnt <= 0){
+ RIGHTLOW_CS1237Var.Status = RLCS1237_STATUS_READ;
+ }
+ break;}
+
+ case RLCS1237_STATUS_READ:{
+ CS1237IrqFlag = false;
+ RIGHTLOW_CS1237Var.CS1237Delay1mSCnt = 100;
+ RIGHTLOW_CS1237Var.Status = RLCS1237_STATUS_WAIT_READ;
+ break;}
+
+ case RLCS1237_STATUS_WAIT_READ:{
+ if(RIGHTLOW_CS1237Var.CS1237Delay1mSCnt <= 0){
+ RIGHTLOW_CS1237Var.Status = RLCS1237_STATUS_READ;
+ TimeOutmagcnt++;
+ }
+ if(CS1237IrqFlag == true){
+ CS1237IrqFlag = false;
+ ad_array[adcnt++] = Read_CS1237_Ad_Data();
+ RIGHTLOW_CS1237Var.Status = RLCS1237_STATUS_READ;
+ }
+ if(TimeOutmagcnt >= PACK_NUM){
+ TimeOutmagcnt = 0;
+ if(adcnt > 0){
+ if(CS1237Port == CH_SEL_A){
+ RIGHTLOW_CS1237Var.AinA_AD = IntFilter_32t(ad_array, adcnt, FILTER_NUM);
+ RIGHTLOW_CS1237AinADataProcessCallBack(RIGHTLOW_CS1237Var.AinA_AD);
+ }
+ if(CS1237Port == CH_SEL_TEMP){
+ RIGHTLOW_CS1237Var.Temp_AD = IntFilter_32t(ad_array, adcnt, FILTER_NUM);
+ //CS1237TempDataProcessCallBack(LEFTLOW_CS1237Var.Temp_AD);
+ }
+ if(CS1237Port == CH_SEL_JUMP){
+ RIGHTLOW_CS1237Var.Jump_AD = IntFilter_32t(ad_array, adcnt, FILTER_NUM);
+ //CS1237JumpDataProcessCallBack(LEFTLOW_CS1237Var.Jump_AD);
+ }
+ RIGHTLOW_CS1237Var.Status = RLCS1237_STATUS_CH_SEL;
+ }
+ else{
+ if(CS1237Port == CH_SEL_A){
+ DBG_LOG("RIGHTLOW CS1237 CHA TimeOut...\r\n");
+ }
+ if(CS1237Port == CH_SEL_TEMP){
+ DBG_LOG("RIGHTLOW CS1237 Temp TimeOut...\r\n");
+ }
+ if(CS1237Port == CH_SEL_JUMP){
+ DBG_LOG("RIGHTLOW CS1237 Jump TimeOut...\r\n");
+ }
+ RIGHTLOW_CS1237Var.Status = RLCS1237_STATUS_CH_SEL;
+ }
+ }
+ if(adcnt >= PACK_NUM){
+ if(CS1237Port == CH_SEL_A){
+ RIGHTLOW_CS1237Var.AinA_AD = IntFilter_32t(ad_array, adcnt, FILTER_NUM);
+ RIGHTLOW_CS1237AinADataProcessCallBack(RIGHTLOW_CS1237Var.AinA_AD);
+ }
+ if(CS1237Port == CH_SEL_TEMP){
+ RIGHTLOW_CS1237Var.Temp_AD = IntFilter_32t(ad_array, adcnt, FILTER_NUM);
+ //CS1237TempDataProcessCallBack(LEFTLOW_CS1237Var.Temp_AD);
+ }
+ if(CS1237Port == CH_SEL_JUMP){
+ RIGHTLOW_CS1237Var.Jump_AD = IntFilter_32t(ad_array, adcnt, FILTER_NUM);
+ //CS1237JumpDataProcessCallBack(LEFTLOW_CS1237Var.Jump_AD);
+ }
+ RIGHTLOW_CS1237Var.Status = RLCS1237_STATUS_CH_SEL;
+ }
+ break;}
+
+ case RLCS1237_STATUS_CH_SEL:{
+ RIGHTLOW_CS1237Var.Status = RLCS1237_STATUS_STOP;
+ BuildDelay = false;
+ uint8_t read_reg;
+ if(CS1237Port == CH_SEL_A){
+#if(PORT_TEMP == 1)
+ read_reg = Read_CS1237_Config();
+ Set_CS1237_Config((read_reg & 0xFC) | CH_SEL_TEMP);
+ CS1237Port = CH_SEL_TEMP;
+ BuildDelay = true;
+ break;
+#endif
+#if(PORT_JUMP == 1)
+ read_reg = Read_CS1237_Config();
+ Set_CS1237_Config((read_reg & 0xFC) | CH_SEL_JUMP);
+ CS1237Port = CH_SEL_JUMP;
+ BuildDelay = true;
+ break;
+#endif
+ }
+
+ if(CS1237Port == CH_SEL_TEMP){
+#if(PORT_JUMP == 1)
+ read_reg = Read_CS1238_Config();
+ Set_CS1238_Config((read_reg & 0xFC) | CH_SEL_JUMP);
+ CS1238Port = CH_SEL_JUMP;
+ BuildDelay = true;
+ break;
+#endif
+#if(PORT_A == 1)
+ read_reg = Read_CS1237_Config();
+ Set_CS1237_Config((read_reg & 0xFC) | CH_SEL_A);
+ CS1237Port = CH_SEL_A;
+ BuildDelay = true;
+ break;
+#endif
+ }
+
+ if(CS1237Port == CH_SEL_JUMP){
+#if(PORT_A == 1)
+ read_reg = Read_CS1237_Config();
+ Set_CS1237_Config((read_reg & 0xFC) | CH_SEL_A);
+ CS1237Port = CH_SEL_A;
+ BuildDelay = true;
+ break;
+#endif
+#if(PORT_TEMP == 1)
+ read_reg = Read_CS1237_Config();
+ Set_CS1237_Config((read_reg & 0xFC) | CH_SEL_TEMP);
+ CS1237Port = CH_SEL_TEMP;
+ BuildDelay = true;
+ break;
+#endif
+ }
+ break;}
+
+ case RLCS1237_STATUS_STOP:{
+ RIGHTLOW_CS1237Stop();
+ RIGHTLOW_CS1237Var.Status = RLCS1237_STATUS_IDLE;
+ //RIGHTLOW_CS1237Var.Status = RLCS1237_STATUS_START;//持续工作
+ break;}
+ }
+}
+void RIGHTLOW_CS12371mSRoutine(void)
+{
+ if(RIGHTLOW_CS1237Var.CS1237Delay1mSCnt > 0)
+ RIGHTLOW_CS1237Var.CS1237Delay1mSCnt--;
+}
+void RIGHTLOW_CS1237Start(void)
+{
+ CS1237_WakeUp();
+ CS1237_1MS(2);
+ BuildDelay = true;
+ CS1237IntEnable();
+ if(!InitFlag){
+ RIGHTLOW_CS1237_Init();
+ return;
+ }
+ RIGHTLOW_CS1237Var.Status = RLCS1237_STATUS_START;
+}
+void RIGHTLOW_CS1237Stop(void)
+{
+ CS1237IntDisable();
+ //CS1237_Sleep();
+}
+
+
+
diff --git a/Project/HC32F460/source/Module/CS1237/CS1237_RIGHTLOW.h b/Project/HC32F460/source/Module/CS1237/CS1237_RIGHTLOW.h
new file mode 100644
index 0000000..732a0a5
--- /dev/null
+++ b/Project/HC32F460/source/Module/CS1237/CS1237_RIGHTLOW.h
@@ -0,0 +1,78 @@
+#include "bsp.h"
+
+#ifndef _CS1237_RIGHTLOW_H_
+#define _CS1237_RIGHTLOW_H_
+
+#define READ_CONFIG_CMD 0x56
+#define WRITE_CONFIG_CMD 0x65
+
+#define CONFIG_RST 0x0C
+
+#define REFO_OFF 0x40
+#define REFO_ON 0x00
+
+#define SPEED_SEL_10Hz 0x00
+#define SPEED_SEL_40Hz 0x10
+#define SPEED_SEL_640Hz 0x20
+#define SPEED_SEL6_1280Hz 0x30
+
+#define PGA_SEL_1 0x00
+#define PGA_SEL_2 0x04
+#define PGA_SEL_64 0x08
+#define PGA_SEL_128 0x0C
+
+#define CH_SEL_A 0x00
+//#define CH_SEL_B 0x01
+#define CH_SEL_TEMP 0x02
+#define CH_SEL_JUMP 0x03
+
+/*Definition of conversion time corresponding to repeatability setting*/
+/*
+ 10Hz //ʱ300ms
+ 40Hz //ʱ75ms
+ 640Hz //ʱ6.25ms
+ 1280Hz //ʱ3.125ms
+*/
+#define tCon_10Hz 300 /* ms. */
+#define tCon_40Hz 75 /* ms. */
+#define tCon_640Hz 7 /* ms. */
+#define tCon_1280Hz 4 /* ms. */
+
+#define PORT_A 1 //ɼͨA
+//#define PORT_B 1 //ɼͨB
+#define PORT_TEMP 0 //ɼ¶
+#define PORT_JUMP 0 //ڶ̲ɼ
+#define PACK_NUM 1 //һβɼݰ
+#define FILTER_NUM 0 //˲
+
+typedef enum{
+ RLCS1237_STATUS_IDLE,
+ RLCS1237_STATUS_START,
+ RLCS1237_STATUS_DELAY,
+ RLCS1237_STATUS_READ,
+ RLCS1237_STATUS_WAIT_READ,
+ RLCS1237_STATUS_CH_SEL,
+ RLCS1237_STATUS_STOP,
+}RightLowCS1237Status_m;
+
+typedef struct{
+ RightLowCS1237Status_m Status;
+ uint32_t CS1237Delay1mSCnt;
+
+ int32_t AinA_AD;//AINAad
+ //int32_t AinB_AD;//AINBad
+ int32_t Temp_AD;//¶ad
+ int32_t Jump_AD;//ڶad
+}
+RIGHTLOW_CS1237Var_t;
+
+void RIGHTLOW_CS1237_Init(void);
+void RIGHTLOW_CS1237_IrqCallBack(void);
+void RIGHTLOW_CS1237DataLoopCollect(void);
+void RIGHTLOW_CS12371mSRoutine(void);
+void RIGHTLOW_CS1237Start(void);
+void RIGHTLOW_CS1237Stop(void);
+#endif
+
+
+
diff --git a/Project/HC32F460/source/Module/CS1237/CS1237_RIGHTUP.c b/Project/HC32F460/source/Module/CS1237/CS1237_RIGHTUP.c
index a10e7c8..3ff949a 100644
--- a/Project/HC32F460/source/Module/CS1237/CS1237_RIGHTUP.c
+++ b/Project/HC32F460/source/Module/CS1237/CS1237_RIGHTUP.c
@@ -1,189 +1,203 @@
-#include "CS1238.h"
-#include "UartDebug.h"
+#include "CS1237_RIGHTUP.h"
+#include "Debug.h"
#include "bsp.h"
#include "main.h"
#include "Algorithm.h"
-CS1238Var_t CS1238Var;
-static bool InitFlag;
-static bool CS1238IrqFlag;
-static bool BuildDelay;
-static uint8_t CS1238Port;
-static uint8_t CS1238Hz;
-static uint8_t CS1238PGA;
-extern void CS1238Ain1DataProcessCallBack(int32_t AD);
-extern void CS1238Ain2DataProcessCallBack(int32_t AD);
-extern void CS1238TempDataProcessCallBack(int32_t AD);
-extern void CS1238JumpDataProcessCallBack(int32_t AD);
+#define CS1237_DOUT_OUT() PORT_OE(RIGHTUP_CS1237_DOUT_PORTx, RIGHTUP_CS1237_DOUT_PINx, Enable)
+#define CS1237_DOUT_IN() PORT_OE(RIGHTUP_CS1237_DOUT_PORTx, RIGHTUP_CS1237_DOUT_PINx, Disable)
+#define CS1237_DOUT_H() SET_RIGHTUP_CS1237_DOUT()
+#define CS1237_DOUT_L() CLR_RIGHTUP_CS1237_DOUT()
+#define CS1237_DOUT_GET() GET_RIGHTUP_CS1237_DOUT()
-/** cs1238 时序时钟*/
-static void CS1238_Clock(void)
+#define CS1237_SCLK_H() SET_RIGHTUP_CS1237_SCLK()
+#define CS1237_SCLK_L() CLR_RIGHTUP_CS1237_SCLK()
+
+#define CS1237_5NS(x) delay_5ns(x) //5ns延时
+#define CS1237_1US(x) Ddl_Delay1us(x) //1us延时
+#define CS1237_1MS(x) Ddl_Delay1ms(x) //1ms延时
+
+#define CS1237IntEnable() ExtInt04IntEnable()
+#define CS1237IntDisable() ExtInt04IntDisable()
+
+RIGHTUP_CS1237Var_t RIGHTUP_CS1237Var;
+static bool InitFlag;
+static bool CS1237IrqFlag;
+static bool BuildDelay;
+static uint8_t CS1237Port;
+static uint8_t CS1237Hz;
+static uint8_t CS1237PGA;
+extern void RIGHTUP_CS1237AinADataProcessCallBack(int32_t AD);
+
+
+/** cs1237 时序时钟*/
+static void CS1237_Clock(void)
{
- CS1238_SCLK_H();
- CS1238_100NS(3);
- CS1238_SCLK_L();
- CS1238_100NS(3);
+ CS1237_SCLK_H();
+ CS1237_5NS(60);
+ CS1237_SCLK_L();
+ CS1237_5NS(60);
}
-/** cs1238 休眠*/
-static void CS1238_Sleep(void)
+/** cs1237 休眠*/
+static void CS1237_Sleep(void)
{
- CS1238_SCLK_H();
- CS1238_1US(150);
+ CS1237_SCLK_H();
+ CS1237_1US(200);
}
-/** cs1238 唤醒*/
-static void CS1238_WakeUp(void)
+/** cs1237 唤醒*/
+static void CS1237_WakeUp(void)
{
- CS1238_SCLK_L();
- CS1238_1US(20);
+ CS1237_SCLK_L();
+ CS1237_1US(20);
}
-/**设置CS1238寄存器*/
-static void Set_CS1238_Config(uint8_t ad_reg)
+/**设置CS1237寄存器*/
+static void Set_CS1237_Config(uint8_t ad_reg)
{
uint16_t bit_cout = 0;
uint8_t reg_temp = 0x00;
//DOUT由高变低之后开始读取数据
- CS1238_DOUT_OUT();
- CS1238_DOUT_H();
- CS1238_DOUT_IN();
- CS1238_SCLK_L(); //时钟拉低
- CS1238Var.CS1238Delay1mSCnt = 300;
- CS1238IrqFlag = false;
- while(CS1238IrqFlag == false) //等待芯片准备好
+ CS1237_DOUT_OUT();
+ CS1237_DOUT_H();
+ CS1237_DOUT_IN();
+ CS1237_SCLK_L(); //时钟拉低
+ RIGHTUP_CS1237Var.CS1237Delay1mSCnt = 300;
+ CS1237IrqFlag = false;
+ while(CS1237IrqFlag == false) //等待芯片准备好
{
- if(CS1238Var.CS1238Delay1mSCnt <= 0){
- DBG_LOG("CS1238 Preparation Timeout...\r\n");
+ if(RIGHTUP_CS1237Var.CS1237Delay1mSCnt <= 0){
+ //DBG_LOG("RIGHTUP CS1237 Preparation Timeout...\r\n");
return; // 超时退出
}
}
- CS1238IntDisable();
- CS1238IrqFlag = false;
+ CS1237IntDisable();
+ CS1237IrqFlag = false;
/* clk1-clk26 写期间不需要操作*/
for (bit_cout = 0; bit_cout < 26; bit_cout++)
{
- CS1238_Clock(); //给一周期时钟
+ CS1237_Clock(); //给一周期时钟
}
/* clk27 DOUT输出拉高*/
- CS1238_Clock(); //给一周期时钟
- CS1238_DOUT_H();
+ CS1237_Clock(); //给一周期时钟
+ CS1237_DOUT_H();
/* clk28 - clk29 发送写寄存器命令字 */
- CS1238_Clock(); //给一周期时钟
- CS1238_Clock(); //给一周期时钟
+ CS1237_Clock(); //给一周期时钟
+ CS1237_Clock(); //给一周期时钟
/* clk30 - clk36 发送写寄存器命令字 */
- CS1238_DOUT_OUT();
+ CS1237_DOUT_OUT();
reg_temp = WRITE_CONFIG_CMD << 1; //命令长度为 7bits (写0x65)左移1位
for (bit_cout = 0; bit_cout < 7; bit_cout++)
{
if (reg_temp & 0x80) //MSB
{
- CS1238_DOUT_H();
+ CS1237_DOUT_H();
}
else
{
- CS1238_DOUT_L();
+ CS1237_DOUT_L();
}
reg_temp = reg_temp << 1;
- CS1238_Clock();
+ CS1237_Clock();
}
/* clk37写寄存器模式还是输出 */
- CS1238_Clock();
+ CS1237_Clock();
/* clk38 ~ clk45 写入寄存器值 */
reg_temp = ad_reg;//要配件的寄存器数值
for (bit_cout = 0; bit_cout < 8; bit_cout++)
{
if (reg_temp & 0x80) //MSB
{
- CS1238_DOUT_H();
+ CS1237_DOUT_H();
}
else
{
- CS1238_DOUT_L();
+ CS1237_DOUT_L();
}
reg_temp = reg_temp << 1;
- CS1238_Clock();
+ CS1237_Clock();
}
/* 8: clk46 */
- CS1238_Clock();
- CS1238_DOUT_H();
- CS1238_DOUT_IN();
- CS1238IntEnable();
+ CS1237_Clock();
+ CS1237_DOUT_H();
+ CS1237_DOUT_IN();
+ CS1237IntEnable();
return ;
}
-/**读CS1238寄存器*/
-static int32_t Read_CS1238_Config(void)
+/**读CS1237寄存器*/
+static int32_t Read_CS1237_Config(void)
{
uint16_t bit_cout = 0;
uint8_t reg_temp = 0x00;
//DOUT由高变低之后开始读取数据
- CS1238_DOUT_OUT();
- CS1238_DOUT_H();
- CS1238_DOUT_IN();
- CS1238_SCLK_L(); //时钟拉低
- CS1238Var.CS1238Delay1mSCnt = 300;
- CS1238IrqFlag = false;
- while(CS1238IrqFlag == false) //等待芯片准备好
+ CS1237_DOUT_OUT();
+ CS1237_DOUT_H();
+ CS1237_DOUT_IN();
+ CS1237_SCLK_L(); //时钟拉低
+ RIGHTUP_CS1237Var.CS1237Delay1mSCnt = 300;
+ CS1237IrqFlag = false;
+ while(CS1237IrqFlag == false) //等待芯片准备好
{
- if(CS1238Var.CS1238Delay1mSCnt <= 0){
- DBG_LOG("CS1238 Preparation Timeout...\r\n");
+ if(RIGHTUP_CS1237Var.CS1237Delay1mSCnt <= 0){
+ //DBG_LOG("RIGHTUP CS1237 Preparation Timeout...\r\n");
return 0; // 超时退出
}
}
- CS1238IntDisable();
- CS1238IrqFlag = false;
+ CS1237IntDisable();
+ CS1237IrqFlag = false;
/* clk1-clk26 写期间不需要操作*/
for (bit_cout = 0; bit_cout < 26; bit_cout++)
{
- CS1238_Clock(); //给一周期时钟
+ CS1237_Clock(); //给一周期时钟
}
/* clk27 DOUT输出拉高*/
- CS1238_Clock(); //给一周期时钟
- CS1238_DOUT_H();
+ CS1237_Clock(); //给一周期时钟
+ CS1237_DOUT_H();
/* clk28 - clk29 发送写寄存器命令字 */
- CS1238_Clock(); //给一周期时钟
- CS1238_Clock(); //给一周期时钟
+ CS1237_Clock(); //给一周期时钟
+ CS1237_Clock(); //给一周期时钟
/* clk30 - clk36 发送读寄存器命令字 */
- CS1238_DOUT_OUT();
+ CS1237_DOUT_OUT();
reg_temp = READ_CONFIG_CMD << 1; //命令长度为 7bits (写0x56)左移1位
for (bit_cout = 0; bit_cout < 7; bit_cout++)
{
if (reg_temp & 0x80) //MSB
{
- CS1238_DOUT_H();
+ CS1237_DOUT_H();
}
else
{
- CS1238_DOUT_L();
+ CS1237_DOUT_L();
}
reg_temp = reg_temp << 1;
- CS1238_Clock();
+ CS1237_Clock();
}
/* clk37,读寄存器模式改输入 */
- CS1238_Clock();
- CS1238_DOUT_IN();
+ CS1237_Clock();
+ CS1237_DOUT_IN();
for (bit_cout = 0; bit_cout < 8; bit_cout++)
{
- CS1238_SCLK_H();
+ CS1237_SCLK_H();
reg_temp <<= 1; //左移1位准备接受数据 初始默认0
- CS1238_100NS(3);//延时300ns
- if(GET_CS1238_DOUT() == true) //有数值则累加
+ CS1237_5NS(60);//延时300ns
+ if(CS1237_DOUT_GET() == true) //有数值则累加
reg_temp |= 1;
- CS1238_SCLK_L();
- CS1238_100NS(3);
+ CS1237_SCLK_L();
+ CS1237_5NS(60);
}
/* 8: clk46 */
- CS1238_Clock();
- CS1238_DOUT_IN();
- CS1238_DOUT_H();
- CS1238IntEnable();
+ CS1237_Clock();
+ CS1237_DOUT_IN();
+ CS1237_DOUT_H();
+ CS1237IntEnable();
return reg_temp ;
}
-/**读取CS1238的AD数*/
-static int32_t Read_CS1238_Ad_Data(void)
+/**读取CS1237的AD数*/
+static int32_t Read_CS1237_Ad_Data(void)
{
uint16_t bit_cout = 0;
int32_t data_temp = 0;
@@ -192,22 +206,22 @@ static int32_t Read_CS1238_Ad_Data(void)
data_temp = 0;
for (bit_cout = 0; bit_cout < 24; bit_cout++)
{
- CS1238_SCLK_H();
+ CS1237_SCLK_H();
data_temp <<= 1; //左移1位准备接受数据 初始默认0
- CS1238_100NS(3);//延时300ns
- if(GET_CS1238_DOUT() == true) //有数值则累加
+ CS1237_5NS(60);//延时300ns
+ if(CS1237_DOUT_GET() == true) //有数值则累加
data_temp |= 1;
- CS1238_SCLK_L();
- CS1238_100NS(3);
+ CS1237_SCLK_L();
+ CS1237_5NS(60);
}
/* clk25 ~ clk27 */
for (bit_cout = 24; bit_cout < 27; bit_cout++)
{
- CS1238_Clock(); //给一周期时钟
+ CS1237_Clock(); //给一周期时钟
}
- CS1238_DOUT_H();
- CS1238_SCLK_L();
+ CS1237_DOUT_H();
+ CS1237_SCLK_L();
if(data_temp > 0x7FFFFF) //取24位
{
@@ -216,190 +230,172 @@ static int32_t Read_CS1238_Ad_Data(void)
return data_temp;
}
-void CS1238_IrqCallBack(void)
+void RIGHTUP_CS1237_IrqCallBack(void)
{
- CS1238IrqFlag = true;
+ CS1237IrqFlag = true;
}
-void CS1238_Init(void)
+void RIGHTUP_CS1237_Init(void)
{
- CS1238IrqFlag = false;
+ CS1237IrqFlag = false;
BuildDelay = false;
- CS1238IntEnable();
- CS1238Var.Ain1_AD = 0;
- CS1238Var.Ain2_AD = 0;
- CS1238Var.Temp_AD = 0;
- CS1238Var.Jump_AD = 0;
+ RIGHTUP_CS1237Var.AinA_AD = 0;
+ RIGHTUP_CS1237Var.Temp_AD = 0;
+ RIGHTUP_CS1237Var.Jump_AD = 0;
- CS1238Port = CH_SEL_A;
- CS1238Hz = SPEED_SEL_640Hz;
- CS1238PGA = PGA_SEL_128;
+ CS1237IntEnable();
+ CS1237Port = CH_SEL_A;
+ CS1237Hz = SPEED_SEL_640Hz;
+ CS1237PGA = PGA_SEL_128;
uint8_t read_reg = 0x00;
- uint8_t set_reg = REFO_ON | CS1238Hz | CS1238PGA | CS1238Port;
- CS1238_1MS(20);
- Set_CS1238_Config(set_reg);
- CS1238_1MS(20);
- read_reg = Read_CS1238_Config();
- CS1238_1MS(20);
+ uint8_t set_reg = REFO_ON | CS1237Hz | CS1237PGA | CS1237Port;
+ CS1237_1MS(20);
+ Set_CS1237_Config(set_reg);
+ CS1237_1MS(20);
+ read_reg = Read_CS1237_Config();
+ CS1237_1MS(20);
if(read_reg != set_reg){
- DBG_LOG("CS1238 Init ERR...\r\n");
- DBG_LOG("set_reg = %02X\tread_reg = %02X\r\n",set_reg,read_reg);
- InitFlag = false;
- }
- else {
- DBG_LOG("CS1238 Init OK...\r\n");
+ DBG_LOG("RIGHTUP CS1237 Init ERR...\r\n");
//DBG_LOG("set_reg = %02X\tread_reg = %02X\r\n",set_reg,read_reg);
- CS1238Port = read_reg & 0x03;
InitFlag = true;
}
+ else {
+ DBG_LOG("RIGHTUP CS1237 Init OK...\r\n");
+ //DBG_LOG("set_reg = %02X\tread_reg = %02X\r\n",set_reg,read_reg);
+ CS1237Port = read_reg & 0x03;
+ InitFlag = true;
+ }
+ CS1237IntDisable();
}
-void CS1238DataLoopCollect(void)
+void RIGHTUP_CS1237DataLoopCollect(void)
{
static int32_t ad_array[PACK_NUM];
static uint8_t adcnt;
static uint8_t TimeOutmagcnt;
- switch(CS1238Var.Status) {
- case CS1238_STATUS_IDLE:{
+ switch(RIGHTUP_CS1237Var.Status) {
+ case RUCS1237_STATUS_IDLE:{
break;}
- case CS1238_STATUS_START:{
+ case RUCS1237_STATUS_START:{
memset(&ad_array, 0x00, sizeof(ad_array));
adcnt = 0;
TimeOutmagcnt = 0;
- memset(&CS1238Var, NULL, sizeof(CS1238Var));
+ memset(&RIGHTUP_CS1237Var, NULL, sizeof(RIGHTUP_CS1237Var));
if(BuildDelay == true)
{
BuildDelay = false;
- if(CS1238Hz == SPEED_SEL_10Hz){
- CS1238Var.CS1238Delay1mSCnt = tCon_10Hz;
+ if(CS1237Hz == SPEED_SEL_10Hz){
+ RIGHTUP_CS1237Var.CS1237Delay1mSCnt = tCon_10Hz;
}
- if(CS1238Hz == SPEED_SEL_40Hz){
- CS1238Var.CS1238Delay1mSCnt = tCon_40Hz;
+ if(CS1237Hz == SPEED_SEL_40Hz){
+ RIGHTUP_CS1237Var.CS1237Delay1mSCnt = tCon_40Hz;
}
- if(CS1238Hz == SPEED_SEL_640Hz){
- CS1238Var.CS1238Delay1mSCnt = tCon_640Hz;
+ if(CS1237Hz == SPEED_SEL_640Hz){
+ RIGHTUP_CS1237Var.CS1237Delay1mSCnt = tCon_640Hz;
}
- if(CS1238Hz == SPEED_SEL6_1280Hz){
- CS1238Var.CS1238Delay1mSCnt = tCon_1280Hz;
+ if(CS1237Hz == SPEED_SEL6_1280Hz){
+ RIGHTUP_CS1237Var.CS1237Delay1mSCnt = tCon_1280Hz;
}
- CS1238Var.Status = CS1238_STATUS_DELAY;
+ RIGHTUP_CS1237Var.Status = RUCS1237_STATUS_DELAY;
}
else
{
- CS1238Var.Status = CS1238_STATUS_READ;
+ RIGHTUP_CS1237Var.Status = RUCS1237_STATUS_READ;
}
break;}
- case CS1238_STATUS_DELAY:{
- if(CS1238Var.CS1238Delay1mSCnt <= 0){
- CS1238Var.Status = CS1238_STATUS_READ;
+ case RUCS1237_STATUS_DELAY:{
+ if(RIGHTUP_CS1237Var.CS1237Delay1mSCnt <= 0){
+ RIGHTUP_CS1237Var.Status = RUCS1237_STATUS_READ;
}
break;}
- case CS1238_STATUS_READ:{
- CS1238IrqFlag = false;
- CS1238Var.CS1238Delay1mSCnt = 100;
- CS1238Var.Status = CS1238_STATUS_WAIT_READ;
+ case RUCS1237_STATUS_READ:{
+ CS1237IrqFlag = false;
+ RIGHTUP_CS1237Var.CS1237Delay1mSCnt = 100;
+ RIGHTUP_CS1237Var.Status = RUCS1237_STATUS_WAIT_READ;
break;}
- case CS1238_STATUS_WAIT_READ:{
- if(CS1238Var.CS1238Delay1mSCnt <= 0){
- CS1238Var.Status = CS1238_STATUS_READ;
+ case RUCS1237_STATUS_WAIT_READ:{
+ if(RIGHTUP_CS1237Var.CS1237Delay1mSCnt <= 0){
+ RIGHTUP_CS1237Var.Status = RUCS1237_STATUS_READ;
TimeOutmagcnt++;
}
- if(CS1238IrqFlag == true){
- CS1238IrqFlag = false;
- ad_array[adcnt++] = Read_CS1238_Ad_Data();
- CS1238Var.Status = CS1238_STATUS_READ;
+ if(CS1237IrqFlag == true){
+ CS1237IrqFlag = false;
+ ad_array[adcnt++] = Read_CS1237_Ad_Data();
+ RIGHTUP_CS1237Var.Status = RUCS1237_STATUS_READ;
}
if(TimeOutmagcnt >= PACK_NUM){
TimeOutmagcnt = 0;
if(adcnt > 0){
- if(CS1238Port == CH_SEL_A){
- CS1238Var.Ain1_AD = IntFilter_32t(ad_array, adcnt, 4);
- CS1238Ain1DataProcessCallBack(CS1238Var.Ain1_AD);
+ if(CS1237Port == CH_SEL_A){
+ RIGHTUP_CS1237Var.AinA_AD = IntFilter_32t(ad_array, adcnt, FILTER_NUM);
+ RIGHTUP_CS1237AinADataProcessCallBack(RIGHTUP_CS1237Var.AinA_AD);
}
- if(CS1238Port == CH_SEL_B){
- CS1238Var.Ain2_AD = IntFilter_32t(ad_array, adcnt, 4);
- CS1238Ain2DataProcessCallBack(CS1238Var.Ain2_AD);
+ if(CS1237Port == CH_SEL_TEMP){
+ RIGHTUP_CS1237Var.Temp_AD = IntFilter_32t(ad_array, adcnt, FILTER_NUM);
+ //CS1237TempDataProcessCallBack(LEFTLOW_CS1237Var.Temp_AD);
}
- if(CS1238Port == CH_SEL_TEMP){
- CS1238Var.Temp_AD = IntFilter_32t(ad_array, adcnt, 4);
- CS1238TempDataProcessCallBack(CS1238Var.Temp_AD);
+ if(CS1237Port == CH_SEL_JUMP){
+ RIGHTUP_CS1237Var.Jump_AD = IntFilter_32t(ad_array, adcnt, FILTER_NUM);
+ //CS1237JumpDataProcessCallBack(LEFTLOW_CS1237Var.Jump_AD);
}
- if(CS1238Port == CH_SEL_JUMP){
- CS1238Var.Jump_AD = IntFilter_32t(ad_array, adcnt, 4);
- CS1238JumpDataProcessCallBack(CS1238Var.Jump_AD);
- }
- CS1238Var.Status = CS1238_STATUS_CH_SEL;
+ RIGHTUP_CS1237Var.Status = RUCS1237_STATUS_CH_SEL;
}
else{
- if(CS1238Port == CH_SEL_A){
- DBG_LOG("CS1238 CHA TimeOut...\r\n");
+ if(CS1237Port == CH_SEL_A){
+ DBG_LOG("RIGHTUP CS1237 CHA TimeOut...\r\n");
}
- if(CS1238Port == CH_SEL_B){
- DBG_LOG("CS1238 CHB TimeOut...\r\n");
+ if(CS1237Port == CH_SEL_TEMP){
+ DBG_LOG("RIGHTUP CS1237 Temp TimeOut...\r\n");
}
- if(CS1238Port == CH_SEL_TEMP){
- DBG_LOG("CS1238 Temp TimeOut...\r\n");
+ if(CS1237Port == CH_SEL_JUMP){
+ DBG_LOG("RIGHTUP CS1237 Jump TimeOut...\r\n");
}
- if(CS1238Port == CH_SEL_JUMP){
- DBG_LOG("CS1238 Jump TimeOut...\r\n");
- }
- CS1238Var.Status = CS1238_STATUS_CH_SEL;
+ RIGHTUP_CS1237Var.Status = RUCS1237_STATUS_CH_SEL;
}
}
if(adcnt >= PACK_NUM){
- if(CS1238Port == CH_SEL_A){
- CS1238Var.Ain1_AD = IntFilter_32t(ad_array, adcnt, 4);
- CS1238Ain1DataProcessCallBack(CS1238Var.Ain1_AD);
+ if(CS1237Port == CH_SEL_A){
+ RIGHTUP_CS1237Var.AinA_AD = IntFilter_32t(ad_array, adcnt, FILTER_NUM);
+ RIGHTUP_CS1237AinADataProcessCallBack(RIGHTUP_CS1237Var.AinA_AD);
}
- if(CS1238Port == CH_SEL_B){
- CS1238Var.Ain2_AD = IntFilter_32t(ad_array, adcnt, 4);
- CS1238Ain2DataProcessCallBack(CS1238Var.Ain2_AD);
+ if(CS1237Port == CH_SEL_TEMP){
+ RIGHTUP_CS1237Var.Temp_AD = IntFilter_32t(ad_array, adcnt, FILTER_NUM);
+ //CS1237TempDataProcessCallBack(LEFTLOW_CS1237Var.Temp_AD);
}
- if(CS1238Port == CH_SEL_TEMP){
- CS1238Var.Temp_AD = IntFilter_32t(ad_array, adcnt, 4);
- CS1238TempDataProcessCallBack(CS1238Var.Temp_AD);
+ if(CS1237Port == CH_SEL_JUMP){
+ RIGHTUP_CS1237Var.Jump_AD = IntFilter_32t(ad_array, adcnt, FILTER_NUM);
+ //CS1237JumpDataProcessCallBack(LEFTLOW_CS1237Var.Jump_AD);
}
- if(CS1238Port == CH_SEL_JUMP){
- CS1238Var.Jump_AD = IntFilter_32t(ad_array, adcnt, 4);
- CS1238JumpDataProcessCallBack(CS1238Var.Jump_AD);
- }
- CS1238Var.Status = CS1238_STATUS_CH_SEL;
+ RIGHTUP_CS1237Var.Status = RUCS1237_STATUS_CH_SEL;
}
break;}
- case CS1238_STATUS_CH_SEL:{
- CS1238Var.Status = CS1238_STATUS_STOP;
+ case RUCS1237_STATUS_CH_SEL:{
+ RIGHTUP_CS1237Var.Status = RUCS1237_STATUS_STOP;
BuildDelay = false;
uint8_t read_reg;
- if(CS1238Port == CH_SEL_A){
+ if(CS1237Port == CH_SEL_A){
#if(PORT_TEMP == 1)
- read_reg = Read_CS1238_Config();
- Set_CS1238_Config((read_reg & 0xFC) | CH_SEL_TEMP);
- CS1238Port = CH_SEL_TEMP;
+ read_reg = Read_CS1237_Config();
+ Set_CS1237_Config((read_reg & 0xFC) | CH_SEL_TEMP);
+ CS1237Port = CH_SEL_TEMP;
BuildDelay = true;
break;
#endif
#if(PORT_JUMP == 1)
- read_reg = Read_CS1238_Config();
- Set_CS1238_Config((read_reg & 0xFC) | CH_SEL_JUMP);
- CS1238Port = CH_SEL_JUMP;
+ read_reg = Read_CS1237_Config();
+ Set_CS1237_Config((read_reg & 0xFC) | CH_SEL_JUMP);
+ CS1237Port = CH_SEL_JUMP;
BuildDelay = true;
break;
#endif
}
- if(CS1238Port == CH_SEL_B){
-#if(PORT_TEMP == 1)
- read_reg = Read_CS1238_Config();
- Set_CS1238_Config((read_reg & 0xFC) | CH_SEL_TEMP);
- CS1238Port = CH_SEL_TEMP;
- BuildDelay = true;
- break;
-#endif
+ if(CS1237Port == CH_SEL_TEMP){
#if(PORT_JUMP == 1)
read_reg = Read_CS1238_Config();
Set_CS1238_Config((read_reg & 0xFC) | CH_SEL_JUMP);
@@ -408,77 +404,60 @@ void CS1238DataLoopCollect(void)
break;
#endif
#if(PORT_A == 1)
- read_reg = Read_CS1238_Config();
- Set_CS1238_Config((read_reg & 0xFC) | CH_SEL_A);
- CS1238Port = CH_SEL_A;
- BuildDelay = true;
- break;
-#endif
- }
-
- if(CS1238Port == CH_SEL_TEMP){
-#if(PORT_JUMP == 1)
- read_reg = Read_CS1238_Config();
- Set_CS1238_Config((read_reg & 0xFC) | CH_SEL_JUMP);
- CS1238Port = CH_SEL_JUMP;
- BuildDelay = true;
- break;
-#endif
-#if(PORT_A == 1)
- read_reg = Read_CS1238_Config();
- Set_CS1238_Config((read_reg & 0xFC) | CH_SEL_A);
- CS1238Port = CH_SEL_A;
+ read_reg = Read_CS1237_Config();
+ Set_CS1237_Config((read_reg & 0xFC) | CH_SEL_A);
+ CS1237Port = CH_SEL_A;
BuildDelay = true;
break;
#endif
}
- if(CS1238Port == CH_SEL_JUMP){
+ if(CS1237Port == CH_SEL_JUMP){
#if(PORT_A == 1)
- read_reg = Read_CS1238_Config();
- Set_CS1238_Config((read_reg & 0xFC) | CH_SEL_A);
- CS1238Port = CH_SEL_A;
+ read_reg = Read_CS1237_Config();
+ Set_CS1237_Config((read_reg & 0xFC) | CH_SEL_A);
+ CS1237Port = CH_SEL_A;
BuildDelay = true;
break;
#endif
#if(PORT_TEMP == 1)
- read_reg = Read_CS1238_Config();
- Set_CS1238_Config((read_reg & 0xFC) | CH_SEL_TEMP);
- CS1238Port = CH_SEL_TEMP;
+ read_reg = Read_CS1237_Config();
+ Set_CS1237_Config((read_reg & 0xFC) | CH_SEL_TEMP);
+ CS1237Port = CH_SEL_TEMP;
BuildDelay = true;
break;
#endif
}
break;}
- case CS1238_STATUS_STOP:{
- //CS1238Stop();
- //CS1238Var.Status = CS1238_STATUS_IDLE;
- CS1238Var.Status = CS1238_STATUS_START;//持续工作
+ case RUCS1237_STATUS_STOP:{
+ RIGHTUP_CS1237Stop();
+ RIGHTUP_CS1237Var.Status = RUCS1237_STATUS_IDLE;
+ //RIGHTUP_CS1237Var.Status = RUCS1237_STATUS_START;//持续工作
break;}
}
}
-void CS12381mSRoutine(void)
+void RIGHTUP_CS12371mSRoutine(void)
{
- if(CS1238Var.CS1238Delay1mSCnt > 0)
- CS1238Var.CS1238Delay1mSCnt--;
+ if(RIGHTUP_CS1237Var.CS1237Delay1mSCnt > 0)
+ RIGHTUP_CS1237Var.CS1237Delay1mSCnt--;
}
-void CS1238Start(void)
+void RIGHTUP_CS1237Start(void)
{
- CS1238_WakeUp();
- CS1238_1MS(2);
+ CS1237_WakeUp();
+ CS1237_1MS(2);
BuildDelay = true;
- CS1238IntEnable();
+ CS1237IntEnable();
if(!InitFlag){
- CS1238_Init();
+ RIGHTUP_CS1237_Init();
return;
}
- CS1238Var.Status = CS1238_STATUS_START;
+ RIGHTUP_CS1237Var.Status = RUCS1237_STATUS_START;
}
-void CS1238Stop(void)
+void RIGHTUP_CS1237Stop(void)
{
- CS1238IntDisable();
- CS1238_Sleep();
+ CS1237IntDisable();
+ //CS1237_Sleep();
}
diff --git a/Project/HC32F460/source/Module/CS1237/CS1237_RIGHTUP.h b/Project/HC32F460/source/Module/CS1237/CS1237_RIGHTUP.h
index 354d39d..4a91bc1 100644
--- a/Project/HC32F460/source/Module/CS1237/CS1237_RIGHTUP.h
+++ b/Project/HC32F460/source/Module/CS1237/CS1237_RIGHTUP.h
@@ -1,7 +1,7 @@
#include "bsp.h"
-#ifndef _CS1238_H_
-#define _CS1238_H_
+#ifndef _CS1237_RIGHTUP_H_
+#define _CS1237_RIGHTUP_H_
#define READ_CONFIG_CMD 0x56
#define WRITE_CONFIG_CMD 0x65
@@ -22,21 +22,11 @@
#define PGA_SEL_128 0x0C
#define CH_SEL_A 0x00
-#define CH_SEL_B 0x01
+//#define CH_SEL_B 0x01
#define CH_SEL_TEMP 0x02
#define CH_SEL_JUMP 0x03
-#define CS1238_DOUT_OUT() SetBit(((uint32_t)&M0P_GPIO->PADIR + CS1238_DOUT_PORTx), CS1238_DOUT_PINx, 0)
-#define CS1238_DOUT_IN() SetBit(((uint32_t)&M0P_GPIO->PADIR + CS1238_DOUT_PORTx), CS1238_DOUT_PINx, 1)
-#define CS1238_DOUT_H() SET_CS1238_DOUT()
-#define CS1238_DOUT_L() CLR_CS1238_DOUT()
-#define CS1238_SCLK_H() SET_CS1238_SCLK()
-#define CS1238_SCLK_L() CLR_CS1238_SCLK()
-
-#define CS1238_1US(x) delay_us(x) //1usʱ
-#define CS1238_100NS(x) delay_ns(x) //100nsʱ
-#define CS1238_1MS(x) delay_ms(x) //1msʱ
/*Definition of conversion time corresponding to repeatability setting*/
/*
@@ -51,40 +41,39 @@
#define tCon_1280Hz 4 /* ms. */
#define PORT_A 1 //ɼͨA
-#define PORT_B 1 //ɼͨB
-#define PORT_TEMP 0 //ɼ¶
-#define PORT_JUMP 0 //ڶ̲ɼ
-#define PACK_NUM 10 //һβɼݰ
+//#define PORT_B 1 //ɼͨB
+#define PORT_TEMP 0 //ɼ¶
+#define PORT_JUMP 0 //ڶ̲ɼ
+#define PACK_NUM 1 //һβɼݰ
+#define FILTER_NUM 0 //˲
typedef enum{
- CS1238_STATUS_IDLE,
- CS1238_STATUS_START,
- CS1238_STATUS_DELAY,
- CS1238_STATUS_READ,
- CS1238_STATUS_WAIT_READ,
- CS1238_STATUS_CH_SEL,
- CS1238_STATUS_STOP,
-}CS1238Status_m;
+ RUCS1237_STATUS_IDLE,
+ RUCS1237_STATUS_START,
+ RUCS1237_STATUS_DELAY,
+ RUCS1237_STATUS_READ,
+ RUCS1237_STATUS_WAIT_READ,
+ RUCS1237_STATUS_CH_SEL,
+ RUCS1237_STATUS_STOP,
+}RightUpCS1237Status_m;
typedef struct{
- CS1238Status_m Status;
- uint32_t CS1238Delay1mSCnt;
+ RightUpCS1237Status_m Status;
+ uint32_t CS1237Delay1mSCnt;
- int32_t Ain1_AD;//AIN1ad
- int32_t Ain2_AD;//AIN2ad
+ int32_t AinA_AD;//AINAad
+ //int32_t AinB_AD;//AINBad
int32_t Temp_AD;//¶ad
int32_t Jump_AD;//ڶad
}
-CS1238Var_t;
-extern CS1238Var_t CS1238Var;
+RIGHTUP_CS1237Var_t;
-void CS1238_Init(void);
-void CS1238_IrqCallBack(void);
-void CS1238DataLoopCollect(void);
-void CS1238LoopHandler(void);
-void CS12381mSRoutine(void);
-void CS1238Start(void);
-void CS1238Stop(void);
+void RIGHTUP_CS1237_Init(void);
+void RIGHTUP_CS1237_IrqCallBack(void);
+void RIGHTUP_CS1237DataLoopCollect(void);
+void RIGHTUP_CS12371mSRoutine(void);
+void RIGHTUP_CS1237Start(void);
+void RIGHTUP_CS1237Stop(void);
#endif
diff --git a/Project/HC32F460/source/User/Inc/bsp.h b/Project/HC32F460/source/User/Inc/bsp.h
index b33b57b..30818ae 100644
--- a/Project/HC32F460/source/User/Inc/bsp.h
+++ b/Project/HC32F460/source/User/Inc/bsp.h
@@ -11,10 +11,10 @@
/*ģر*/
#define USE_DEBUG 1 //DEBUGأ0رգ1
-#define USE_VBAT_AD 0 //﮵صѹADȡѡ0رգ1
+#define USE_AD 0 //ADȡѡ0رգ1
#define USE_WDT 0 //Źѡ0رգ1
#define USE_EXFALSE 0 //ⲿFALSE洢ѡ0رգ1
-#define USE_RTC 1 //RTCʱӿأ0رգ1
+#define USE_RTC 0 //RTCʱӿأ0رգ1
#define USE_LPTIM0 0 //LPTIM0أ0رգ1
#define USE_DMA 0 //DMAأ0رգ1
#define USE_RS485 0 //RS485أ0رգ1
@@ -27,7 +27,7 @@
#define USE_CS1237_LEFTUP 1 //CS1237أ0رգ1
#define USE_CS1237_LEFTLOW 1 //CS1237أ0رգ1
#define USE_CS1237_RIGHTUP 1 //CS1237أ0رգ1
-#define USE_CS1237_RIGHRLOW 1 //CS1237أ0رգ1
+#define USE_CS1237_RIGHTLOW 1 //CS1237أ0رգ1
//<<---------------------------- MCU -------------------------------->>
//< DEBUG
@@ -46,6 +46,8 @@
#define DBG_FCG1_PERIPH (PWC_FCG1_PERIPH_USART1)
#define DBG_RXPIN_EXIT_CH (ExtiCh13)
#define DBG_RXPIN_EXIT_SRC (INT_PORT_EIRQ13)
+#define DBG_RX_IRQn (Int000_IRQn)
+#define DBG_ER_IRQn (Int001_IRQn)
#endif
// SPI3
@@ -88,17 +90,17 @@
#define RS485_USART_TX_PORT (PortA)
#define RS485_USART_TX_PIN (Pin12)
#define RS485_USART_RX_FUNC (Func_Usart1_Rx)
-#define RS485_USART_TX_FUNC (Func_Usart1_Tx)
-#define RS485_USART_RI_NUM (INT_USART1_RI)
-#define RS485_USART_EI_NUM (INT_USART1_EI)
-#define RS485_USART_TI_NUM (INT_USART1_TI)
-#define RS485_USART_TCI_NUM (INT_USART1_TCI)
+#define RS485_USART_TX_FUNC (Func_Usart1_Tx)
+#define RS485_USART_RI_NUM (INT_USART1_RI)
+#define RS485_USART_EI_NUM (INT_USART1_EI)
+#define RS485_USART_TI_NUM (INT_USART1_TI)
+#define RS485_USART_TCI_NUM (INT_USART1_TCI)
#define RS485_FCG1_PERIPH (PWC_FCG1_PERIPH_USART1)
#define RS485_RXPIN_EXIT_CH (ExtiCh14)
#define RS485_RXPIN_EXIT_SRC (INT_PORT_EIRQ14)
-#define RS485_CTRL_PORT (PortC)
-#define RS485_CTRL_PIN (Pin13)
+#define RS485_CTRL_PORT (PortC)
+#define RS485_CTRL_PIN (Pin13)
#define RS485_TX() PORT_SetBits(RS485_CTRL_PORT, RS485_CTRL_PIN)
#define RS485_RX() PORT_ResetBits(RS485_CTRL_PORT, RS485_CTRL_PIN)
#endif
@@ -107,59 +109,68 @@
#define RTC_IRQn Int001_IRQn
#endif
//<<----------------------------- CS1237 ------------------------------->>
-//< LEFTUP CS1237
+//< CS1237
#if(USE_CS1237_LEFTUP == 1)
+#define LEFTUP_CS1237_IRQn (Int001_IRQn)
#define LEFTUP_CS1237_DOUT_PORTx (PortB)
-#define LEFTUP_CS1237_DOUT_PINx (Pin00)
+#define LEFTUP_CS1237_DOUT_PINx (Pin10)
#define SET_LEFTUP_CS1237_DOUT() PORT_SetBits(LEFTUP_CS1237_DOUT_PORTx, LEFTUP_CS1237_DOUT_PINx)//
#define CLR_LEFTUP_CS1237_DOUT() PORT_ResetBits(LEFTUP_CS1237_DOUT_PORTx, LEFTUP_CS1237_DOUT_PINx)//
-#define GET_LEFTUP_CS1237_DOUT() Gpio_GetInputIO(LEFTUP_CS1237_DOUT_PORTx, LEFTUP_CS1237_DOUT_PINx)
+#define GET_LEFTUP_CS1237_DOUT() PORT_GetBit(LEFTUP_CS1237_DOUT_PORTx, LEFTUP_CS1237_DOUT_PINx)
#define LEFTUP_CS1237_SCLK_PORTx (PortB)
-#define LEFTUP_CS1237_SCLK_PINx (Pin01)
+#define LEFTUP_CS1237_SCLK_PINx (Pin02)
#define SET_LEFTUP_CS1237_SCLK() PORT_SetBits(LEFTUP_CS1237_SCLK_PORTx, LEFTUP_CS1237_SCLK_PINx)//
#define CLR_LEFTUP_CS1237_SCLK() PORT_ResetBits(LEFTUP_CS1237_SCLK_PORTx, LEFTUP_CS1237_SCLK_PINx)//
#endif
-//< LEFTLOW CS1237
+//< CS1237
#if(USE_CS1237_LEFTLOW == 1)
+#define LEFTLOW_CS1237_IRQn (Int002_IRQn)
#define LEFTLOW_CS1237_DOUT_PORTx (PortB)
-#define LEFTLOW_CS1237_DOUT_PINx (Pin02)
+#define LEFTLOW_CS1237_DOUT_PINx (Pin01)
#define SET_LEFTLOW_CS1237_DOUT() PORT_SetBits(LEFTLOW_CS1237_DOUT_PORTx, LEFTLOW_CS1237_DOUT_PINx)//
#define CLR_LEFTLOW_CS1237_DOUT() PORT_ResetBits(LEFTLOW_CS1237_DOUT_PORTx, LEFTLOW_CS1237_DOUT_PINx)//
-#define GET_LEFTLOW_CS1237_DOUT() Gpio_GetInputIO(LEFTLOW_CS1237_DOUT_PORTx, LEFTLOW_CS1237_DOUT_PINx)
+#define GET_LEFTLOW_CS1237_DOUT() PORT_GetBit(LEFTLOW_CS1237_DOUT_PORTx, LEFTLOW_CS1237_DOUT_PINx)
#define LEFTLOW_CS1237_SCLK_PORTx (PortB)
-#define LEFTLOW_CS1237_SCLK_PINx (Pin10)
+#define LEFTLOW_CS1237_SCLK_PINx (Pin00)
#define SET_LEFTLOW_CS1237_SCLK() PORT_SetBits(LEFTLOW_CS1237_SCLK_PORTx, LEFTLOW_CS1237_SCLK_PINx)//
#define CLR_LEFTLOW_CS1237_SCLK() PORT_ResetBits(LEFTLOW_CS1237_SCLK_PORTx, LEFTLOW_CS1237_SCLK_PINx)//
#endif
-//< RIGHTUP CS1237
+//< CS1237
#if(USE_CS1237_RIGHTUP == 1)
+#define RIGHTUP_CS1237_IRQn (Int003_IRQn)
#define RIGHTUP_CS1237_DOUT_PORTx (PortA)
-#define RIGHTUP_CS1237_DOUT_PINx (Pin06)
+#define RIGHTUP_CS1237_DOUT_PINx (Pin04)
#define SET_RIGHTUP_CS1237_DOUT() PORT_SetBits(RIGHTUP_CS1237_DOUT_PORTx, RIGHTUP_CS1237_DOUT_PINx)//
#define CLR_RIGHTUP_CS1237_DOUT() PORT_ResetBits(RIGHTUP_CS1237_DOUT_PORTx, RIGHTUP_CS1237_DOUT_PINx)//
-#define GET_RIGHTUP_CS1237_DOUT() Gpio_GetInputIO(RIGHTUP_CS1237_DOUT_PORTx, RIGHTUP_CS1237_DOUT_PINx)
+#define GET_RIGHTUP_CS1237_DOUT() PORT_GetBit(RIGHTUP_CS1237_DOUT_PORTx, RIGHTUP_CS1237_DOUT_PINx)
#define RIGHTUP_CS1237_SCLK_PORTx (PortA)
-#define RIGHTUP_CS1237_SCLK_PINx (Pin07)
+#define RIGHTUP_CS1237_SCLK_PINx (Pin05)
#define SET_RIGHTUP_CS1237_SCLK() PORT_SetBits(RIGHTUP_CS1237_SCLK_PORTx, RIGHTUP_CS1237_SCLK_PINx)//
#define CLR_RIGHTUP_CS1237_SCLK() PORT_ResetBits(RIGHTUP_CS1237_SCLK_PORTx, RIGHTUP_CS1237_SCLK_PINx)//
#endif
-//< RIGHRLOW CS1237
-#if(USE_CS1237_RIGHRLOW == 1)
-#define RIGHRLOW_CS1237_DOUT_PORTx (PortA)
-#define RIGHRLOW_CS1237_DOUT_PINx (Pin04)
-#define SET_RIGHRLOW_CS1237_DOUT() PORT_SetBits(RIGHRLOW_CS1237_DOUT_PORTx, RIGHRLOW_CS1237_DOUT_PINx)//
-#define CLR_RIGHRLOW_CS1237_DOUT() PORT_ResetBits(RIGHRLOW_CS1237_DOUT_PORTx, RIGHRLOW_CS1237_DOUT_PINx)//
-#define GET_RIGHRLOW_CS1237_DOUT() Gpio_GetInputIO(RIGHRLOW_CS1237_DOUT_PORTx, RIGHRLOW_CS1237_DOUT_PINx)
+//< CS1237
+#if(USE_CS1237_RIGHTLOW == 1)
+#define RIGHTLOW_CS1237_IRQn (Int004_IRQn)
+#define RIGHTLOW_CS1237_DOUT_PORTx (PortA)
+#define RIGHTLOW_CS1237_DOUT_PINx (Pin06)
+#define SET_RIGHTLOW_CS1237_DOUT() PORT_SetBits(RIGHTLOW_CS1237_DOUT_PORTx, RIGHTLOW_CS1237_DOUT_PINx)//
+#define CLR_RIGHTLOW_CS1237_DOUT() PORT_ResetBits(RIGHTLOW_CS1237_DOUT_PORTx, RIGHTLOW_CS1237_DOUT_PINx)//
+#define GET_RIGHTLOW_CS1237_DOUT() PORT_GetBit(RIGHTLOW_CS1237_DOUT_PORTx, RIGHTLOW_CS1237_DOUT_PINx)
-#define RIGHRLOW_CS1237_SCLK_PORTx (PortA)
-#define RIGHRLOW_CS1237_SCLK_PINx (Pin05)
-#define SET_RIGHRLOW_CS1237_SCLK() PORT_SetBits(RIGHRLOW_CS1237_SCLK_PORTx, RIGHRLOW_CS1237_SCLK_PINx)//
-#define CLR_RIGHRLOW_CS1237_SCLK() PORT_ResetBits(RIGHRLOW_CS1237_SCLK_PORTx, RIGHRLOW_CS1237_SCLK_PINx)//
+#define RIGHTLOW_CS1237_SCLK_PORTx (PortA)
+#define RIGHTLOW_CS1237_SCLK_PINx (Pin07)
+#define SET_RIGHTLOW_CS1237_SCLK() PORT_SetBits(RIGHTLOW_CS1237_SCLK_PORTx, RIGHTLOW_CS1237_SCLK_PINx)//
+#define CLR_RIGHTLOW_CS1237_SCLK() PORT_ResetBits(RIGHTLOW_CS1237_SCLK_PORTx, RIGHTLOW_CS1237_SCLK_PINx)//
#endif
+typedef struct {
+
+ uint32_t FactoryFlag;//־λ
+}AppPara_T, *pAppPara;
+
void BSP_Init(void);
uint8_t DbgUartRec(void);
@@ -206,4 +217,18 @@ void TimeGet(struct tm *cTime);
int TimeTs(void);
void TimeShow(uint32_t dwStamp);
void TimeSync(time_t ts) ;
+
+void delay_5ns(uint32_t ns);
+
+void ExtInt10IntEnable(void);
+void ExtInt10IntDisable(void);
+void ExtInt01IntEnable(void);
+void ExtInt01IntDisable(void);
+void ExtInt04IntEnable(void);
+void ExtInt04IntDisable(void);
+void ExtInt06IntEnable(void);
+void ExtInt06IntDisable(void);
#endif
+
+
+
diff --git a/Project/HC32F460/source/User/Inc/main.h b/Project/HC32F460/source/User/Inc/main.h
index 808f878..cb331f2 100644
--- a/Project/HC32F460/source/User/Inc/main.h
+++ b/Project/HC32F460/source/User/Inc/main.h
@@ -1,5 +1,6 @@
#ifndef __MAIN__H
#define __MAIN__H
+#include
#include "bsp.h"
@@ -7,18 +8,87 @@
#define SDCARD_BLOCK_MAX (10000)
+#define OSC_CNT 40
+#define SLOPE_CNT 30
+
+typedef struct{
+ int32_t Slope_VPT;
+
+ int32_t LeftUpVPT;//豸ֵ
+ int32_t LeftLowVPT;//豸ֵ
+ int32_t RightUpVPT;//豸ֵ
+ int32_t RightLowVPT;//豸ֵ
+
+ int32_t LeftUp_Org_AdZero;//豸ԭʼAD
+ int32_t LeftLow_Org_AdZero;//豸ԭʼAD
+ int32_t RightUp_Org_AdZero;//豸ԭʼAD
+ int32_t RightLow_Org_AdZero;//豸ԭʼAD
+}ADTrack_t;
+
+/*ݶȡ״̬*/
+typedef enum {
+ READ_STATUS_IDLE,
+ READ_STATUS_START,
+ READ_STATUS_LEFTUP,
+ READ_STATUS_WAIT_LEFTUP,
+ READ_STATUS_LEFTLOW,
+ READ_STATUS_WAIT_LEFTLOW,
+ READ_STATUS_RIGHTUP,
+ READ_STATUS_WAIT_RIGHTUP,
+ READ_STATUS_RIGHTLOW,
+ READ_STATUS_WAIT_RIGHTLOW,
+ READ_STATUS_SUPPORT_CONT
+}ReadStatus_m;
+
+/*״̬*/
+typedef enum {
+ APP_STATUS_IDLE,
+ APP_STATUS_ON,
+ APP_STATUS_OFF,
+ APP_STATUS_WAIT,
+}AppStatus_m;
+
+typedef struct{
+ __IO uint16_t rPayLen;
+ __IO bool HeaderFrame;
+ __IO uint16_t RxLen;
+ uint8_t RxBuff[10];
+}Uart1Rx_t;
typedef struct {
- uint16_t Acc[3];
- uint16_t SensorValue[4];
-}SendData_t, *SendData;
+ AppStatus_m Status;//״̬
+ ReadStatus_m RStatus;
+ AppPara_T Para;
+ Uart1Rx_t RxUart1Data;
+ ADTrack_t ADTrack;
+ uint32_t TD1mSDelayCnt;
+ uint32_t Read1mSDelayCnt;
+ uint32_t Uart1Delay1mSCnt;
+ uint32_t StopCollDelay1mSCnt;
+ uint32_t EvenRunDelay1mSCnt;
+ uint8_t FeedDogDlyCnt;
+
+ bool UpFlag;//־λ
+ bool DownFlag;//½־λ
+ bool StopFlag;//ֹͣ־λ
+ bool EvenRunning;//ƽб־λ
-typedef struct {
- uint16_t ADValue[4];
- uint16_t Index;
-}SaveData_t, *SaveData;
-
+ bool LeftUpCS1237ReadEndFlag;
+ bool LeftLowCS1237ReadEndFlag;
+ bool RightUpCS1237ReadEndFlag;
+ bool RightLowCS1237ReadEndFlag;
+ int32_t LeftUpCS1237_TrendArray[OSC_CNT];
+ int32_t LeftLowCS1237_TrendArray[OSC_CNT];
+ int32_t RightUpCS1237_TrendArray[OSC_CNT];
+ int32_t RightLowCS1237_TrendArray[OSC_CNT];
+
+ int32_t LeftUpCS1237_SlopeArray[SLOPE_CNT];
+ int32_t LeftLowCS1237_SlopeArray[SLOPE_CNT];
+ int32_t RightUpCS1237_SlopeArray[SLOPE_CNT];
+ int32_t RightLowCS1237_SlopeArray[SLOPE_CNT];
+}AppDetect_t;
+extern AppDetect_t App;
#endif
diff --git a/Project/HC32F460/source/User/Src/Algorithm.c b/Project/HC32F460/source/User/Src/Algorithm.c
index 9c4a583..fd98f88 100644
--- a/Project/HC32F460/source/User/Src/Algorithm.c
+++ b/Project/HC32F460/source/User/Src/Algorithm.c
@@ -746,6 +746,38 @@ bool isAllZero(uint8_t *arr, int size)
return true; // ԪضΪ0true
}
-
+/*****************************************************************************************
+* : HexToAscii
+* : 16תASCII
+* : HexData16
+ ASCDataASCII
+ sLenݳ
+* ֵ: truefalse
+*****************************************************************************************/
+void HexToAscii(uint8_t *HexData, char *ASCData, uint8_t sLen)
+{
+ uint8_t temp;
+
+ for(int i = 0; i < sLen; i++) {
+ temp = (HexData[i] >> 4) & 0x0f;
+ if(temp < 10)
+ temp += '0';
+ else
+ temp = (temp - 10) + 'A';
+
+ ASCData[i * 2] = temp;
+
+ temp = HexData[i] & 0x0f;
+ if(temp < 10)
+ temp += '0';
+ else
+ temp = (temp - 10) + 'A';
+
+ ASCData[i * 2 + 1] = temp;
+ }
+ ASCData[sLen * 2] = '\r';
+ ASCData[sLen * 2 + 1] = '\n';
+ ASCData[sLen * 2 + 2] = 0;
+}
diff --git a/Project/HC32F460/source/User/Src/bsp.c b/Project/HC32F460/source/User/Src/bsp.c
index e2dcc3b..3673cbb 100644
--- a/Project/HC32F460/source/User/Src/bsp.c
+++ b/Project/HC32F460/source/User/Src/bsp.c
@@ -3,23 +3,21 @@
#include "Debug.h"
#include "hc32f460_efm.h"
-
+#include "CS1237_LEFTUP.h"
+#include "CS1237_LEFTLOW.h"
+#include "CS1237_RIGHTUP.h"
+#include "CS1237_RIGHTLOW.h"
#define SPI_MASTER_MODE
#define SPI3_MASTER_MODE
-
#define FLASH_WRITE_ADDR (0x0003C000u)
static void SystemClockConfig(void);
uint16_t m_au16Adc1SaValue[4];
-
-
-
-
void FlashWrite(uint32_t *wData, uint32_t wLen)
{
EFM_Unlock();
@@ -85,9 +83,9 @@ static void SystemClockConfig(void)
/* Config Xtal and Enable Xtal */
stcXtalCfg.enMode = ClkXtalModeOsc;
stcXtalCfg.enDrv = ClkXtalLowDrv;
- stcXtalCfg.enFastStartup = Enable;
+ stcXtalCfg.enFastStartup = Disable;
CLK_XtalConfig(&stcXtalCfg);
- CLK_XtalCmd(Enable);
+ CLK_XtalCmd(Disable);
/* Config Hrc and enable HRC */
CLK_HrcTrim(SystemCoreClock);
@@ -104,13 +102,13 @@ static void SystemClockConfig(void)
EFM_SetLatency(EFM_LATENCY_5);
EFM_Lock();
- /* MPLL config (XTAL / pllmDiv * plln / PllpDiv = 200M). */
+ /* MPLL config (HRC / pllmDiv * plln / PllpDiv = 200M). */
stcMpllCfg.pllmDiv = 1ul;
- stcMpllCfg.plln = 50ul;
+ stcMpllCfg.plln = 25ul;
stcMpllCfg.PllpDiv = 2ul;
stcMpllCfg.PllqDiv = 2ul;
stcMpllCfg.PllrDiv = 2ul;
- CLK_SetPllSource(ClkPllSrcXTAL);
+ CLK_SetPllSource(ClkPllSrcHRC);
CLK_MpllConfig(&stcMpllCfg);
/* Enable MPLL. */
@@ -128,14 +126,14 @@ static void SystemClockConfig(void)
void FeedDog(void)
{
-#if (USE_DEBUG == 1)
+#if (USE_WDT == 1)
SWDT_RefreshCounter();
#endif
}
/*****************************************************************************************
* : Xtal32_ClockConfig
-* : ϵͳʱ
+* : ⲿʱ
* :
* ֵ:
*****************************************************************************************/
@@ -158,7 +156,14 @@ static void Xtal32_ClockConfig(void)
/* wait for xtal32 running */
Ddl_Delay1ms(100u);
}
-
+void delay_5ns(uint32_t ns)
+{
+ for(uint32_t i = 0; i < ns; i++)
+ {
+ __NOP();
+ }
+}
+#if(USE_RS485 == 1)
/*****************************************************************************************
* : RS485Uart_Config
* : RS485ڳʼ
@@ -244,7 +249,6 @@ static void RS485Uart_Config(uint32_t BaudRate)
USART_FuncCmd(RS485_USART_CH, UsartRxInt, Enable);
}
-
void RS485UartSend(uint8_t *sData, uint16_t sLen)
{
RS485_TX();
@@ -297,7 +301,9 @@ static void RS485RxWakeupInit(void)
NVIC_EnableIRQ(stcIrqRegiConf.enIRQn); /* Enable NVIC */
enIntWakeupEnable(Extint2WU);
}
+#endif
+#if(USE_DEBUG == 1)
static void DbgUart_Config(uint32_t BaudRate)
{
stc_usart_uart_init_t stcInitCfg;
@@ -335,7 +341,7 @@ static void DbgUart_Config(uint32_t BaudRate)
Error_Handler();
}
- stcIrqRegiCfg.enIRQn = DBGUART_IRQn;
+ stcIrqRegiCfg.enIRQn = DBG_RX_IRQn;
stcIrqRegiCfg.pfnCallback = &DbgUsartRxIrqCallback;
stcIrqRegiCfg.enIntSrc = DBG_USART_RI_NUM;
enIrqRegistration(&stcIrqRegiCfg);
@@ -343,9 +349,8 @@ static void DbgUart_Config(uint32_t BaudRate)
NVIC_ClearPendingIRQ(stcIrqRegiCfg.enIRQn);
NVIC_EnableIRQ(stcIrqRegiCfg.enIRQn);
-
/* Set USART RX error IRQ */
- stcIrqRegiCfg.enIRQn = DBGUART_EI_IRQn;
+ stcIrqRegiCfg.enIRQn = DBG_ER_IRQn;
stcIrqRegiCfg.pfnCallback = &DBGUsartErrIrqCallback;
stcIrqRegiCfg.enIntSrc = DBG_USART_EI_NUM;
enIrqRegistration(&stcIrqRegiCfg);
@@ -414,7 +419,7 @@ static void DBGRxWakeupInit(void)
stcExtiConfig.enExtiLvl = ExIntRisingEdge;
EXINT_Init(&stcExtiConfig);
stcIrqRegiConf.enIntSrc = DBG_RXPIN_EXIT_SRC; /* Select External Int Ch.1 */
- stcIrqRegiConf.enIRQn = DBG_RXPIN_IRQn; /* Register External Int to Vect.No.000 */
+ stcIrqRegiConf.enIRQn = DBG_RX_IRQn; /* Register External Int to Vect.No.000 */
stcIrqRegiConf.pfnCallback = &DBG_RxPinIntCallBack; /* Callback function */
enIrqRegistration(&stcIrqRegiConf); /* Registration IRQ */
NVIC_ClearPendingIRQ(stcIrqRegiConf.enIRQn); /* Clear pending */
@@ -422,36 +427,314 @@ static void DBGRxWakeupInit(void)
NVIC_EnableIRQ(stcIrqRegiConf.enIRQn); /* Enable NVIC */
enIntWakeupEnable(Extint2WU);
}
-
+#endif
static void GPIO_Config(void)
{
stc_port_init_t stcPortInit;
- stc_port_pub_set_t stcPortPub;
-// stc_exint_config_t stcExtiConfig;
-// stc_irq_regi_conf_t stcIrqRegiConf;
-
- PORT_DebugPortSetting(TDO_SWO, Disable);
- PORT_DebugPortSetting(TDI, Disable);
- PORT_DebugPortSetting(TRST, Disable);
MEM_ZERO_STRUCT(stcPortInit);
- MEM_ZERO_STRUCT(stcPortPub);
-
- stcPortPub.enReadWait = WaitCycle3;
- PORT_PubSetting(&stcPortPub);
+ /********************************** GPIO ****************************************/
stcPortInit.enPinMode = Pin_Mode_Out;
stcPortInit.enPinOType = Pin_OType_Cmos;
stcPortInit.enPinDrv = Pin_Drv_H;
- stcPortInit.enPullUp = Disable;
-
- PORT_Init(RS485_CTRL_PORT, RS485_CTRL_PIN, &stcPortInit);
- RS485_RX();
-
- PORT_Init(LED_Blue_PORT, LED_Blue_PIN, &stcPortInit);
- PORT_Init(LED_Green_PORT, LED_Green_PIN, &stcPortInit);
-}
+ stcPortInit.enPullUp = Disable;//
+ PORT_Init(LEFTUP_CS1237_SCLK_PORTx, LEFTUP_CS1237_SCLK_PINx, &stcPortInit);
+ PORT_Init(LEFTLOW_CS1237_SCLK_PORTx, LEFTLOW_CS1237_SCLK_PINx, &stcPortInit);
+ PORT_Init(RIGHTUP_CS1237_SCLK_PORTx, RIGHTUP_CS1237_SCLK_PINx, &stcPortInit);
+ PORT_Init(RIGHTLOW_CS1237_SCLK_PORTx, RIGHTLOW_CS1237_SCLK_PINx, &stcPortInit);
+
+}
+/*********************************ϴ
+ *******************************************************************************
+ ** \brief ExtInt00 callback function
+ **
+ ** \param None
+ **
+ ** \retval None
+ **
+ ******************************************************************************/
+void ExtInt10_Callback(void)
+{
+ if (Set == EXINT_IrqFlgGet(ExtiCh10))
+ {
+ LEFTUP_CS1237_IrqCallBack();
+ EXINT_IrqFlgClr(ExtiCh10);
+ }
+}
+void ExtiCh10_Init(void)
+{
+ stc_exint_config_t stcExtiConfig;
+ stc_irq_regi_conf_t stcIrqRegiConf;
+ stc_port_init_t stcPortInit;
+
+ /* configuration structure initialization */
+ MEM_ZERO_STRUCT(stcExtiConfig);
+ MEM_ZERO_STRUCT(stcIrqRegiConf);
+ MEM_ZERO_STRUCT(stcPortInit);
+
+ /**************************************************************************/
+ /* External Int Ch.10 */
+ /**************************************************************************/
+ stcExtiConfig.enExitCh = ExtiCh10;
+
+ /* Filter setting */
+ stcExtiConfig.enFilterEn = Enable;
+ stcExtiConfig.enFltClk = Pclk3Div8;
+ stcExtiConfig.enExtiLvl = ExIntFallingEdge;
+ EXINT_Init(&stcExtiConfig);
+
+ /* Set External Int */
+ MEM_ZERO_STRUCT(stcPortInit);
+ stcPortInit.enExInt = Enable;
+ PORT_Init(LEFTUP_CS1237_DOUT_PORTx, LEFTUP_CS1237_DOUT_PINx, &stcPortInit);
+
+ /* Select External Int Ch.10 */
+ stcIrqRegiConf.enIntSrc = INT_PORT_EIRQ10;
+
+ /* Register External Int to Vect.No.004 */
+ stcIrqRegiConf.enIRQn = LEFTUP_CS1237_IRQn;
+
+ /* Callback function */
+ stcIrqRegiConf.pfnCallback = &ExtInt10_Callback;
+
+ /* Registration IRQ */
+ enIrqRegistration(&stcIrqRegiConf);
+
+ /* Clear pending */
+ NVIC_ClearPendingIRQ(stcIrqRegiConf.enIRQn);
+
+ /* Set priority */
+ NVIC_SetPriority(stcIrqRegiConf.enIRQn, DDL_IRQ_PRIORITY_DEFAULT);
+}
+void ExtInt10IntEnable(void)
+{
+ /* Enable NVIC */
+ NVIC_EnableIRQ(LEFTUP_CS1237_IRQn);
+}
+void ExtInt10IntDisable(void)
+{
+ /* Disable NVIC */
+ NVIC_DisableIRQ(LEFTUP_CS1237_IRQn);
+}
+/*******************************´
+ *******************************************************************************
+ ** \brief ExtInt01 callback function
+ **
+ ** \param None
+ **
+ ** \retval None
+ **
+ ******************************************************************************/
+void ExtInt01_Callback(void)
+{
+ if (Set == EXINT_IrqFlgGet(ExtiCh01))
+ {
+ LEFTLOW_CS1237_IrqCallBack();
+ EXINT_IrqFlgClr(ExtiCh01);
+ }
+}
+void ExtiCh01_Init(void)
+{
+ stc_exint_config_t stcExtiConfig;
+ stc_irq_regi_conf_t stcIrqRegiConf;
+ stc_port_init_t stcPortInit;
+
+ /* configuration structure initialization */
+ MEM_ZERO_STRUCT(stcExtiConfig);
+ MEM_ZERO_STRUCT(stcIrqRegiConf);
+ MEM_ZERO_STRUCT(stcPortInit);
+
+ /**************************************************************************/
+ /* External Int Ch.1 */
+ /**************************************************************************/
+ stcExtiConfig.enExitCh = ExtiCh01;
+
+ /* Filter setting */
+ stcExtiConfig.enFilterEn = Enable;
+ stcExtiConfig.enFltClk = Pclk3Div8;
+ stcExtiConfig.enExtiLvl = ExIntFallingEdge;
+ EXINT_Init(&stcExtiConfig);
+
+ /* Set External Int */
+ MEM_ZERO_STRUCT(stcPortInit);
+ stcPortInit.enExInt = Enable;
+ PORT_Init(LEFTLOW_CS1237_DOUT_PORTx, LEFTLOW_CS1237_DOUT_PINx, &stcPortInit);
+
+ /* Select External Int Ch.1 */
+ stcIrqRegiConf.enIntSrc = INT_PORT_EIRQ1;
+
+ /* Register External Int to Vect.No.005 */
+ stcIrqRegiConf.enIRQn = LEFTLOW_CS1237_IRQn;
+
+ /* Callback function */
+ stcIrqRegiConf.pfnCallback = &ExtInt01_Callback;
+
+ /* Registration IRQ */
+ enIrqRegistration(&stcIrqRegiConf);
+
+ /* Clear pending */
+ NVIC_ClearPendingIRQ(stcIrqRegiConf.enIRQn);
+
+ /* Set priority */
+ NVIC_SetPriority(stcIrqRegiConf.enIRQn, DDL_IRQ_PRIORITY_DEFAULT);
+}
+void ExtInt01IntEnable(void)
+{
+ /* Enable NVIC */
+ NVIC_EnableIRQ(LEFTLOW_CS1237_IRQn);
+}
+void ExtInt01IntDisable(void)
+{
+ /* Disable NVIC */
+ NVIC_DisableIRQ(LEFTLOW_CS1237_IRQn);
+}
+/*******************************ϴ
+ *******************************************************************************
+ ** \brief ExtInt04 callback function
+ **
+ ** \param None
+ **
+ ** \retval None
+ **
+ ******************************************************************************/
+void ExtInt04_Callback(void)
+{
+ if (Set == EXINT_IrqFlgGet(ExtiCh04))
+ {
+ RIGHTUP_CS1237_IrqCallBack();
+ EXINT_IrqFlgClr(ExtiCh04);
+ }
+}
+void ExtiCh04_Init(void)
+{
+ stc_exint_config_t stcExtiConfig;
+ stc_irq_regi_conf_t stcIrqRegiConf;
+ stc_port_init_t stcPortInit;
+
+ /* configuration structure initialization */
+ MEM_ZERO_STRUCT(stcExtiConfig);
+ MEM_ZERO_STRUCT(stcIrqRegiConf);
+ MEM_ZERO_STRUCT(stcPortInit);
+
+ /**************************************************************************/
+ /* External Int Ch.4 */
+ /**************************************************************************/
+ stcExtiConfig.enExitCh = ExtiCh04;
+
+ /* Filter setting */
+ stcExtiConfig.enFilterEn = Enable;
+ stcExtiConfig.enFltClk = Pclk3Div8;
+ stcExtiConfig.enExtiLvl = ExIntFallingEdge;
+ EXINT_Init(&stcExtiConfig);
+
+ /* Set External Int */
+ MEM_ZERO_STRUCT(stcPortInit);
+ stcPortInit.enExInt = Enable;
+ PORT_Init(RIGHTUP_CS1237_DOUT_PORTx, RIGHTUP_CS1237_DOUT_PINx, &stcPortInit);
+
+ /* Select External Int Ch.4 */
+ stcIrqRegiConf.enIntSrc = INT_PORT_EIRQ4;
+
+ /* Register External Int to Vect.No.006 */
+ stcIrqRegiConf.enIRQn = RIGHTUP_CS1237_IRQn;
+
+ /* Callback function */
+ stcIrqRegiConf.pfnCallback = &ExtInt04_Callback;
+
+ /* Registration IRQ */
+ enIrqRegistration(&stcIrqRegiConf);
+
+ /* Clear pending */
+ NVIC_ClearPendingIRQ(stcIrqRegiConf.enIRQn);
+
+ /* Set priority */
+ NVIC_SetPriority(stcIrqRegiConf.enIRQn, DDL_IRQ_PRIORITY_DEFAULT);
+}
+void ExtInt04IntEnable(void)
+{
+ /* Enable NVIC */
+ NVIC_EnableIRQ(RIGHTUP_CS1237_IRQn);
+}
+void ExtInt04IntDisable(void)
+{
+ /* Disable NVIC */
+ NVIC_DisableIRQ(RIGHTUP_CS1237_IRQn);
+}
+/*******************************´
+ *******************************************************************************
+ ** \brief ExtInt04 callback function
+ **
+ ** \param None
+ **
+ ** \retval None
+ **
+ ******************************************************************************/
+void ExtInt06_Callback(void)
+{
+ if (Set == EXINT_IrqFlgGet(ExtiCh06))
+ {
+ RIGHTLOW_CS1237_IrqCallBack();
+ EXINT_IrqFlgClr(ExtiCh06);
+ }
+}
+void ExtiCh06_Init(void)
+{
+ stc_exint_config_t stcExtiConfig;
+ stc_irq_regi_conf_t stcIrqRegiConf;
+ stc_port_init_t stcPortInit;
+
+ /* configuration structure initialization */
+ MEM_ZERO_STRUCT(stcExtiConfig);
+ MEM_ZERO_STRUCT(stcIrqRegiConf);
+ MEM_ZERO_STRUCT(stcPortInit);
+
+ /**************************************************************************/
+ /* External Int Ch.6 */
+ /**************************************************************************/
+ stcExtiConfig.enExitCh = ExtiCh06;
+
+ /* Filter setting */
+ stcExtiConfig.enFilterEn = Enable;
+ stcExtiConfig.enFltClk = Pclk3Div8;
+ stcExtiConfig.enExtiLvl = ExIntFallingEdge;
+ EXINT_Init(&stcExtiConfig);
+
+ /* Set External Int */
+ MEM_ZERO_STRUCT(stcPortInit);
+ stcPortInit.enExInt = Enable;
+ PORT_Init(RIGHTLOW_CS1237_DOUT_PORTx, RIGHTLOW_CS1237_DOUT_PINx, &stcPortInit);
+
+ /* Select External Int Ch.6 */
+ stcIrqRegiConf.enIntSrc = INT_PORT_EIRQ6;
+
+ /* Register External Int to Vect.No.006 */
+ stcIrqRegiConf.enIRQn = RIGHTLOW_CS1237_IRQn;
+
+ /* Callback function */
+ stcIrqRegiConf.pfnCallback = &ExtInt06_Callback;
+
+ /* Registration IRQ */
+ enIrqRegistration(&stcIrqRegiConf);
+
+ /* Clear pending */
+ NVIC_ClearPendingIRQ(stcIrqRegiConf.enIRQn);
+
+ /* Set priority */
+ NVIC_SetPriority(stcIrqRegiConf.enIRQn, DDL_IRQ_PRIORITY_DEFAULT);
+}
+void ExtInt06IntEnable(void)
+{
+ /* Enable NVIC */
+ NVIC_EnableIRQ(RIGHTLOW_CS1237_IRQn);
+}
+void ExtInt06IntDisable(void)
+{
+ /* Disable NVIC */
+ NVIC_DisableIRQ(RIGHTLOW_CS1237_IRQn);
+}
+#if(USE_SPI1 == 1)
static void Spi_Config(void)
{
stc_spi_init_t stcSpiInit;
@@ -546,10 +829,10 @@ uint16_t SpiSendReceive(uint16_t sData)
return rData;
}
+#endif
-
-//SPI3
+#if(USE_SPI3 == 1)
static void Spi3_Config(void)
{
stc_spi_init_t stcSpiInit;
@@ -674,9 +957,10 @@ uint8_t Spi3_RWByte(M4_SPI_TypeDef *SPIx, uint8_t u8Data)
}
return SPIx->DR;
}
+#endif
-
+#if(USE_RTC == 1)
/*****************************************************************************************
* : Rtc_Config
* : RTC
@@ -805,7 +1089,8 @@ void TimeSync(time_t ts)
DBG_LOG("TimeSync = %d-%d-%d %d:%d:%d\n", RtcDateTime.u8Year, RtcDateTime.u8Month, \
RtcDateTime.u8Day, RtcDateTime.u8Hour, RtcDateTime.u8Minute, RtcDateTime.u8Second);
}
-
+#endif
+#if(USE_AD == 1)
/*****************************************************************************************
* : AdcInitConfig
* : ADCʼ
@@ -957,7 +1242,8 @@ static void AdcDmaConfig(void)
PWC_Fcg0PeriphClockCmd(PWC_FCG0_PERIPH_AOS, Enable);
DMA_SetTriggerSrc(M4_DMA1, DmaCh0, EVT_ADC1_EOCA);
}
-
+#endif
+#if(USE_DMA == 1)
/*****************************************************************************************
* : DmaIrqRegister
* : DMAжϼĴ
@@ -1012,7 +1298,7 @@ static void Dma_Config(void)
AdcDmaConfig();
DmaIrqConfig();
}
-
+#endif
/*****************************************************************************************
* : ReadAdcValue
* : ȡADֵ
@@ -1053,26 +1339,32 @@ void ReadAdcValue(uint16_t *ADValue)
void BSP_Init(void)
{
+
stc_clk_freq_t Freq;
SystemClockConfig();
SystemCoreClockUpdate();
- Xtal32_ClockConfig();
+ //Xtal32_ClockConfig();
GPIO_Config();
+ ExtiCh10_Init();
+ ExtiCh01_Init();
+ ExtiCh06_Init();
+ ExtiCh04_Init();
+
DbgUart_Config(500000);
- RS485Uart_Config(9600);
- Rtc_Config();
-// SdioInit();
+ //RS485Uart_Config(9600);
+
+ //Rtc_Config();
+ //SdioInit();
//Spi_Config();
- Spi3_Config();
+ // Spi3_Config();
- Adc1_Config();
- Dma_Config();
- FeedDog();
- SysTick_Init(1000);
+ //Adc1_Config();
+ //Dma_Config();
+ //FeedDog();
+ SysTick_Init(1000u);
SysTick_Delay(1000);
CLK_GetClockFreq(&Freq);
- TimeSync(1705578500);
- DBG_LOG("SysFreq = %d\r\n", Freq.sysclkFreq);
+ //DBG_LOG("SysFreq = %d\r\n", Freq.sysclkFreq);
}
/*****************************************************************************************
@@ -1087,7 +1379,7 @@ void EnterStop(void)
stc_port_init_t stcPortInit;
uint16_t AnaPin;
- PWC_Fcg1PeriphClockCmd(SPI3_UNIT_CLOCK, Disable);
+ //PWC_Fcg1PeriphClockCmd(SPI3_UNIT_CLOCK, Disable);
PWC_Fcg1PeriphClockCmd(DBG_FCG1_PERIPH, Disable);
DBGRxWakeupInit();
@@ -1126,12 +1418,12 @@ extern uint8_t BDRxData[256];
*****************************************************************************************/
void Wakeup(void)
{
- NVIC_DisableIRQ(DBG_RXPIN_IRQn);
+ NVIC_DisableIRQ(DBG_RX_IRQn);
PWC_ClkRecover();
//SystemClockConfig();
- Spi3_Config();
+ //Spi3_Config();
DbgUart_Config(5000000);
- RS485Uart_Config(9600);
+ // RS485Uart_Config(9600);
//GPIO_Config();
//SysTick_Resume();
SysTick_Init(1000);
@@ -1148,12 +1440,10 @@ void Error_Handler(void)
-
-
-
-
+#if(USE_RS485 == 1)
__WEAK void RS485UsartErrIrqCallback(void)
{
+
if(RS485_USART_CH->SR_f.ORE) {
RS485_USART_CH->CR1_f.CORE = 1;
USART_RecData(RS485_USART_CH);
@@ -1164,12 +1454,8 @@ __WEAK void RS485UsartErrIrqCallback(void)
if(RS485_USART_CH->SR_f.FE)
RS485_USART_CH->CR1_f.CFE = 1;
+
}
-
-
-
-
-
__WEAK void RS485_RxPinIntCallBack(void)
{
@@ -1178,6 +1464,7 @@ __WEAK void RS485_RxPinIntCallBack(void)
+#endif
__WEAK void DBGUsartErrIrqCallback(void)
{
if(DBG_USART_CH->SR_f.ORE) {
diff --git a/Project/HC32F460/source/User/Src/main.c b/Project/HC32F460/source/User/Src/main.c
index 7b17b15..caa343e 100644
--- a/Project/HC32F460/source/User/Src/main.c
+++ b/Project/HC32F460/source/User/Src/main.c
@@ -4,62 +4,435 @@
#include "main.h"
#include "Encryption.h"
#include "Debug.h"
-
+#include "Algorithm.h"
+#include "CS1237_LEFTUP.h"
+#include "CS1237_LEFTLOW.h"
+#include "CS1237_RIGHTUP.h"
+#include "CS1237_RIGHTLOW.h"
#define MAIN_DBG_LOG(...) DBG_LOG(__VA_ARGS__)
-#define MAIN_DBG_ARRAY(ARRAY, SIZE) DBG_ARRAY(ARRAY,SIZE)
+#define MAIN_DBG_ARRAY(ARRAY, SIZE) DBG_ARRAY(ARRAY,SIZE)
-uint8_t TestData[16 * 512];
+#define SOFTWARE_VERSION 10 //汾
+#define HARDWARE_VERSION 20 //Ӳ汾
+AppDetect_t App;
-
-
-void HexToAscii(uint8_t *HexData, char *ASCData, uint8_t sLen)
+static void show(uint8_t ch,int32_t ad)
{
- uint8_t temp;
-
- for(int i = 0; i < sLen; i++) {
- temp = (HexData[i] >> 4) & 0x0f;
- if(temp < 10)
- temp += '0';
- else
- temp = (temp - 10) + 'A';
-
- ASCData[i * 2] = temp;
-
- temp = HexData[i] & 0x0f;
- if(temp < 10)
- temp += '0';
- else
- temp = (temp - 10) + 'A';
-
- ASCData[i * 2 + 1] = temp;
+ uint8_t bao[7];
+ bao[0] = 0x5A;
+ bao[1] = ch;
+ bao[2] = ad & 0xFF;
+ bao[3] = ad >> 8 & 0xFF;
+ bao[4] = ad >> 16 & 0xFF;
+ bao[5] = ad >> 24 & 0xFF;
+ bao[6] = 0xA5;
+ DebugUartSend(bao,7);
+}
+void LEFTUP_CS1237AinADataProcessCallBack(int32_t AD)
+{
+ show(1,AD);
+ for(int i = OSC_CNT-1; i > 0; i--)
+ {
+ App.LeftUpCS1237_TrendArray[i] = App.LeftUpCS1237_TrendArray[i - 1];
}
- ASCData[sLen * 2] = '\r';
- ASCData[sLen * 2 + 1] = '\n';
- ASCData[sLen * 2 + 2] = 0;
+ App.LeftUpCS1237_TrendArray[0] = AD;
+ App.LeftUpCS1237ReadEndFlag = true;
}
-
-
-
-
-void ADC_DMA_CallBack(void)
+void LEFTLOW_CS1237AinADataProcessCallBack(int32_t AD)
{
+ show(2,AD);
+ for(int i = OSC_CNT-1; i > 0; i--)
+ {
+ App.LeftLowCS1237_TrendArray[i] = App.LeftLowCS1237_TrendArray[i - 1];
+ }
+ App.LeftLowCS1237_TrendArray[0] = AD;
+ App.LeftLowCS1237ReadEndFlag = true;
+}
+void RIGHTUP_CS1237AinADataProcessCallBack(int32_t AD)
+{
+ show(3,AD);
+ for(int i = OSC_CNT-1; i > 0; i--)
+ {
+ App.RightUpCS1237_TrendArray[i] = App.RightUpCS1237_TrendArray[i - 1];
+ }
+ App.RightUpCS1237_TrendArray[0] = AD;
+ App.RightUpCS1237ReadEndFlag = true;
+}
+void RIGHTLOW_CS1237AinADataProcessCallBack(int32_t AD)
+{
+ show(4,AD);
+ for(int i = OSC_CNT-1; i > 0; i--)
+ {
+ App.RightLowCS1237_TrendArray[i] = App.RightLowCS1237_TrendArray[i - 1];
+ }
+ App.RightLowCS1237_TrendArray[0] = AD;
+ App.RightLowCS1237ReadEndFlag = true;
+}
+#if 0
+void SupportControlHandle(int32_t *Ain1_ad, int32_t *Ain2_ad)
+{
+ int32_t A1_diff[OSC_CNT], A2_diff[OSC_CNT], O1_diff1, O1_diff2, O1_diff3, O2_diff1, O2_diff2, O2_diff3;
+ O1_diff1 = Ain1_ad[0] - App.ADTrack.Ain1_Org_AdZero;
+ O1_diff2 = Ain1_ad[1] - App.ADTrack.Ain1_Org_AdZero;
+ O1_diff3 = Ain1_ad[2] - App.ADTrack.Ain1_Org_AdZero;
+ O2_diff1 = Ain2_ad[0] - App.ADTrack.Ain2_Org_AdZero;
+ O2_diff2 = Ain2_ad[1] - App.ADTrack.Ain2_Org_AdZero;
+ O2_diff3 = Ain2_ad[2] - App.ADTrack.Ain2_Org_AdZero;
+ for(int i = 0; i < OSC_CNT; i++)
+ {
+ A1_diff[i] = Ain1_ad[i] - Ain1_ad[OSC_CNT - 1];
+ A2_diff[i] = Ain2_ad[i] - Ain2_ad[OSC_CNT - 1];
+ }
+ TrendResult result_A1 = analyze_trend(A1_diff, OSC_CNT);
+ TrendResult result_A2 = analyze_trend(A2_diff, OSC_CNT);
+
+ int32_t A1_slope = result_A1.slope;
+ int32_t A2_slope = result_A2.slope;
+ //show2(A2_slope);
+ for(int i = SLOPE_CNT-1; i > 0; i--)
+ {
+ App.LeftUpCS1237_SlopeArray[i] = App.LeftUpCS1237_SlopeArray[i - 1];
+ App.LeftLowCS1237_SlopeArray[i] = App.LeftLowCS1237_SlopeArray[i - 1];
+ }
+ App.LeftUpCS1237_SlopeArray[0] = A1_slope;
+ App.LeftLowCS1237_SlopeArray[0] = A2_slope;
+
+ PeakValleyCheck result1_K = check_peaks_valleys(App.LeftUpCS1237_SlopeArray, SLOPE_CNT);
+ PeakValleyCheck result2_K = check_peaks_valleys(App.LeftLowCS1237_SlopeArray, SLOPE_CNT);
+
+ if(App.StopFlag == true)
+ {
+ if(App.StopCollDelay1mSCnt <= 0)
+ {
+ if(((App.LeftUpCS1237_SlopeArray[0] <= -App.ADTrack.Slope_VPT)
+ && (App.LeftUpCS1237_SlopeArray[1] <= -App.ADTrack.Slope_VPT)
+ && (App.LeftUpCS1237_SlopeArray[2] <= -App.ADTrack.Slope_VPT)
+ && (App.LeftLowCS1237_SlopeArray[0] >= App.ADTrack.Slope_VPT)
+ && (App.LeftLowCS1237_SlopeArray[1] >= App.ADTrack.Slope_VPT)
+ && (App.LeftLowCS1237_SlopeArray[2] >= App.ADTrack.Slope_VPT))
+ || ((O1_diff1 >= App.ADTrack.Ain1VPT)
+ && (O1_diff2 >= App.ADTrack.Ain1VPT)
+ && (O1_diff3 >= App.ADTrack.Ain1VPT)
+ && (O2_diff1 <= -App.ADTrack.Ain2VPT)
+ && (O2_diff2 <= -App.ADTrack.Ain2VPT)
+ && (O2_diff3 <= -App.ADTrack.Ain2VPT)))
+ {
+ //BDC_UP();
+ App.UpFlag = true;
+ App.StopFlag = false;
+ App.DownFlag = false;
+ }
+ else if(((App.Ain1_SlopeArray[0] >= App.ADTrack.Slope_VPT)
+ && (App.Ain1_SlopeArray[1] >= App.ADTrack.Slope_VPT)
+ && (App.Ain1_SlopeArray[2] >= App.ADTrack.Slope_VPT)
+ && (App.Ain2_SlopeArray[0] <= -App.ADTrack.Slope_VPT)
+ && (App.Ain2_SlopeArray[1] <= -App.ADTrack.Slope_VPT)
+ && (App.Ain2_SlopeArray[2] <= -App.ADTrack.Slope_VPT))
+ || ((O1_diff1 <= -App.ADTrack.Ain1VPT)
+ && (O1_diff2 <= -App.ADTrack.Ain1VPT)
+ && (O1_diff3 <= -App.ADTrack.Ain1VPT)
+ && (O2_diff1 >= App.ADTrack.Ain2VPT)
+ && (O2_diff2 >= App.ADTrack.Ain2VPT)
+ && (O2_diff3 >= App.ADTrack.Ain2VPT)))
+ {
+ //BDC_DOWN();
+ App.DownFlag = true;
+ App.StopFlag = false;
+ App.UpFlag = false;
+ }
+ }
+ }
+ else if(App.DownFlag == true)
+ {
+ if(A1_slope < -App.ADTrack.Slope_VPT
+ && A2_slope > App.ADTrack.Slope_VPT)
+ {
+ //BDC_STOP();
+ App.StopFlag = true;
+ App.DownFlag = false;
+ App.UpFlag = false;
+ App.StopCollDelay1mSCnt = 1000;
+ }
+ else if(O1_diff1 > -(App.ADTrack.Ain1VPT / 2)
+ && O2_diff1 < (App.ADTrack.Ain2VPT / 2))
+ {
+ //BDC_STOP();
+ App.StopFlag = true;
+ App.DownFlag = false;
+ App.UpFlag = false;
+ App.StopCollDelay1mSCnt = 1000;
+ }
+ }
+ else if(App.UpFlag == true)
+ {
+ if(A1_slope > App.ADTrack.Slope_VPT
+ && A2_slope < -App.ADTrack.Slope_VPT)
+ {
+ //BDC_STOP();
+ App.StopFlag = true;
+ App.DownFlag = false;
+ App.UpFlag = false;
+ App.StopCollDelay1mSCnt = 1000;
+ }
+ else if(O1_diff1 < (App.ADTrack.Ain1VPT / 2)
+ && O2_diff1 > -(App.ADTrack.Ain2VPT / 2))
+ {
+ //BDC_STOP();
+ App.StopFlag = true;
+ App.DownFlag = false;
+ App.UpFlag = false;
+ App.StopCollDelay1mSCnt = 1000;
+ }
+ }
+
+ if (result1_K.peaks_positive
+ && result1_K.valleys_negative
+ && A1_diff[0] < App.ADTrack.Slope_VPT / 2
+ && A1_diff[0] > -App.ADTrack.Slope_VPT / 2
+ && A1_diff[1] < App.ADTrack.Slope_VPT / 2
+ && A1_diff[1] > -App.ADTrack.Slope_VPT / 2
+ && A1_diff[2] < App.ADTrack.Slope_VPT / 2
+ && A1_diff[2] > -App.ADTrack.Slope_VPT / 2
+ && result2_K.peaks_positive
+ && result2_K.valleys_negative
+ && A2_diff[0] < App.ADTrack.Slope_VPT / 2
+ && A2_diff[0] > -App.ADTrack.Slope_VPT / 2
+ && A2_diff[1] < App.ADTrack.Slope_VPT / 2
+ && A2_diff[1] > -App.ADTrack.Slope_VPT / 2
+ && A2_diff[2] < App.ADTrack.Slope_VPT / 2
+ && A2_diff[2] > -App.ADTrack.Slope_VPT / 2)
+ {
+ if(App.StopFlag == true && App.StopCollDelay1mSCnt <= 0){
+ App.ADTrack.Ain1_Org_AdZero = Ain1_ad[0];
+ App.ADTrack.Ain2_Org_AdZero = Ain2_ad[0];
+ }
+ else if(App.StopFlag == false)
+ {
+ App.EvenRunning = true;
+ App.EvenRunDelay1mSCnt = 0;
+ }
+ }
+ else
+ {
+ App.EvenRunning = false;
+ App.EvenRunDelay1mSCnt = 0;
+ }
+ if(App.EvenRunDelay1mSCnt >= 2000)
+ {
+ App.EvenRunning = false;
+ App.EvenRunDelay1mSCnt = 0;
+ App.ADTrack.Ain1_Org_AdZero = Ain1_ad[0];
+ App.ADTrack.Ain2_Org_AdZero = Ain2_ad[0];
+ }
+}
+#endif
+static void AppInit(void)
+{
+ DBG_LOG("\r\n\r\n");
+ DBG_LOG("****************************************************\r\n");
+ DBG_LOG("** **\r\n");
+ DBG_LOG("** Acc_Support_29V **\r\n");
+ DBG_LOG("** SoftWare V:%d.%d **\r\n", SOFTWARE_VERSION / 10, SOFTWARE_VERSION % 10);
+ DBG_LOG("** HardWare V:%d.%d **\r\n", HARDWARE_VERSION / 10, HARDWARE_VERSION % 10);
+ DBG_LOG("** Compile: %s %s **\r\n", __DATE__, __TIME__);
+ DBG_LOG("** **\r\n");
+ DBG_LOG("****************************************************\r\n\r\n");
+
+ //FeedDog();
+ LEFTUP_CS1237_Init();
+ LEFTLOW_CS1237_Init();
+ RIGHTUP_CS1237_Init();
+ RIGHTLOW_CS1237_Init();
+
+ App.Status = APP_STATUS_WAIT;
+ App.TD1mSDelayCnt = 2000;
+ App.RStatus = READ_STATUS_START;
+}
+static void ReadLoopHandler(void)
+{
+ switch(App.RStatus){
+ case READ_STATUS_IDLE:{
+ break;}
+
+ case READ_STATUS_START:{
+ App.LeftUpCS1237ReadEndFlag = false;
+ App.LeftLowCS1237ReadEndFlag = false;
+ App.RightUpCS1237ReadEndFlag = false;
+ App.RightLowCS1237ReadEndFlag = false;
+ App.RStatus = READ_STATUS_LEFTUP;
+ break;}
+
+ case READ_STATUS_LEFTUP:{
+ LEFTUP_CS1237Start();
+ App.Read1mSDelayCnt = 50;
+ App.RStatus = READ_STATUS_WAIT_LEFTUP;
+ break;}
+
+ case READ_STATUS_WAIT_LEFTUP:{
+ if(App.Read1mSDelayCnt <= 0)
+ {
+ App.RStatus = READ_STATUS_LEFTLOW;
+ }
+ else if(App.LeftUpCS1237ReadEndFlag == true)
+ {
+ App.RStatus = READ_STATUS_LEFTLOW;
+ }
+ break;}
+
+ case READ_STATUS_LEFTLOW:{
+ LEFTLOW_CS1237Start();
+ App.Read1mSDelayCnt = 50;
+ App.RStatus = READ_STATUS_WAIT_LEFTLOW;
+ break;}
+
+ case READ_STATUS_WAIT_LEFTLOW:{
+ if(App.Read1mSDelayCnt <= 0)
+ {
+ App.RStatus = READ_STATUS_RIGHTUP;
+ }
+ else if(App.LeftLowCS1237ReadEndFlag == true)
+ {
+ App.RStatus = READ_STATUS_RIGHTUP;
+ }
+ break;}
+
+ case READ_STATUS_RIGHTUP:{
+ RIGHTUP_CS1237Start();
+ App.Read1mSDelayCnt = 50;
+ App.RStatus = READ_STATUS_WAIT_RIGHTUP;
+ break;}
+
+ case READ_STATUS_WAIT_RIGHTUP:{
+ if(App.Read1mSDelayCnt <= 0)
+ {
+ App.RStatus = READ_STATUS_RIGHTLOW;
+ }
+ else if(App.RightUpCS1237ReadEndFlag == true)
+ {
+ App.RStatus = READ_STATUS_RIGHTLOW;
+ }
+ break;}
+
+ case READ_STATUS_RIGHTLOW:{
+ RIGHTLOW_CS1237Start();
+ App.Read1mSDelayCnt = 50;
+ App.RStatus = READ_STATUS_WAIT_RIGHTLOW;
+ break;}
+
+ case READ_STATUS_WAIT_RIGHTLOW:{
+ if(App.Read1mSDelayCnt <= 0)
+ {
+ App.RStatus = READ_STATUS_SUPPORT_CONT;
+ }
+ else if(App.RightLowCS1237ReadEndFlag == true)
+ {
+ App.RStatus = READ_STATUS_SUPPORT_CONT;
+ }
+ break;}
+
+ case READ_STATUS_SUPPORT_CONT:{
+ if(App.LeftUpCS1237ReadEndFlag == true &&
+ App.LeftLowCS1237ReadEndFlag == true &&
+ App.RightUpCS1237ReadEndFlag == true &&
+ App.RightLowCS1237ReadEndFlag == true)
+ {
+ App.LeftUpCS1237ReadEndFlag = false;
+ App.LeftUpCS1237ReadEndFlag = false;
+ App.RightUpCS1237ReadEndFlag = false;
+ App.RightLowCS1237ReadEndFlag = false;
+ //SupportControlHandle(App.Ain1_TrendArray, App.Ain2_TrendArray);
+ }
+ App.RStatus = READ_STATUS_START;
+ break;}
+ }
}
+static void AppLoopHandler(void)
+{
+ switch(App.Status) {
+ case APP_STATUS_IDLE:{
+ break;}
+
+ case APP_STATUS_ON:{
+ App.Status = APP_STATUS_IDLE;
+ break;}
+
+ case APP_STATUS_OFF:{
+
+ App.Status = APP_STATUS_IDLE;
+ break;}
+
+ case APP_STATUS_WAIT:{
+ if(App.TD1mSDelayCnt <= 0)
+ {
+ App.UpFlag = false;
+ App.DownFlag = false;
+ App.StopFlag = true;
+ App.EvenRunning = false;
+
+ App.ADTrack.Slope_VPT = 1000;
+ App.ADTrack.LeftUpVPT = 20000;
+ App.ADTrack.LeftLowVPT = 20000;
+ App.ADTrack.RightUpVPT = 20000;
+ App.ADTrack.RightLowVPT = 20000;
+
+ App.ADTrack.LeftUp_Org_AdZero = App.LeftUpCS1237_TrendArray[0];
+ App.ADTrack.LeftLow_Org_AdZero = App.LeftLowCS1237_TrendArray[0];
+ App.ADTrack.RightUp_Org_AdZero = App.RightUpCS1237_TrendArray[0];
+ App.ADTrack.RightLow_Org_AdZero = App.RightLowCS1237_TrendArray[0];
+ DBG_LOG("Frist Pack Data LeftUp Zero AD: %08d\tLeftUp Zero AD: %08d\tRightUp Zero AD: %08d\tRightLow Zero AD: %08d\r\n",
+ App.ADTrack.LeftUp_Org_AdZero,
+ App.ADTrack.LeftLow_Org_AdZero,
+ App.ADTrack.RightUp_Org_AdZero,
+ App.ADTrack.RightLow_Org_AdZero);
+ App.Status = APP_STATUS_IDLE;
+ }
+ break;}
+ }
+}
+static void App1mSRoutine(void)
+{
+ if(App.TD1mSDelayCnt > 0)
+ App.TD1mSDelayCnt--;
+ if(App.Read1mSDelayCnt > 0)
+ App.Read1mSDelayCnt--;
+ if(App.Uart1Delay1mSCnt > 0)
+ App.Uart1Delay1mSCnt--;
+ if(App.StopCollDelay1mSCnt > 0)
+ App.StopCollDelay1mSCnt--;
+
+ if(App.EvenRunning == true)
+ App.EvenRunDelay1mSCnt++;
-
-
-
+ App.FeedDogDlyCnt++;
+}
+void FeedDogHandler(void)
+{
+ if(App.FeedDogDlyCnt >= 200) {
+ FeedDog();
+ App.FeedDogDlyCnt = 0;
+ }
+}
int main(void)
{
BSP_Init();
- DBG_LOG("**********************************************\r\n");
- DBG_LOG("* Ver 1.0 2024-01-15 *\r\n");
- DBG_LOG("**********************************************\r\n");
+ AppInit();
while(1) {
+#if(USE_WDT == 1)
+ FeedDogHandler();
+#endif
+#if(USE_DEBUG == 1)
DebugLoopHandler();
+#endif
+ LEFTUP_CS1237DataLoopCollect();
+ LEFTLOW_CS1237DataLoopCollect();
+ RIGHTUP_CS1237DataLoopCollect();
+ RIGHTLOW_CS1237DataLoopCollect();
+ ReadLoopHandler();
+ AppLoopHandler();
}
}
@@ -72,7 +445,12 @@ int main(void)
void SysTick_IrqHandler(void)
{
SysTick_IncTick();
+ App1mSRoutine();
Dbg1msRoutine();
+ LEFTUP_CS12371mSRoutine();
+ LEFTLOW_CS12371mSRoutine();
+ RIGHTUP_CS12371mSRoutine();
+ RIGHTLOW_CS12371mSRoutine();
}
/*****************************************************************************************
@@ -93,4 +471,7 @@ void RtcPeriod_IrqCallback(void)
//PORT_Toggle(LED_Green_PORT, LED_Green_PIN);
}
+void ADC_DMA_CallBack(void)
+{
+}
diff --git a/driver/inc/hc32f460_gpio.h b/driver/inc/hc32f460_gpio.h
index b553de1..c62dc29 100644
--- a/driver/inc/hc32f460_gpio.h
+++ b/driver/inc/hc32f460_gpio.h
@@ -272,6 +272,7 @@ extern en_flag_status_t PORT_GetBit(en_port_t enPort, en_pin_t enPin);
extern en_result_t PORT_SetPortData(en_port_t enPort, uint16_t u16Pin);
extern en_result_t PORT_ResetPortData(en_port_t enPort, uint16_t u16Pin);
extern en_result_t PORT_OE(en_port_t enPort, uint16_t u16Pin, en_functional_state_t enNewState);
+extern en_result_t PORT_PIDR(en_port_t enPort, uint16_t u16Pin, en_functional_state_t enNewState);
extern en_result_t PORT_SetBits(en_port_t enPort, uint16_t u16Pin);
extern en_result_t PORT_ResetBits(en_port_t enPort, uint16_t u16Pin);
extern en_result_t PORT_Toggle(en_port_t enPort, uint16_t u16Pin);
diff --git a/driver/inc/hc32f460_icg.h b/driver/inc/hc32f460_icg.h
index 2497bef..0dbae24 100644
--- a/driver/inc/hc32f460_icg.h
+++ b/driver/inc/hc32f460_icg.h
@@ -258,7 +258,7 @@ extern "C"
** \brief SWDT hardware start configuration
******************************************************************************/
/*!< Enable or disable SWDT hardware start */
-#if (USE_DEBUG == 1)
+#if (USE_WDT == 1)
#define ICG0_SWDT_HARDWARE_START (ICG_FUNCTION_ON)
#else
#define ICG0_SWDT_HARDWARE_START (ICG_FUNCTION_OFF)
diff --git a/driver/src/hc32f460_gpio.c b/driver/src/hc32f460_gpio.c
index 16b8656..93020fc 100644
--- a/driver/src/hc32f460_gpio.c
+++ b/driver/src/hc32f460_gpio.c
@@ -483,7 +483,6 @@ en_result_t PORT_OE(en_port_t enPort, uint16_t u16Pin, en_functional_state_t enN
return Ok;
}
-
/**
*******************************************************************************
** \brief Set Port Pin
@@ -507,7 +506,6 @@ en_result_t PORT_SetBits(en_port_t enPort, uint16_t u16Pin)
return Ok;
}
-
/**
*******************************************************************************
** \brief Reset Port Pin
diff --git a/mcu/common/hc32_common.h b/mcu/common/hc32_common.h
index f8424c8..b7d667e 100644
--- a/mcu/common/hc32_common.h
+++ b/mcu/common/hc32_common.h
@@ -139,7 +139,7 @@ typedef enum en_result
#define __UNUSED __attribute__((unused))
#endif /* __UNUSED */
#ifndef __RAM_FUNC
- #define __RAM_FUNC __attribute__((long_call, section(".ramfunc")))
+ #define __RAM_FUNC __attribute__((section(".ramfunc")))
/* Usage: void __RAM_FUNC foo(void) */
#endif /* __RAM_FUNC */
#elif defined (__ICCARM__) ///< IAR Compiler