void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
// Pongo las salidas de los TLC en 0
HAL_GPIO_WritePin(BLK_GPIO_Port, BLK_Pin, GPIO_PIN_SET);
//Hago el barrido vertical. Tomo el Puerto A y pongo en 0 los cuatro LSB (A, B, C, D)
A_GPIO_Port->ODR &= ~(A_GPIO_Port->IDR & 0x000F);
//Luego meto el valor de la fila actual en los 4 LSB
A_GPIO_Port->ODR |= (15-ui8FilaActual);
//Envío los datos
HAL_SPI_Transmit_DMA(&hspi2, mem_DMA[ui8FilaActual], BYTES_X);
}
void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi)
{
//una vez enviados los datos hago un latch
HAL_GPIO_WritePin(LAT_GPIO_Port, LAT_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(LAT_GPIO_Port, LAT_Pin, GPIO_PIN_RESET);
// Pongo las salidas de los TLC en el valor deseado
HAL_GPIO_WritePin(BLK_GPIO_Port, BLK_Pin, GPIO_PIN_RESET);
// Incremento el índice de fila actual
ui8FilaActual++;
// Cuando llego a la fila 16 vuelvo a 0
if(ui8FilaActual == 16)
ui8FilaActual=0;
}