Which file to include: > The header is a subset of the header |------------------------------------------|-----------------------------------|--------------------------------| | C INTS | | | | `{CHAR,SHRT,INT,LONG,LLONG}_{MIN,MAX}` | `` | | | `U{CHAR,SHRT,INT,LONG,LLONG}_MAX` | `` | | |------------------------------------------|-----------------------------------|--------------------------------| | C SIZED INTS | | | | `(u)int{n}_t` (and `_{MIN,MAX,C}`) | `` | exact | | `(u)int_least{n}_t` (and `_{MIN,MAX,C}`) | `` | type may be more than `n` bits | | `(u)int_fast{n}_t` (and `_{MIN,MAX,C}`) | `` | type may be more than `n` bits | | `(u)intptr_t` (and `_{MIN,MAX,C}`) | `` | | | `(u)intmax_t` (and `_{MIN,MAX,C}`) | `` | | | `PRI*` | `` | | | `SCN*` | `` | | |------------------------------------------|-----------------------------------|--------------------------------| | C ADDRESS INTS | | | | `ptrdiff_t` | `` | | | `PTRDIFF_{MIN,MAX}` | `` | | | `size_t` | `` (or ``) | | | `SIZE_MAX` | `` | | |------------------------------------------|-----------------------------------|--------------------------------| | C WCHAR INTS | | | | `wchar_t` | `` | | | `WCHAR_{MIN,MAX}` | `` | | | `wint_t` | `` | | | `WINT_{MIN,MAX}` | `` | | |------------------------------------------|-----------------------------------|--------------------------------| | POSIX INTS | | | | `sig_atomic_t` | `` | | | `SIG_ATOMIC_{MIN,MAX}` | `` | | | `mode_t` | `` | unsigned | | `dev_t` | `` | unsigned | | `nlink_t` | `` | unsigned | | `{u,g,}id_t` | `` | unsigned | | `blkcnt_t` | `` | signed | | `off_t` | `` | signed | | `fsblkcnt_t` | `` | unsigned | | `fsfilecnt_t` | `` | unsigned | | `ino_t` | `` | unsigned | | `blksize_t` | `` | signed | | `pid_t` | `` | signed | | `ssize_t` | `` | signed | | `SSIZE_MAX` | `` | | | `suseconds_t` | `` | signed | | `clock_t` | `` | could be float | | `time_t` | `` | signed | Here's my reading of the lowest-bitrate possible for our HDMI sink: HDMI v1.4 (2009/06/05) § 6.2.1 "Format Support Requirements" > - An HDMI Source shall support at least one of the following video > format timings: > + 640x480p @ 59.94/60Hz > + 720x480p @ 59.94/60Hz > + 720x576p @ 50Hz > … > > - An HDMI Sink that accepts 60Hz video formats shall support the > 640x480p @ 59.94/60Hz and 720x480p @ 59.94/60Hz video format > timings > > - An HDMI Sink that accepts 50Hz video formats shall support the > 640x480p @ 59.94/60Hz and 720x576p @ 50Hz video format timings. These latter 2 requirements match what is in CEI-861-D §3.1 "General Video Format requirements" Table 1. I'm a little confused about the 50Hz systems requirement; if it needs to support 640x480@60Hz, does that mean that it's *also* a 60Hz system and must therefore also support 720x480@60Hz? Anyway, I need to support at least 640x480p@60Hz and 720x480@60Hz, and it would be nice to support 720x576p@50Hz. Note that PicoDVI supports these first two, but not the @50Hz one. | format | bitrate | |---------------|-----------------------| | 640x480p@60Hz | 18,432,000 pixels/sec | | 720x480p@60Hz | 20,736,000 pixels/sec | | 720x576p@50Hz | 20,736,000 pixels/sec | https://forums.parallax.com/discussion/download/128730/Hdmi-1.4-1000008562-6364143185282736974850538.pdf https://ia803002.us.archive.org/1/items/CEA-861-D/CEA-861-D.pdf The RP2040 has several clocks: Sources: - GPCLK0 (GPIO-based clock 0) - GPCLK1 (GPIO-based clock 1) - XOSC (External (Crystal) Oscillator) + System PLL + USB PLL - ROSC (Ring Oscillator) These can be muxed onto several clocks which each have dividers (and most of them enable/disable too): - clk_gpout0 (GPIO Muxing) - clk_gpout1 (GPIO Muxing) - clk_gpout2 (GPIO Muxing) - clk_gpout3 (GPIO Muxing) - clk_adc (ADC) - clk_usb (USB) - clk_RTC (RTC) - clk_peri (UART and SPI) - clk_sys (CPU, bus, RAM) - clk_ref (watchdog and timers) ``` SSP = ARM Primecell Synchronous Serial Port ^ ^ ^ ``` - SPI (Serial Peripheral Interface - Motorola) - SSI (Synchronous Serial Interface - Texas Instruments) - Microwire (National Semiconductor) | `sclk` | `SSPCLKOUT` | `SSP_CLK_OUT` | SSP clock output | | `ss_n` | `SSPFSSOUT` | `SSP_FSS_OUT` | SSP frame/slave select output | | `tx` | `SSPTXD` | `SSP_TX_D` | SSP transmit data | | `rd` | `SSPRXD` | `SSP_RX_D` | SSP receive data | "The SPI uses `clk_peri` as its reference clock for SPI timing, and is referred to as `SSPCLK` in the following sections. `clk_sys` is used as the bus clock, and is referred to as `PCLK` in the following sections" wut does that mean 8 16-bit values in both the TX buffer and the RX buffer ---- The theoretical max rate of the the W5500 is just shy of 80 Mb/s = 10 MB/s IDK about HDMI compression yet, but naively uncompressed we're looking at wanting to shove ~60 MB/s (480 Mb/s). Compression is an optional feature introduced in HDMI 2.1 :(