8
« on: October 26, 2022, 01:32:05 PM »
Hi,
The order is:
Private GraphicServiceState_t EveCmdLoadimage(const GraphicLoadImage_t* const dataImage)
{
uint32 i;
LibBufOperResetBuffer(gpDataBuffer, 0u, GRAPHIC_MAX_TX_SIZE);
addr = EVE_RAM_CMD + (uint32)FifoWriteLocation;
gpDataBuffer[cont] = (uint8)((addr >> 16u) | MEM_WRITE);
gpDataBuffer[++cont] = (uint8)(addr >> 8u);
gpDataBuffer[++cont] = (uint8)(addr);
cont = Write32BitsInArray(cont, CMD_LOADIMAGE);
cont = Write32BitsInArray(cont, dataImage->address);
cont = Write32BitsInArray(cont, 0u);
for(i = 0; i < dataImage->len; i++){ // Save the image into the buffer to send it over SPI
gpDataBuffer[++cont] = dataImage->data[i];
}
padding = (uint8)(dataImage->len & 0x03u);
padding = 4u-padding;
padding &= 3u;
EveIncCmdOffset(FifoWriteLocation, (uint16)padding);
while (padding > 0u) {
gpDataBuffer[++cont] = 0x00u;
padding--;
}
SendGraphicData(++cont, 0u); // Send gpDataBuffer over SPI
EveMemWrite(SEND_32_BITS, REG_CMD_WRITE, (uint32)FifoWriteLocation);
}
Private void CheckIcState(const osMsgData data)
{
BOOL loop = TRUE;
while(loop){
EveReadAddress(REG_CMDB_SPACE, SEND_16_BITS);
cmdRead = ((uint16)((uint16)readSPI[1] << 8u) + (uint16)readSPI[0]);
if ((cmdRead & 0x0003u) != 0u) {
EveMemWrite(SEND_8_BITS, REG_CPURESET, 0x01u);
EveMemWrite(SEND_32_BITS, REG_CMD_READ, RESET_CMD_STATE);
EveMemWrite(SEND_32_BITS, REG_CMD_WRITE, RESET_CMD_STATE);
EveMemWrite(SEND_8_BITS, REG_CPURESET, 0x00u);
loop = false;
}
else if (cmdRead != 0XFFC){
EveReadAddress(REG_CMDB_SPACE, SEND_16_BITS);
}
else {
loop = false;
}
}
}
Private void DrawListGraphic(const GraphicDrawImage_t *const data)
{
uint32 cont = 0uL;
const uint32 address = EVE_RAM_CMD + (uint32)FifoWriteLocation;
gpDataBuffer[cont] = (uint8)((address >> 16u) | MEM_WRITE);
gpDataBuffer[++cont] = (uint8)(address >> 8u);
gpDataBuffer[++cont] = (uint8)(address & 0x000000ffu);
cont = Write32BitsInArray(cont, CMD_DLSTART);
cont = Write32BitsInArray(cont, DL_CLEAR_RGB | WHITE);
cont = Write32BitsInArray(cont, DL_CLEAR | CLR_COL | CLR_STN | CLR_TAG);
cont = EveSetBitmap(start, data->address , data->format, data->width, data->height);
cont = Write32BitsInArray(cont, DL_COLOR_RGB | (uint32)data->color);
cont = Write32BitsInArray(cont, BEGIN(EVE_BITMAPS));
cont = Write32BitsInArray(cont, VERTEX2II((uint32)data->x0, (uint32)data->y0, (uint32)0u, (uint32)0u));
cont = Write32BitsInArray(cont, END());
cont = Write32BitsInArray(cont, DISPLAY());
cont = Write32BitsInArray(cont, CMD_SWAP);
SendGraphicData(++cont, 0u); // Send gpDataBuffer over SPI
EveMemWrite(SEND_32_BITS, REG_CMD_WRITE, (uint32)FifoWriteLocation); // This method sends the fifoWriteLocation over SPI
// with SPI chip select actions.
}
Private void CheckIcState(const osMsgData data)
{
BOOL loop = TRUE;
while(loop){
EveReadAddress(REG_CMDB_SPACE, SEND_16_BITS);
cmdRead = ((uint16)((uint16)readSPI[1] << 8u) + (uint16)readSPI[0]);
if ((cmdRead & 0x0003u) != 0u) {
EveMemWrite(SEND_8_BITS, REG_CPURESET, 0x01u);
EveMemWrite(SEND_32_BITS, REG_CMD_READ, RESET_CMD_STATE);
EveMemWrite(SEND_32_BITS, REG_CMD_WRITE, RESET_CMD_STATE);
EveMemWrite(SEND_8_BITS, REG_CPURESET, 0x00u);
loop = false;
}
else if (cmdRead != 0XFFC){
EveReadAddress(REG_CMDB_SPACE, SEND_16_BITS);
}
else {
loop = false;
}
}
}