Files

236 lines
7.2 KiB
C
Raw Permalink Normal View History

/*
* check_fun.c
*
* Created on: Nov 8, 2025
* Author: cc
*/
#include "includes.h"
/*******************************************************************************
* Function Name : Log_CheckSum
* Description : <EFBFBD><EFBFBD>У<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD>SRAM<EFBFBD>ж<EFBFBD>ȡ
*******************************************************************************/
__attribute__((section(".non_0_wait"))) uint8_t Log_CheckSum(uint32_t addr,uint8_t len)
{
uint8_t data_sum = 0;
for(uint8_t i = 0;i<len;i++)
{
data_sum += SRAM_Read_Byte(addr+i);
}
return ~data_sum;
}
/*******************************************************************************
* Function Name : Data_CheckSum
* Description : <EFBFBD><EFBFBD>У<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>
*******************************************************************************/
__attribute__((section(".non_0_wait"))) uint8_t Data_CheckSum(uint8_t* data,uint16_t len)
{
uint8_t data_sum = 0;
for(uint16_t i = 0;i<len;i++)
{
data_sum += data[i];
}
return ~data_sum;
}
/*******************************************************************************
* Function Name : CheckSum_Overlook_Check
* Description : <EFBFBD><EFBFBD>У<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD>
* input: data: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
len <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܳ<EFBFBD><EFBFBD><EFBFBD>
check_id: У<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD>
*******************************************************************************/
__attribute__((section(".non_0_wait"))) uint8_t CheckSum_Overlook_Check(uint8_t *data, uint16_t len, uint16_t check_id)
{
uint8_t data_sum = 0;
for(uint16_t i = 0;i<len;i++)
{
if(check_id != i) data_sum += data[i];
}
return ~data_sum;
}
/*******************************************************************************
* Function Name : NetCRC16
* Description : CRCУ<EFBFBD><EFBFBD> - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><EFBFBD><EFBFBD>
*******************************************************************************/
__attribute__((section(".non_0_wait"))) void NetCRC16(uint8_t *aStr ,uint16_t len)
{
uint16_t alen = len-2; //CRC16
uint16_t xda , xdapoly ;
uint16_t i,j, xdabit ;
xda = 0xFFFF ;
xdapoly = 0xA001 ; // (X**16 + X**15 + X**2 + 1)
for(i=0;i<alen;i++)
{
xda ^= aStr[i] ;
for(j=0;j<8;j++)
{
xdabit = (uint8_t )(xda & 0x01) ;
xda >>= 1 ;
if( xdabit ) xda ^= xdapoly ;
}
}
aStr[alen] = (uint8_t)(xda & 0xFF) ;
aStr[alen+1] = (uint8_t)(xda>>8) ;
}
/*******************************************************************************
* Function Name : NetCRC16_2
* Description : CRCУ<EFBFBD><EFBFBD> - <EFBFBD><EFBFBD>ȡSRAM<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* Input :
aStr : <EFBFBD><EFBFBD>ҪУ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׵<EFBFBD>ַ
len : <EFBFBD><EFBFBD><EFBFBD>ݵij<EFBFBD><EFBFBD><EFBFBD> -- Flash<EFBFBD>е<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>512Byte
* Return : <EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>У<EFBFBD><EFBFBD>ֵ
*******************************************************************************/
__attribute__((section(".non_0_wait"))) uint16_t NetCRC16_2(uint8_t *aStr ,uint16_t len)
{
uint16_t xda , xdapoly ;
uint16_t i,j, xdabit ;
xda = 0xFFFF ;
xdapoly = 0xA001 ; // (X**16 + X**15 + X**2 + 1)
for(i=0;i<len;i++)
{
xda ^= aStr[i] ;
for(j=0;j<8;j++)
{
xdabit = (uint8_t )(xda & 0x01) ;
xda >>= 1 ;
if( xdabit ) xda ^= xdapoly ;
}
}
return xda;
}
/*******************************************************************************
* Function Name : NetCRC16_Data
* Description : CRCУ<EFBFBD><EFBFBD> - CRC<EFBFBD>ڼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* Input :
aStr : <EFBFBD><EFBFBD>ҪУ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׵<EFBFBD>ַ
len : <EFBFBD><EFBFBD><EFBFBD>ݵij<EFBFBD><EFBFBD><EFBFBD> -- Flash<EFBFBD>е<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>512Byte
crc_id <EFBFBD><EFBFBD>CRC<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><EFBFBD>±<EFBFBD>λ<EFBFBD>ã<EFBFBD><EFBFBD>͵<EFBFBD>ַ<EFBFBD><EFBFBD>ǰ
* Return : <EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>У<EFBFBD><EFBFBD>ֵ
*******************************************************************************/
__attribute__((section(".non_0_wait"))) uint16_t NetCRC16_Data(uint8_t *aStr ,uint16_t len,uint16_t crc_id)
{
uint16_t xda , xdapoly ;
uint16_t i,j, xdabit ;
xda = 0xFFFF ;
xdapoly = 0xA001 ; // (X**16 + X**15 + X**2 + 1)
for(i=0;i<len;i++)
{
if((i == crc_id) || (i == (crc_id + 1)))
{
xda ^= 0x00;
}else {
xda ^= aStr[i];
}
for(j=0;j<8;j++)
{
xdabit = (uint8_t )(xda & 0x01) ;
xda >>= 1 ;
if( xdabit ) xda ^= xdapoly ;
}
}
return xda;
}
/*******************************************************************************
* Function Name : DoubleData_CheckSum
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>
* Data1 <EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>1
* Data1Len <EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>1<EFBFBD>ij<EFBFBD><EFBFBD><EFBFBD>
* Data2 <EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>2
* Data2Len <EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>2<EFBFBD>ij<EFBFBD><EFBFBD><EFBFBD>
*******************************************************************************/
__attribute__((section(".non_0_wait"))) uint8_t DoubleData_CheckSum(uint8_t *Data1, uint16_t Data1Len, uint8_t *Data2, uint16_t Data2Len)
{
uint8_t data_sum = 0;
uint16_t i;
for(i = 0; i < Data1Len;i++)
{
data_sum += Data1[i];
}
for(i = 0; i < Data2Len; i++)
{
data_sum += Data2[i];
}
return ~data_sum;
}
/*******************************************************************************
* Function Name : SOR_CRC
* Description : <EFBFBD><EFBFBD>У<EFBFBD><EFBFBD>
*******************************************************************************/
__attribute__((section(".non_0_wait"))) uint8_t SOR_CRC(uint8_t *Data, uint8_t DataLen)
{
uint8_t i;
uint8_t sor_data = 0;
for(i = 0; i < DataLen; i++)//i<><69><EFBFBD><EFBFBD>Ϊ0 <20><>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1
{
sor_data = sor_data+Data[i];
}
return sor_data;
}
/*******************************************************************************
* Function Name : DevAction_Data_Check
* Description : <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD>
*******************************************************************************/
__attribute__((section(".non_0_wait"))) uint8_t DeAction_Data_Check(uint32_t sram_addr)
{
uint16_t data_len = SRAM_Read_Word(sram_addr + sizeof(Dev_Action_Core) + sizeof(Dev_Action_Input) + sizeof(Dev_Action_Cond) + sizeof(Dev_Action_State) + 1);
uint8_t data_sum = 0;
uint8_t check_temp_buff[SRAM_DevAction_List_Size] = {0};
if(data_len > SRAM_DevAction_List_Size)
{
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD>ַ:%08X <20><EFBFBD>ij<EFBFBD><C4B3>ȣ<EFBFBD>%04X",sram_addr, data_len);
return 1;
}
memset(check_temp_buff,0,SRAM_DevAction_List_Size);
SRAM_DMA_Read_Buff(check_temp_buff,data_len,sram_addr);
for(uint16_t i = 0;i<data_len;i++)
{
data_sum += check_temp_buff[i];
}
return ~data_sum;
}
/*******************************************************************************
* Function Name : Dev_CheckSum
* Description : <EFBFBD><EFBFBD>У<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD>SRAM<EFBFBD>ж<EFBFBD>ȡ
*******************************************************************************/
__attribute__((section(".non_0_wait"))) uint8_t DevAction_CheckSum(uint32_t addr,uint16_t len)
{
uint8_t data_sum = 0;
uint8_t check_temp_buff[SRAM_DevAction_List_Size];// = {0};
if(len > SRAM_DevAction_List_Size)
{
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD>ַ:%08X <20><EFBFBD>ij<EFBFBD><C4B3>ȣ<EFBFBD>%04X",addr, len);
return 1;
}
memset(check_temp_buff,0,SRAM_DevAction_List_Size);
SRAM_DMA_Read_Buff(check_temp_buff,len,addr);
for(uint16_t i = 0;i<len;i++)
{
data_sum += check_temp_buff[i];
}
return ~data_sum;
}