Разделил протокол на CPU1 b CPU2

This commit is contained in:
Eugene 2023-11-16 16:15:38 +03:00
parent 186bc8a6ef
commit fe71486eae
3 changed files with 42 additions and 18 deletions

View File

@ -121,7 +121,7 @@ uint16_t j = 0;
// //
// Function to send data over I2C. // Function to send data over I2C.
// //
void I2CWrite(uint16_t slaveAddr, uint16_t byteCount, bool sendStopCondition, uint16_t * I2C_TXdata) void I2CWrite(uint16_t slaveAddr, uint16_t byteCount, bool sendStopCondition, char * I2C_TXdata)
{ {
// //

View File

@ -17,7 +17,7 @@
void I2CMasterInit(uint16_t I2CSlave_OwnAddress, uint16_t I2CSlave_Address); void I2CMasterInit(uint16_t I2CSlave_OwnAddress, uint16_t I2CSlave_Address);
void I2CWrite(uint16_t slaveAddr, uint16_t byteCount, bool sendStopCondition, uint16_t * I2C_TXdata); void I2CWrite(uint16_t slaveAddr, uint16_t byteCount, bool sendStopCondition, char * I2C_TXdata);
uint16_t I2CRead(uint16_t slaveAddr, uint16_t byteCount, bool sendStopCondition, uint16_t * I2C_RXdata); uint16_t I2CRead(uint16_t slaveAddr, uint16_t byteCount, bool sendStopCondition, uint16_t * I2C_RXdata);
uint16_t I2CWriteRead(uint16_t slaveAddr, uint16_t byteCount, bool sendStopCondition, uint16_t * I2C_RXdata); uint16_t I2CWriteRead(uint16_t slaveAddr, uint16_t byteCount, bool sendStopCondition, uint16_t * I2C_RXdata);
void I2CMasterGpioInit(void); void I2CMasterGpioInit(void);

View File

@ -14,7 +14,11 @@
#include "ipc.h" #include "ipc.h"
#include "flash_programming_f2838x_c28x.h" #include "flash_programming_f2838x_c28x.h"
#include "internal_flash.h" #include "internal_flash.h"
#ifdef CPU1
#include "ZD24C02A.h"
#include "BL25CM1A.h"
#include "GD25Q16ETIGR.h"
#endif
//#pragma DATA_SECTION(readData, "MSGRAM_CPU_TO_CM") //#pragma DATA_SECTION(readData, "MSGRAM_CPU_TO_CM")
//uint32_t readData[10]; //uint32_t readData[10];
@ -167,9 +171,13 @@ void getMessage_from_Cm_Flash(void)
} }
} }
#ifdef CPU1
void getMessage_from_Cm_EMIF(void) void getMessage_from_Cm_EMIF(void)
{ {
if(InData > 2048) {IPC_sendCommand(IPC_CPU1_L_CM_R, 0, 0, WRONG_LENGHT, 0, 0); return;}
if((InAddr+InData) > 0x100000) {IPC_sendCommand(IPC_CPU1_L_CM_R, 0, 0, WRONG_ADDR, 0, 0); return;}
IPC_sendCommand(IPC_CPU1_L_CM_R, 0, 0, COMMAND_ACCEPTED, 0, 0);
switch(InCommand >> 16) switch(InCommand >> 16)
{ {
case READ: case READ:
@ -191,6 +199,10 @@ void getMessage_from_Cm_EMIF(void)
void getMessage_from_Cm_BL25CM1A(void) void getMessage_from_Cm_BL25CM1A(void)
{ {
if(InData > 2048) {IPC_sendCommand(IPC_CPU1_L_CM_R, 0, 0, WRONG_LENGHT, 0, 0); return;}
if((InAddr+InData) > 0x10000) {IPC_sendCommand(IPC_CPU1_L_CM_R, 0, 0, WRONG_ADDR, 0, 0); return;}
IPC_sendCommand(IPC_CPU1_L_CM_R, 0, 0, COMMAND_ACCEPTED, 0, 0);
switch(InCommand >> 16) switch(InCommand >> 16)
{ {
case READ: case READ:
@ -212,6 +224,10 @@ void getMessage_from_Cm_BL25CM1A(void)
void getMessage_from_Cm_GD25Q16E(void) void getMessage_from_Cm_GD25Q16E(void)
{ {
if(InData > 2048) {IPC_sendCommand(IPC_CPU1_L_CM_R, 0, 0, WRONG_LENGHT, 0, 0); return;}
if((InAddr+InData) > 0x100000) {IPC_sendCommand(IPC_CPU1_L_CM_R, 0, 0, WRONG_ADDR, 0, 0); return;}
IPC_sendCommand(IPC_CPU1_L_CM_R, 0, 0, COMMAND_ACCEPTED, 0, 0);
switch(InCommand >> 16) switch(InCommand >> 16)
{ {
case READ: case READ:
@ -233,13 +249,17 @@ void getMessage_from_Cm_GD25Q16E(void)
void getMessage_from_Cm_ZD24C02A(void) void getMessage_from_Cm_ZD24C02A(void)
{ {
if(InData > 2048) {IPC_sendCommand(IPC_CPU1_L_CM_R, 0, 0, WRONG_LENGHT, 0, 0); return;}
if((InAddr+InData) > 0x80) {IPC_sendCommand(IPC_CPU1_L_CM_R, 0, 0, WRONG_ADDR, 0, 0); return;}
IPC_sendCommand(IPC_CPU1_L_CM_R, 0, 0, COMMAND_ACCEPTED, 0, 0);
switch(InCommand >> 16) switch(InCommand >> 16)
{ {
case READ: case READ:
ZD24C02A_read(InData, (char *)CPUXTOCMMSGRAM0_BASE);
break; break;
case WRITE: case WRITE:
//ZD24C02A_write(NByte, ArrayForTests); ZD24C02A_write(InData, (char *)CMTOCPUXMSGRAM0_BASE);
break; break;
case VERIFY: case VERIFY:
@ -251,7 +271,7 @@ void getMessage_from_Cm_ZD24C02A(void)
break; break;
} }
} }
#endif
__interrupt void IPC_ISR0() __interrupt void IPC_ISR0()
{ {
@ -262,6 +282,7 @@ __interrupt void IPC_ISR0()
case Flash: case Flash:
getMessage_from_Cm_Flash(); getMessage_from_Cm_Flash();
break; break;
#ifdef CPU1
case EMIF: case EMIF:
getMessage_from_Cm_EMIF(); getMessage_from_Cm_EMIF();
break; break;
@ -274,33 +295,36 @@ __interrupt void IPC_ISR0()
case ZD24C02A_2K_I2C: case ZD24C02A_2K_I2C:
getMessage_from_Cm_ZD24C02A(); getMessage_from_Cm_ZD24C02A();
break; break;
#endif
default: default:
IPC_sendCommand(IPC_CPU1_L_CM_R, 0, 0, WRONG_COMMAND, 0, 0); IPC_sendCommand(IPC_CPU1_L_CM_R, 0, 0, WRONG_COMMAND, 0, 0);
break; break;
} }
IPC_ackFlagRtoL(IPC_CPU1_L_CM_R, (1<<0)); IPC_ackFlagRtoL(IPC_CPU1_L_CM_R, (1<<0));
PieCtrlRegs.PIEACK.all = PIEACK_GROUP11; PieCtrlRegs.PIEACK.all = PIEACK_GROUP11;
} }
__interrupt void IPC_ISR1() //__interrupt void IPC_ISR1()
{ //{
// getMessage_from_Cm(); // getMessage_from_Cm();
if(WriteToCm != 2) // if(WriteToCm != 2)
{ // {
//putMessage_to_Cm(); //putMessage_to_Cm();
//IPC_sendCommand(IPC_CPU1_L_CM_R, 0, 0, Command, Address, Data); //IPC_sendCommand(IPC_CPU1_L_CM_R, 0, 0, Command, Address, Data);
} // }
else WriteToCm = 0; // else WriteToCm = 0;
// //
// Acknowledge the flag // Acknowledge the flag
// //
IPC_ackFlagRtoL(IPC_CPU1_L_CM_R, (1<<1)); // IPC_ackFlagRtoL(IPC_CPU1_L_CM_R, (1<<1));
PieCtrlRegs.PIEACK.all = PIEACK_GROUP11; // PieCtrlRegs.PIEACK.all = PIEACK_GROUP11;
} //}
void ipc_init(void) void ipc_init(void)
@ -312,13 +336,13 @@ void ipc_init(void)
EALLOW; EALLOW;
PieVectTable.CMTOCPUXIPC0_INT = &IPC_ISR0; PieVectTable.CMTOCPUXIPC0_INT = &IPC_ISR0;
PieVectTable.CMTOCPUXIPC1_INT = &IPC_ISR1; // PieVectTable.CMTOCPUXIPC1_INT = &IPC_ISR1;
EDIS; EDIS;
IER |= M_INT11; IER |= M_INT11;
PieCtrlRegs.PIEIER11.bit.INTx9 = 1; PieCtrlRegs.PIEIER11.bit.INTx9 = 1;
PieCtrlRegs.PIEIER11.bit.INTx10 = 1; // PieCtrlRegs.PIEIER11.bit.INTx10 = 1;
// //
// Initialize message queue // Initialize message queue