Разделил протокол на 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.
//
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 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 I2CWriteRead(uint16_t slaveAddr, uint16_t byteCount, bool sendStopCondition, uint16_t * I2C_RXdata);
void I2CMasterGpioInit(void);

View File

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