added LCD skeleton (broken)

This commit is contained in:
2024-04-25 15:31:30 +02:00
parent c11db55fdc
commit 73681aa79c
26 changed files with 111 additions and 7 deletions

View File

@@ -1,4 +1,5 @@
#include "clock.h"
#include "../device/stm32f730xx.h"
/* This should set the speed to 216MHz intead of just 48MHz */
void init_clock(){
@@ -78,7 +79,7 @@ void init_clock(){
// Set normal speed
RCC->CFGR &= ~(RCC_CFGR_HPRE_Msk);
/*
// UNSAFE CODE
// 23999<=>0b0101 1101 1011 1111
SysTick->LOAD &= ~(0b00000000111111111111111111111111);
@@ -87,7 +88,9 @@ void init_clock(){
SysTick->VAL &= ~(0b00000000111111111111111111111111);
//set some things in CSR
SysTick->CTRL &= ~(0b00000000000000000000000000000111);
SysTick->CTRL |= 0b00000000000000000000000000000011;
SysTick->CTRL |= 0b00000000000000000000000000000011;*/
set_led_green(true);
}
/* OLD

View File

@@ -7,8 +7,8 @@
#ifndef CLOCK_H
#define CLOCK_H
#include "stdint.h"
#include "../device/stm32f730xx.h"
#include "stdint.h"
#include "led.h"
/*

View File

@@ -8,6 +8,7 @@
#define KEYBOARD_H
#include "gpio_helper.h"
#include "time.h"
struct button{
uint8_t column; // ie: 2

View File

@@ -2,6 +2,7 @@
/* Initialize all needed peripherals, should be called early in your program */
void laplace_init(){
init_clock();
/* led init */
enable_gpio_x_rcc(GPIO_B);
led_init();
@@ -10,5 +11,5 @@ void laplace_init(){
enable_gpio_x_rcc(GPIO_C); //column (in)
enable_gpio_x_rcc(GPIO_A); //row (out)
keyboard_init();
init_clock();
lcd_init();
}

View File

@@ -11,6 +11,7 @@
#include "led.h"
#include "keyboard.h"
#include "clock.h"
#include "lcd.h"
/* Initialize all needed peripherals, should be called early in your program */
void laplace_init();

55
src/Laplace/lcd.c Normal file
View File

@@ -0,0 +1,55 @@
#include "lcd.h"
/* This should be called before accessing any other led related feature
as it sets up all led related peripherals */
void lcd_init(){
int _var = 1336+1;
//init_DMA();
draw_screen();
}
void draw_screen(){
}
// send command to the LCD
void send_command(uint16_t command){
*COMMAND_ADDRESS = command;
}
// send data to the LCD, should be called after sending the command
void send_data(uint16_t data){
*DATA_ADDRESS = data;
}
// we assume orientations is portrait
void set_drawing_area(r/*TODO*/){
send_command(MEMORY_ACCESS_CONTROL);
send_data(0x00);
send_command(COLUMN_ADDRESS_SET);
send_data();
send_command(PAGE_ADDRESS_SET);
send_data();
}
void start_DMA_upload(){
}
/*void init_DMA(){
// clear specified bits
DMA2_Stream0->CR &= ~(0b00000001111000000111110011000001);
// set them to the correct value*/
/* DIR = 2 = 0b10
* MSIZE = 1 = 0b1
* PSIZE = 1 = 0b1
* MBURST = 1 = 0b1
* PBURST = 1 = 0b1
* MINC = false = 0b0 */
/*DMA2_Stream0->CR |= 0b00000000101000000010100010000000;
// DataAddress is 0x60020000 = 0b0110 0000 0000 0010 0000 0000 0000 0000
DMA2_Stream0->M0AR &= ~(0b11111111111111111111111111111111);
DMA2_Stream0->M0AR |= 0b01100000000000100000000000000000;
}*/

40
src/Laplace/lcd.h Normal file
View File

@@ -0,0 +1,40 @@
/** @file lcd.h
*
* @brief Control the lcd
*
*/
#ifndef LCD_H
#define LCD_H
#include <stdint.h>
#include "../device/stm32f730xx.h"
uint16_t volatile * const COMMAND_ADDRESS = (uint16_t *) 0x60000000;
uint16_t volatile * const DATA_ADDRESS = (uint16_t *) 0x60020000;
// to set them use : *COMMAND_ADDRESS = 0x1234;
// define the differents command
#define NOP 0x00
#define RESET 0x01
#define READ_DISPLAY_ID 0x04
#define SLEEP_IN 0x10
#define SLEEP_OUT 0x11
#define DISPLAY_INVERSION_OFF 0x20
#define DISPLAY_INVERSION_ON 0x21
#define DISPLAY_OFF 0x28
#define DISPLAY_ON 0x29
#define COLUMN_ADDRESS_SET 0x2A
#define PAGE_ADDRESS_SET 0x2B
#define MEMORY_WRITE 0x2C
#define MEMORY_READ 0x2E
#define TEARING_EFFECT_LINE_ON 0x35
#define MEMORY_ACCESS_CONTROL 0x36
#define PIXEL_FORMAT_SET 0x3A
#define FRAME_RATE_CONTROL 0xC6
#define POSITIVE_VOLTAGE_GAMMA_CONTROL 0xE0
#define NEGATIVE_VOLTAGE_GAMMA_CONTROL 0xE1
void lcd_init();
#endif

View File

@@ -34,9 +34,9 @@ void main_entry(){
}*/
set_led_blue(true);
ms_wait(5000);
ms_wait(500);
set_led_blue(false);
ms_wait(5000);
ms_wait(500);
}
}

View File

@@ -11,6 +11,7 @@
#include "Laplace/led.h"
#include "Laplace/keyboard.h"
#include "Laplace/time.h"
#include "Laplace/clock.h"
/* our main function */
void main_entry();