aboutsummaryrefslogtreecommitdiff
path: root/src/ppu/stm.c
blob: 146d275c92aaed3e03d819019824bc82e75fac83 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <stm32f0xx_hal.h>

#include "ppu/ppu.h"
#include "ppu/internals.h"
#include "stm32/setup.h"

void hh_ppu_init() {
	// hh_ppu_update_aux((hh_s_ppu_loc_aux) { .sysreset = 1 });
	// hh_ppu_vram_buffer((uint8_t[4]) { 0xff, 0xff, 0xff, 0xff });
	// hh_ppu_flush();
	HAL_Delay(10);
}

void hh_ppu_deinit() {}

// void hh_ppu_vram_dwrite(uint8_t* data, size_t size) {
// 	HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9, GPIO_PIN_SET);
// 	HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9, GPIO_PIN_RESET);
// 	HAL_SPI_Transmit_DMA(&hspi1, data, size);
// }

void hh_ppu_vram_dwrite(uint8_t* data, size_t size) {
	// HAL_SPI_Transmit(&hspi1, data, size, HAL_MAX_DELAY);
	for (size_t i = 0; i < size; i += 4) {
		if (i+4 > size) break;
		uint8_t test[4] = { data[i+0], data[i+1], data[i+2], data[i+3], };
		HAL_SPI_Transmit(&hspi1, test, 4, HAL_MAX_DELAY);
		// HAL_Delay(100);
	}
	HAL_SPI_Transmit(&hspi1, (uint8_t[4]){ 0xff, 0xff, 0xff, 0xff }, 4, HAL_MAX_DELAY);
	// reset SPI
	HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9, GPIO_PIN_SET);
	HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9, GPIO_PIN_RESET);
}