feat:新建项目文件
BLV主机C1P模块
This commit is contained in:
235
MCU_Driver/check_fun.c
Normal file
235
MCU_Driver/check_fun.c
Normal file
@@ -0,0 +1,235 @@
|
||||
/*
|
||||
* check_fun.c
|
||||
*
|
||||
* Created on: Nov 8, 2025
|
||||
* Author: cc
|
||||
*/
|
||||
|
||||
#include "includes.h"
|
||||
|
||||
/*******************************************************************************
|
||||
* Function Name : Log_CheckSum
|
||||
* Description : <20><>У<EFBFBD><D0A3>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD>SRAM<41>ж<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 : <20><>У<EFBFBD><D0A3>ȡ<EFBFBD><C8A1>
|
||||
*******************************************************************************/
|
||||
__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 : <20><>У<EFBFBD><D0A3>ȡ<EFBFBD><C8A1>,<2C><><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD>
|
||||
* input: data: <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
len <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܳ<EFBFBD><DCB3><EFBFBD>
|
||||
check_id: У<><D0A3><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У<43><D0A3> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><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У<43><D0A3> - <20><>ȡSRAM<41><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* Input :
|
||||
aStr : <20><>ҪУ<D2AA><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
len : <20><><EFBFBD>ݵij<DDB5><C4B3><EFBFBD> -- Flash<73>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>512Byte
|
||||
* Return : <20><><EFBFBD>ݵ<EFBFBD>У<EFBFBD><D0A3>ֵ
|
||||
*******************************************************************************/
|
||||
__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У<43><D0A3> - CRC<52>ڼ<EFBFBD><DABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* Input :
|
||||
aStr : <20><>ҪУ<D2AA><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
len : <20><><EFBFBD>ݵij<DDB5><C4B3><EFBFBD> -- Flash<73>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>512Byte
|
||||
crc_id <20><>CRC<52><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5>±<EFBFBD>λ<EFBFBD>ã<EFBFBD><C3A3>͵<EFBFBD>ַ<EFBFBD><D6B7>ǰ
|
||||
* Return : <20><><EFBFBD>ݵ<EFBFBD>У<EFBFBD><D0A3>ֵ
|
||||
*******************************************************************************/
|
||||
__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 : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3>ȡ<EFBFBD><C8A1>
|
||||
* Data1 <20><><EFBFBD>ݰ<EFBFBD>1
|
||||
* Data1Len <20><><EFBFBD>ݰ<EFBFBD>1<EFBFBD>ij<EFBFBD><C4B3><EFBFBD>
|
||||
* Data2 <20><><EFBFBD>ݰ<EFBFBD>2
|
||||
* Data2Len <20><><EFBFBD>ݰ<EFBFBD>2<EFBFBD>ij<EFBFBD><C4B3><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 : <20><>У<EFBFBD><D0A3>
|
||||
*******************************************************************************/
|
||||
__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 : <20>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3>
|
||||
*******************************************************************************/
|
||||
__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 : <20><>У<EFBFBD><D0A3>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD>SRAM<41>ж<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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user