From 008a4a2fc024c76d2aad7b916f6a99c7023dc0a1 Mon Sep 17 00:00:00 2001 From: seklyuts Date: Thu, 16 May 2024 09:50:13 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D0=B1=D0=B0=D0=B3=20=D1=81=20=D0=B7=D0=B0=D0=BF?= =?UTF-8?q?=D0=B8=D1=81=D1=8C=D1=8E=20=D0=B2=D0=BE=20=D1=84=D0=BB=D0=B5?= =?UTF-8?q?=D1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Projects/EFC_IPC_Server_C28/mem_test.c | 6 +- .../src/ExternalEEPROM/GD25Q16ETIGR.c | 104 +++++++++++++++++- .../src/Peripherals/ipc_init.c | 43 ++++---- .../src/Peripherals/pwm_interrupts.c | 4 +- .../src/Peripherals/spi_init.c | 2 +- 5 files changed, 128 insertions(+), 31 deletions(-) diff --git a/Projects/EFC_IPC_Server_C28/mem_test.c b/Projects/EFC_IPC_Server_C28/mem_test.c index 9e974bf..181b8d2 100644 --- a/Projects/EFC_IPC_Server_C28/mem_test.c +++ b/Projects/EFC_IPC_Server_C28/mem_test.c @@ -28,13 +28,13 @@ void main(void) InitPerif(); for(;;) { - asm (" NOP"); +// asm (" NOP"); ipc_run(); -#ifdef CPU1 +//#ifdef CPU1 // emif_run(); // frmmstr_run(); -#endif +//#endif } } diff --git a/Projects/EFC_IPC_Server_C28/src/ExternalEEPROM/GD25Q16ETIGR.c b/Projects/EFC_IPC_Server_C28/src/ExternalEEPROM/GD25Q16ETIGR.c index 1269eb1..526f92d 100644 --- a/Projects/EFC_IPC_Server_C28/src/ExternalEEPROM/GD25Q16ETIGR.c +++ b/Projects/EFC_IPC_Server_C28/src/ExternalEEPROM/GD25Q16ETIGR.c @@ -29,6 +29,29 @@ uint16_t GD25Q16ETIGR_buffer8bytes[8]; uint16_t SectorWasErraised[512]; +uint16_t writeVerify = 1; + + +void delay(void) +{ + uint32_t i; + for(i=0;i<100000;i++) + { + asm (" NOP"); + } +} + + + +void GD25Q16ETIGR_checkRXFFST(void) +{ + volatile uint16_t empty; + while(SpiRegs.SPIFFRX.bit.RXFFST > 0) + { + empty = SpiRegs.SPIRXBUF; + } +} + void GD25Q16ETIGR_clean_SectorWasErraised(void) { @@ -43,6 +66,7 @@ void GD25Q16ETIGR_clean_SectorWasErraised(void) void GD25Q16ETIGR_en(void) { volatile uint16_t empty; +// GD25Q16ETIGR_checkRXFFST(); transmitData(WriteEnable); while(SpiRegs.SPIFFRX.bit.RXFFST != 1) { @@ -54,6 +78,7 @@ void GD25Q16ETIGR_en(void) uint16_t GD25Q16ETIGR_ReadStatus(void) { volatile uint16_t empty; +// GD25Q16ETIGR_checkRXFFST(); transmitData(ReadStatusRegister1); transmitData(0xFF); while(SpiRegs.SPIFFRX.bit.RXFFST != 2) @@ -93,6 +118,9 @@ uint16_t GD25Q16ETIGR_sector_erase(uint32_t Addr) if(Err) return Err; GD25Q16ETIGR_en(); + +// GD25Q16ETIGR_checkRXFFST(); + transmitData(SectorErase); transmitData(Addr>>16); transmitData(Addr>>8); @@ -117,6 +145,8 @@ uint16_t GD25Q16ETIGR_read_8_bytes(uint32_t Addr, uint16_t * read_data, uint16_t Err = GD25Q16ETIGR_WaitStatus(); if(Err) return Err; +// GD25Q16ETIGR_checkRXFFST(); + transmitData(ReadData); transmitData(Addr>>16); transmitData(Addr>>8); @@ -146,6 +176,8 @@ uint16_t GD25Q16ETIGR_verify_8_bytes(uint32_t Addr, uint16_t * verify_data, uint Err = GD25Q16ETIGR_WaitStatus(); if(Err) return Err; +// GD25Q16ETIGR_checkRXFFST(); + transmitData(ReadData); transmitData(Addr>>16); transmitData(Addr>>8); @@ -161,11 +193,20 @@ uint16_t GD25Q16ETIGR_verify_8_bytes(uint32_t Addr, uint16_t * verify_data, uint empty = SpiRegs.SPIRXBUF; for(j = 0; j>16); transmitData(Addr>>8); @@ -196,6 +240,53 @@ uint16_t GD25Q16ETIGR_write_8_bytes(uint32_t Addr, uint16_t * write_data, uint16 return 0; } + +uint32_t ErrAdr[8]; + +uint16_t GD25Q16ETIGR_write_veryfy_8_bytes(uint32_t Addr, uint16_t * write_data, uint16_t num_byte)//запись и проверка до 8 байт +{ + uint16_t addr_write_data[8]; + uint16_t addr_read_data[8]; + uint16_t i, Err = 0, DoneOK = 0; + + for(i = 0; i 2048)||(InData == 0)) {IPC_sendCommand(IPC_CPU1_L_CM_R, WRONG_LENGHT, EMIF, 0, 0); return;} if((InAddr+InData) > 0x100000*2) {IPC_sendCommand(IPC_CPU1_L_CM_R, WRONG_ADDR, EMIF, 0, 0); return;} IPC_sendCommand(IPC_CPU1_L_CM_R, COMMAND_ACCEPTED, EMIF, 0, 0); @@ -217,7 +217,7 @@ void getMessage_from_Cm_BL25CM1A(void) { uint16_t MemOperationError = 0; if((InData > 2048*2)||(InData == 0)) {IPC_sendCommand(IPC_CPU1_L_CM_R, WRONG_LENGHT, BL25CM1A_1M_bit_SPI, 0, 0); return;} - if((InAddr+InData) > (BL25CM1A0_SIZE*2)) {IPC_sendCommand(IPC_CPU1_L_CM_R, WRONG_ADDR, BL25CM1A_1M_bit_SPI, 0, 0); return;} + if( ((InAddr+InData) > (BL25CM1A0_SIZE*2))||((InAddr) > (BL25CM1A0_SIZE*2)) ){IPC_sendCommand(IPC_CPU1_L_CM_R, WRONG_ADDR, BL25CM1A_1M_bit_SPI, 0, 0); return;} IPC_sendCommand(IPC_CPU1_L_CM_R, COMMAND_ACCEPTED, BL25CM1A_1M_bit_SPI, 0, 0); spi_TurnOffCS1_GD25Q16E(); @@ -248,8 +248,10 @@ void getMessage_from_Cm_BL25CM1A(void) void getMessage_from_Cm_GD25Q16E(void) { uint16_t MemOperationError = 0; + + uint32_t EndOfAdr = (InAddr+InData); if((InData > (2048*2))||(InData == 0)) {IPC_sendCommand(IPC_CPU1_L_CM_R, WRONG_LENGHT, GD25Q16E_16M_bit_SPI, 0, 0); return;} - if((InAddr+InData) > (GD25Q16E_SIZE*2)) {IPC_sendCommand(IPC_CPU1_L_CM_R, WRONG_ADDR, GD25Q16E_16M_bit_SPI, 0, 0); return;} + if( (EndOfAdr > (GD25Q16E_SIZE*2)) || (InAddr > (GD25Q16E_SIZE*2)) ) {IPC_sendCommand(IPC_CPU1_L_CM_R, WRONG_ADDR, GD25Q16E_16M_bit_SPI, 0, 0); return;} IPC_sendCommand(IPC_CPU1_L_CM_R, COMMAND_ACCEPTED, GD25Q16E_16M_bit_SPI, 0, 0); Gpio_SPI_CS_BL25CM1A(1); @@ -390,7 +392,7 @@ void ipc_run(void) // CmConfRegs.CMRESCTL.all = SYSCTL_CMRESCTL_RESET | SYSCTL_REG_KEY;//.bit.RESETSTS = 1; // DevCfgRegs.CPU2RESCTL.all = ((uint32_t)SYSCTL_CPU2RESCTL_RESET |(SYSCTL_REG_KEY & SYSCTL_CPU2RESCTL_KEY_M)); //.bit.RESET = 1; // EDIS; - CpuSysRegs.SIMRESET.all = ((uint32_t)SYSCTL_REG_KEY | (uint32_t)1);// + CpuSysRegs.SIMRESET.all = ((uint32_t)SYSCTL_REG_KEY | (uint32_t)1);//программный сброс всех контроллеров IPC_sendCommand(IPC_CPU1_L_CM_R, COMMAND_ACCEPTED, ZD24C02A_2K_I2C, 0, 0); IPC_setFlagLtoR(IPC_CPU1_L_CM_R,(1<<0)); ReadFromCm = 0; @@ -425,4 +427,3 @@ void ipc_run(void) ReadFromCm = 0; } } - diff --git a/Projects/EFC_IPC_Server_C28/src/Peripherals/pwm_interrupts.c b/Projects/EFC_IPC_Server_C28/src/Peripherals/pwm_interrupts.c index a7c842b..32a544f 100644 --- a/Projects/EFC_IPC_Server_C28/src/Peripherals/pwm_interrupts.c +++ b/Projects/EFC_IPC_Server_C28/src/Peripherals/pwm_interrupts.c @@ -1,7 +1,7 @@ /* * interrupts.c * - * Created on: 21 . 2023 . + * Created on: 21 ���. 2023 �. * Author: seklyuts */ @@ -21,7 +21,7 @@ volatile uint16_t PWM_out = 2500; uint16_t Fault = 0, Fault_fix = 0, Ready = 0, Ready_Fix = 0; uint16_t counter1s=0; uint16_t FaultABC = 0, FaultABCFix = 0; -uint16_t PwmFlagStartADC = 0; +uint16_t PwmFlagStartCurrentMeashure = 0; typedef struct { diff --git a/Projects/EFC_IPC_Server_C28/src/Peripherals/spi_init.c b/Projects/EFC_IPC_Server_C28/src/Peripherals/spi_init.c index 250ca1f..cf045e6 100644 --- a/Projects/EFC_IPC_Server_C28/src/Peripherals/spi_init.c +++ b/Projects/EFC_IPC_Server_C28/src/Peripherals/spi_init.c @@ -1,7 +1,7 @@ /* * spi_init.c * - * Created on: 5 . 2023 . + * Created on: 5 ����. 2023 �. * Author: seklyuts */