J'essaye de lire des données de l'EEPROM, et j'ai trois structures.copier des données à la structure de données en utilisant memcpy
typedef struct
{
fract32 MechCoilPhiBase; // Mech Angle Table
fract32 MechCoilPhi3rd; // Mech Angle Table
fract32 PhiSaltwater; // Saltwater Table
UINT16 d;
UINT16 crc;
} ChannelData_T;
typedef struct
{
UINT32 reHarmonic;
UINT32 reFundamental;
UINT32 imgHarmonic;
UINT32 imgFundamental;
UINT16 crc;
} CoilBoard_T;
// mechanic angles and salt water angles of coil stored in coil-eeprom
typedef struct
{
ChannelData_T channel[NUM_CHANNELS];
CoilBoard_T coilboard;
// UINT32 gCoilSerialNumber;
// UINT32 gInversSerialNumber;
} Coil_Eeprom_Data_T;
Je suis en train de lire les données, mais la taille n'est pas une puissance de 2, j'ai essayé de rembourrage des données, mais le struct n'est pas rempli correctement.
J'utilise le code suivant pour lire les données du tampon et le remplir avec la structure. Par exemple, la variable crc est 0 et n'est pas lue correctement dans le tampon.
voici comment copier les données dans la mémoire tampon
memcpy((void*) &CoilEepromData, (const void*) &EepromCoil.aRxData[0], sizeof(Coil_Eeprom_Data_T));
extern volatile Coil_Eeprom_Data_T CoilEepromData;
extern volatile Eeprom_Coil_T EepromCoil; // control struct for the coil-eeprom
typedef struct
{
UINT8 crcValueOut;
UINT8 crcValueIn;
UINT8 pageAddress;
UINT8 dataLength;
UINT8 bytesToTransmit;
UINT8 bytesWritten;
UINT8 bytesToReceive;
UINT8 bytesRead;
UINT8 errorCount;
bool bWriteSucceed:1;
bool bStartup:1;
bool bReadingStarted:1;
UINT8 aTxData[COIL_SPI_BUFFER_SIZE];
UINT8 aRxData[COIL_SPI_BUFFER_SIZE];
} Eeprom_Coil_T;
Vous n'avez pas besoin de lancer de et vers 'void *' (en C). – Kninnug
merci, mais cela ne résout pas mon problème – Andre
@Andre Voilà pourquoi c'est un commentaire et non une réponse. :) – unwind