Commit 6f1307e4 authored by 赵康弘's avatar 赵康弘

perf: MC33984EHFK功能

parent f1662d0a
......@@ -2,6 +2,8 @@
"files.associations": {
"tca9539.h": "c",
"tyw_stdint.h": "c",
"simulated_iic_2_master.h": "c"
"simulated_iic_2_master.h": "c",
"simulated_spi_master.h": "c",
"mc33984ehfk.h": "c"
}
}
\ No newline at end of file
......@@ -66,7 +66,7 @@
* E:\Test_MCAL_U2A8_292_43.03_240129_canfd\Test_MCAL_U2A8_292_43.03_240129\Config\Config292\generator\BSWMDT\R431_PORT_U2A8_BSWMDT.arxml
* E:\Test_MCAL_U2A8_292_43.03_240129_canfd\Test_MCAL_U2A8_292_43.03_240129\Config\Config292\stubs\Dem\xml\Dem_Port.arxml
* E:\Test_MCAL_U2A8_292_43.03_240129_canfd\Test_MCAL_U2A8_292_43.03_240129\Config\Config292\Translation.trxml
* GENERATED ON: 09 May 2025 - 17:06:53
* GENERATED ON: 12 May 2025 - 20:16:20
*/
......@@ -4333,13 +4333,13 @@ CONST(Port_Reg_Init, PORT_CONFIG_DATA) Port_GaaPortConfig[] =
0x00B3U,
/* PM */
0xFEA7U,
0x8EA7U,
/* PIPC */
0x0000U,
/* PIBC */
0x0000U,
0x0800U,
/* PFC */
0x0081U,
......@@ -4408,10 +4408,10 @@ CONST(Port_Reg_Init, PORT_CONFIG_DATA) Port_GaaPortConfig[] =
0x0000U,
/* PDSC */
0x0000U,
0x6008U,
/* PUCC */
0x0000U,
0x6008U,
/* PINV */
0x0000U,
......
#!gbuild
[Subproject]
MC33984EHFK.c
MC33984EHFK.h
TCA9539.c
TCA9539.h
CAN_APP\RTE_CAN.c
......
#include "MC33984EHFK.h"
#include "Simulated_SPI_Master.h"
void MC33984EHFK_Delay(void)
{
uint8_t i;
for (i = 0; i < 80U; i++)
{
NOP();
}
}
void MC33984EHFK_Init(void)
{
MC33984EHFK_CS2_Output_High();
Sim_SPI_Master_Start(SIM_SPI_MODE_1, SIM_SPI_MSB_FIRST);
MC33984EHFK_CS1_Output_Low();
/*2.输出控制*/
Sim_SPI_Master_Byte_Write(MC33984_OCR); /*全开*/
Sim_SPI_Master_Byte_Write(0x0F);
/*3.过电流高/低选择*/
Sim_SPI_Master_Byte_Write(MC33984_SOCHLR_0); /*大电流100A,小电流7.5A*/
Sim_SPI_Master_Byte_Write(0x07);
/*4.电流检测时间与开负载*/
Sim_SPI_Master_Byte_Write(MC33984_CDTOLR_0); /*禁用此检测*/
Sim_SPI_Master_Byte_Write(0x0c);
/*5.直接输入控制*/
Sim_SPI_Master_Byte_Write(MC33984_DICR_0); /*使用外部控制,电流监测比例:1=1/41000,快速输出斜率*/
Sim_SPI_Master_Byte_Write(0x0c);
/*6.输出切换延迟*/
Sim_SPI_Master_Byte_Write(MC33984_OSDR); /*挑了个中间值,延时300ms*/
Sim_SPI_Master_Byte_Write(0x03);
/*7.看门狗*/
Sim_SPI_Master_Byte_Write(MC33984_WDR); /*设置为最大2500ms*/
Sim_SPI_Master_Byte_Write(0X02);
/*9.欠压/过压*/
Sim_SPI_Master_Byte_Write(MC33984_UOVR); /*全开*/
Sim_SPI_Master_Byte_Write(0X00);
MC33984EHFK_CS1_Output_High();
MC33984EHFK_Delay();
}
uint8_t MC33984EHFK_Readstep = 0;
uint8_t MC33984_Record = 0;
uint8_t dasdsa = 0;
uint8_t HDir[100] = 0;
void MC33984EHFK_Read(void)
{
if (MC33984EHFK_Readstep < 8)
{
MC33984EHFK_CS1_Output_Low();
if (MC33984_Record < 80)
{
HDir[MC33984_Record]=MC33984EHFK_Readstep;
MC33984_Record++;
HDir[MC33984_Record] = Sim_SPI_Master_Byte_Read(MC33984_STATR_0 + MC33984EHFK_Readstep);
MC33984_Record++;
if (dasdsa == 0)
{
Sim_SPI_Master_Byte_Write(MC33984_OCR); /*全开*/
Sim_SPI_Master_Byte_Write(0x0F);
dasdsa = 1;
}
else
{
Sim_SPI_Master_Byte_Write(MC33984_OCR_FeedDog); /*全开*/
Sim_SPI_Master_Byte_Write(0x0F);
dasdsa = 0;
}
}
else
{
MC33984_Record = 0;
}
MC33984EHFK_CS1_Output_High();
MC33984EHFK_Readstep++;
}
else
{
MC33984EHFK_Readstep = 0;
}
}
#include "TYW_stdint.h"
#define MC33984_STATR_0 0x00
#define MC33984_STATR_1 0x80
#define MC33984_OCR 0x10
#define MC33984_OCR_FeedDog 0x90
#define MC33984_SOCHLR_0 0x20
#define MC33984_SOCHLR_1 0xA0
#define MC33984_CDTOLR_0 0x30
#define MC33984_CDTOLR_1 0xB0
#define MC33984_DICR_0 0x40
#define MC33984_DICR_1 0xC0
#define MC33984_OSDR 0x50
#define MC33984_WDR 0xD0
#define MC33984_UOVR 0xE0
void MC33984EHFK_Init(void);
void MC33984EHFK_Read(void);
#!gbuild
[Subproject]
Simulated_SPI_Master.c
Simulated_SPI_Master.h
Simulated_IIC_2_Master.c
Simulated_IIC_2_Master.h
CAN\Rscan.c
......
#include "Simulated_SPI_Master.h"
#include "Port_Cfg.h"
#include "Port.h"
#include "Dio.h"
SimSPIConfigStruct SimSPIConfig;
/*时钟输出高*/
void MC33984EHFK_Clock_Output_High(void)
{
Dio_WriteChannel(DioConf_DioChannel_P02_12, STD_HIGH);
}
/*时钟输出低*/
void MC33984EHFK_Clock_Output_Low(void)
{
Dio_WriteChannel(DioConf_DioChannel_P02_12, STD_LOW);
}
/*时钟翻转*/
void MC33984EHFK_Clock_Output_Flip(void)
{
Dio_FlipChannel(DioConf_DioChannel_P02_12);
}
/*MOSI输出高*/
void MC33984EHFK_MOSI_Output_High(void)
{
Dio_WriteChannel(DioConf_DioChannel_P02_13, STD_HIGH);
}
/*MOSI输出低*/
void MC33984EHFK_MOSI_Output_Low(void)
{
Dio_WriteChannel(DioConf_DioChannel_P02_13, STD_LOW);
}
/*CS1输出高*/
void MC33984EHFK_CS1_Output_High(void)
{
Dio_WriteChannel(DioConf_DioChannel_P02_14, STD_HIGH);
}
/*CS1输出低*/
void MC33984EHFK_CS1_Output_Low(void)
{
Dio_WriteChannel(DioConf_DioChannel_P02_14, STD_LOW);
}
/*CS2输出高*/
void MC33984EHFK_CS2_Output_High(void)
{
Dio_WriteChannel(DioConf_DioChannel_P02_03, STD_HIGH);
}
/*CS2输出低*/
void MC33984EHFK_CS2_Output_Low(void)
{
Dio_WriteChannel(DioConf_DioChannel_P02_03, STD_LOW);
}
/*MISO*/
/*Dio_ReadChannel(Port_Config_PortGroup22_PortPin11);*/
/******************************************************************************
��������SPI_Master_Start
�� �ܣ���ʼ��������SPI����ģʽ
�� ����Mode��SPI����ģʽ�� SIM_SPI_MODE_0
SIM_SPI_MODE_1
SIM_SPI_MODE_2
SIM_SPI_MODE_3
FirstBit�����ȷ��͵�����λ��SIM_SPI_MSB_FIRST
SIM_SPI_LSB_FIRST
����ֵ����
******************************************************************************/
void Sim_SPI_Master_Start(uint8_t Mode, uint8_t FirstBit)
{
switch (Mode)
{
case SIM_SPI_MODE_0 : SimSPIConfig.CPOL = 0;
SimSPIConfig.CPHA = 0;
break;
case SIM_SPI_MODE_1 : SimSPIConfig.CPOL = 0;
SimSPIConfig.CPHA = 1;
break;
case SIM_SPI_MODE_2 : SimSPIConfig.CPOL = 1;
SimSPIConfig.CPHA = 0;
break;
case SIM_SPI_MODE_3 : SimSPIConfig.CPOL = 1;
SimSPIConfig.CPHA = 1;
break;
default : SimSPIConfig.CPOL = 0;
SimSPIConfig.CPHA = 0;
break;
}
SimSPIConfig.FirstBit = FirstBit;
// SPI_SCLK = SimSPIConfig.CPOL;
Dio_WriteChannel(DioConf_DioChannel_P02_12, SimSPIConfig.CPOL);
MC33984EHFK_MOSI_Output_Low();
}
/******************************************************************************
��������Sim_SPI_Master_Byte_Write
�� �ܣ���SPI������дһ�ֽ�
�� ����Data:Ҫд�������
����ֵ����
******************************************************************************/
void Sim_SPI_Master_Byte_Write(uint8_t Data)
{
uint8_t BitPos;
if (SimSPIConfig.FirstBit == SIM_SPI_MSB_FIRST)
{
for (BitPos = 0x80; BitPos >= 0x01; BitPos >>= 1)
{
if (SimSPIConfig.CPHA == 0)
{
if (Data & BitPos)
MC33984EHFK_MOSI_Output_High();
else
MC33984EHFK_MOSI_Output_Low();
NOP();
NOP();
NOP();
}
NOP();
MC33984EHFK_Clock_Output_Flip();
if (SimSPIConfig.CPHA)
{
if (Data & BitPos)
MC33984EHFK_MOSI_Output_High();
else
MC33984EHFK_MOSI_Output_Low();
NOP();
NOP();
NOP();
}
NOP();
MC33984EHFK_Clock_Output_Flip();
}
}
else
{
for (BitPos = 0x01; BitPos <= 0x80; BitPos <<= 1)
{
if (SimSPIConfig.CPHA == 0)
{
if (Data & BitPos)
MC33984EHFK_MOSI_Output_High();
else
MC33984EHFK_MOSI_Output_Low();
NOP();
NOP();
NOP();
}
NOP();
MC33984EHFK_Clock_Output_Flip();
if (SimSPIConfig.CPHA)
{
if (Data & BitPos)
MC33984EHFK_MOSI_Output_High();
else
MC33984EHFK_MOSI_Output_Low();
NOP();
NOP();
NOP();
}
NOP();
MC33984EHFK_Clock_Output_Flip();
}
}
}
uint8_t BitPosfsfds;
/******************************************************************************
��������Sim_SPI_Master_Byte_Read
�� �ܣ���SPI�����϶�ȡһ�ֽ�����
�� ����TxData���ڶ�ȡ��ͬʱд�������
����ֵ������������
******************************************************************************/
uint8_t Sim_SPI_Master_Byte_Read(uint8_t TxData)
{
uint8_t RxData;
uint8_t BitPos;
RxData = 0x00;
// BitPosfsfds=Dio_ReadChannel(Port_Config_PortGroup2_PortPin11);
if (SimSPIConfig.FirstBit == SIM_SPI_MSB_FIRST)
{
for (BitPos = 0x80; BitPos >= 0x01; BitPos >>= 1)
{
if (SimSPIConfig.CPHA == 0)
{
if (TxData & BitPos)
MC33984EHFK_MOSI_Output_High();
else
MC33984EHFK_MOSI_Output_Low();
NOP();
NOP();
NOP();
}
NOP();
MC33984EHFK_Clock_Output_Flip();
if (SimSPIConfig.CPHA)
{
if (TxData & BitPos)
MC33984EHFK_MOSI_Output_High();
else
MC33984EHFK_MOSI_Output_Low();
NOP();
NOP();
NOP();
}
else
{
NOP();
NOP();
NOP();
if (Dio_ReadChannel(Port_Config_PortGroup2_PortPin11))
RxData |= BitPos;
}
NOP();
MC33984EHFK_Clock_Output_Flip();
if (SimSPIConfig.CPHA)
{
NOP();
NOP();
NOP();
if (Dio_ReadChannel(Port_Config_PortGroup2_PortPin11))
RxData |= BitPos;
}
}
}
else
{
for (BitPos = 0x01; BitPos <= 0x80; BitPos <<= 1)
{
if (SimSPIConfig.CPHA == 0)
{
if (TxData & BitPos)
MC33984EHFK_MOSI_Output_High();
else
MC33984EHFK_MOSI_Output_Low();
NOP();
NOP();
NOP();
}
NOP();
MC33984EHFK_Clock_Output_Flip();
if (SimSPIConfig.CPHA)
{
if (TxData & BitPos)
MC33984EHFK_MOSI_Output_High();
else
MC33984EHFK_MOSI_Output_Low();
NOP();
NOP();
NOP();
}
else
{
NOP();
NOP();
NOP();
if (Dio_ReadChannel(Port_Config_PortGroup2_PortPin11))
RxData |= BitPos;
}
NOP();
MC33984EHFK_Clock_Output_Flip();
if (SimSPIConfig.CPHA)
{
NOP();
NOP();
NOP();
if (Dio_ReadChannel(Port_Config_PortGroup2_PortPin11))
RxData |= BitPos;
}
}
}
return RxData;
}
/******************************************************************************
��������Sim_SPI_Master_Word_Write
�� �ܣ���SPI������дһ����(16bit)������
�� ����Data:Ҫд�������
����ֵ����
******************************************************************************/
void Sim_SPI_Master_Word_Write(uint16_t Data)
{
uint16_t BitPos;
if (SimSPIConfig.FirstBit == SIM_SPI_MSB_FIRST)
{
for (BitPos = 0x8000; BitPos >= 0x0001; BitPos >>= 1)
{
if (SimSPIConfig.CPHA == 0)
{
if (Data & BitPos)
MC33984EHFK_MOSI_Output_High();
else
MC33984EHFK_MOSI_Output_Low();
NOP();
NOP();
NOP();
}
NOP();
MC33984EHFK_Clock_Output_Flip();
if (SimSPIConfig.CPHA)
{
if (Data & BitPos)
MC33984EHFK_MOSI_Output_High();
else
MC33984EHFK_MOSI_Output_Low();
NOP();
NOP();
NOP();
}
NOP();
MC33984EHFK_Clock_Output_Flip();
}
}
else
{
for (BitPos = 0x0001; BitPos <= 0x8000; BitPos <<= 1)
{
if (SimSPIConfig.CPHA == 0)
{
if (Data & BitPos)
MC33984EHFK_MOSI_Output_High();
else
MC33984EHFK_MOSI_Output_Low();
NOP();
NOP();
NOP();
}
NOP();
MC33984EHFK_Clock_Output_Flip();
if (SimSPIConfig.CPHA)
{
if (Data & BitPos)
MC33984EHFK_MOSI_Output_High();
else
MC33984EHFK_MOSI_Output_Low();
NOP();
NOP();
NOP();
}
NOP();
MC33984EHFK_Clock_Output_Flip();
}
}
}
/******************************************************************************
��������Sim_SPI_Master_Word_Read
�� �ܣ���SPI�����϶�ȡһ����(16bit)������
�� ����TxData���ڶ�ȡ��ͬʱд�������
����ֵ������������
******************************************************************************/
uint16_t Sim_SPI_Master_Word_Read(uint16_t TxData)
{
uint16_t RxData;
uint16_t BitPos;
RxData = 0x00;
if (SimSPIConfig.FirstBit == SIM_SPI_MSB_FIRST)
{
for (BitPos = 0x8000; BitPos >= 0x0001; BitPos >>= 1)
{
if (SimSPIConfig.CPHA == 0)
{
if (TxData & BitPos)
MC33984EHFK_MOSI_Output_High();
else
MC33984EHFK_MOSI_Output_Low();
NOP();
NOP();
NOP();
}
NOP();
MC33984EHFK_Clock_Output_Flip();
if (SimSPIConfig.CPHA)
{
if (TxData & BitPos)
MC33984EHFK_MOSI_Output_High();
else
MC33984EHFK_MOSI_Output_Low();
NOP();
NOP();
NOP();
}
else
{
NOP();
NOP();
NOP();
if (Dio_ReadChannel(Port_Config_PortGroup2_PortPin11))
RxData |= BitPos;
}
NOP();
MC33984EHFK_Clock_Output_Flip();
if (SimSPIConfig.CPHA)
{
NOP();
NOP();
NOP();
if (Dio_ReadChannel(Port_Config_PortGroup2_PortPin11))
RxData |= BitPos;
}
}
}
else
{
for (BitPos = 0x0001; BitPos <= 0x8000; BitPos <<= 1)
{
if (SimSPIConfig.CPHA == 0)
{
if (TxData & BitPos)
MC33984EHFK_MOSI_Output_High();
else
MC33984EHFK_MOSI_Output_Low();
NOP();
NOP();
NOP();
}
NOP();
MC33984EHFK_Clock_Output_Flip();
if (SimSPIConfig.CPHA)
{
if (TxData & BitPos)
MC33984EHFK_MOSI_Output_High();
else
MC33984EHFK_MOSI_Output_Low();
NOP();
NOP();
NOP();
}
else
{
NOP();
NOP();
NOP();
if (Dio_ReadChannel(Port_Config_PortGroup2_PortPin11))
RxData |= BitPos;
}
NOP();
MC33984EHFK_Clock_Output_Flip();
if (SimSPIConfig.CPHA)
{
NOP();
NOP();
NOP();
if (Dio_ReadChannel(Port_Config_PortGroup2_PortPin11))
RxData |= BitPos;
}
}
}
return RxData;
}
#ifndef _SIMULATED_SPI_MASTER_H_
#define _SIMULATED_SPI_MASTER_H_
#include "TYW_stdint.h"
/******************************************************************************
模拟SPI主机可配置参数
******************************************************************************/
/*** SPI工作模式 ***/
#define SIM_SPI_MODE_0 0x00
#define SIM_SPI_MODE_1 0x01
#define SIM_SPI_MODE_2 0x02
#define SIM_SPI_MODE_3 0x03
/*** 首先发送的数据位 ***/
#define SIM_SPI_MSB_FIRST 0x00
#define SIM_SPI_LSB_FIRST 0x01
/******************************************************************************
模拟SPI主机配置结构
******************************************************************************/
typedef struct
{
uint8_t CPOL;
uint8_t CPHA;
uint8_t FirstBit;
}SimSPIConfigStruct;
/******************************************************************************
函数声明
******************************************************************************/
void Sim_SPI_Master_Start(uint8_t Mode, uint8_t FirstBit);
void Sim_SPI_Master_Byte_Write(uint8_t Data);
uint8_t Sim_SPI_Master_Byte_Read(uint8_t TxData);
void Sim_SPI_Master_Word_Write(uint16_t Data);
uint16_t Sim_SPI_Master_Word_Read(uint16_t TxData);
/*CS1输出高*/
void MC33984EHFK_CS1_Output_High(void);
/*CS1输出低*/
void MC33984EHFK_CS1_Output_Low(void);
/*CS2输出高*/
void MC33984EHFK_CS2_Output_High(void);
/*CS2输出低*/
void MC33984EHFK_CS2_Output_Low(void);
#endif
......@@ -6,6 +6,8 @@
#include "CAN_CH0_CAN_Communication_Matrix.h"
#include "Adc.h"
#include "TCA9539.h"
#include "MC33984EHFK.h"
void Sys_50us_Tasks(void)
{
COM_TX_Process();
......@@ -76,10 +78,11 @@ uint16_t ADC_Input_Voltage_Calc(uint16_t u16ADCSample, uint16_t u16ADCRes, uint1
return u16Result;
}
// uint8_t aaaaaaData = 0U;
void Sys_100ms_Tasks(void)
{
// Dio_FlipChannel(DioConf_DioChannel_P56DioChannel);
// Dio_FlipChannel(DioConf_DioChannel_P24_13);
Dio_FlipChannel(DioConf_DioChannel_P24_13);
// g_u8secstatus++;
// if (g_u8secstatus == 10)
// {
......@@ -105,7 +108,8 @@ void Sys_100ms_Tasks(void)
}
}
TCA9539_Control();
// aaaaaaData= Dio_ReadChannel(Port_Config_PortGroup22_PortPin4);
MC33984EHFK_Read();
// aaaaaaData= Dio_ReadChannel(Port_Config_PortGroup2_PortPin11);
// abbaaaData= Dio_ReadChannel(Port_Config_PortGroup22_PortPin3);
// Port_SetPinDirection(Port_Config_PortGroup22_PortPin3, PORT_PIN_IN);
......
#include "init.h"
#include "Sys_Scheduler.h"
#include "Simulated_IIC_2_Master.h"
#include "MC33984EHFK.h"
#define ADC_MODULE_SAMPLE//sophia add
/* Registers base adrress */
......@@ -448,6 +449,7 @@ void Sys_Startup_Init(void)
*****************************************************************************/
Simulated_IIC_2_Init( );
MC33984EHFK_Init( );
#ifdef SPI_MODULE_SAMPLE
/* This service is for initializing the SPI Driver. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment