传感器数据采集基本完成
This commit is contained in:
@@ -117,10 +117,30 @@
|
|||||||
<pMon>Segger\JL2CM3.dll</pMon>
|
<pMon>Segger\JL2CM3.dll</pMon>
|
||||||
</DebugOpt>
|
</DebugOpt>
|
||||||
<TargetDriverDllRegistry>
|
<TargetDriverDllRegistry>
|
||||||
|
<SetRegEntry>
|
||||||
|
<Number>0</Number>
|
||||||
|
<Key>ARMRTXEVENTFLAGS</Key>
|
||||||
|
<Name>-L70 -Z18 -C0 -M0 -T1</Name>
|
||||||
|
</SetRegEntry>
|
||||||
|
<SetRegEntry>
|
||||||
|
<Number>0</Number>
|
||||||
|
<Key>DLGTARM</Key>
|
||||||
|
<Name>(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)</Name>
|
||||||
|
</SetRegEntry>
|
||||||
|
<SetRegEntry>
|
||||||
|
<Number>0</Number>
|
||||||
|
<Key>ARMDBGFLAGS</Key>
|
||||||
|
<Name></Name>
|
||||||
|
</SetRegEntry>
|
||||||
|
<SetRegEntry>
|
||||||
|
<Number>0</Number>
|
||||||
|
<Key>DLGUARM</Key>
|
||||||
|
<Name></Name>
|
||||||
|
</SetRegEntry>
|
||||||
<SetRegEntry>
|
<SetRegEntry>
|
||||||
<Number>0</Number>
|
<Number>0</Number>
|
||||||
<Key>JL2CM3</Key>
|
<Key>JL2CM3</Key>
|
||||||
<Name>-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)</Name>
|
<Name>-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)</Name>
|
||||||
</SetRegEntry>
|
</SetRegEntry>
|
||||||
<SetRegEntry>
|
<SetRegEntry>
|
||||||
<Number>0</Number>
|
<Number>0</Number>
|
||||||
@@ -129,18 +149,35 @@
|
|||||||
</SetRegEntry>
|
</SetRegEntry>
|
||||||
</TargetDriverDllRegistry>
|
</TargetDriverDllRegistry>
|
||||||
<Breakpoint/>
|
<Breakpoint/>
|
||||||
|
<WatchWindow1>
|
||||||
|
<Ww>
|
||||||
|
<count>0</count>
|
||||||
|
<WinNumber>1</WinNumber>
|
||||||
|
<ItemText>LEFTLOW_CS1237Var.CS1237Delay1mSCnt,0x0A</ItemText>
|
||||||
|
</Ww>
|
||||||
|
<Ww>
|
||||||
|
<count>1</count>
|
||||||
|
<WinNumber>1</WinNumber>
|
||||||
|
<ItemText>App.FeedDogDlyCnt,0x0A</ItemText>
|
||||||
|
</Ww>
|
||||||
|
<Ww>
|
||||||
|
<count>2</count>
|
||||||
|
<WinNumber>1</WinNumber>
|
||||||
|
<ItemText>App.Status,0x0A</ItemText>
|
||||||
|
</Ww>
|
||||||
|
</WatchWindow1>
|
||||||
<Tracepoint>
|
<Tracepoint>
|
||||||
<THDelay>0</THDelay>
|
<THDelay>0</THDelay>
|
||||||
</Tracepoint>
|
</Tracepoint>
|
||||||
<DebugFlag>
|
<DebugFlag>
|
||||||
<trace>0</trace>
|
<trace>0</trace>
|
||||||
<periodic>0</periodic>
|
<periodic>0</periodic>
|
||||||
<aLwin>0</aLwin>
|
<aLwin>1</aLwin>
|
||||||
<aCover>0</aCover>
|
<aCover>0</aCover>
|
||||||
<aSer1>0</aSer1>
|
<aSer1>0</aSer1>
|
||||||
<aSer2>0</aSer2>
|
<aSer2>0</aSer2>
|
||||||
<aPa>0</aPa>
|
<aPa>0</aPa>
|
||||||
<viewmode>0</viewmode>
|
<viewmode>1</viewmode>
|
||||||
<vrSel>0</vrSel>
|
<vrSel>0</vrSel>
|
||||||
<aSym>0</aSym>
|
<aSym>0</aSym>
|
||||||
<aTbox>0</aTbox>
|
<aTbox>0</aTbox>
|
||||||
@@ -952,6 +989,42 @@
|
|||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
|
<File>
|
||||||
|
<GroupNumber>4</GroupNumber>
|
||||||
|
<FileNumber>51</FileNumber>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<tvExp>0</tvExp>
|
||||||
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
<bDave2>0</bDave2>
|
||||||
|
<PathWithFileName>..\source\Module\CS1237\CS1237_LEFTUP.c</PathWithFileName>
|
||||||
|
<FilenameWithoutPath>CS1237_LEFTUP.c</FilenameWithoutPath>
|
||||||
|
<RteFlg>0</RteFlg>
|
||||||
|
<bShared>0</bShared>
|
||||||
|
</File>
|
||||||
|
<File>
|
||||||
|
<GroupNumber>4</GroupNumber>
|
||||||
|
<FileNumber>52</FileNumber>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<tvExp>0</tvExp>
|
||||||
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
<bDave2>0</bDave2>
|
||||||
|
<PathWithFileName>..\source\Module\CS1237\CS1237_RIGHTLOW.c</PathWithFileName>
|
||||||
|
<FilenameWithoutPath>CS1237_RIGHTLOW.c</FilenameWithoutPath>
|
||||||
|
<RteFlg>0</RteFlg>
|
||||||
|
<bShared>0</bShared>
|
||||||
|
</File>
|
||||||
|
<File>
|
||||||
|
<GroupNumber>4</GroupNumber>
|
||||||
|
<FileNumber>53</FileNumber>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<tvExp>0</tvExp>
|
||||||
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
<bDave2>0</bDave2>
|
||||||
|
<PathWithFileName>..\source\Module\CS1237\CS1237_RIGHTUP.c</PathWithFileName>
|
||||||
|
<FilenameWithoutPath>CS1237_RIGHTUP.c</FilenameWithoutPath>
|
||||||
|
<RteFlg>0</RteFlg>
|
||||||
|
<bShared>0</bShared>
|
||||||
|
</File>
|
||||||
</Group>
|
</Group>
|
||||||
|
|
||||||
<Group>
|
<Group>
|
||||||
|
|||||||
@@ -10,9 +10,8 @@
|
|||||||
<TargetName>Debug</TargetName>
|
<TargetName>Debug</TargetName>
|
||||||
<ToolsetNumber>0x4</ToolsetNumber>
|
<ToolsetNumber>0x4</ToolsetNumber>
|
||||||
<ToolsetName>ARM-ADS</ToolsetName>
|
<ToolsetName>ARM-ADS</ToolsetName>
|
||||||
<pArmCC>6160000::V6.16::ARMCLANG</pArmCC>
|
<pCCUsed>5060960::V5.06 update 7 (build 960)::ARMCC</pCCUsed>
|
||||||
<pCCUsed>6160000::V6.16::ARMCLANG</pCCUsed>
|
<uAC6>0</uAC6>
|
||||||
<uAC6>1</uAC6>
|
|
||||||
<TargetOption>
|
<TargetOption>
|
||||||
<TargetCommonOption>
|
<TargetCommonOption>
|
||||||
<Device>HC32F460JEUA</Device>
|
<Device>HC32F460JEUA</Device>
|
||||||
@@ -315,7 +314,7 @@
|
|||||||
</ArmAdsMisc>
|
</ArmAdsMisc>
|
||||||
<Cads>
|
<Cads>
|
||||||
<interw>1</interw>
|
<interw>1</interw>
|
||||||
<Optim>2</Optim>
|
<Optim>1</Optim>
|
||||||
<oTime>0</oTime>
|
<oTime>0</oTime>
|
||||||
<SplitLS>0</SplitLS>
|
<SplitLS>0</SplitLS>
|
||||||
<OneElfS>1</OneElfS>
|
<OneElfS>1</OneElfS>
|
||||||
@@ -650,6 +649,21 @@
|
|||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<FilePath>..\source\Module\CS1237\CS1237_LEFTLOW.c</FilePath>
|
<FilePath>..\source\Module\CS1237\CS1237_LEFTLOW.c</FilePath>
|
||||||
</File>
|
</File>
|
||||||
|
<File>
|
||||||
|
<FileName>CS1237_LEFTUP.c</FileName>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<FilePath>..\source\Module\CS1237\CS1237_LEFTUP.c</FilePath>
|
||||||
|
</File>
|
||||||
|
<File>
|
||||||
|
<FileName>CS1237_RIGHTLOW.c</FileName>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<FilePath>..\source\Module\CS1237\CS1237_RIGHTLOW.c</FilePath>
|
||||||
|
</File>
|
||||||
|
<File>
|
||||||
|
<FileName>CS1237_RIGHTUP.c</FileName>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<FilePath>..\source\Module\CS1237\CS1237_RIGHTUP.c</FilePath>
|
||||||
|
</File>
|
||||||
</Files>
|
</Files>
|
||||||
</Group>
|
</Group>
|
||||||
<Group>
|
<Group>
|
||||||
@@ -1303,6 +1317,21 @@
|
|||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<FilePath>..\source\Module\CS1237\CS1237_LEFTLOW.c</FilePath>
|
<FilePath>..\source\Module\CS1237\CS1237_LEFTLOW.c</FilePath>
|
||||||
</File>
|
</File>
|
||||||
|
<File>
|
||||||
|
<FileName>CS1237_LEFTUP.c</FileName>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<FilePath>..\source\Module\CS1237\CS1237_LEFTUP.c</FilePath>
|
||||||
|
</File>
|
||||||
|
<File>
|
||||||
|
<FileName>CS1237_RIGHTLOW.c</FileName>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<FilePath>..\source\Module\CS1237\CS1237_RIGHTLOW.c</FilePath>
|
||||||
|
</File>
|
||||||
|
<File>
|
||||||
|
<FileName>CS1237_RIGHTUP.c</FileName>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<FilePath>..\source\Module\CS1237\CS1237_RIGHTUP.c</FilePath>
|
||||||
|
</File>
|
||||||
</Files>
|
</Files>
|
||||||
</Group>
|
</Group>
|
||||||
<Group>
|
<Group>
|
||||||
|
|||||||
@@ -1,2 +0,0 @@
|
|||||||
#include "bps.h"
|
|
||||||
|
|
||||||
@@ -4,6 +4,22 @@
|
|||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "Algorithm.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;
|
LEFTLOW_CS1237Var_t LEFTLOW_CS1237Var;
|
||||||
static bool InitFlag;
|
static bool InitFlag;
|
||||||
static bool CS1237IrqFlag;
|
static bool CS1237IrqFlag;
|
||||||
@@ -18,15 +34,15 @@ extern void LEFTLOW_CS1237AinADataProcessCallBack(int32_t AD);
|
|||||||
static void CS1237_Clock(void)
|
static void CS1237_Clock(void)
|
||||||
{
|
{
|
||||||
CS1237_SCLK_H();
|
CS1237_SCLK_H();
|
||||||
CS1237_100NS(3);
|
CS1237_5NS(60);
|
||||||
CS1237_SCLK_L();
|
CS1237_SCLK_L();
|
||||||
CS1237_100NS(3);
|
CS1237_5NS(60);
|
||||||
}
|
}
|
||||||
/** cs1237 休眠*/
|
/** cs1237 休眠*/
|
||||||
static void CS1237_Sleep(void)
|
static void CS1237_Sleep(void)
|
||||||
{
|
{
|
||||||
CS1237_SCLK_H();
|
CS1237_SCLK_H();
|
||||||
CS1237_1US(150);
|
CS1237_1US(200);
|
||||||
}
|
}
|
||||||
/** cs1237 唤醒*/
|
/** cs1237 唤醒*/
|
||||||
static void CS1237_WakeUp(void)
|
static void CS1237_WakeUp(void)
|
||||||
@@ -48,8 +64,8 @@ static void Set_CS1237_Config(uint8_t ad_reg)
|
|||||||
CS1237IrqFlag = false;
|
CS1237IrqFlag = false;
|
||||||
while(CS1237IrqFlag == false) //等待芯片准备好
|
while(CS1237IrqFlag == false) //等待芯片准备好
|
||||||
{
|
{
|
||||||
if(CS1237Var.CS1237Delay1mSCnt <= 0){
|
if(LEFTLOW_CS1237Var.CS1237Delay1mSCnt <= 0){
|
||||||
DBG_LOG("LEFTLOW CS1237 Preparation Timeout...\r\n");
|
//DBG_LOG("LEFTLOW CS1237 Preparation Timeout...\r\n");
|
||||||
return; // 超时退出
|
return; // 超时退出
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -97,7 +113,7 @@ static void Set_CS1237_Config(uint8_t ad_reg)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
CS1238_DOUT_L();
|
CS1237_DOUT_L();
|
||||||
}
|
}
|
||||||
reg_temp = reg_temp << 1;
|
reg_temp = reg_temp << 1;
|
||||||
CS1237_Clock();
|
CS1237_Clock();
|
||||||
@@ -120,12 +136,12 @@ static int32_t Read_CS1237_Config(void)
|
|||||||
CS1237_DOUT_H();
|
CS1237_DOUT_H();
|
||||||
CS1237_DOUT_IN();
|
CS1237_DOUT_IN();
|
||||||
CS1237_SCLK_L(); //时钟拉低
|
CS1237_SCLK_L(); //时钟拉低
|
||||||
CS1237Var.CS1237Delay1mSCnt = 300;
|
LEFTLOW_CS1237Var.CS1237Delay1mSCnt = 300;
|
||||||
CS1237IrqFlag = false;
|
CS1237IrqFlag = false;
|
||||||
while(CS1237IrqFlag == false) //等待芯片准备好
|
while(CS1237IrqFlag == false) //等待芯片准备好
|
||||||
{
|
{
|
||||||
if(CS1237Var.CS1237Delay1mSCnt <= 0){
|
if(LEFTLOW_CS1237Var.CS1237Delay1mSCnt <= 0){
|
||||||
DBG_LOG("LEFTLOW CS1237 Preparation Timeout...\r\n");
|
//DBG_LOG("LEFTLOW CS1237 Preparation Timeout...\r\n");
|
||||||
return 0; // 超时退出
|
return 0; // 超时退出
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -167,11 +183,11 @@ static int32_t Read_CS1237_Config(void)
|
|||||||
{
|
{
|
||||||
CS1237_SCLK_H();
|
CS1237_SCLK_H();
|
||||||
reg_temp <<= 1; //左移1位准备接受数据 初始默认0
|
reg_temp <<= 1; //左移1位准备接受数据 初始默认0
|
||||||
CS1237_100NS(3);//延时300ns
|
CS1237_5NS(60);//延时300ns
|
||||||
if(GET_CS1237_DOUT() == true) //有数值则累加
|
if(CS1237_DOUT_GET() == true) //有数值则累加
|
||||||
reg_temp |= 1;
|
reg_temp |= 1;
|
||||||
CS1237_SCLK_L();
|
CS1237_SCLK_L();
|
||||||
CS1237_100NS(3);
|
CS1237_5NS(60);
|
||||||
}
|
}
|
||||||
/* 8: clk46 */
|
/* 8: clk46 */
|
||||||
CS1237_Clock();
|
CS1237_Clock();
|
||||||
@@ -192,11 +208,11 @@ static int32_t Read_CS1237_Ad_Data(void)
|
|||||||
{
|
{
|
||||||
CS1237_SCLK_H();
|
CS1237_SCLK_H();
|
||||||
data_temp <<= 1; //左移1位准备接受数据 初始默认0
|
data_temp <<= 1; //左移1位准备接受数据 初始默认0
|
||||||
CS1237_100NS(3);//延时300ns
|
CS1237_5NS(60);//延时300ns
|
||||||
if(GET_CS1237_DOUT() == true) //有数值则累加
|
if(CS1237_DOUT_GET() == true) //有数值则累加
|
||||||
data_temp |= 1;
|
data_temp |= 1;
|
||||||
CS1237_SCLK_L();
|
CS1237_SCLK_L();
|
||||||
CS1237_100NS(3);
|
CS1237_5NS(60);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* clk25 ~ clk27 */
|
/* clk25 ~ clk27 */
|
||||||
@@ -220,16 +236,16 @@ void LEFTLOW_CS1237_IrqCallBack(void)
|
|||||||
}
|
}
|
||||||
void LEFTLOW_CS1237_Init(void)
|
void LEFTLOW_CS1237_Init(void)
|
||||||
{
|
{
|
||||||
|
|
||||||
CS1237IrqFlag = false;
|
CS1237IrqFlag = false;
|
||||||
BuildDelay = false;
|
BuildDelay = false;
|
||||||
CS1237IntEnable();
|
|
||||||
LEFTLOW_CS1237Var.AinA_AD = 0;
|
LEFTLOW_CS1237Var.AinA_AD = 0;
|
||||||
//CS1237Var.Ain2_AD = 0;
|
|
||||||
LEFTLOW_CS1237Var.Temp_AD = 0;
|
LEFTLOW_CS1237Var.Temp_AD = 0;
|
||||||
LEFTLOW_CS1237Var.Jump_AD = 0;
|
LEFTLOW_CS1237Var.Jump_AD = 0;
|
||||||
|
|
||||||
|
CS1237IntEnable();
|
||||||
CS1237Port = CH_SEL_A;
|
CS1237Port = CH_SEL_A;
|
||||||
CS1237Hz = SPEED_SEL_40Hz;
|
CS1237Hz = SPEED_SEL_640Hz;
|
||||||
CS1237PGA = PGA_SEL_128;
|
CS1237PGA = PGA_SEL_128;
|
||||||
|
|
||||||
uint8_t read_reg = 0x00;
|
uint8_t read_reg = 0x00;
|
||||||
@@ -241,8 +257,8 @@ void LEFTLOW_CS1237_Init(void)
|
|||||||
CS1237_1MS(20);
|
CS1237_1MS(20);
|
||||||
if(read_reg != set_reg){
|
if(read_reg != set_reg){
|
||||||
DBG_LOG("LEFTLOW CS1237 Init ERR...\r\n");
|
DBG_LOG("LEFTLOW CS1237 Init ERR...\r\n");
|
||||||
DBG_LOG("set_reg = %02X\tread_reg = %02X\r\n",set_reg,read_reg);
|
//DBG_LOG("set_reg = %02X\tread_reg = %02X\r\n",set_reg,read_reg);
|
||||||
InitFlag = false;
|
InitFlag = true;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
DBG_LOG("LEFTLOW CS1237 Init OK...\r\n");
|
DBG_LOG("LEFTLOW CS1237 Init OK...\r\n");
|
||||||
@@ -250,6 +266,7 @@ void LEFTLOW_CS1237_Init(void)
|
|||||||
CS1237Port = read_reg & 0x03;
|
CS1237Port = read_reg & 0x03;
|
||||||
InitFlag = true;
|
InitFlag = true;
|
||||||
}
|
}
|
||||||
|
CS1237IntDisable();
|
||||||
}
|
}
|
||||||
void LEFTLOW_CS1237DataLoopCollect(void)
|
void LEFTLOW_CS1237DataLoopCollect(void)
|
||||||
{
|
{
|
||||||
@@ -258,10 +275,10 @@ void LEFTLOW_CS1237DataLoopCollect(void)
|
|||||||
static uint8_t TimeOutmagcnt;
|
static uint8_t TimeOutmagcnt;
|
||||||
|
|
||||||
switch(LEFTLOW_CS1237Var.Status) {
|
switch(LEFTLOW_CS1237Var.Status) {
|
||||||
case CS1237_STATUS_IDLE:{
|
case LLCS1237_STATUS_IDLE:{
|
||||||
break;}
|
break;}
|
||||||
|
|
||||||
case CS1237_STATUS_START:{
|
case LLCS1237_STATUS_START:{
|
||||||
memset(&ad_array, 0x00, sizeof(ad_array));
|
memset(&ad_array, 0x00, sizeof(ad_array));
|
||||||
adcnt = 0;
|
adcnt = 0;
|
||||||
TimeOutmagcnt = 0;
|
TimeOutmagcnt = 0;
|
||||||
@@ -281,35 +298,35 @@ void LEFTLOW_CS1237DataLoopCollect(void)
|
|||||||
if(CS1237Hz == SPEED_SEL6_1280Hz){
|
if(CS1237Hz == SPEED_SEL6_1280Hz){
|
||||||
LEFTLOW_CS1237Var.CS1237Delay1mSCnt = tCon_1280Hz;
|
LEFTLOW_CS1237Var.CS1237Delay1mSCnt = tCon_1280Hz;
|
||||||
}
|
}
|
||||||
LEFTLOW_CS1237Var.Status = CS1237_STATUS_DELAY;
|
LEFTLOW_CS1237Var.Status = LLCS1237_STATUS_DELAY;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
LEFTLOW_CS1237Var.Status = CS1237_STATUS_READ;
|
LEFTLOW_CS1237Var.Status = LLCS1237_STATUS_READ;
|
||||||
}
|
}
|
||||||
break;}
|
break;}
|
||||||
|
|
||||||
case CS1237_STATUS_DELAY:{
|
case LLCS1237_STATUS_DELAY:{
|
||||||
if(LEFTLOW_CS1237Var.CS1237Delay1mSCnt <= 0){
|
if(LEFTLOW_CS1237Var.CS1237Delay1mSCnt <= 0){
|
||||||
LEFTLOW_CS1237Var.Status = CS1237_STATUS_READ;
|
LEFTLOW_CS1237Var.Status = LLCS1237_STATUS_READ;
|
||||||
}
|
}
|
||||||
break;}
|
break;}
|
||||||
|
|
||||||
case CS1237_STATUS_READ:{
|
case LLCS1237_STATUS_READ:{
|
||||||
CS1237IrqFlag = false;
|
CS1237IrqFlag = false;
|
||||||
LEFTLOW_CS1237Var.CS1237Delay1mSCnt = 100;
|
LEFTLOW_CS1237Var.CS1237Delay1mSCnt = 100;
|
||||||
LEFTLOW_CS1237Var.Status = CS1237_STATUS_WAIT_READ;
|
LEFTLOW_CS1237Var.Status = LLCS1237_STATUS_WAIT_READ;
|
||||||
break;}
|
break;}
|
||||||
|
|
||||||
case CS1237_STATUS_WAIT_READ:{
|
case LLCS1237_STATUS_WAIT_READ:{
|
||||||
if(LEFTLOW_CS1237Var.CS1237Delay1mSCnt <= 0){
|
if(LEFTLOW_CS1237Var.CS1237Delay1mSCnt <= 0){
|
||||||
LEFTLOW_CS1237Var.Status = CS1237_STATUS_READ;
|
LEFTLOW_CS1237Var.Status = LLCS1237_STATUS_READ;
|
||||||
TimeOutmagcnt++;
|
TimeOutmagcnt++;
|
||||||
}
|
}
|
||||||
if(CS1237IrqFlag == true){
|
if(CS1237IrqFlag == true){
|
||||||
CS1237IrqFlag = false;
|
CS1237IrqFlag = false;
|
||||||
ad_array[adcnt++] = Read_CS1237_Ad_Data();
|
ad_array[adcnt++] = Read_CS1237_Ad_Data();
|
||||||
LEFTLOW_CS1237Var.Status = CS1237_STATUS_READ;
|
LEFTLOW_CS1237Var.Status = LLCS1237_STATUS_READ;
|
||||||
}
|
}
|
||||||
if(TimeOutmagcnt >= PACK_NUM){
|
if(TimeOutmagcnt >= PACK_NUM){
|
||||||
TimeOutmagcnt = 0;
|
TimeOutmagcnt = 0;
|
||||||
@@ -326,19 +343,19 @@ void LEFTLOW_CS1237DataLoopCollect(void)
|
|||||||
LEFTLOW_CS1237Var.Jump_AD = IntFilter_32t(ad_array, adcnt, FILTER_NUM);
|
LEFTLOW_CS1237Var.Jump_AD = IntFilter_32t(ad_array, adcnt, FILTER_NUM);
|
||||||
//CS1237JumpDataProcessCallBack(LEFTLOW_CS1237Var.Jump_AD);
|
//CS1237JumpDataProcessCallBack(LEFTLOW_CS1237Var.Jump_AD);
|
||||||
}
|
}
|
||||||
LEFTLOW_CS1237Var.Status = CS1237_STATUS_CH_SEL;
|
LEFTLOW_CS1237Var.Status = LLCS1237_STATUS_CH_SEL;
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
if(CS1237Port == CH_SEL_A){
|
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){
|
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){
|
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){
|
if(adcnt >= PACK_NUM){
|
||||||
@@ -354,12 +371,12 @@ void LEFTLOW_CS1237DataLoopCollect(void)
|
|||||||
LEFTLOW_CS1237Var.Jump_AD = IntFilter_32t(ad_array, adcnt, FILTER_NUM);
|
LEFTLOW_CS1237Var.Jump_AD = IntFilter_32t(ad_array, adcnt, FILTER_NUM);
|
||||||
//CS1237JumpDataProcessCallBack(LEFTLOW_CS1237Var.Jump_AD);
|
//CS1237JumpDataProcessCallBack(LEFTLOW_CS1237Var.Jump_AD);
|
||||||
}
|
}
|
||||||
LEFTLOW_CS1237Var.Status = CS1237_STATUS_CH_SEL;
|
LEFTLOW_CS1237Var.Status = LLCS1237_STATUS_CH_SEL;
|
||||||
}
|
}
|
||||||
break;}
|
break;}
|
||||||
|
|
||||||
case CS1237_STATUS_CH_SEL:{
|
case LLCS1237_STATUS_CH_SEL:{
|
||||||
LEFTLOW_CS1237Var.Status = CS1237_STATUS_STOP;
|
LEFTLOW_CS1237Var.Status = LLCS1237_STATUS_STOP;
|
||||||
BuildDelay = false;
|
BuildDelay = false;
|
||||||
uint8_t read_reg;
|
uint8_t read_reg;
|
||||||
if(CS1237Port == CH_SEL_A){
|
if(CS1237Port == CH_SEL_A){
|
||||||
@@ -414,10 +431,10 @@ void LEFTLOW_CS1237DataLoopCollect(void)
|
|||||||
}
|
}
|
||||||
break;}
|
break;}
|
||||||
|
|
||||||
case CS1237_STATUS_STOP:{
|
case LLCS1237_STATUS_STOP:{
|
||||||
//CS1237Stop();
|
LEFTLOW_CS1237Stop();
|
||||||
//LEFTLOW_CS1237Var.Status = CS1237_STATUS_IDLE;
|
LEFTLOW_CS1237Var.Status = LLCS1237_STATUS_IDLE;
|
||||||
LEFTLOW_CS1237Var.Status = CS1237_STATUS_START;//持续工作
|
//LEFTLOW_CS1237Var.Status = LLCS1237_STATUS_START;//持续工作
|
||||||
break;}
|
break;}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -426,22 +443,22 @@ void LEFTLOW_CS12371mSRoutine(void)
|
|||||||
if(LEFTLOW_CS1237Var.CS1237Delay1mSCnt > 0)
|
if(LEFTLOW_CS1237Var.CS1237Delay1mSCnt > 0)
|
||||||
LEFTLOW_CS1237Var.CS1237Delay1mSCnt--;
|
LEFTLOW_CS1237Var.CS1237Delay1mSCnt--;
|
||||||
}
|
}
|
||||||
void LEFTLOW_CS1238Start(void)
|
void LEFTLOW_CS1237Start(void)
|
||||||
{
|
{
|
||||||
CS1237_WakeUp();
|
CS1237_WakeUp();
|
||||||
CS1237_1MS(2);
|
CS1237_1MS(2);
|
||||||
BuildDelay = true;
|
BuildDelay = true;
|
||||||
LEFTLOW_CS1237IntEnable();
|
CS1237IntEnable();
|
||||||
if(!InitFlag){
|
if(!InitFlag){
|
||||||
LEFTLOW_CS1237_Init();
|
LEFTLOW_CS1237_Init();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
LEFTLOW_CS1237Var.Status = CS1237_STATUS_START;
|
LEFTLOW_CS1237Var.Status = LLCS1237_STATUS_START;
|
||||||
}
|
}
|
||||||
void LEFTLOW_CS1237Stop(void)
|
void LEFTLOW_CS1237Stop(void)
|
||||||
{
|
{
|
||||||
LEFTLOW_CS1237IntDisable();
|
CS1237IntDisable();
|
||||||
CS1237_Sleep();
|
//CS1237_Sleep();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -26,18 +26,6 @@
|
|||||||
#define CH_SEL_TEMP 0x02
|
#define CH_SEL_TEMP 0x02
|
||||||
#define CH_SEL_JUMP 0x03
|
#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*/
|
/*Definition of conversion time corresponding to repeatability setting*/
|
||||||
/*
|
/*
|
||||||
10Hz //建立时间300ms
|
10Hz //建立时间300ms
|
||||||
@@ -54,35 +42,33 @@
|
|||||||
//#define PORT_B 1 //采集通道B
|
//#define PORT_B 1 //采集通道B
|
||||||
#define PORT_TEMP 0 //采集温度
|
#define PORT_TEMP 0 //采集温度
|
||||||
#define PORT_JUMP 0 //内短采集
|
#define PORT_JUMP 0 //内短采集
|
||||||
#define PACK_NUM 10 //一次采集的数据包数量
|
#define PACK_NUM 1 //一次采集的数据包数量
|
||||||
#define FILTER_NUM 4 //滤波数
|
#define FILTER_NUM 0 //滤波数
|
||||||
|
|
||||||
typedef enum{
|
typedef enum{
|
||||||
CS1237_STATUS_IDLE,
|
LLCS1237_STATUS_IDLE,
|
||||||
CS1237_STATUS_START,
|
LLCS1237_STATUS_START,
|
||||||
CS1237_STATUS_DELAY,
|
LLCS1237_STATUS_DELAY,
|
||||||
CS1237_STATUS_READ,
|
LLCS1237_STATUS_READ,
|
||||||
CS1237_STATUS_WAIT_READ,
|
LLCS1237_STATUS_WAIT_READ,
|
||||||
CS1237_STATUS_CH_SEL,
|
LLCS1237_STATUS_CH_SEL,
|
||||||
CS1237_STATUS_STOP,
|
LLCS1237_STATUS_STOP,
|
||||||
}CS1237Status_m;
|
}LeftLowCS1237Status_m;
|
||||||
|
|
||||||
typedef struct{
|
typedef struct{
|
||||||
CS1237Status_m Status;
|
LeftLowCS1237Status_m Status;
|
||||||
uint32_t CS1237Delay1mSCnt;
|
uint32_t CS1237Delay1mSCnt;
|
||||||
|
|
||||||
int32_t AinA_AD;//AINAad数据
|
int32_t AinA_AD;//AINAad数据
|
||||||
//int32_t Ain2_AD;//AIN2ad数据
|
//int32_t AinB_AD;//AINBad数据
|
||||||
int32_t Temp_AD;//温度ad数据
|
int32_t Temp_AD;//温度ad数据
|
||||||
int32_t Jump_AD;//内短ad数据
|
int32_t Jump_AD;//内短ad数据
|
||||||
}
|
}
|
||||||
LEFTLOW_CS1237Var_t;
|
LEFTLOW_CS1237Var_t;
|
||||||
extern LEFTLOW_CS1237Var_t LEFTLOW_CS1237Var;
|
|
||||||
|
|
||||||
void LEFTLOW_CS1237_Init(void);
|
void LEFTLOW_CS1237_Init(void);
|
||||||
void LEFTLOW_CS1237_IrqCallBack(void);
|
void LEFTLOW_CS1237_IrqCallBack(void);
|
||||||
void LEFTLOW_CS1237DataLoopCollect(void);
|
void LEFTLOW_CS1237DataLoopCollect(void);
|
||||||
void LEFTLOW_CS1237LoopHandler(void);
|
|
||||||
void LEFTLOW_CS12371mSRoutine(void);
|
void LEFTLOW_CS12371mSRoutine(void);
|
||||||
void LEFTLOW_CS1237Start(void);
|
void LEFTLOW_CS1237Start(void);
|
||||||
void LEFTLOW_CS1237Stop(void);
|
void LEFTLOW_CS1237Stop(void);
|
||||||
|
|||||||
@@ -1,189 +1,203 @@
|
|||||||
#include "CS1238.h"
|
#include "CS1237_LEFTUP.h"
|
||||||
#include "UartDebug.h"
|
#include "Debug.h"
|
||||||
#include "bsp.h"
|
#include "bsp.h"
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "Algorithm.h"
|
#include "Algorithm.h"
|
||||||
|
|
||||||
CS1238Var_t CS1238Var;
|
#define CS1237_DOUT_OUT() PORT_OE(LEFTUP_CS1237_DOUT_PORTx, LEFTUP_CS1237_DOUT_PINx, Enable)
|
||||||
static bool InitFlag;
|
#define CS1237_DOUT_IN() PORT_OE(LEFTUP_CS1237_DOUT_PORTx, LEFTUP_CS1237_DOUT_PINx, Disable)
|
||||||
static bool CS1238IrqFlag;
|
#define CS1237_DOUT_H() SET_LEFTUP_CS1237_DOUT()
|
||||||
static bool BuildDelay;
|
#define CS1237_DOUT_L() CLR_LEFTUP_CS1237_DOUT()
|
||||||
static uint8_t CS1238Port;
|
#define CS1237_DOUT_GET() GET_LEFTUP_CS1237_DOUT()
|
||||||
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 时序时钟*/
|
#define CS1237_SCLK_H() SET_LEFTUP_CS1237_SCLK()
|
||||||
static void CS1238_Clock(void)
|
#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();
|
CS1237_SCLK_H();
|
||||||
CS1238_100NS(3);
|
CS1237_5NS(60);
|
||||||
CS1238_SCLK_L();
|
CS1237_SCLK_L();
|
||||||
CS1238_100NS(3);
|
CS1237_5NS(60);
|
||||||
}
|
}
|
||||||
/** cs1238 休眠*/
|
/** cs1237 休眠*/
|
||||||
static void CS1238_Sleep(void)
|
static void CS1237_Sleep(void)
|
||||||
{
|
{
|
||||||
CS1238_SCLK_H();
|
CS1237_SCLK_H();
|
||||||
CS1238_1US(150);
|
CS1237_1US(200);
|
||||||
}
|
}
|
||||||
/** cs1238 唤醒*/
|
/** cs1237 唤醒*/
|
||||||
static void CS1238_WakeUp(void)
|
static void CS1237_WakeUp(void)
|
||||||
{
|
{
|
||||||
CS1238_SCLK_L();
|
CS1237_SCLK_L();
|
||||||
CS1238_1US(20);
|
CS1237_1US(20);
|
||||||
}
|
}
|
||||||
/**设置CS1238寄存器*/
|
/**设置CS1237寄存器*/
|
||||||
static void Set_CS1238_Config(uint8_t ad_reg)
|
static void Set_CS1237_Config(uint8_t ad_reg)
|
||||||
{
|
{
|
||||||
uint16_t bit_cout = 0;
|
uint16_t bit_cout = 0;
|
||||||
uint8_t reg_temp = 0x00;
|
uint8_t reg_temp = 0x00;
|
||||||
//DOUT由高变低之后开始读取数据
|
//DOUT由高变低之后开始读取数据
|
||||||
CS1238_DOUT_OUT();
|
CS1237_DOUT_OUT();
|
||||||
CS1238_DOUT_H();
|
CS1237_DOUT_H();
|
||||||
CS1238_DOUT_IN();
|
CS1237_DOUT_IN();
|
||||||
CS1238_SCLK_L(); //时钟拉低
|
CS1237_SCLK_L(); //时钟拉低
|
||||||
CS1238Var.CS1238Delay1mSCnt = 300;
|
LEFTUP_CS1237Var.CS1237Delay1mSCnt = 300;
|
||||||
CS1238IrqFlag = false;
|
CS1237IrqFlag = false;
|
||||||
while(CS1238IrqFlag == false) //等待芯片准备好
|
while(CS1237IrqFlag == false) //等待芯片准备好
|
||||||
{
|
{
|
||||||
if(CS1238Var.CS1238Delay1mSCnt <= 0){
|
if(LEFTUP_CS1237Var.CS1237Delay1mSCnt <= 0){
|
||||||
DBG_LOG("CS1238 Preparation Timeout...\r\n");
|
//DBG_LOG("LEFTUP CS1237 Preparation Timeout...\r\n");
|
||||||
return; // 超时退出
|
return; // 超时退出
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
CS1238IntDisable();
|
CS1237IntDisable();
|
||||||
CS1238IrqFlag = false;
|
CS1237IrqFlag = false;
|
||||||
|
|
||||||
|
|
||||||
/* clk1-clk26 写期间不需要操作*/
|
/* clk1-clk26 写期间不需要操作*/
|
||||||
for (bit_cout = 0; bit_cout < 26; bit_cout++)
|
for (bit_cout = 0; bit_cout < 26; bit_cout++)
|
||||||
{
|
{
|
||||||
CS1238_Clock(); //给一周期时钟
|
CS1237_Clock(); //给一周期时钟
|
||||||
}
|
}
|
||||||
/* clk27 DOUT输出拉高*/
|
/* clk27 DOUT输出拉高*/
|
||||||
CS1238_Clock(); //给一周期时钟
|
CS1237_Clock(); //给一周期时钟
|
||||||
CS1238_DOUT_H();
|
CS1237_DOUT_H();
|
||||||
/* clk28 - clk29 发送写寄存器命令字 */
|
/* clk28 - clk29 发送写寄存器命令字 */
|
||||||
CS1238_Clock(); //给一周期时钟
|
CS1237_Clock(); //给一周期时钟
|
||||||
CS1238_Clock(); //给一周期时钟
|
CS1237_Clock(); //给一周期时钟
|
||||||
|
|
||||||
/* clk30 - clk36 发送写寄存器命令字 */
|
/* clk30 - clk36 发送写寄存器命令字 */
|
||||||
CS1238_DOUT_OUT();
|
CS1237_DOUT_OUT();
|
||||||
reg_temp = WRITE_CONFIG_CMD << 1; //命令长度为 7bits (写0x65)左移1位
|
reg_temp = WRITE_CONFIG_CMD << 1; //命令长度为 7bits (写0x65)左移1位
|
||||||
for (bit_cout = 0; bit_cout < 7; bit_cout++)
|
for (bit_cout = 0; bit_cout < 7; bit_cout++)
|
||||||
{
|
{
|
||||||
if (reg_temp & 0x80) //MSB
|
if (reg_temp & 0x80) //MSB
|
||||||
{
|
{
|
||||||
CS1238_DOUT_H();
|
CS1237_DOUT_H();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
CS1238_DOUT_L();
|
CS1237_DOUT_L();
|
||||||
}
|
}
|
||||||
reg_temp = reg_temp << 1;
|
reg_temp = reg_temp << 1;
|
||||||
CS1238_Clock();
|
CS1237_Clock();
|
||||||
}
|
}
|
||||||
/* clk37写寄存器模式还是输出 */
|
/* clk37写寄存器模式还是输出 */
|
||||||
CS1238_Clock();
|
CS1237_Clock();
|
||||||
/* clk38 ~ clk45 写入寄存器值 */
|
/* clk38 ~ clk45 写入寄存器值 */
|
||||||
reg_temp = ad_reg;//要配件的寄存器数值
|
reg_temp = ad_reg;//要配件的寄存器数值
|
||||||
for (bit_cout = 0; bit_cout < 8; bit_cout++)
|
for (bit_cout = 0; bit_cout < 8; bit_cout++)
|
||||||
{
|
{
|
||||||
if (reg_temp & 0x80) //MSB
|
if (reg_temp & 0x80) //MSB
|
||||||
{
|
{
|
||||||
CS1238_DOUT_H();
|
CS1237_DOUT_H();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
CS1238_DOUT_L();
|
CS1237_DOUT_L();
|
||||||
}
|
}
|
||||||
reg_temp = reg_temp << 1;
|
reg_temp = reg_temp << 1;
|
||||||
CS1238_Clock();
|
CS1237_Clock();
|
||||||
}
|
}
|
||||||
/* 8: clk46 */
|
/* 8: clk46 */
|
||||||
CS1238_Clock();
|
CS1237_Clock();
|
||||||
CS1238_DOUT_H();
|
CS1237_DOUT_H();
|
||||||
CS1238_DOUT_IN();
|
CS1237_DOUT_IN();
|
||||||
CS1238IntEnable();
|
CS1237IntEnable();
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**读CS1238寄存器*/
|
/**读CS1237寄存器*/
|
||||||
static int32_t Read_CS1238_Config(void)
|
static int32_t Read_CS1237_Config(void)
|
||||||
{
|
{
|
||||||
uint16_t bit_cout = 0;
|
uint16_t bit_cout = 0;
|
||||||
uint8_t reg_temp = 0x00;
|
uint8_t reg_temp = 0x00;
|
||||||
//DOUT由高变低之后开始读取数据
|
//DOUT由高变低之后开始读取数据
|
||||||
CS1238_DOUT_OUT();
|
CS1237_DOUT_OUT();
|
||||||
CS1238_DOUT_H();
|
CS1237_DOUT_H();
|
||||||
CS1238_DOUT_IN();
|
CS1237_DOUT_IN();
|
||||||
CS1238_SCLK_L(); //时钟拉低
|
CS1237_SCLK_L(); //时钟拉低
|
||||||
CS1238Var.CS1238Delay1mSCnt = 300;
|
LEFTUP_CS1237Var.CS1237Delay1mSCnt = 300;
|
||||||
CS1238IrqFlag = false;
|
CS1237IrqFlag = false;
|
||||||
while(CS1238IrqFlag == false) //等待芯片准备好
|
while(CS1237IrqFlag == false) //等待芯片准备好
|
||||||
{
|
{
|
||||||
if(CS1238Var.CS1238Delay1mSCnt <= 0){
|
if(LEFTUP_CS1237Var.CS1237Delay1mSCnt <= 0){
|
||||||
DBG_LOG("CS1238 Preparation Timeout...\r\n");
|
//DBG_LOG("LEFTUP CS1237 Preparation Timeout...\r\n");
|
||||||
return 0; // 超时退出
|
return 0; // 超时退出
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
CS1238IntDisable();
|
CS1237IntDisable();
|
||||||
CS1238IrqFlag = false;
|
CS1237IrqFlag = false;
|
||||||
|
|
||||||
/* clk1-clk26 写期间不需要操作*/
|
/* clk1-clk26 写期间不需要操作*/
|
||||||
for (bit_cout = 0; bit_cout < 26; bit_cout++)
|
for (bit_cout = 0; bit_cout < 26; bit_cout++)
|
||||||
{
|
{
|
||||||
CS1238_Clock(); //给一周期时钟
|
CS1237_Clock(); //给一周期时钟
|
||||||
}
|
}
|
||||||
/* clk27 DOUT输出拉高*/
|
/* clk27 DOUT输出拉高*/
|
||||||
CS1238_Clock(); //给一周期时钟
|
CS1237_Clock(); //给一周期时钟
|
||||||
CS1238_DOUT_H();
|
CS1237_DOUT_H();
|
||||||
/* clk28 - clk29 发送写寄存器命令字 */
|
/* clk28 - clk29 发送写寄存器命令字 */
|
||||||
CS1238_Clock(); //给一周期时钟
|
CS1237_Clock(); //给一周期时钟
|
||||||
CS1238_Clock(); //给一周期时钟
|
CS1237_Clock(); //给一周期时钟
|
||||||
|
|
||||||
/* clk30 - clk36 发送读寄存器命令字 */
|
/* clk30 - clk36 发送读寄存器命令字 */
|
||||||
CS1238_DOUT_OUT();
|
CS1237_DOUT_OUT();
|
||||||
reg_temp = READ_CONFIG_CMD << 1; //命令长度为 7bits (写0x56)左移1位
|
reg_temp = READ_CONFIG_CMD << 1; //命令长度为 7bits (写0x56)左移1位
|
||||||
for (bit_cout = 0; bit_cout < 7; bit_cout++)
|
for (bit_cout = 0; bit_cout < 7; bit_cout++)
|
||||||
{
|
{
|
||||||
if (reg_temp & 0x80) //MSB
|
if (reg_temp & 0x80) //MSB
|
||||||
{
|
{
|
||||||
CS1238_DOUT_H();
|
CS1237_DOUT_H();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
CS1238_DOUT_L();
|
CS1237_DOUT_L();
|
||||||
}
|
}
|
||||||
reg_temp = reg_temp << 1;
|
reg_temp = reg_temp << 1;
|
||||||
CS1238_Clock();
|
CS1237_Clock();
|
||||||
}
|
}
|
||||||
/* clk37,读寄存器模式改输入 */
|
/* clk37,读寄存器模式改输入 */
|
||||||
CS1238_Clock();
|
CS1237_Clock();
|
||||||
CS1238_DOUT_IN();
|
CS1237_DOUT_IN();
|
||||||
for (bit_cout = 0; bit_cout < 8; bit_cout++)
|
for (bit_cout = 0; bit_cout < 8; bit_cout++)
|
||||||
{
|
{
|
||||||
CS1238_SCLK_H();
|
CS1237_SCLK_H();
|
||||||
reg_temp <<= 1; //左移1位准备接受数据 初始默认0
|
reg_temp <<= 1; //左移1位准备接受数据 初始默认0
|
||||||
CS1238_100NS(3);//延时300ns
|
CS1237_5NS(60);//延时300ns
|
||||||
if(GET_CS1238_DOUT() == true) //有数值则累加
|
if(CS1237_DOUT_GET() == true) //有数值则累加
|
||||||
reg_temp |= 1;
|
reg_temp |= 1;
|
||||||
CS1238_SCLK_L();
|
CS1237_SCLK_L();
|
||||||
CS1238_100NS(3);
|
CS1237_5NS(60);
|
||||||
}
|
}
|
||||||
/* 8: clk46 */
|
/* 8: clk46 */
|
||||||
CS1238_Clock();
|
CS1237_Clock();
|
||||||
CS1238_DOUT_IN();
|
CS1237_DOUT_IN();
|
||||||
CS1238_DOUT_H();
|
CS1237_DOUT_H();
|
||||||
CS1238IntEnable();
|
CS1237IntEnable();
|
||||||
return reg_temp ;
|
return reg_temp ;
|
||||||
}
|
}
|
||||||
/**读取CS1238的AD数*/
|
/**读取CS1237的AD数*/
|
||||||
static int32_t Read_CS1238_Ad_Data(void)
|
static int32_t Read_CS1237_Ad_Data(void)
|
||||||
{
|
{
|
||||||
uint16_t bit_cout = 0;
|
uint16_t bit_cout = 0;
|
||||||
int32_t data_temp = 0;
|
int32_t data_temp = 0;
|
||||||
@@ -192,22 +206,22 @@ static int32_t Read_CS1238_Ad_Data(void)
|
|||||||
data_temp = 0;
|
data_temp = 0;
|
||||||
for (bit_cout = 0; bit_cout < 24; bit_cout++)
|
for (bit_cout = 0; bit_cout < 24; bit_cout++)
|
||||||
{
|
{
|
||||||
CS1238_SCLK_H();
|
CS1237_SCLK_H();
|
||||||
data_temp <<= 1; //左移1位准备接受数据 初始默认0
|
data_temp <<= 1; //左移1位准备接受数据 初始默认0
|
||||||
CS1238_100NS(3);//延时300ns
|
CS1237_5NS(60);//延时300ns
|
||||||
if(GET_CS1238_DOUT() == true) //有数值则累加
|
if(CS1237_DOUT_GET() == true) //有数值则累加
|
||||||
data_temp |= 1;
|
data_temp |= 1;
|
||||||
CS1238_SCLK_L();
|
CS1237_SCLK_L();
|
||||||
CS1238_100NS(3);
|
CS1237_5NS(60);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* clk25 ~ clk27 */
|
/* clk25 ~ clk27 */
|
||||||
for (bit_cout = 24; bit_cout < 27; bit_cout++)
|
for (bit_cout = 24; bit_cout < 27; bit_cout++)
|
||||||
{
|
{
|
||||||
CS1238_Clock(); //给一周期时钟
|
CS1237_Clock(); //给一周期时钟
|
||||||
}
|
}
|
||||||
CS1238_DOUT_H();
|
CS1237_DOUT_H();
|
||||||
CS1238_SCLK_L();
|
CS1237_SCLK_L();
|
||||||
|
|
||||||
if(data_temp > 0x7FFFFF) //取24位
|
if(data_temp > 0x7FFFFF) //取24位
|
||||||
{
|
{
|
||||||
@@ -216,190 +230,172 @@ static int32_t Read_CS1238_Ad_Data(void)
|
|||||||
return data_temp;
|
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;
|
BuildDelay = false;
|
||||||
CS1238IntEnable();
|
LEFTUP_CS1237Var.AinA_AD = 0;
|
||||||
CS1238Var.Ain1_AD = 0;
|
LEFTUP_CS1237Var.Temp_AD = 0;
|
||||||
CS1238Var.Ain2_AD = 0;
|
LEFTUP_CS1237Var.Jump_AD = 0;
|
||||||
CS1238Var.Temp_AD = 0;
|
|
||||||
CS1238Var.Jump_AD = 0;
|
|
||||||
|
|
||||||
CS1238Port = CH_SEL_A;
|
CS1237IntEnable();
|
||||||
CS1238Hz = SPEED_SEL_640Hz;
|
CS1237Port = CH_SEL_A;
|
||||||
CS1238PGA = PGA_SEL_128;
|
CS1237Hz = SPEED_SEL_640Hz;
|
||||||
|
CS1237PGA = PGA_SEL_128;
|
||||||
|
|
||||||
uint8_t read_reg = 0x00;
|
uint8_t read_reg = 0x00;
|
||||||
uint8_t set_reg = REFO_ON | CS1238Hz | CS1238PGA | CS1238Port;
|
uint8_t set_reg = REFO_ON | CS1237Hz | CS1237PGA | CS1237Port;
|
||||||
CS1238_1MS(20);
|
CS1237_1MS(20);
|
||||||
Set_CS1238_Config(set_reg);
|
Set_CS1237_Config(set_reg);
|
||||||
CS1238_1MS(20);
|
CS1237_1MS(20);
|
||||||
read_reg = Read_CS1238_Config();
|
read_reg = Read_CS1237_Config();
|
||||||
CS1238_1MS(20);
|
CS1237_1MS(20);
|
||||||
if(read_reg != set_reg){
|
if(read_reg != set_reg){
|
||||||
DBG_LOG("CS1238 Init ERR...\r\n");
|
DBG_LOG("LEFTUP CS1237 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);
|
//DBG_LOG("set_reg = %02X\tread_reg = %02X\r\n",set_reg,read_reg);
|
||||||
CS1238Port = read_reg & 0x03;
|
|
||||||
InitFlag = true;
|
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 int32_t ad_array[PACK_NUM];
|
||||||
static uint8_t adcnt;
|
static uint8_t adcnt;
|
||||||
static uint8_t TimeOutmagcnt;
|
static uint8_t TimeOutmagcnt;
|
||||||
|
|
||||||
switch(CS1238Var.Status) {
|
switch(LEFTUP_CS1237Var.Status) {
|
||||||
case CS1238_STATUS_IDLE:{
|
case LUCS1237_STATUS_IDLE:{
|
||||||
break;}
|
break;}
|
||||||
|
|
||||||
case CS1238_STATUS_START:{
|
case LUCS1237_STATUS_START:{
|
||||||
memset(&ad_array, 0x00, sizeof(ad_array));
|
memset(&ad_array, 0x00, sizeof(ad_array));
|
||||||
adcnt = 0;
|
adcnt = 0;
|
||||||
TimeOutmagcnt = 0;
|
TimeOutmagcnt = 0;
|
||||||
memset(&CS1238Var, NULL, sizeof(CS1238Var));
|
memset(&LEFTUP_CS1237Var, NULL, sizeof(LEFTUP_CS1237Var));
|
||||||
if(BuildDelay == true)
|
if(BuildDelay == true)
|
||||||
{
|
{
|
||||||
BuildDelay = false;
|
BuildDelay = false;
|
||||||
if(CS1238Hz == SPEED_SEL_10Hz){
|
if(CS1237Hz == SPEED_SEL_10Hz){
|
||||||
CS1238Var.CS1238Delay1mSCnt = tCon_10Hz;
|
LEFTUP_CS1237Var.CS1237Delay1mSCnt = tCon_10Hz;
|
||||||
}
|
}
|
||||||
if(CS1238Hz == SPEED_SEL_40Hz){
|
if(CS1237Hz == SPEED_SEL_40Hz){
|
||||||
CS1238Var.CS1238Delay1mSCnt = tCon_40Hz;
|
LEFTUP_CS1237Var.CS1237Delay1mSCnt = tCon_40Hz;
|
||||||
}
|
}
|
||||||
if(CS1238Hz == SPEED_SEL_640Hz){
|
if(CS1237Hz == SPEED_SEL_640Hz){
|
||||||
CS1238Var.CS1238Delay1mSCnt = tCon_640Hz;
|
LEFTUP_CS1237Var.CS1237Delay1mSCnt = tCon_640Hz;
|
||||||
}
|
}
|
||||||
if(CS1238Hz == SPEED_SEL6_1280Hz){
|
if(CS1237Hz == SPEED_SEL6_1280Hz){
|
||||||
CS1238Var.CS1238Delay1mSCnt = tCon_1280Hz;
|
LEFTUP_CS1237Var.CS1237Delay1mSCnt = tCon_1280Hz;
|
||||||
}
|
}
|
||||||
CS1238Var.Status = CS1238_STATUS_DELAY;
|
LEFTUP_CS1237Var.Status = LUCS1237_STATUS_DELAY;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
CS1238Var.Status = CS1238_STATUS_READ;
|
LEFTUP_CS1237Var.Status = LUCS1237_STATUS_READ;
|
||||||
}
|
}
|
||||||
break;}
|
break;}
|
||||||
|
|
||||||
case CS1238_STATUS_DELAY:{
|
case LUCS1237_STATUS_DELAY:{
|
||||||
if(CS1238Var.CS1238Delay1mSCnt <= 0){
|
if(LEFTUP_CS1237Var.CS1237Delay1mSCnt <= 0){
|
||||||
CS1238Var.Status = CS1238_STATUS_READ;
|
LEFTUP_CS1237Var.Status = LUCS1237_STATUS_READ;
|
||||||
}
|
}
|
||||||
break;}
|
break;}
|
||||||
|
|
||||||
case CS1238_STATUS_READ:{
|
case LUCS1237_STATUS_READ:{
|
||||||
CS1238IrqFlag = false;
|
CS1237IrqFlag = false;
|
||||||
CS1238Var.CS1238Delay1mSCnt = 100;
|
LEFTUP_CS1237Var.CS1237Delay1mSCnt = 100;
|
||||||
CS1238Var.Status = CS1238_STATUS_WAIT_READ;
|
LEFTUP_CS1237Var.Status = LUCS1237_STATUS_WAIT_READ;
|
||||||
break;}
|
break;}
|
||||||
|
|
||||||
case CS1238_STATUS_WAIT_READ:{
|
case LUCS1237_STATUS_WAIT_READ:{
|
||||||
if(CS1238Var.CS1238Delay1mSCnt <= 0){
|
if(LEFTUP_CS1237Var.CS1237Delay1mSCnt <= 0){
|
||||||
CS1238Var.Status = CS1238_STATUS_READ;
|
LEFTUP_CS1237Var.Status = LUCS1237_STATUS_READ;
|
||||||
TimeOutmagcnt++;
|
TimeOutmagcnt++;
|
||||||
}
|
}
|
||||||
if(CS1238IrqFlag == true){
|
if(CS1237IrqFlag == true){
|
||||||
CS1238IrqFlag = false;
|
CS1237IrqFlag = false;
|
||||||
ad_array[adcnt++] = Read_CS1238_Ad_Data();
|
ad_array[adcnt++] = Read_CS1237_Ad_Data();
|
||||||
CS1238Var.Status = CS1238_STATUS_READ;
|
LEFTUP_CS1237Var.Status = LUCS1237_STATUS_READ;
|
||||||
}
|
}
|
||||||
if(TimeOutmagcnt >= PACK_NUM){
|
if(TimeOutmagcnt >= PACK_NUM){
|
||||||
TimeOutmagcnt = 0;
|
TimeOutmagcnt = 0;
|
||||||
if(adcnt > 0){
|
if(adcnt > 0){
|
||||||
if(CS1238Port == CH_SEL_A){
|
if(CS1237Port == CH_SEL_A){
|
||||||
CS1238Var.Ain1_AD = IntFilter_32t(ad_array, adcnt, 4);
|
LEFTUP_CS1237Var.AinA_AD = IntFilter_32t(ad_array, adcnt, FILTER_NUM);
|
||||||
CS1238Ain1DataProcessCallBack(CS1238Var.Ain1_AD);
|
LEFTUP_CS1237AinADataProcessCallBack(LEFTUP_CS1237Var.AinA_AD);
|
||||||
}
|
}
|
||||||
if(CS1238Port == CH_SEL_B){
|
if(CS1237Port == CH_SEL_TEMP){
|
||||||
CS1238Var.Ain2_AD = IntFilter_32t(ad_array, adcnt, 4);
|
LEFTUP_CS1237Var.Temp_AD = IntFilter_32t(ad_array, adcnt, FILTER_NUM);
|
||||||
CS1238Ain2DataProcessCallBack(CS1238Var.Ain2_AD);
|
//CS1237TempDataProcessCallBack(LEFTLOW_CS1237Var.Temp_AD);
|
||||||
}
|
}
|
||||||
if(CS1238Port == CH_SEL_TEMP){
|
if(CS1237Port == CH_SEL_JUMP){
|
||||||
CS1238Var.Temp_AD = IntFilter_32t(ad_array, adcnt, 4);
|
LEFTUP_CS1237Var.Jump_AD = IntFilter_32t(ad_array, adcnt, FILTER_NUM);
|
||||||
CS1238TempDataProcessCallBack(CS1238Var.Temp_AD);
|
//CS1237JumpDataProcessCallBack(LEFTLOW_CS1237Var.Jump_AD);
|
||||||
}
|
}
|
||||||
if(CS1238Port == CH_SEL_JUMP){
|
LEFTUP_CS1237Var.Status = LUCS1237_STATUS_CH_SEL;
|
||||||
CS1238Var.Jump_AD = IntFilter_32t(ad_array, adcnt, 4);
|
|
||||||
CS1238JumpDataProcessCallBack(CS1238Var.Jump_AD);
|
|
||||||
}
|
|
||||||
CS1238Var.Status = CS1238_STATUS_CH_SEL;
|
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
if(CS1238Port == CH_SEL_A){
|
if(CS1237Port == CH_SEL_A){
|
||||||
DBG_LOG("CS1238 CHA TimeOut...\r\n");
|
DBG_LOG("LEFTUPs CS1237 CHA TimeOut...\r\n");
|
||||||
}
|
}
|
||||||
if(CS1238Port == CH_SEL_B){
|
if(CS1237Port == CH_SEL_TEMP){
|
||||||
DBG_LOG("CS1238 CHB TimeOut...\r\n");
|
DBG_LOG("LEFTUP CS1237 Temp TimeOut...\r\n");
|
||||||
}
|
}
|
||||||
if(CS1238Port == CH_SEL_TEMP){
|
if(CS1237Port == CH_SEL_JUMP){
|
||||||
DBG_LOG("CS1238 Temp TimeOut...\r\n");
|
DBG_LOG("LEFTUP CS1237 Jump TimeOut...\r\n");
|
||||||
}
|
}
|
||||||
if(CS1238Port == CH_SEL_JUMP){
|
LEFTUP_CS1237Var.Status = LUCS1237_STATUS_CH_SEL;
|
||||||
DBG_LOG("CS1238 Jump TimeOut...\r\n");
|
|
||||||
}
|
|
||||||
CS1238Var.Status = CS1238_STATUS_CH_SEL;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(adcnt >= PACK_NUM){
|
if(adcnt >= PACK_NUM){
|
||||||
if(CS1238Port == CH_SEL_A){
|
if(CS1237Port == CH_SEL_A){
|
||||||
CS1238Var.Ain1_AD = IntFilter_32t(ad_array, adcnt, 4);
|
LEFTUP_CS1237Var.AinA_AD = IntFilter_32t(ad_array, adcnt, FILTER_NUM);
|
||||||
CS1238Ain1DataProcessCallBack(CS1238Var.Ain1_AD);
|
LEFTUP_CS1237AinADataProcessCallBack(LEFTUP_CS1237Var.AinA_AD);
|
||||||
}
|
}
|
||||||
if(CS1238Port == CH_SEL_B){
|
if(CS1237Port == CH_SEL_TEMP){
|
||||||
CS1238Var.Ain2_AD = IntFilter_32t(ad_array, adcnt, 4);
|
LEFTUP_CS1237Var.Temp_AD = IntFilter_32t(ad_array, adcnt, FILTER_NUM);
|
||||||
CS1238Ain2DataProcessCallBack(CS1238Var.Ain2_AD);
|
//CS1237TempDataProcessCallBack(LEFTLOW_CS1237Var.Temp_AD);
|
||||||
}
|
}
|
||||||
if(CS1238Port == CH_SEL_TEMP){
|
if(CS1237Port == CH_SEL_JUMP){
|
||||||
CS1238Var.Temp_AD = IntFilter_32t(ad_array, adcnt, 4);
|
LEFTUP_CS1237Var.Jump_AD = IntFilter_32t(ad_array, adcnt, FILTER_NUM);
|
||||||
CS1238TempDataProcessCallBack(CS1238Var.Temp_AD);
|
//CS1237JumpDataProcessCallBack(LEFTLOW_CS1237Var.Jump_AD);
|
||||||
}
|
}
|
||||||
if(CS1238Port == CH_SEL_JUMP){
|
LEFTUP_CS1237Var.Status = LUCS1237_STATUS_CH_SEL;
|
||||||
CS1238Var.Jump_AD = IntFilter_32t(ad_array, adcnt, 4);
|
|
||||||
CS1238JumpDataProcessCallBack(CS1238Var.Jump_AD);
|
|
||||||
}
|
|
||||||
CS1238Var.Status = CS1238_STATUS_CH_SEL;
|
|
||||||
}
|
}
|
||||||
break;}
|
break;}
|
||||||
|
|
||||||
case CS1238_STATUS_CH_SEL:{
|
case LUCS1237_STATUS_CH_SEL:{
|
||||||
CS1238Var.Status = CS1238_STATUS_STOP;
|
LEFTUP_CS1237Var.Status = LUCS1237_STATUS_STOP;
|
||||||
BuildDelay = false;
|
BuildDelay = false;
|
||||||
uint8_t read_reg;
|
uint8_t read_reg;
|
||||||
if(CS1238Port == CH_SEL_A){
|
if(CS1237Port == CH_SEL_A){
|
||||||
#if(PORT_TEMP == 1)
|
#if(PORT_TEMP == 1)
|
||||||
read_reg = Read_CS1238_Config();
|
read_reg = Read_CS1237_Config();
|
||||||
Set_CS1238_Config((read_reg & 0xFC) | CH_SEL_TEMP);
|
Set_CS1237_Config((read_reg & 0xFC) | CH_SEL_TEMP);
|
||||||
CS1238Port = CH_SEL_TEMP;
|
CS1237Port = CH_SEL_TEMP;
|
||||||
BuildDelay = true;
|
BuildDelay = true;
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
#if(PORT_JUMP == 1)
|
#if(PORT_JUMP == 1)
|
||||||
read_reg = Read_CS1238_Config();
|
read_reg = Read_CS1237_Config();
|
||||||
Set_CS1238_Config((read_reg & 0xFC) | CH_SEL_JUMP);
|
Set_CS1237_Config((read_reg & 0xFC) | CH_SEL_JUMP);
|
||||||
CS1238Port = CH_SEL_JUMP;
|
CS1237Port = CH_SEL_JUMP;
|
||||||
BuildDelay = true;
|
BuildDelay = true;
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
if(CS1238Port == CH_SEL_B){
|
if(CS1237Port == CH_SEL_TEMP){
|
||||||
#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)
|
#if(PORT_JUMP == 1)
|
||||||
read_reg = Read_CS1238_Config();
|
read_reg = Read_CS1238_Config();
|
||||||
Set_CS1238_Config((read_reg & 0xFC) | CH_SEL_JUMP);
|
Set_CS1238_Config((read_reg & 0xFC) | CH_SEL_JUMP);
|
||||||
@@ -408,77 +404,60 @@ void CS1238DataLoopCollect(void)
|
|||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
#if(PORT_A == 1)
|
#if(PORT_A == 1)
|
||||||
read_reg = Read_CS1238_Config();
|
read_reg = Read_CS1237_Config();
|
||||||
Set_CS1238_Config((read_reg & 0xFC) | CH_SEL_A);
|
Set_CS1237_Config((read_reg & 0xFC) | CH_SEL_A);
|
||||||
CS1238Port = CH_SEL_A;
|
CS1237Port = CH_SEL_A;
|
||||||
BuildDelay = true;
|
BuildDelay = true;
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
if(CS1238Port == CH_SEL_TEMP){
|
if(CS1237Port == CH_SEL_JUMP){
|
||||||
#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)
|
#if(PORT_A == 1)
|
||||||
read_reg = Read_CS1238_Config();
|
read_reg = Read_CS1237_Config();
|
||||||
Set_CS1238_Config((read_reg & 0xFC) | CH_SEL_A);
|
Set_CS1237_Config((read_reg & 0xFC) | CH_SEL_A);
|
||||||
CS1238Port = CH_SEL_A;
|
CS1237Port = 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;
|
BuildDelay = true;
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
#if(PORT_TEMP == 1)
|
#if(PORT_TEMP == 1)
|
||||||
read_reg = Read_CS1238_Config();
|
read_reg = Read_CS1237_Config();
|
||||||
Set_CS1238_Config((read_reg & 0xFC) | CH_SEL_TEMP);
|
Set_CS1237_Config((read_reg & 0xFC) | CH_SEL_TEMP);
|
||||||
CS1238Port = CH_SEL_TEMP;
|
CS1237Port = CH_SEL_TEMP;
|
||||||
BuildDelay = true;
|
BuildDelay = true;
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
break;}
|
break;}
|
||||||
|
|
||||||
case CS1238_STATUS_STOP:{
|
case LUCS1237_STATUS_STOP:{
|
||||||
//CS1238Stop();
|
LEFTUP_CS1237Stop();
|
||||||
//CS1238Var.Status = CS1238_STATUS_IDLE;
|
LEFTUP_CS1237Var.Status = LUCS1237_STATUS_IDLE;
|
||||||
CS1238Var.Status = CS1238_STATUS_START;//持续工作
|
//LEFTUP_CS1237Var.Status = LUCS1237_STATUS_START;//持续工作
|
||||||
break;}
|
break;}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void CS12381mSRoutine(void)
|
void LEFTUP_CS12371mSRoutine(void)
|
||||||
{
|
{
|
||||||
if(CS1238Var.CS1238Delay1mSCnt > 0)
|
if(LEFTUP_CS1237Var.CS1237Delay1mSCnt > 0)
|
||||||
CS1238Var.CS1238Delay1mSCnt--;
|
LEFTUP_CS1237Var.CS1237Delay1mSCnt--;
|
||||||
}
|
}
|
||||||
void CS1238Start(void)
|
void LEFTUP_CS1237Start(void)
|
||||||
{
|
{
|
||||||
CS1238_WakeUp();
|
CS1237_WakeUp();
|
||||||
CS1238_1MS(2);
|
CS1237_1MS(2);
|
||||||
BuildDelay = true;
|
BuildDelay = true;
|
||||||
CS1238IntEnable();
|
CS1237IntEnable();
|
||||||
if(!InitFlag){
|
if(!InitFlag){
|
||||||
CS1238_Init();
|
LEFTUP_CS1237_Init();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
CS1238Var.Status = CS1238_STATUS_START;
|
LEFTUP_CS1237Var.Status = LUCS1237_STATUS_START;
|
||||||
}
|
}
|
||||||
void CS1238Stop(void)
|
void LEFTUP_CS1237Stop(void)
|
||||||
{
|
{
|
||||||
CS1238IntDisable();
|
CS1237IntDisable();
|
||||||
CS1238_Sleep();
|
//CS1237_Sleep();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#include "bsp.h"
|
#include "bsp.h"
|
||||||
|
|
||||||
#ifndef _CS1238_H_
|
#ifndef _CS1237_LEFTUP_H_
|
||||||
#define _CS1238_H_
|
#define _CS1237_LEFTUP_H_
|
||||||
|
|
||||||
#define READ_CONFIG_CMD 0x56
|
#define READ_CONFIG_CMD 0x56
|
||||||
#define WRITE_CONFIG_CMD 0x65
|
#define WRITE_CONFIG_CMD 0x65
|
||||||
@@ -22,21 +22,11 @@
|
|||||||
#define PGA_SEL_128 0x0C
|
#define PGA_SEL_128 0x0C
|
||||||
|
|
||||||
#define CH_SEL_A 0x00
|
#define CH_SEL_A 0x00
|
||||||
#define CH_SEL_B 0x01
|
//#define CH_SEL_B 0x01
|
||||||
#define CH_SEL_TEMP 0x02
|
#define CH_SEL_TEMP 0x02
|
||||||
#define CH_SEL_JUMP 0x03
|
#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*/
|
/*Definition of conversion time corresponding to repeatability setting*/
|
||||||
/*
|
/*
|
||||||
@@ -51,40 +41,39 @@
|
|||||||
#define tCon_1280Hz 4 /* ms. */
|
#define tCon_1280Hz 4 /* ms. */
|
||||||
|
|
||||||
#define PORT_A 1 //采集通道A
|
#define PORT_A 1 //采集通道A
|
||||||
#define PORT_B 1 //采集通道B
|
//#define PORT_B 1 //采集通道B
|
||||||
#define PORT_TEMP 0 //采集温度
|
#define PORT_TEMP 0 //采集温度
|
||||||
#define PORT_JUMP 0 //内短采集
|
#define PORT_JUMP 0 //内短采集
|
||||||
#define PACK_NUM 10 //一次采集的数据包数量
|
#define PACK_NUM 1 //一次采集的数据包数量
|
||||||
|
#define FILTER_NUM 0 //滤波数
|
||||||
|
|
||||||
typedef enum{
|
typedef enum{
|
||||||
CS1238_STATUS_IDLE,
|
LUCS1237_STATUS_IDLE,
|
||||||
CS1238_STATUS_START,
|
LUCS1237_STATUS_START,
|
||||||
CS1238_STATUS_DELAY,
|
LUCS1237_STATUS_DELAY,
|
||||||
CS1238_STATUS_READ,
|
LUCS1237_STATUS_READ,
|
||||||
CS1238_STATUS_WAIT_READ,
|
LUCS1237_STATUS_WAIT_READ,
|
||||||
CS1238_STATUS_CH_SEL,
|
LUCS1237_STATUS_CH_SEL,
|
||||||
CS1238_STATUS_STOP,
|
LUCS1237_STATUS_STOP,
|
||||||
}CS1238Status_m;
|
}LeftUpCS1237Status_m;
|
||||||
|
|
||||||
typedef struct{
|
typedef struct{
|
||||||
CS1238Status_m Status;
|
LeftUpCS1237Status_m Status;
|
||||||
uint32_t CS1238Delay1mSCnt;
|
uint32_t CS1237Delay1mSCnt;
|
||||||
|
|
||||||
int32_t Ain1_AD;//AIN1ad数据
|
int32_t AinA_AD;//AINAad数据
|
||||||
int32_t Ain2_AD;//AIN2ad数据
|
//int32_t AinB_AD;//AINBad数据
|
||||||
int32_t Temp_AD;//温度ad数据
|
int32_t Temp_AD;//温度ad数据
|
||||||
int32_t Jump_AD;//内短ad数据
|
int32_t Jump_AD;//内短ad数据
|
||||||
}
|
}
|
||||||
CS1238Var_t;
|
LEFTUP_CS1237Var_t;
|
||||||
extern CS1238Var_t CS1238Var;
|
|
||||||
|
|
||||||
void CS1238_Init(void);
|
void LEFTUP_CS1237_Init(void);
|
||||||
void CS1238_IrqCallBack(void);
|
void LEFTUP_CS1237_IrqCallBack(void);
|
||||||
void CS1238DataLoopCollect(void);
|
void LEFTUP_CS1237DataLoopCollect(void);
|
||||||
void CS1238LoopHandler(void);
|
void LEFTUP_CS12371mSRoutine(void);
|
||||||
void CS12381mSRoutine(void);
|
void LEFTUP_CS1237Start(void);
|
||||||
void CS1238Start(void);
|
void LEFTUP_CS1237Stop(void);
|
||||||
void CS1238Stop(void);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -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
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -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();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,189 +1,203 @@
|
|||||||
#include "CS1238.h"
|
#include "CS1237_RIGHTUP.h"
|
||||||
#include "UartDebug.h"
|
#include "Debug.h"
|
||||||
#include "bsp.h"
|
#include "bsp.h"
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "Algorithm.h"
|
#include "Algorithm.h"
|
||||||
|
|
||||||
CS1238Var_t CS1238Var;
|
#define CS1237_DOUT_OUT() PORT_OE(RIGHTUP_CS1237_DOUT_PORTx, RIGHTUP_CS1237_DOUT_PINx, Enable)
|
||||||
static bool InitFlag;
|
#define CS1237_DOUT_IN() PORT_OE(RIGHTUP_CS1237_DOUT_PORTx, RIGHTUP_CS1237_DOUT_PINx, Disable)
|
||||||
static bool CS1238IrqFlag;
|
#define CS1237_DOUT_H() SET_RIGHTUP_CS1237_DOUT()
|
||||||
static bool BuildDelay;
|
#define CS1237_DOUT_L() CLR_RIGHTUP_CS1237_DOUT()
|
||||||
static uint8_t CS1238Port;
|
#define CS1237_DOUT_GET() GET_RIGHTUP_CS1237_DOUT()
|
||||||
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 时序时钟*/
|
#define CS1237_SCLK_H() SET_RIGHTUP_CS1237_SCLK()
|
||||||
static void CS1238_Clock(void)
|
#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();
|
CS1237_SCLK_H();
|
||||||
CS1238_100NS(3);
|
CS1237_5NS(60);
|
||||||
CS1238_SCLK_L();
|
CS1237_SCLK_L();
|
||||||
CS1238_100NS(3);
|
CS1237_5NS(60);
|
||||||
}
|
}
|
||||||
/** cs1238 休眠*/
|
/** cs1237 休眠*/
|
||||||
static void CS1238_Sleep(void)
|
static void CS1237_Sleep(void)
|
||||||
{
|
{
|
||||||
CS1238_SCLK_H();
|
CS1237_SCLK_H();
|
||||||
CS1238_1US(150);
|
CS1237_1US(200);
|
||||||
}
|
}
|
||||||
/** cs1238 唤醒*/
|
/** cs1237 唤醒*/
|
||||||
static void CS1238_WakeUp(void)
|
static void CS1237_WakeUp(void)
|
||||||
{
|
{
|
||||||
CS1238_SCLK_L();
|
CS1237_SCLK_L();
|
||||||
CS1238_1US(20);
|
CS1237_1US(20);
|
||||||
}
|
}
|
||||||
/**设置CS1238寄存器*/
|
/**设置CS1237寄存器*/
|
||||||
static void Set_CS1238_Config(uint8_t ad_reg)
|
static void Set_CS1237_Config(uint8_t ad_reg)
|
||||||
{
|
{
|
||||||
uint16_t bit_cout = 0;
|
uint16_t bit_cout = 0;
|
||||||
uint8_t reg_temp = 0x00;
|
uint8_t reg_temp = 0x00;
|
||||||
//DOUT由高变低之后开始读取数据
|
//DOUT由高变低之后开始读取数据
|
||||||
CS1238_DOUT_OUT();
|
CS1237_DOUT_OUT();
|
||||||
CS1238_DOUT_H();
|
CS1237_DOUT_H();
|
||||||
CS1238_DOUT_IN();
|
CS1237_DOUT_IN();
|
||||||
CS1238_SCLK_L(); //时钟拉低
|
CS1237_SCLK_L(); //时钟拉低
|
||||||
CS1238Var.CS1238Delay1mSCnt = 300;
|
RIGHTUP_CS1237Var.CS1237Delay1mSCnt = 300;
|
||||||
CS1238IrqFlag = false;
|
CS1237IrqFlag = false;
|
||||||
while(CS1238IrqFlag == false) //等待芯片准备好
|
while(CS1237IrqFlag == false) //等待芯片准备好
|
||||||
{
|
{
|
||||||
if(CS1238Var.CS1238Delay1mSCnt <= 0){
|
if(RIGHTUP_CS1237Var.CS1237Delay1mSCnt <= 0){
|
||||||
DBG_LOG("CS1238 Preparation Timeout...\r\n");
|
//DBG_LOG("RIGHTUP CS1237 Preparation Timeout...\r\n");
|
||||||
return; // 超时退出
|
return; // 超时退出
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
CS1238IntDisable();
|
CS1237IntDisable();
|
||||||
CS1238IrqFlag = false;
|
CS1237IrqFlag = false;
|
||||||
|
|
||||||
|
|
||||||
/* clk1-clk26 写期间不需要操作*/
|
/* clk1-clk26 写期间不需要操作*/
|
||||||
for (bit_cout = 0; bit_cout < 26; bit_cout++)
|
for (bit_cout = 0; bit_cout < 26; bit_cout++)
|
||||||
{
|
{
|
||||||
CS1238_Clock(); //给一周期时钟
|
CS1237_Clock(); //给一周期时钟
|
||||||
}
|
}
|
||||||
/* clk27 DOUT输出拉高*/
|
/* clk27 DOUT输出拉高*/
|
||||||
CS1238_Clock(); //给一周期时钟
|
CS1237_Clock(); //给一周期时钟
|
||||||
CS1238_DOUT_H();
|
CS1237_DOUT_H();
|
||||||
/* clk28 - clk29 发送写寄存器命令字 */
|
/* clk28 - clk29 发送写寄存器命令字 */
|
||||||
CS1238_Clock(); //给一周期时钟
|
CS1237_Clock(); //给一周期时钟
|
||||||
CS1238_Clock(); //给一周期时钟
|
CS1237_Clock(); //给一周期时钟
|
||||||
|
|
||||||
/* clk30 - clk36 发送写寄存器命令字 */
|
/* clk30 - clk36 发送写寄存器命令字 */
|
||||||
CS1238_DOUT_OUT();
|
CS1237_DOUT_OUT();
|
||||||
reg_temp = WRITE_CONFIG_CMD << 1; //命令长度为 7bits (写0x65)左移1位
|
reg_temp = WRITE_CONFIG_CMD << 1; //命令长度为 7bits (写0x65)左移1位
|
||||||
for (bit_cout = 0; bit_cout < 7; bit_cout++)
|
for (bit_cout = 0; bit_cout < 7; bit_cout++)
|
||||||
{
|
{
|
||||||
if (reg_temp & 0x80) //MSB
|
if (reg_temp & 0x80) //MSB
|
||||||
{
|
{
|
||||||
CS1238_DOUT_H();
|
CS1237_DOUT_H();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
CS1238_DOUT_L();
|
CS1237_DOUT_L();
|
||||||
}
|
}
|
||||||
reg_temp = reg_temp << 1;
|
reg_temp = reg_temp << 1;
|
||||||
CS1238_Clock();
|
CS1237_Clock();
|
||||||
}
|
}
|
||||||
/* clk37写寄存器模式还是输出 */
|
/* clk37写寄存器模式还是输出 */
|
||||||
CS1238_Clock();
|
CS1237_Clock();
|
||||||
/* clk38 ~ clk45 写入寄存器值 */
|
/* clk38 ~ clk45 写入寄存器值 */
|
||||||
reg_temp = ad_reg;//要配件的寄存器数值
|
reg_temp = ad_reg;//要配件的寄存器数值
|
||||||
for (bit_cout = 0; bit_cout < 8; bit_cout++)
|
for (bit_cout = 0; bit_cout < 8; bit_cout++)
|
||||||
{
|
{
|
||||||
if (reg_temp & 0x80) //MSB
|
if (reg_temp & 0x80) //MSB
|
||||||
{
|
{
|
||||||
CS1238_DOUT_H();
|
CS1237_DOUT_H();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
CS1238_DOUT_L();
|
CS1237_DOUT_L();
|
||||||
}
|
}
|
||||||
reg_temp = reg_temp << 1;
|
reg_temp = reg_temp << 1;
|
||||||
CS1238_Clock();
|
CS1237_Clock();
|
||||||
}
|
}
|
||||||
/* 8: clk46 */
|
/* 8: clk46 */
|
||||||
CS1238_Clock();
|
CS1237_Clock();
|
||||||
CS1238_DOUT_H();
|
CS1237_DOUT_H();
|
||||||
CS1238_DOUT_IN();
|
CS1237_DOUT_IN();
|
||||||
CS1238IntEnable();
|
CS1237IntEnable();
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**读CS1238寄存器*/
|
/**读CS1237寄存器*/
|
||||||
static int32_t Read_CS1238_Config(void)
|
static int32_t Read_CS1237_Config(void)
|
||||||
{
|
{
|
||||||
uint16_t bit_cout = 0;
|
uint16_t bit_cout = 0;
|
||||||
uint8_t reg_temp = 0x00;
|
uint8_t reg_temp = 0x00;
|
||||||
//DOUT由高变低之后开始读取数据
|
//DOUT由高变低之后开始读取数据
|
||||||
CS1238_DOUT_OUT();
|
CS1237_DOUT_OUT();
|
||||||
CS1238_DOUT_H();
|
CS1237_DOUT_H();
|
||||||
CS1238_DOUT_IN();
|
CS1237_DOUT_IN();
|
||||||
CS1238_SCLK_L(); //时钟拉低
|
CS1237_SCLK_L(); //时钟拉低
|
||||||
CS1238Var.CS1238Delay1mSCnt = 300;
|
RIGHTUP_CS1237Var.CS1237Delay1mSCnt = 300;
|
||||||
CS1238IrqFlag = false;
|
CS1237IrqFlag = false;
|
||||||
while(CS1238IrqFlag == false) //等待芯片准备好
|
while(CS1237IrqFlag == false) //等待芯片准备好
|
||||||
{
|
{
|
||||||
if(CS1238Var.CS1238Delay1mSCnt <= 0){
|
if(RIGHTUP_CS1237Var.CS1237Delay1mSCnt <= 0){
|
||||||
DBG_LOG("CS1238 Preparation Timeout...\r\n");
|
//DBG_LOG("RIGHTUP CS1237 Preparation Timeout...\r\n");
|
||||||
return 0; // 超时退出
|
return 0; // 超时退出
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
CS1238IntDisable();
|
CS1237IntDisable();
|
||||||
CS1238IrqFlag = false;
|
CS1237IrqFlag = false;
|
||||||
|
|
||||||
/* clk1-clk26 写期间不需要操作*/
|
/* clk1-clk26 写期间不需要操作*/
|
||||||
for (bit_cout = 0; bit_cout < 26; bit_cout++)
|
for (bit_cout = 0; bit_cout < 26; bit_cout++)
|
||||||
{
|
{
|
||||||
CS1238_Clock(); //给一周期时钟
|
CS1237_Clock(); //给一周期时钟
|
||||||
}
|
}
|
||||||
/* clk27 DOUT输出拉高*/
|
/* clk27 DOUT输出拉高*/
|
||||||
CS1238_Clock(); //给一周期时钟
|
CS1237_Clock(); //给一周期时钟
|
||||||
CS1238_DOUT_H();
|
CS1237_DOUT_H();
|
||||||
/* clk28 - clk29 发送写寄存器命令字 */
|
/* clk28 - clk29 发送写寄存器命令字 */
|
||||||
CS1238_Clock(); //给一周期时钟
|
CS1237_Clock(); //给一周期时钟
|
||||||
CS1238_Clock(); //给一周期时钟
|
CS1237_Clock(); //给一周期时钟
|
||||||
|
|
||||||
/* clk30 - clk36 发送读寄存器命令字 */
|
/* clk30 - clk36 发送读寄存器命令字 */
|
||||||
CS1238_DOUT_OUT();
|
CS1237_DOUT_OUT();
|
||||||
reg_temp = READ_CONFIG_CMD << 1; //命令长度为 7bits (写0x56)左移1位
|
reg_temp = READ_CONFIG_CMD << 1; //命令长度为 7bits (写0x56)左移1位
|
||||||
for (bit_cout = 0; bit_cout < 7; bit_cout++)
|
for (bit_cout = 0; bit_cout < 7; bit_cout++)
|
||||||
{
|
{
|
||||||
if (reg_temp & 0x80) //MSB
|
if (reg_temp & 0x80) //MSB
|
||||||
{
|
{
|
||||||
CS1238_DOUT_H();
|
CS1237_DOUT_H();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
CS1238_DOUT_L();
|
CS1237_DOUT_L();
|
||||||
}
|
}
|
||||||
reg_temp = reg_temp << 1;
|
reg_temp = reg_temp << 1;
|
||||||
CS1238_Clock();
|
CS1237_Clock();
|
||||||
}
|
}
|
||||||
/* clk37,读寄存器模式改输入 */
|
/* clk37,读寄存器模式改输入 */
|
||||||
CS1238_Clock();
|
CS1237_Clock();
|
||||||
CS1238_DOUT_IN();
|
CS1237_DOUT_IN();
|
||||||
for (bit_cout = 0; bit_cout < 8; bit_cout++)
|
for (bit_cout = 0; bit_cout < 8; bit_cout++)
|
||||||
{
|
{
|
||||||
CS1238_SCLK_H();
|
CS1237_SCLK_H();
|
||||||
reg_temp <<= 1; //左移1位准备接受数据 初始默认0
|
reg_temp <<= 1; //左移1位准备接受数据 初始默认0
|
||||||
CS1238_100NS(3);//延时300ns
|
CS1237_5NS(60);//延时300ns
|
||||||
if(GET_CS1238_DOUT() == true) //有数值则累加
|
if(CS1237_DOUT_GET() == true) //有数值则累加
|
||||||
reg_temp |= 1;
|
reg_temp |= 1;
|
||||||
CS1238_SCLK_L();
|
CS1237_SCLK_L();
|
||||||
CS1238_100NS(3);
|
CS1237_5NS(60);
|
||||||
}
|
}
|
||||||
/* 8: clk46 */
|
/* 8: clk46 */
|
||||||
CS1238_Clock();
|
CS1237_Clock();
|
||||||
CS1238_DOUT_IN();
|
CS1237_DOUT_IN();
|
||||||
CS1238_DOUT_H();
|
CS1237_DOUT_H();
|
||||||
CS1238IntEnable();
|
CS1237IntEnable();
|
||||||
return reg_temp ;
|
return reg_temp ;
|
||||||
}
|
}
|
||||||
/**读取CS1238的AD数*/
|
/**读取CS1237的AD数*/
|
||||||
static int32_t Read_CS1238_Ad_Data(void)
|
static int32_t Read_CS1237_Ad_Data(void)
|
||||||
{
|
{
|
||||||
uint16_t bit_cout = 0;
|
uint16_t bit_cout = 0;
|
||||||
int32_t data_temp = 0;
|
int32_t data_temp = 0;
|
||||||
@@ -192,22 +206,22 @@ static int32_t Read_CS1238_Ad_Data(void)
|
|||||||
data_temp = 0;
|
data_temp = 0;
|
||||||
for (bit_cout = 0; bit_cout < 24; bit_cout++)
|
for (bit_cout = 0; bit_cout < 24; bit_cout++)
|
||||||
{
|
{
|
||||||
CS1238_SCLK_H();
|
CS1237_SCLK_H();
|
||||||
data_temp <<= 1; //左移1位准备接受数据 初始默认0
|
data_temp <<= 1; //左移1位准备接受数据 初始默认0
|
||||||
CS1238_100NS(3);//延时300ns
|
CS1237_5NS(60);//延时300ns
|
||||||
if(GET_CS1238_DOUT() == true) //有数值则累加
|
if(CS1237_DOUT_GET() == true) //有数值则累加
|
||||||
data_temp |= 1;
|
data_temp |= 1;
|
||||||
CS1238_SCLK_L();
|
CS1237_SCLK_L();
|
||||||
CS1238_100NS(3);
|
CS1237_5NS(60);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* clk25 ~ clk27 */
|
/* clk25 ~ clk27 */
|
||||||
for (bit_cout = 24; bit_cout < 27; bit_cout++)
|
for (bit_cout = 24; bit_cout < 27; bit_cout++)
|
||||||
{
|
{
|
||||||
CS1238_Clock(); //给一周期时钟
|
CS1237_Clock(); //给一周期时钟
|
||||||
}
|
}
|
||||||
CS1238_DOUT_H();
|
CS1237_DOUT_H();
|
||||||
CS1238_SCLK_L();
|
CS1237_SCLK_L();
|
||||||
|
|
||||||
if(data_temp > 0x7FFFFF) //取24位
|
if(data_temp > 0x7FFFFF) //取24位
|
||||||
{
|
{
|
||||||
@@ -216,190 +230,172 @@ static int32_t Read_CS1238_Ad_Data(void)
|
|||||||
return data_temp;
|
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;
|
BuildDelay = false;
|
||||||
CS1238IntEnable();
|
RIGHTUP_CS1237Var.AinA_AD = 0;
|
||||||
CS1238Var.Ain1_AD = 0;
|
RIGHTUP_CS1237Var.Temp_AD = 0;
|
||||||
CS1238Var.Ain2_AD = 0;
|
RIGHTUP_CS1237Var.Jump_AD = 0;
|
||||||
CS1238Var.Temp_AD = 0;
|
|
||||||
CS1238Var.Jump_AD = 0;
|
|
||||||
|
|
||||||
CS1238Port = CH_SEL_A;
|
CS1237IntEnable();
|
||||||
CS1238Hz = SPEED_SEL_640Hz;
|
CS1237Port = CH_SEL_A;
|
||||||
CS1238PGA = PGA_SEL_128;
|
CS1237Hz = SPEED_SEL_640Hz;
|
||||||
|
CS1237PGA = PGA_SEL_128;
|
||||||
|
|
||||||
uint8_t read_reg = 0x00;
|
uint8_t read_reg = 0x00;
|
||||||
uint8_t set_reg = REFO_ON | CS1238Hz | CS1238PGA | CS1238Port;
|
uint8_t set_reg = REFO_ON | CS1237Hz | CS1237PGA | CS1237Port;
|
||||||
CS1238_1MS(20);
|
CS1237_1MS(20);
|
||||||
Set_CS1238_Config(set_reg);
|
Set_CS1237_Config(set_reg);
|
||||||
CS1238_1MS(20);
|
CS1237_1MS(20);
|
||||||
read_reg = Read_CS1238_Config();
|
read_reg = Read_CS1237_Config();
|
||||||
CS1238_1MS(20);
|
CS1237_1MS(20);
|
||||||
if(read_reg != set_reg){
|
if(read_reg != set_reg){
|
||||||
DBG_LOG("CS1238 Init ERR...\r\n");
|
DBG_LOG("RIGHTUP CS1237 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);
|
//DBG_LOG("set_reg = %02X\tread_reg = %02X\r\n",set_reg,read_reg);
|
||||||
CS1238Port = read_reg & 0x03;
|
|
||||||
InitFlag = true;
|
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 int32_t ad_array[PACK_NUM];
|
||||||
static uint8_t adcnt;
|
static uint8_t adcnt;
|
||||||
static uint8_t TimeOutmagcnt;
|
static uint8_t TimeOutmagcnt;
|
||||||
|
|
||||||
switch(CS1238Var.Status) {
|
switch(RIGHTUP_CS1237Var.Status) {
|
||||||
case CS1238_STATUS_IDLE:{
|
case RUCS1237_STATUS_IDLE:{
|
||||||
break;}
|
break;}
|
||||||
|
|
||||||
case CS1238_STATUS_START:{
|
case RUCS1237_STATUS_START:{
|
||||||
memset(&ad_array, 0x00, sizeof(ad_array));
|
memset(&ad_array, 0x00, sizeof(ad_array));
|
||||||
adcnt = 0;
|
adcnt = 0;
|
||||||
TimeOutmagcnt = 0;
|
TimeOutmagcnt = 0;
|
||||||
memset(&CS1238Var, NULL, sizeof(CS1238Var));
|
memset(&RIGHTUP_CS1237Var, NULL, sizeof(RIGHTUP_CS1237Var));
|
||||||
if(BuildDelay == true)
|
if(BuildDelay == true)
|
||||||
{
|
{
|
||||||
BuildDelay = false;
|
BuildDelay = false;
|
||||||
if(CS1238Hz == SPEED_SEL_10Hz){
|
if(CS1237Hz == SPEED_SEL_10Hz){
|
||||||
CS1238Var.CS1238Delay1mSCnt = tCon_10Hz;
|
RIGHTUP_CS1237Var.CS1237Delay1mSCnt = tCon_10Hz;
|
||||||
}
|
}
|
||||||
if(CS1238Hz == SPEED_SEL_40Hz){
|
if(CS1237Hz == SPEED_SEL_40Hz){
|
||||||
CS1238Var.CS1238Delay1mSCnt = tCon_40Hz;
|
RIGHTUP_CS1237Var.CS1237Delay1mSCnt = tCon_40Hz;
|
||||||
}
|
}
|
||||||
if(CS1238Hz == SPEED_SEL_640Hz){
|
if(CS1237Hz == SPEED_SEL_640Hz){
|
||||||
CS1238Var.CS1238Delay1mSCnt = tCon_640Hz;
|
RIGHTUP_CS1237Var.CS1237Delay1mSCnt = tCon_640Hz;
|
||||||
}
|
}
|
||||||
if(CS1238Hz == SPEED_SEL6_1280Hz){
|
if(CS1237Hz == SPEED_SEL6_1280Hz){
|
||||||
CS1238Var.CS1238Delay1mSCnt = tCon_1280Hz;
|
RIGHTUP_CS1237Var.CS1237Delay1mSCnt = tCon_1280Hz;
|
||||||
}
|
}
|
||||||
CS1238Var.Status = CS1238_STATUS_DELAY;
|
RIGHTUP_CS1237Var.Status = RUCS1237_STATUS_DELAY;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
CS1238Var.Status = CS1238_STATUS_READ;
|
RIGHTUP_CS1237Var.Status = RUCS1237_STATUS_READ;
|
||||||
}
|
}
|
||||||
break;}
|
break;}
|
||||||
|
|
||||||
case CS1238_STATUS_DELAY:{
|
case RUCS1237_STATUS_DELAY:{
|
||||||
if(CS1238Var.CS1238Delay1mSCnt <= 0){
|
if(RIGHTUP_CS1237Var.CS1237Delay1mSCnt <= 0){
|
||||||
CS1238Var.Status = CS1238_STATUS_READ;
|
RIGHTUP_CS1237Var.Status = RUCS1237_STATUS_READ;
|
||||||
}
|
}
|
||||||
break;}
|
break;}
|
||||||
|
|
||||||
case CS1238_STATUS_READ:{
|
case RUCS1237_STATUS_READ:{
|
||||||
CS1238IrqFlag = false;
|
CS1237IrqFlag = false;
|
||||||
CS1238Var.CS1238Delay1mSCnt = 100;
|
RIGHTUP_CS1237Var.CS1237Delay1mSCnt = 100;
|
||||||
CS1238Var.Status = CS1238_STATUS_WAIT_READ;
|
RIGHTUP_CS1237Var.Status = RUCS1237_STATUS_WAIT_READ;
|
||||||
break;}
|
break;}
|
||||||
|
|
||||||
case CS1238_STATUS_WAIT_READ:{
|
case RUCS1237_STATUS_WAIT_READ:{
|
||||||
if(CS1238Var.CS1238Delay1mSCnt <= 0){
|
if(RIGHTUP_CS1237Var.CS1237Delay1mSCnt <= 0){
|
||||||
CS1238Var.Status = CS1238_STATUS_READ;
|
RIGHTUP_CS1237Var.Status = RUCS1237_STATUS_READ;
|
||||||
TimeOutmagcnt++;
|
TimeOutmagcnt++;
|
||||||
}
|
}
|
||||||
if(CS1238IrqFlag == true){
|
if(CS1237IrqFlag == true){
|
||||||
CS1238IrqFlag = false;
|
CS1237IrqFlag = false;
|
||||||
ad_array[adcnt++] = Read_CS1238_Ad_Data();
|
ad_array[adcnt++] = Read_CS1237_Ad_Data();
|
||||||
CS1238Var.Status = CS1238_STATUS_READ;
|
RIGHTUP_CS1237Var.Status = RUCS1237_STATUS_READ;
|
||||||
}
|
}
|
||||||
if(TimeOutmagcnt >= PACK_NUM){
|
if(TimeOutmagcnt >= PACK_NUM){
|
||||||
TimeOutmagcnt = 0;
|
TimeOutmagcnt = 0;
|
||||||
if(adcnt > 0){
|
if(adcnt > 0){
|
||||||
if(CS1238Port == CH_SEL_A){
|
if(CS1237Port == CH_SEL_A){
|
||||||
CS1238Var.Ain1_AD = IntFilter_32t(ad_array, adcnt, 4);
|
RIGHTUP_CS1237Var.AinA_AD = IntFilter_32t(ad_array, adcnt, FILTER_NUM);
|
||||||
CS1238Ain1DataProcessCallBack(CS1238Var.Ain1_AD);
|
RIGHTUP_CS1237AinADataProcessCallBack(RIGHTUP_CS1237Var.AinA_AD);
|
||||||
}
|
}
|
||||||
if(CS1238Port == CH_SEL_B){
|
if(CS1237Port == CH_SEL_TEMP){
|
||||||
CS1238Var.Ain2_AD = IntFilter_32t(ad_array, adcnt, 4);
|
RIGHTUP_CS1237Var.Temp_AD = IntFilter_32t(ad_array, adcnt, FILTER_NUM);
|
||||||
CS1238Ain2DataProcessCallBack(CS1238Var.Ain2_AD);
|
//CS1237TempDataProcessCallBack(LEFTLOW_CS1237Var.Temp_AD);
|
||||||
}
|
}
|
||||||
if(CS1238Port == CH_SEL_TEMP){
|
if(CS1237Port == CH_SEL_JUMP){
|
||||||
CS1238Var.Temp_AD = IntFilter_32t(ad_array, adcnt, 4);
|
RIGHTUP_CS1237Var.Jump_AD = IntFilter_32t(ad_array, adcnt, FILTER_NUM);
|
||||||
CS1238TempDataProcessCallBack(CS1238Var.Temp_AD);
|
//CS1237JumpDataProcessCallBack(LEFTLOW_CS1237Var.Jump_AD);
|
||||||
}
|
}
|
||||||
if(CS1238Port == CH_SEL_JUMP){
|
RIGHTUP_CS1237Var.Status = RUCS1237_STATUS_CH_SEL;
|
||||||
CS1238Var.Jump_AD = IntFilter_32t(ad_array, adcnt, 4);
|
|
||||||
CS1238JumpDataProcessCallBack(CS1238Var.Jump_AD);
|
|
||||||
}
|
|
||||||
CS1238Var.Status = CS1238_STATUS_CH_SEL;
|
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
if(CS1238Port == CH_SEL_A){
|
if(CS1237Port == CH_SEL_A){
|
||||||
DBG_LOG("CS1238 CHA TimeOut...\r\n");
|
DBG_LOG("RIGHTUP CS1237 CHA TimeOut...\r\n");
|
||||||
}
|
}
|
||||||
if(CS1238Port == CH_SEL_B){
|
if(CS1237Port == CH_SEL_TEMP){
|
||||||
DBG_LOG("CS1238 CHB TimeOut...\r\n");
|
DBG_LOG("RIGHTUP CS1237 Temp TimeOut...\r\n");
|
||||||
}
|
}
|
||||||
if(CS1238Port == CH_SEL_TEMP){
|
if(CS1237Port == CH_SEL_JUMP){
|
||||||
DBG_LOG("CS1238 Temp TimeOut...\r\n");
|
DBG_LOG("RIGHTUP CS1237 Jump TimeOut...\r\n");
|
||||||
}
|
}
|
||||||
if(CS1238Port == CH_SEL_JUMP){
|
RIGHTUP_CS1237Var.Status = RUCS1237_STATUS_CH_SEL;
|
||||||
DBG_LOG("CS1238 Jump TimeOut...\r\n");
|
|
||||||
}
|
|
||||||
CS1238Var.Status = CS1238_STATUS_CH_SEL;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(adcnt >= PACK_NUM){
|
if(adcnt >= PACK_NUM){
|
||||||
if(CS1238Port == CH_SEL_A){
|
if(CS1237Port == CH_SEL_A){
|
||||||
CS1238Var.Ain1_AD = IntFilter_32t(ad_array, adcnt, 4);
|
RIGHTUP_CS1237Var.AinA_AD = IntFilter_32t(ad_array, adcnt, FILTER_NUM);
|
||||||
CS1238Ain1DataProcessCallBack(CS1238Var.Ain1_AD);
|
RIGHTUP_CS1237AinADataProcessCallBack(RIGHTUP_CS1237Var.AinA_AD);
|
||||||
}
|
}
|
||||||
if(CS1238Port == CH_SEL_B){
|
if(CS1237Port == CH_SEL_TEMP){
|
||||||
CS1238Var.Ain2_AD = IntFilter_32t(ad_array, adcnt, 4);
|
RIGHTUP_CS1237Var.Temp_AD = IntFilter_32t(ad_array, adcnt, FILTER_NUM);
|
||||||
CS1238Ain2DataProcessCallBack(CS1238Var.Ain2_AD);
|
//CS1237TempDataProcessCallBack(LEFTLOW_CS1237Var.Temp_AD);
|
||||||
}
|
}
|
||||||
if(CS1238Port == CH_SEL_TEMP){
|
if(CS1237Port == CH_SEL_JUMP){
|
||||||
CS1238Var.Temp_AD = IntFilter_32t(ad_array, adcnt, 4);
|
RIGHTUP_CS1237Var.Jump_AD = IntFilter_32t(ad_array, adcnt, FILTER_NUM);
|
||||||
CS1238TempDataProcessCallBack(CS1238Var.Temp_AD);
|
//CS1237JumpDataProcessCallBack(LEFTLOW_CS1237Var.Jump_AD);
|
||||||
}
|
}
|
||||||
if(CS1238Port == CH_SEL_JUMP){
|
RIGHTUP_CS1237Var.Status = RUCS1237_STATUS_CH_SEL;
|
||||||
CS1238Var.Jump_AD = IntFilter_32t(ad_array, adcnt, 4);
|
|
||||||
CS1238JumpDataProcessCallBack(CS1238Var.Jump_AD);
|
|
||||||
}
|
|
||||||
CS1238Var.Status = CS1238_STATUS_CH_SEL;
|
|
||||||
}
|
}
|
||||||
break;}
|
break;}
|
||||||
|
|
||||||
case CS1238_STATUS_CH_SEL:{
|
case RUCS1237_STATUS_CH_SEL:{
|
||||||
CS1238Var.Status = CS1238_STATUS_STOP;
|
RIGHTUP_CS1237Var.Status = RUCS1237_STATUS_STOP;
|
||||||
BuildDelay = false;
|
BuildDelay = false;
|
||||||
uint8_t read_reg;
|
uint8_t read_reg;
|
||||||
if(CS1238Port == CH_SEL_A){
|
if(CS1237Port == CH_SEL_A){
|
||||||
#if(PORT_TEMP == 1)
|
#if(PORT_TEMP == 1)
|
||||||
read_reg = Read_CS1238_Config();
|
read_reg = Read_CS1237_Config();
|
||||||
Set_CS1238_Config((read_reg & 0xFC) | CH_SEL_TEMP);
|
Set_CS1237_Config((read_reg & 0xFC) | CH_SEL_TEMP);
|
||||||
CS1238Port = CH_SEL_TEMP;
|
CS1237Port = CH_SEL_TEMP;
|
||||||
BuildDelay = true;
|
BuildDelay = true;
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
#if(PORT_JUMP == 1)
|
#if(PORT_JUMP == 1)
|
||||||
read_reg = Read_CS1238_Config();
|
read_reg = Read_CS1237_Config();
|
||||||
Set_CS1238_Config((read_reg & 0xFC) | CH_SEL_JUMP);
|
Set_CS1237_Config((read_reg & 0xFC) | CH_SEL_JUMP);
|
||||||
CS1238Port = CH_SEL_JUMP;
|
CS1237Port = CH_SEL_JUMP;
|
||||||
BuildDelay = true;
|
BuildDelay = true;
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
if(CS1238Port == CH_SEL_B){
|
if(CS1237Port == CH_SEL_TEMP){
|
||||||
#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)
|
#if(PORT_JUMP == 1)
|
||||||
read_reg = Read_CS1238_Config();
|
read_reg = Read_CS1238_Config();
|
||||||
Set_CS1238_Config((read_reg & 0xFC) | CH_SEL_JUMP);
|
Set_CS1238_Config((read_reg & 0xFC) | CH_SEL_JUMP);
|
||||||
@@ -408,77 +404,60 @@ void CS1238DataLoopCollect(void)
|
|||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
#if(PORT_A == 1)
|
#if(PORT_A == 1)
|
||||||
read_reg = Read_CS1238_Config();
|
read_reg = Read_CS1237_Config();
|
||||||
Set_CS1238_Config((read_reg & 0xFC) | CH_SEL_A);
|
Set_CS1237_Config((read_reg & 0xFC) | CH_SEL_A);
|
||||||
CS1238Port = CH_SEL_A;
|
CS1237Port = CH_SEL_A;
|
||||||
BuildDelay = true;
|
BuildDelay = true;
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
if(CS1238Port == CH_SEL_TEMP){
|
if(CS1237Port == CH_SEL_JUMP){
|
||||||
#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)
|
#if(PORT_A == 1)
|
||||||
read_reg = Read_CS1238_Config();
|
read_reg = Read_CS1237_Config();
|
||||||
Set_CS1238_Config((read_reg & 0xFC) | CH_SEL_A);
|
Set_CS1237_Config((read_reg & 0xFC) | CH_SEL_A);
|
||||||
CS1238Port = CH_SEL_A;
|
CS1237Port = 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;
|
BuildDelay = true;
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
#if(PORT_TEMP == 1)
|
#if(PORT_TEMP == 1)
|
||||||
read_reg = Read_CS1238_Config();
|
read_reg = Read_CS1237_Config();
|
||||||
Set_CS1238_Config((read_reg & 0xFC) | CH_SEL_TEMP);
|
Set_CS1237_Config((read_reg & 0xFC) | CH_SEL_TEMP);
|
||||||
CS1238Port = CH_SEL_TEMP;
|
CS1237Port = CH_SEL_TEMP;
|
||||||
BuildDelay = true;
|
BuildDelay = true;
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
break;}
|
break;}
|
||||||
|
|
||||||
case CS1238_STATUS_STOP:{
|
case RUCS1237_STATUS_STOP:{
|
||||||
//CS1238Stop();
|
RIGHTUP_CS1237Stop();
|
||||||
//CS1238Var.Status = CS1238_STATUS_IDLE;
|
RIGHTUP_CS1237Var.Status = RUCS1237_STATUS_IDLE;
|
||||||
CS1238Var.Status = CS1238_STATUS_START;//持续工作
|
//RIGHTUP_CS1237Var.Status = RUCS1237_STATUS_START;//持续工作
|
||||||
break;}
|
break;}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void CS12381mSRoutine(void)
|
void RIGHTUP_CS12371mSRoutine(void)
|
||||||
{
|
{
|
||||||
if(CS1238Var.CS1238Delay1mSCnt > 0)
|
if(RIGHTUP_CS1237Var.CS1237Delay1mSCnt > 0)
|
||||||
CS1238Var.CS1238Delay1mSCnt--;
|
RIGHTUP_CS1237Var.CS1237Delay1mSCnt--;
|
||||||
}
|
}
|
||||||
void CS1238Start(void)
|
void RIGHTUP_CS1237Start(void)
|
||||||
{
|
{
|
||||||
CS1238_WakeUp();
|
CS1237_WakeUp();
|
||||||
CS1238_1MS(2);
|
CS1237_1MS(2);
|
||||||
BuildDelay = true;
|
BuildDelay = true;
|
||||||
CS1238IntEnable();
|
CS1237IntEnable();
|
||||||
if(!InitFlag){
|
if(!InitFlag){
|
||||||
CS1238_Init();
|
RIGHTUP_CS1237_Init();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
CS1238Var.Status = CS1238_STATUS_START;
|
RIGHTUP_CS1237Var.Status = RUCS1237_STATUS_START;
|
||||||
}
|
}
|
||||||
void CS1238Stop(void)
|
void RIGHTUP_CS1237Stop(void)
|
||||||
{
|
{
|
||||||
CS1238IntDisable();
|
CS1237IntDisable();
|
||||||
CS1238_Sleep();
|
//CS1237_Sleep();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#include "bsp.h"
|
#include "bsp.h"
|
||||||
|
|
||||||
#ifndef _CS1238_H_
|
#ifndef _CS1237_RIGHTUP_H_
|
||||||
#define _CS1238_H_
|
#define _CS1237_RIGHTUP_H_
|
||||||
|
|
||||||
#define READ_CONFIG_CMD 0x56
|
#define READ_CONFIG_CMD 0x56
|
||||||
#define WRITE_CONFIG_CMD 0x65
|
#define WRITE_CONFIG_CMD 0x65
|
||||||
@@ -22,21 +22,11 @@
|
|||||||
#define PGA_SEL_128 0x0C
|
#define PGA_SEL_128 0x0C
|
||||||
|
|
||||||
#define CH_SEL_A 0x00
|
#define CH_SEL_A 0x00
|
||||||
#define CH_SEL_B 0x01
|
//#define CH_SEL_B 0x01
|
||||||
#define CH_SEL_TEMP 0x02
|
#define CH_SEL_TEMP 0x02
|
||||||
#define CH_SEL_JUMP 0x03
|
#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*/
|
/*Definition of conversion time corresponding to repeatability setting*/
|
||||||
/*
|
/*
|
||||||
@@ -51,40 +41,39 @@
|
|||||||
#define tCon_1280Hz 4 /* ms. */
|
#define tCon_1280Hz 4 /* ms. */
|
||||||
|
|
||||||
#define PORT_A 1 //采集通道A
|
#define PORT_A 1 //采集通道A
|
||||||
#define PORT_B 1 //采集通道B
|
//#define PORT_B 1 //采集通道B
|
||||||
#define PORT_TEMP 0 //采集温度
|
#define PORT_TEMP 0 //采集温度
|
||||||
#define PORT_JUMP 0 //内短采集
|
#define PORT_JUMP 0 //内短采集
|
||||||
#define PACK_NUM 10 //一次采集的数据包数量
|
#define PACK_NUM 1 //一次采集的数据包数量
|
||||||
|
#define FILTER_NUM 0 //滤波数
|
||||||
|
|
||||||
typedef enum{
|
typedef enum{
|
||||||
CS1238_STATUS_IDLE,
|
RUCS1237_STATUS_IDLE,
|
||||||
CS1238_STATUS_START,
|
RUCS1237_STATUS_START,
|
||||||
CS1238_STATUS_DELAY,
|
RUCS1237_STATUS_DELAY,
|
||||||
CS1238_STATUS_READ,
|
RUCS1237_STATUS_READ,
|
||||||
CS1238_STATUS_WAIT_READ,
|
RUCS1237_STATUS_WAIT_READ,
|
||||||
CS1238_STATUS_CH_SEL,
|
RUCS1237_STATUS_CH_SEL,
|
||||||
CS1238_STATUS_STOP,
|
RUCS1237_STATUS_STOP,
|
||||||
}CS1238Status_m;
|
}RightUpCS1237Status_m;
|
||||||
|
|
||||||
typedef struct{
|
typedef struct{
|
||||||
CS1238Status_m Status;
|
RightUpCS1237Status_m Status;
|
||||||
uint32_t CS1238Delay1mSCnt;
|
uint32_t CS1237Delay1mSCnt;
|
||||||
|
|
||||||
int32_t Ain1_AD;//AIN1ad数据
|
int32_t AinA_AD;//AINAad数据
|
||||||
int32_t Ain2_AD;//AIN2ad数据
|
//int32_t AinB_AD;//AINBad数据
|
||||||
int32_t Temp_AD;//温度ad数据
|
int32_t Temp_AD;//温度ad数据
|
||||||
int32_t Jump_AD;//内短ad数据
|
int32_t Jump_AD;//内短ad数据
|
||||||
}
|
}
|
||||||
CS1238Var_t;
|
RIGHTUP_CS1237Var_t;
|
||||||
extern CS1238Var_t CS1238Var;
|
|
||||||
|
|
||||||
void CS1238_Init(void);
|
void RIGHTUP_CS1237_Init(void);
|
||||||
void CS1238_IrqCallBack(void);
|
void RIGHTUP_CS1237_IrqCallBack(void);
|
||||||
void CS1238DataLoopCollect(void);
|
void RIGHTUP_CS1237DataLoopCollect(void);
|
||||||
void CS1238LoopHandler(void);
|
void RIGHTUP_CS12371mSRoutine(void);
|
||||||
void CS12381mSRoutine(void);
|
void RIGHTUP_CS1237Start(void);
|
||||||
void CS1238Start(void);
|
void RIGHTUP_CS1237Stop(void);
|
||||||
void CS1238Stop(void);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -11,10 +11,10 @@
|
|||||||
|
|
||||||
/*模块启用与关闭*/
|
/*模块启用与关闭*/
|
||||||
#define USE_DEBUG 1 //DEBUG开关,0、关闭,1、启用
|
#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_WDT 0 //看门狗选择,0、关闭,1启用
|
||||||
#define USE_EXFALSE 0 //外部FALSE存储选择,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_LPTIM0 0 //LPTIM0开关,0、关闭,1、开启
|
||||||
#define USE_DMA 0 //DMA开关,0、关闭,1、开启
|
#define USE_DMA 0 //DMA开关,0、关闭,1、开启
|
||||||
#define USE_RS485 0 //RS485开关,0、关闭,1、启用
|
#define USE_RS485 0 //RS485开关,0、关闭,1、启用
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
#define USE_CS1237_LEFTUP 1 //左上CS1237开关,0、关闭,1、启用
|
#define USE_CS1237_LEFTUP 1 //左上CS1237开关,0、关闭,1、启用
|
||||||
#define USE_CS1237_LEFTLOW 1 //左下CS1237开关,0、关闭,1、启用
|
#define USE_CS1237_LEFTLOW 1 //左下CS1237开关,0、关闭,1、启用
|
||||||
#define USE_CS1237_RIGHTUP 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 -------------------------------->>
|
//<<---------------------------- MCU -------------------------------->>
|
||||||
//< DEBUG
|
//< DEBUG
|
||||||
@@ -46,6 +46,8 @@
|
|||||||
#define DBG_FCG1_PERIPH (PWC_FCG1_PERIPH_USART1)
|
#define DBG_FCG1_PERIPH (PWC_FCG1_PERIPH_USART1)
|
||||||
#define DBG_RXPIN_EXIT_CH (ExtiCh13)
|
#define DBG_RXPIN_EXIT_CH (ExtiCh13)
|
||||||
#define DBG_RXPIN_EXIT_SRC (INT_PORT_EIRQ13)
|
#define DBG_RXPIN_EXIT_SRC (INT_PORT_EIRQ13)
|
||||||
|
#define DBG_RX_IRQn (Int000_IRQn)
|
||||||
|
#define DBG_ER_IRQn (Int001_IRQn)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// SPI3
|
// SPI3
|
||||||
@@ -88,17 +90,17 @@
|
|||||||
#define RS485_USART_TX_PORT (PortA)
|
#define RS485_USART_TX_PORT (PortA)
|
||||||
#define RS485_USART_TX_PIN (Pin12)
|
#define RS485_USART_TX_PIN (Pin12)
|
||||||
#define RS485_USART_RX_FUNC (Func_Usart1_Rx)
|
#define RS485_USART_RX_FUNC (Func_Usart1_Rx)
|
||||||
#define RS485_USART_TX_FUNC (Func_Usart1_Tx)
|
#define RS485_USART_TX_FUNC (Func_Usart1_Tx)
|
||||||
#define RS485_USART_RI_NUM (INT_USART1_RI)
|
#define RS485_USART_RI_NUM (INT_USART1_RI)
|
||||||
#define RS485_USART_EI_NUM (INT_USART1_EI)
|
#define RS485_USART_EI_NUM (INT_USART1_EI)
|
||||||
#define RS485_USART_TI_NUM (INT_USART1_TI)
|
#define RS485_USART_TI_NUM (INT_USART1_TI)
|
||||||
#define RS485_USART_TCI_NUM (INT_USART1_TCI)
|
#define RS485_USART_TCI_NUM (INT_USART1_TCI)
|
||||||
#define RS485_FCG1_PERIPH (PWC_FCG1_PERIPH_USART1)
|
#define RS485_FCG1_PERIPH (PWC_FCG1_PERIPH_USART1)
|
||||||
#define RS485_RXPIN_EXIT_CH (ExtiCh14)
|
#define RS485_RXPIN_EXIT_CH (ExtiCh14)
|
||||||
#define RS485_RXPIN_EXIT_SRC (INT_PORT_EIRQ14)
|
#define RS485_RXPIN_EXIT_SRC (INT_PORT_EIRQ14)
|
||||||
|
|
||||||
#define RS485_CTRL_PORT (PortC)
|
#define RS485_CTRL_PORT (PortC)
|
||||||
#define RS485_CTRL_PIN (Pin13)
|
#define RS485_CTRL_PIN (Pin13)
|
||||||
#define RS485_TX() PORT_SetBits(RS485_CTRL_PORT, RS485_CTRL_PIN)
|
#define RS485_TX() PORT_SetBits(RS485_CTRL_PORT, RS485_CTRL_PIN)
|
||||||
#define RS485_RX() PORT_ResetBits(RS485_CTRL_PORT, RS485_CTRL_PIN)
|
#define RS485_RX() PORT_ResetBits(RS485_CTRL_PORT, RS485_CTRL_PIN)
|
||||||
#endif
|
#endif
|
||||||
@@ -107,59 +109,68 @@
|
|||||||
#define RTC_IRQn Int001_IRQn
|
#define RTC_IRQn Int001_IRQn
|
||||||
#endif
|
#endif
|
||||||
//<<----------------------------- CS1237 ------------------------------->>
|
//<<----------------------------- CS1237 ------------------------------->>
|
||||||
//< LEFTUP CS1237
|
//< 左上 CS1237
|
||||||
#if(USE_CS1237_LEFTUP == 1)
|
#if(USE_CS1237_LEFTUP == 1)
|
||||||
|
#define LEFTUP_CS1237_IRQn (Int001_IRQn)
|
||||||
#define LEFTUP_CS1237_DOUT_PORTx (PortB)
|
#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 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 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_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 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)//拉低
|
#define CLR_LEFTUP_CS1237_SCLK() PORT_ResetBits(LEFTUP_CS1237_SCLK_PORTx, LEFTUP_CS1237_SCLK_PINx)//拉低
|
||||||
#endif
|
#endif
|
||||||
//< LEFTLOW CS1237
|
//< 左下 CS1237
|
||||||
#if(USE_CS1237_LEFTLOW == 1)
|
#if(USE_CS1237_LEFTLOW == 1)
|
||||||
|
#define LEFTLOW_CS1237_IRQn (Int002_IRQn)
|
||||||
#define LEFTLOW_CS1237_DOUT_PORTx (PortB)
|
#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 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 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_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 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)//拉低
|
#define CLR_LEFTLOW_CS1237_SCLK() PORT_ResetBits(LEFTLOW_CS1237_SCLK_PORTx, LEFTLOW_CS1237_SCLK_PINx)//拉低
|
||||||
#endif
|
#endif
|
||||||
//< RIGHTUP CS1237
|
//< 右上 CS1237
|
||||||
#if(USE_CS1237_RIGHTUP == 1)
|
#if(USE_CS1237_RIGHTUP == 1)
|
||||||
|
#define RIGHTUP_CS1237_IRQn (Int003_IRQn)
|
||||||
#define RIGHTUP_CS1237_DOUT_PORTx (PortA)
|
#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 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 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_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 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)//拉低
|
#define CLR_RIGHTUP_CS1237_SCLK() PORT_ResetBits(RIGHTUP_CS1237_SCLK_PORTx, RIGHTUP_CS1237_SCLK_PINx)//拉低
|
||||||
#endif
|
#endif
|
||||||
//< RIGHRLOW CS1237
|
//< 右下 CS1237
|
||||||
#if(USE_CS1237_RIGHRLOW == 1)
|
#if(USE_CS1237_RIGHTLOW == 1)
|
||||||
#define RIGHRLOW_CS1237_DOUT_PORTx (PortA)
|
#define RIGHTLOW_CS1237_IRQn (Int004_IRQn)
|
||||||
#define RIGHRLOW_CS1237_DOUT_PINx (Pin04)
|
#define RIGHTLOW_CS1237_DOUT_PORTx (PortA)
|
||||||
#define SET_RIGHRLOW_CS1237_DOUT() PORT_SetBits(RIGHRLOW_CS1237_DOUT_PORTx, RIGHRLOW_CS1237_DOUT_PINx)//拉高
|
#define RIGHTLOW_CS1237_DOUT_PINx (Pin06)
|
||||||
#define CLR_RIGHRLOW_CS1237_DOUT() PORT_ResetBits(RIGHRLOW_CS1237_DOUT_PORTx, RIGHRLOW_CS1237_DOUT_PINx)//拉低
|
#define SET_RIGHTLOW_CS1237_DOUT() PORT_SetBits(RIGHTLOW_CS1237_DOUT_PORTx, RIGHTLOW_CS1237_DOUT_PINx)//拉高
|
||||||
#define GET_RIGHRLOW_CS1237_DOUT() Gpio_GetInputIO(RIGHRLOW_CS1237_DOUT_PORTx, RIGHRLOW_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 RIGHTLOW_CS1237_SCLK_PORTx (PortA)
|
||||||
#define RIGHRLOW_CS1237_SCLK_PINx (Pin05)
|
#define RIGHTLOW_CS1237_SCLK_PINx (Pin07)
|
||||||
#define SET_RIGHRLOW_CS1237_SCLK() PORT_SetBits(RIGHRLOW_CS1237_SCLK_PORTx, RIGHRLOW_CS1237_SCLK_PINx)//拉高
|
#define SET_RIGHTLOW_CS1237_SCLK() PORT_SetBits(RIGHTLOW_CS1237_SCLK_PORTx, RIGHTLOW_CS1237_SCLK_PINx)//拉高
|
||||||
#define CLR_RIGHRLOW_CS1237_SCLK() PORT_ResetBits(RIGHRLOW_CS1237_SCLK_PORTx, RIGHRLOW_CS1237_SCLK_PINx)//拉低
|
#define CLR_RIGHTLOW_CS1237_SCLK() PORT_ResetBits(RIGHTLOW_CS1237_SCLK_PORTx, RIGHTLOW_CS1237_SCLK_PINx)//拉低
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
|
||||||
|
uint32_t FactoryFlag;//出厂标志位
|
||||||
|
}AppPara_T, *pAppPara;
|
||||||
|
|
||||||
|
|
||||||
void BSP_Init(void);
|
void BSP_Init(void);
|
||||||
uint8_t DbgUartRec(void);
|
uint8_t DbgUartRec(void);
|
||||||
@@ -206,4 +217,18 @@ void TimeGet(struct tm *cTime);
|
|||||||
int TimeTs(void);
|
int TimeTs(void);
|
||||||
void TimeShow(uint32_t dwStamp);
|
void TimeShow(uint32_t dwStamp);
|
||||||
void TimeSync(time_t ts) ;
|
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
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
#ifndef __MAIN__H
|
#ifndef __MAIN__H
|
||||||
#define __MAIN__H
|
#define __MAIN__H
|
||||||
|
#include <stdlib.h>
|
||||||
#include "bsp.h"
|
#include "bsp.h"
|
||||||
|
|
||||||
|
|
||||||
@@ -7,18 +8,87 @@
|
|||||||
#define SDCARD_BLOCK_MAX (10000)
|
#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 {
|
typedef struct {
|
||||||
uint16_t Acc[3];
|
AppStatus_m Status;//状态
|
||||||
uint16_t SensorValue[4];
|
ReadStatus_m RStatus;
|
||||||
}SendData_t, *SendData;
|
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;
|
||||||
|
|
||||||
typedef struct {
|
bool UpFlag;//上升标志位
|
||||||
uint16_t ADValue[4];
|
bool DownFlag;//下降标志位
|
||||||
uint16_t Index;
|
bool StopFlag;//停止标志位
|
||||||
}SaveData_t, *SaveData;
|
bool EvenRunning;//平稳运行标志位
|
||||||
|
|
||||||
|
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
|
#endif
|
||||||
|
|||||||
@@ -746,6 +746,38 @@ bool isAllZero(uint8_t *arr, int size)
|
|||||||
return true; // 遍历完数组后,若所有元素都为0,则返回true
|
return true; // 遍历完数组后,若所有元素都为0,则返回true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*****************************************************************************************
|
||||||
|
* 函数名称: HexToAscii
|
||||||
|
* 功能描述: 16进制转ASCII码
|
||||||
|
* 参 数: HexData,16进制数组
|
||||||
|
ASCData,ASCII码
|
||||||
|
sLen,数据长度
|
||||||
|
* 返 回 值: true或false
|
||||||
|
*****************************************************************************************/
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -3,23 +3,21 @@
|
|||||||
#include "Debug.h"
|
#include "Debug.h"
|
||||||
#include "hc32f460_efm.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 SPI_MASTER_MODE
|
||||||
#define SPI3_MASTER_MODE
|
#define SPI3_MASTER_MODE
|
||||||
|
|
||||||
|
|
||||||
#define FLASH_WRITE_ADDR (0x0003C000u)
|
#define FLASH_WRITE_ADDR (0x0003C000u)
|
||||||
|
|
||||||
|
|
||||||
static void SystemClockConfig(void);
|
static void SystemClockConfig(void);
|
||||||
uint16_t m_au16Adc1SaValue[4];
|
uint16_t m_au16Adc1SaValue[4];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void FlashWrite(uint32_t *wData, uint32_t wLen)
|
void FlashWrite(uint32_t *wData, uint32_t wLen)
|
||||||
{
|
{
|
||||||
EFM_Unlock();
|
EFM_Unlock();
|
||||||
@@ -85,9 +83,9 @@ static void SystemClockConfig(void)
|
|||||||
/* Config Xtal and Enable Xtal */
|
/* Config Xtal and Enable Xtal */
|
||||||
stcXtalCfg.enMode = ClkXtalModeOsc;
|
stcXtalCfg.enMode = ClkXtalModeOsc;
|
||||||
stcXtalCfg.enDrv = ClkXtalLowDrv;
|
stcXtalCfg.enDrv = ClkXtalLowDrv;
|
||||||
stcXtalCfg.enFastStartup = Enable;
|
stcXtalCfg.enFastStartup = Disable;
|
||||||
CLK_XtalConfig(&stcXtalCfg);
|
CLK_XtalConfig(&stcXtalCfg);
|
||||||
CLK_XtalCmd(Enable);
|
CLK_XtalCmd(Disable);
|
||||||
|
|
||||||
/* Config Hrc and enable HRC */
|
/* Config Hrc and enable HRC */
|
||||||
CLK_HrcTrim(SystemCoreClock);
|
CLK_HrcTrim(SystemCoreClock);
|
||||||
@@ -104,13 +102,13 @@ static void SystemClockConfig(void)
|
|||||||
EFM_SetLatency(EFM_LATENCY_5);
|
EFM_SetLatency(EFM_LATENCY_5);
|
||||||
EFM_Lock();
|
EFM_Lock();
|
||||||
|
|
||||||
/* MPLL config (XTAL / pllmDiv * plln / PllpDiv = 200M). */
|
/* MPLL config (HRC / pllmDiv * plln / PllpDiv = 200M). */
|
||||||
stcMpllCfg.pllmDiv = 1ul;
|
stcMpllCfg.pllmDiv = 1ul;
|
||||||
stcMpllCfg.plln = 50ul;
|
stcMpllCfg.plln = 25ul;
|
||||||
stcMpllCfg.PllpDiv = 2ul;
|
stcMpllCfg.PllpDiv = 2ul;
|
||||||
stcMpllCfg.PllqDiv = 2ul;
|
stcMpllCfg.PllqDiv = 2ul;
|
||||||
stcMpllCfg.PllrDiv = 2ul;
|
stcMpllCfg.PllrDiv = 2ul;
|
||||||
CLK_SetPllSource(ClkPllSrcXTAL);
|
CLK_SetPllSource(ClkPllSrcHRC);
|
||||||
CLK_MpllConfig(&stcMpllCfg);
|
CLK_MpllConfig(&stcMpllCfg);
|
||||||
|
|
||||||
/* Enable MPLL. */
|
/* Enable MPLL. */
|
||||||
@@ -128,14 +126,14 @@ static void SystemClockConfig(void)
|
|||||||
|
|
||||||
void FeedDog(void)
|
void FeedDog(void)
|
||||||
{
|
{
|
||||||
#if (USE_DEBUG == 1)
|
#if (USE_WDT == 1)
|
||||||
SWDT_RefreshCounter();
|
SWDT_RefreshCounter();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: Xtal32_ClockConfig
|
* 函数名称: Xtal32_ClockConfig
|
||||||
* 功能描述: 系统低速时钟配置
|
* 功能描述: 外部低速时钟配置
|
||||||
* 参 数: 无
|
* 参 数: 无
|
||||||
* 返 回 值: 无
|
* 返 回 值: 无
|
||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
@@ -158,7 +156,14 @@ static void Xtal32_ClockConfig(void)
|
|||||||
/* wait for xtal32 running */
|
/* wait for xtal32 running */
|
||||||
Ddl_Delay1ms(100u);
|
Ddl_Delay1ms(100u);
|
||||||
}
|
}
|
||||||
|
void delay_5ns(uint32_t ns)
|
||||||
|
{
|
||||||
|
for(uint32_t i = 0; i < ns; i++)
|
||||||
|
{
|
||||||
|
__NOP();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#if(USE_RS485 == 1)
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: RS485Uart_Config
|
* 函数名称: RS485Uart_Config
|
||||||
* 功能描述: RS485串口初始化
|
* 功能描述: RS485串口初始化
|
||||||
@@ -244,7 +249,6 @@ static void RS485Uart_Config(uint32_t BaudRate)
|
|||||||
USART_FuncCmd(RS485_USART_CH, UsartRxInt, Enable);
|
USART_FuncCmd(RS485_USART_CH, UsartRxInt, Enable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void RS485UartSend(uint8_t *sData, uint16_t sLen)
|
void RS485UartSend(uint8_t *sData, uint16_t sLen)
|
||||||
{
|
{
|
||||||
RS485_TX();
|
RS485_TX();
|
||||||
@@ -297,7 +301,9 @@ static void RS485RxWakeupInit(void)
|
|||||||
NVIC_EnableIRQ(stcIrqRegiConf.enIRQn); /* Enable NVIC */
|
NVIC_EnableIRQ(stcIrqRegiConf.enIRQn); /* Enable NVIC */
|
||||||
enIntWakeupEnable(Extint2WU);
|
enIntWakeupEnable(Extint2WU);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if(USE_DEBUG == 1)
|
||||||
static void DbgUart_Config(uint32_t BaudRate)
|
static void DbgUart_Config(uint32_t BaudRate)
|
||||||
{
|
{
|
||||||
stc_usart_uart_init_t stcInitCfg;
|
stc_usart_uart_init_t stcInitCfg;
|
||||||
@@ -335,7 +341,7 @@ static void DbgUart_Config(uint32_t BaudRate)
|
|||||||
Error_Handler();
|
Error_Handler();
|
||||||
}
|
}
|
||||||
|
|
||||||
stcIrqRegiCfg.enIRQn = DBGUART_IRQn;
|
stcIrqRegiCfg.enIRQn = DBG_RX_IRQn;
|
||||||
stcIrqRegiCfg.pfnCallback = &DbgUsartRxIrqCallback;
|
stcIrqRegiCfg.pfnCallback = &DbgUsartRxIrqCallback;
|
||||||
stcIrqRegiCfg.enIntSrc = DBG_USART_RI_NUM;
|
stcIrqRegiCfg.enIntSrc = DBG_USART_RI_NUM;
|
||||||
enIrqRegistration(&stcIrqRegiCfg);
|
enIrqRegistration(&stcIrqRegiCfg);
|
||||||
@@ -343,9 +349,8 @@ static void DbgUart_Config(uint32_t BaudRate)
|
|||||||
NVIC_ClearPendingIRQ(stcIrqRegiCfg.enIRQn);
|
NVIC_ClearPendingIRQ(stcIrqRegiCfg.enIRQn);
|
||||||
NVIC_EnableIRQ(stcIrqRegiCfg.enIRQn);
|
NVIC_EnableIRQ(stcIrqRegiCfg.enIRQn);
|
||||||
|
|
||||||
|
|
||||||
/* Set USART RX error IRQ */
|
/* Set USART RX error IRQ */
|
||||||
stcIrqRegiCfg.enIRQn = DBGUART_EI_IRQn;
|
stcIrqRegiCfg.enIRQn = DBG_ER_IRQn;
|
||||||
stcIrqRegiCfg.pfnCallback = &DBGUsartErrIrqCallback;
|
stcIrqRegiCfg.pfnCallback = &DBGUsartErrIrqCallback;
|
||||||
stcIrqRegiCfg.enIntSrc = DBG_USART_EI_NUM;
|
stcIrqRegiCfg.enIntSrc = DBG_USART_EI_NUM;
|
||||||
enIrqRegistration(&stcIrqRegiCfg);
|
enIrqRegistration(&stcIrqRegiCfg);
|
||||||
@@ -414,7 +419,7 @@ static void DBGRxWakeupInit(void)
|
|||||||
stcExtiConfig.enExtiLvl = ExIntRisingEdge;
|
stcExtiConfig.enExtiLvl = ExIntRisingEdge;
|
||||||
EXINT_Init(&stcExtiConfig);
|
EXINT_Init(&stcExtiConfig);
|
||||||
stcIrqRegiConf.enIntSrc = DBG_RXPIN_EXIT_SRC; /* Select External Int Ch.1 */
|
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 */
|
stcIrqRegiConf.pfnCallback = &DBG_RxPinIntCallBack; /* Callback function */
|
||||||
enIrqRegistration(&stcIrqRegiConf); /* Registration IRQ */
|
enIrqRegistration(&stcIrqRegiConf); /* Registration IRQ */
|
||||||
NVIC_ClearPendingIRQ(stcIrqRegiConf.enIRQn); /* Clear pending */
|
NVIC_ClearPendingIRQ(stcIrqRegiConf.enIRQn); /* Clear pending */
|
||||||
@@ -422,36 +427,314 @@ static void DBGRxWakeupInit(void)
|
|||||||
NVIC_EnableIRQ(stcIrqRegiConf.enIRQn); /* Enable NVIC */
|
NVIC_EnableIRQ(stcIrqRegiConf.enIRQn); /* Enable NVIC */
|
||||||
enIntWakeupEnable(Extint2WU);
|
enIntWakeupEnable(Extint2WU);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
static void GPIO_Config(void)
|
static void GPIO_Config(void)
|
||||||
{
|
{
|
||||||
stc_port_init_t stcPortInit;
|
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(stcPortInit);
|
||||||
MEM_ZERO_STRUCT(stcPortPub);
|
|
||||||
|
|
||||||
stcPortPub.enReadWait = WaitCycle3;
|
|
||||||
PORT_PubSetting(&stcPortPub);
|
|
||||||
|
|
||||||
|
/********************************** GPIO输出 ****************************************/
|
||||||
stcPortInit.enPinMode = Pin_Mode_Out;
|
stcPortInit.enPinMode = Pin_Mode_Out;
|
||||||
stcPortInit.enPinOType = Pin_OType_Cmos;
|
stcPortInit.enPinOType = Pin_OType_Cmos;
|
||||||
stcPortInit.enPinDrv = Pin_Drv_H;
|
stcPortInit.enPinDrv = Pin_Drv_H;
|
||||||
stcPortInit.enPullUp = Disable;
|
stcPortInit.enPullUp = Disable;//无上拉
|
||||||
|
|
||||||
PORT_Init(RS485_CTRL_PORT, RS485_CTRL_PIN, &stcPortInit);
|
PORT_Init(LEFTUP_CS1237_SCLK_PORTx, LEFTUP_CS1237_SCLK_PINx, &stcPortInit);
|
||||||
RS485_RX();
|
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);
|
||||||
|
|
||||||
PORT_Init(LED_Blue_PORT, LED_Blue_PIN, &stcPortInit);
|
|
||||||
PORT_Init(LED_Green_PORT, LED_Green_PIN, &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)
|
static void Spi_Config(void)
|
||||||
{
|
{
|
||||||
stc_spi_init_t stcSpiInit;
|
stc_spi_init_t stcSpiInit;
|
||||||
@@ -546,10 +829,10 @@ uint16_t SpiSendReceive(uint16_t sData)
|
|||||||
|
|
||||||
return rData;
|
return rData;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#if(USE_SPI3 == 1)
|
||||||
//SPI3
|
|
||||||
static void Spi3_Config(void)
|
static void Spi3_Config(void)
|
||||||
{
|
{
|
||||||
stc_spi_init_t stcSpiInit;
|
stc_spi_init_t stcSpiInit;
|
||||||
@@ -674,9 +957,10 @@ uint8_t Spi3_RWByte(M4_SPI_TypeDef *SPIx, uint8_t u8Data)
|
|||||||
}
|
}
|
||||||
return SPIx->DR;
|
return SPIx->DR;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#if(USE_RTC == 1)
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: Rtc_Config
|
* 函数名称: Rtc_Config
|
||||||
* 功能描述: RTC配置
|
* 功能描述: RTC配置
|
||||||
@@ -805,7 +1089,8 @@ void TimeSync(time_t ts)
|
|||||||
DBG_LOG("TimeSync = %d-%d-%d %d:%d:%d\n", RtcDateTime.u8Year, RtcDateTime.u8Month, \
|
DBG_LOG("TimeSync = %d-%d-%d %d:%d:%d\n", RtcDateTime.u8Year, RtcDateTime.u8Month, \
|
||||||
RtcDateTime.u8Day, RtcDateTime.u8Hour, RtcDateTime.u8Minute, RtcDateTime.u8Second);
|
RtcDateTime.u8Day, RtcDateTime.u8Hour, RtcDateTime.u8Minute, RtcDateTime.u8Second);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
#if(USE_AD == 1)
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: AdcInitConfig
|
* 函数名称: AdcInitConfig
|
||||||
* 功能描述: ADC初始化配置
|
* 功能描述: ADC初始化配置
|
||||||
@@ -957,7 +1242,8 @@ static void AdcDmaConfig(void)
|
|||||||
PWC_Fcg0PeriphClockCmd(PWC_FCG0_PERIPH_AOS, Enable);
|
PWC_Fcg0PeriphClockCmd(PWC_FCG0_PERIPH_AOS, Enable);
|
||||||
DMA_SetTriggerSrc(M4_DMA1, DmaCh0, EVT_ADC1_EOCA);
|
DMA_SetTriggerSrc(M4_DMA1, DmaCh0, EVT_ADC1_EOCA);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
#if(USE_DMA == 1)
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: DmaIrqRegister
|
* 函数名称: DmaIrqRegister
|
||||||
* 功能描述: DMA中断寄存器配置
|
* 功能描述: DMA中断寄存器配置
|
||||||
@@ -1012,7 +1298,7 @@ static void Dma_Config(void)
|
|||||||
AdcDmaConfig();
|
AdcDmaConfig();
|
||||||
DmaIrqConfig();
|
DmaIrqConfig();
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
/*****************************************************************************************
|
/*****************************************************************************************
|
||||||
* 函数名称: ReadAdcValue
|
* 函数名称: ReadAdcValue
|
||||||
* 功能描述: 读取AD值
|
* 功能描述: 读取AD值
|
||||||
@@ -1053,26 +1339,32 @@ void ReadAdcValue(uint16_t *ADValue)
|
|||||||
|
|
||||||
void BSP_Init(void)
|
void BSP_Init(void)
|
||||||
{
|
{
|
||||||
|
|
||||||
stc_clk_freq_t Freq;
|
stc_clk_freq_t Freq;
|
||||||
SystemClockConfig();
|
SystemClockConfig();
|
||||||
SystemCoreClockUpdate();
|
SystemCoreClockUpdate();
|
||||||
Xtal32_ClockConfig();
|
//Xtal32_ClockConfig();
|
||||||
GPIO_Config();
|
GPIO_Config();
|
||||||
DbgUart_Config(500000);
|
ExtiCh10_Init();
|
||||||
RS485Uart_Config(9600);
|
ExtiCh01_Init();
|
||||||
Rtc_Config();
|
ExtiCh06_Init();
|
||||||
// SdioInit();
|
ExtiCh04_Init();
|
||||||
//Spi_Config();
|
|
||||||
Spi3_Config();
|
|
||||||
|
|
||||||
Adc1_Config();
|
DbgUart_Config(500000);
|
||||||
Dma_Config();
|
//RS485Uart_Config(9600);
|
||||||
FeedDog();
|
|
||||||
SysTick_Init(1000);
|
//Rtc_Config();
|
||||||
|
//SdioInit();
|
||||||
|
//Spi_Config();
|
||||||
|
// Spi3_Config();
|
||||||
|
|
||||||
|
//Adc1_Config();
|
||||||
|
//Dma_Config();
|
||||||
|
//FeedDog();
|
||||||
|
SysTick_Init(1000u);
|
||||||
SysTick_Delay(1000);
|
SysTick_Delay(1000);
|
||||||
CLK_GetClockFreq(&Freq);
|
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;
|
stc_port_init_t stcPortInit;
|
||||||
uint16_t AnaPin;
|
uint16_t AnaPin;
|
||||||
|
|
||||||
PWC_Fcg1PeriphClockCmd(SPI3_UNIT_CLOCK, Disable);
|
//PWC_Fcg1PeriphClockCmd(SPI3_UNIT_CLOCK, Disable);
|
||||||
PWC_Fcg1PeriphClockCmd(DBG_FCG1_PERIPH, Disable);
|
PWC_Fcg1PeriphClockCmd(DBG_FCG1_PERIPH, Disable);
|
||||||
DBGRxWakeupInit();
|
DBGRxWakeupInit();
|
||||||
|
|
||||||
@@ -1126,12 +1418,12 @@ extern uint8_t BDRxData[256];
|
|||||||
*****************************************************************************************/
|
*****************************************************************************************/
|
||||||
void Wakeup(void)
|
void Wakeup(void)
|
||||||
{
|
{
|
||||||
NVIC_DisableIRQ(DBG_RXPIN_IRQn);
|
NVIC_DisableIRQ(DBG_RX_IRQn);
|
||||||
PWC_ClkRecover();
|
PWC_ClkRecover();
|
||||||
//SystemClockConfig();
|
//SystemClockConfig();
|
||||||
Spi3_Config();
|
//Spi3_Config();
|
||||||
DbgUart_Config(5000000);
|
DbgUart_Config(5000000);
|
||||||
RS485Uart_Config(9600);
|
// RS485Uart_Config(9600);
|
||||||
//GPIO_Config();
|
//GPIO_Config();
|
||||||
//SysTick_Resume();
|
//SysTick_Resume();
|
||||||
SysTick_Init(1000);
|
SysTick_Init(1000);
|
||||||
@@ -1148,12 +1440,10 @@ void Error_Handler(void)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#if(USE_RS485 == 1)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
__WEAK void RS485UsartErrIrqCallback(void)
|
__WEAK void RS485UsartErrIrqCallback(void)
|
||||||
{
|
{
|
||||||
|
|
||||||
if(RS485_USART_CH->SR_f.ORE) {
|
if(RS485_USART_CH->SR_f.ORE) {
|
||||||
RS485_USART_CH->CR1_f.CORE = 1;
|
RS485_USART_CH->CR1_f.CORE = 1;
|
||||||
USART_RecData(RS485_USART_CH);
|
USART_RecData(RS485_USART_CH);
|
||||||
@@ -1164,12 +1454,8 @@ __WEAK void RS485UsartErrIrqCallback(void)
|
|||||||
|
|
||||||
if(RS485_USART_CH->SR_f.FE)
|
if(RS485_USART_CH->SR_f.FE)
|
||||||
RS485_USART_CH->CR1_f.CFE = 1;
|
RS485_USART_CH->CR1_f.CFE = 1;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
__WEAK void RS485_RxPinIntCallBack(void)
|
__WEAK void RS485_RxPinIntCallBack(void)
|
||||||
{
|
{
|
||||||
|
|
||||||
@@ -1178,6 +1464,7 @@ __WEAK void RS485_RxPinIntCallBack(void)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
__WEAK void DBGUsartErrIrqCallback(void)
|
__WEAK void DBGUsartErrIrqCallback(void)
|
||||||
{
|
{
|
||||||
if(DBG_USART_CH->SR_f.ORE) {
|
if(DBG_USART_CH->SR_f.ORE) {
|
||||||
|
|||||||
@@ -4,62 +4,435 @@
|
|||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "Encryption.h"
|
#include "Encryption.h"
|
||||||
#include "Debug.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_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;
|
||||||
|
|
||||||
|
static void show(uint8_t ch,int32_t ad)
|
||||||
|
|
||||||
void HexToAscii(uint8_t *HexData, char *ASCData, uint8_t sLen)
|
|
||||||
{
|
{
|
||||||
uint8_t temp;
|
uint8_t bao[7];
|
||||||
|
bao[0] = 0x5A;
|
||||||
for(int i = 0; i < sLen; i++) {
|
bao[1] = ch;
|
||||||
temp = (HexData[i] >> 4) & 0x0f;
|
bao[2] = ad & 0xFF;
|
||||||
if(temp < 10)
|
bao[3] = ad >> 8 & 0xFF;
|
||||||
temp += '0';
|
bao[4] = ad >> 16 & 0xFF;
|
||||||
else
|
bao[5] = ad >> 24 & 0xFF;
|
||||||
temp = (temp - 10) + 'A';
|
bao[6] = 0xA5;
|
||||||
|
DebugUartSend(bao,7);
|
||||||
ASCData[i * 2] = temp;
|
}
|
||||||
|
void LEFTUP_CS1237AinADataProcessCallBack(int32_t AD)
|
||||||
temp = HexData[i] & 0x0f;
|
{
|
||||||
if(temp < 10)
|
show(1,AD);
|
||||||
temp += '0';
|
for(int i = OSC_CNT-1; i > 0; i--)
|
||||||
else
|
{
|
||||||
temp = (temp - 10) + 'A';
|
App.LeftUpCS1237_TrendArray[i] = App.LeftUpCS1237_TrendArray[i - 1];
|
||||||
|
|
||||||
ASCData[i * 2 + 1] = temp;
|
|
||||||
}
|
}
|
||||||
ASCData[sLen * 2] = '\r';
|
App.LeftUpCS1237_TrendArray[0] = AD;
|
||||||
ASCData[sLen * 2 + 1] = '\n';
|
App.LeftUpCS1237ReadEndFlag = true;
|
||||||
ASCData[sLen * 2 + 2] = 0;
|
|
||||||
}
|
}
|
||||||
|
void LEFTLOW_CS1237AinADataProcessCallBack(int32_t AD)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void ADC_DMA_CallBack(void)
|
|
||||||
{
|
{
|
||||||
|
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)
|
int main(void)
|
||||||
{
|
{
|
||||||
BSP_Init();
|
BSP_Init();
|
||||||
DBG_LOG("**********************************************\r\n");
|
AppInit();
|
||||||
DBG_LOG("* Ver 1.0 2024-01-15 *\r\n");
|
|
||||||
DBG_LOG("**********************************************\r\n");
|
|
||||||
while(1) {
|
while(1) {
|
||||||
|
#if(USE_WDT == 1)
|
||||||
|
FeedDogHandler();
|
||||||
|
#endif
|
||||||
|
#if(USE_DEBUG == 1)
|
||||||
DebugLoopHandler();
|
DebugLoopHandler();
|
||||||
|
#endif
|
||||||
|
LEFTUP_CS1237DataLoopCollect();
|
||||||
|
LEFTLOW_CS1237DataLoopCollect();
|
||||||
|
RIGHTUP_CS1237DataLoopCollect();
|
||||||
|
RIGHTLOW_CS1237DataLoopCollect();
|
||||||
|
ReadLoopHandler();
|
||||||
|
AppLoopHandler();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -72,7 +445,12 @@ int main(void)
|
|||||||
void SysTick_IrqHandler(void)
|
void SysTick_IrqHandler(void)
|
||||||
{
|
{
|
||||||
SysTick_IncTick();
|
SysTick_IncTick();
|
||||||
|
App1mSRoutine();
|
||||||
Dbg1msRoutine();
|
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);
|
//PORT_Toggle(LED_Green_PORT, LED_Green_PIN);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ADC_DMA_CallBack(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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_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_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_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_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_ResetBits(en_port_t enPort, uint16_t u16Pin);
|
||||||
extern en_result_t PORT_Toggle(en_port_t enPort, uint16_t u16Pin);
|
extern en_result_t PORT_Toggle(en_port_t enPort, uint16_t u16Pin);
|
||||||
|
|||||||
@@ -258,7 +258,7 @@ extern "C"
|
|||||||
** \brief SWDT hardware start configuration
|
** \brief SWDT hardware start configuration
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
/*!< Enable or disable SWDT hardware start */
|
/*!< Enable or disable SWDT hardware start */
|
||||||
#if (USE_DEBUG == 1)
|
#if (USE_WDT == 1)
|
||||||
#define ICG0_SWDT_HARDWARE_START (ICG_FUNCTION_ON)
|
#define ICG0_SWDT_HARDWARE_START (ICG_FUNCTION_ON)
|
||||||
#else
|
#else
|
||||||
#define ICG0_SWDT_HARDWARE_START (ICG_FUNCTION_OFF)
|
#define ICG0_SWDT_HARDWARE_START (ICG_FUNCTION_OFF)
|
||||||
|
|||||||
@@ -483,7 +483,6 @@ en_result_t PORT_OE(en_port_t enPort, uint16_t u16Pin, en_functional_state_t enN
|
|||||||
return Ok;
|
return Ok;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
** \brief Set Port Pin
|
** \brief Set Port Pin
|
||||||
@@ -507,7 +506,6 @@ en_result_t PORT_SetBits(en_port_t enPort, uint16_t u16Pin)
|
|||||||
return Ok;
|
return Ok;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
** \brief Reset Port Pin
|
** \brief Reset Port Pin
|
||||||
|
|||||||
@@ -139,7 +139,7 @@ typedef enum en_result
|
|||||||
#define __UNUSED __attribute__((unused))
|
#define __UNUSED __attribute__((unused))
|
||||||
#endif /* __UNUSED */
|
#endif /* __UNUSED */
|
||||||
#ifndef __RAM_FUNC
|
#ifndef __RAM_FUNC
|
||||||
#define __RAM_FUNC __attribute__((long_call, section(".ramfunc")))
|
#define __RAM_FUNC __attribute__((section(".ramfunc")))
|
||||||
/* Usage: void __RAM_FUNC foo(void) */
|
/* Usage: void __RAM_FUNC foo(void) */
|
||||||
#endif /* __RAM_FUNC */
|
#endif /* __RAM_FUNC */
|
||||||
#elif defined (__ICCARM__) ///< IAR Compiler
|
#elif defined (__ICCARM__) ///< IAR Compiler
|
||||||
|
|||||||
Reference in New Issue
Block a user