This repository has been archived on 2024-05-28. You can view files and clone it, but cannot push or open issues or pull requests.
2023-11-14 16:25:09 -05:00

116 lines
4.7 KiB
C
Executable File

#include <stdint.h>
typedef struct {
uint32_t capture : 1; // 0 Capture enable
uint32_t cm : 1; // 1 Capture mode
uint32_t crop : 1; // 2 Crop feature
uint32_t jpeg : 1; // 3 JPEG format
uint32_t ess : 1; // 4 Embedded synchronization select
uint32_t pckpol : 1; // 5 Pixel clock polarity
uint32_t hspol : 1; // 6 Horizontal synchronization polarity
uint32_t vspol : 1; // 7 Vertical synchronization polarity
uint32_t fcrc : 2; // 8 Frame capture rate control
uint32_t edm : 2; // 10 Extended data mode
uint32_t reserve0 : 2; // 12 Reserve
uint32_t enable : 1; // 14 DCMI enable
uint32_t reserve1 : 1; // 15 Reserve
uint32_t bsm : 2; // 16 Byte Select mode
uint32_t oebs : 1; // 18 Odd/Even Byte Select (Byte Select Start)
uint32_t lsm : 1; // 19 Line Select mode
uint32_t oels : 1; // 20 Odd/Even Line Select (Line Select Start)
uint32_t reserve2 : 11; // 21 Reserve
} reg_dcmi_cr_t;
typedef struct {
uint32_t hsync : 1; // 0 Horizontal synchronization
uint32_t vsync : 1; // 1 Vertical synchronization
uint32_t fne : 1; // 2 FIFO not empty
uint32_t reserve0 : 29; // 3 Reserve
} reg_dcmi_sr_t;
typedef struct {
uint32_t frame_ris : 1; // 0 Capture complete raw interrupt status
uint32_t ovr_ris : 1; // 1 Overrun raw interrupt status
uint32_t err_ris : 1; // 2 Synchronization error raw interrupt status
uint32_t vsync_ris : 1; // 3 DCMI_VSYNC raw interrupt status
uint32_t line_ris : 1; // 4 Line raw interrupt status
uint32_t reserve0 : 27; // 5 Reserve
} reg_dcmi_ris_t;
typedef struct {
uint32_t frame_ie : 1; // 0 Capture complete interrupt enable
uint32_t ovr_ie : 1; // 1 Overrun interrupt enable
uint32_t err_ie : 1; // 2 Synchronization error interrupt enable
uint32_t vsync_ie : 1; // 3 DCMI_VSYNC interrupt enable
uint32_t line_ie : 1; // 4 Line interrupt enable
uint32_t reserve0 : 27; // 5 Reserve
} reg_dcmi_ier_t;
typedef struct {
uint32_t frame_mis : 1; // 0 Capture complete masked interrupt status
uint32_t ovr_mis : 1; // 1 Overrun masked interrupt status
uint32_t err_mis : 1; // 2 Synchronization error masked interrupt status
uint32_t vsync_mis : 1; // 3 VSYNC masked interrupt status
uint32_t line_mis : 1; // 4 Line masked interrupt status
uint32_t reserve0 : 27; // 5 Reserve
} reg_dcmi_mis_t;
typedef struct {
uint32_t frame_isc : 1; // 0 Capture complete interrupt status clear
uint32_t ovr_isc : 1; // 1 Overrun interrupt status clear
uint32_t err_isc : 1; // 2 Synchronization error interrupt status clear
uint32_t vsync_isc : 1; // 3 Vertical Synchronization interrupt status clear
uint32_t line_isc : 1; // 4 line interrupt status clear
uint32_t reserve0 : 27; // 5 Reserve
} reg_dcmi_icr_t;
typedef struct {
uint32_t fsc : 8; // 0 Frame start delimiter code
uint32_t lsc : 8; // 8 Line start delimiter code
uint32_t lec : 8; // 16 Line end delimiter code
uint32_t fec : 8; // 24 Frame end delimiter code
} reg_dcmi_escr_t;
typedef struct {
uint32_t fsu : 8; // 0 Frame start delimiter unmask
uint32_t lsu : 8; // 8 Line start delimiter unmask
uint32_t leu : 8; // 16 Line end delimiter unmask
uint32_t feu : 8; // 24 Frame end delimiter unmask
} reg_dcmi_esur_t;
typedef struct {
uint32_t hoffcnt : 14; // 0 Horizontal offset count
uint32_t reserve0 : 2; // 14 Reserve
uint32_t vst : 13; // 16 Vertical start line count
uint32_t reserve1 : 3; // 29 Reserve
} reg_dcmi_cwstrt_t;
typedef struct {
uint32_t capcnt : 14; // 0 Capture count
uint32_t reserve0 : 2; // 14 Reserve
uint32_t vline : 14; // 16 Vertical line count
uint32_t reserve1 : 2; // 30 Reserve
} reg_dcmi_cwsize_t;
typedef struct {
uint32_t byte0 : 8; // 0 Data byte 0
uint32_t byte1 : 8; // 8 Data byte 1
uint32_t byte2 : 8; // 16 Data byte 2
uint32_t byte3 : 8; // 24 Data byte 3
} reg_dcmi_dr_t;
typedef struct {
volatile reg_dcmi_cr_t cr;
volatile reg_dcmi_sr_t sr;
volatile reg_dcmi_ris_t ris;
volatile reg_dcmi_ier_t ier;
volatile reg_dcmi_mis_t mis;
volatile reg_dcmi_icr_t icr;
volatile reg_dcmi_escr_t escr;
volatile reg_dcmi_esur_t esur;
volatile reg_dcmi_cwstrt_t cwstrt;
volatile reg_dcmi_cwsize_t cwsize;
volatile reg_dcmi_dr_t dr;
} reg_dcmi_t;