Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/buck_vs_ldo.tex
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ \subsubsection{Selection}
\end{itemize}

\subsubsection{Losses}
In an LDO, the pass element transistor (usually implemented as a PMOS FET or NPN BJT) acting similarly to a variable resistor is actively controlled to maintain a fixed output voltage, regardless of changes to input voltage, load current, and temperature. This variable resistance gives rise to \textit{conduction losses} within this type of regulator. Assuming a fixed input voltage and load current, the power losses in an LDO can be calculated as $P = V_{drop} \cdot I_{out} = (V_{in} - V_{out}) \cdot I_{out}$. Note that the power is dissipated as heat in the pass element - this is why LDOs are often equipped with a heat sink, and attention may be required to the thermal limitations of the chosen LDO. \newline
In an LDO, the pass element transistor (commonly implemented as a PMOS FET or PNP BJT for low dropout performance) acting similarly to a variable resistor is actively controlled to maintain a fixed output voltage, regardless of changes to input voltage, load current, and temperature. This variable resistance gives rise to \textit{conduction losses} within this type of regulator. Assuming a fixed input voltage and load current, the power losses in an LDO can be calculated as $P = V_{drop} \cdot I_{out} = (V_{in} - V_{out}) \cdot I_{out}$. Note that the power is dissipated as heat in the pass element - this is why LDOs are often equipped with a heat sink, and attention may be required to the thermal limitations of the chosen LDO. \newline
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@DanielJPuratich is this legit?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

wow yea copilot is good. might be worth dropping the mention of BJTs at all or even this parenthesized comment entirely, seems like modern LDOs are entirely PMOS FETs? Googling around.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

aight imma yolo merge this for now


\noindent Another source of losses in an LDO is quiescent losses - the LDO requires a small amount of current to operate, even when the load current $I_{out} = 0$. This is known as the quiescent current, and is usually negligible compared to conduction losses.

Expand Down
2 changes: 1 addition & 1 deletion src/keyword.tex
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ \subsubsection{Example Const Use Case}
\begin{lstlisting}[caption={Example use case of Const}, label={code:const-use-case}]
#include <stdint.h>

volatile const uint8_t* const UART_RECEIVE_REGISTER_READ_ONLY = (uint32_t*)0x12345678;
volatile const uint8_t* const UART_RECEIVE_REGISTER_READ_ONLY = (uint8_t*)0x12345678;
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

how tf did my very strict compiler warnings not ding this :/


int main() {
uint8_t uart_receive_char = *UART_RECEIVE_REGISTER_READ_ONLY; // Valid C code!
Expand Down
2 changes: 1 addition & 1 deletion src/mutex_vs_semaphore.tex
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ \subsection{Semaphore}
\newline
Using a semaphore involves two main operations: \begin{itemize}
\item \texttt{signal\_semaphore()} - increments the semaphore counter
\item \texttt{wait\_for\_semaphore\_signal(timeout)} - decrements the semaphore count, and if the count is less than zero, blocks the calling thread for the duration of the timeout until the count is greater than zero.
\item \texttt{wait\_for\_semaphore\_signal(timeout)} - if the semaphore count is greater than zero, decrements it and proceeds; otherwise, blocks the calling thread for the duration of the timeout until the count becomes greater than zero.
\end{itemize}

\noindent A semaphore is often used in the following scenarios:
Expand Down
2 changes: 1 addition & 1 deletion src/oscilloscope.tex
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ \subsection{Probes}
The most basic oscilloscope probes have a ground clip and probe hook connected through a coaxial cable to a BNC connector that connects to the oscilloscope. These probes are designed to have a relatively high impedance and affect the circuit under test minimally.\footnote{In reality, probes often specify the capacitance the probe will add when it is connected to a circuit. This capacitance may have a noticeable impact on the circuit, especially at higher frequencies.} \newline

\subsubsection{Probe Multipliers}
\newnoindentpara Often, it is desired to measure voltages outside of the input voltage range of the oscilloscope. As a result, probes often have a ``probe multiplication'' setting (commonly, a 1x or 10x switch) that scales the voltage being probed to a safe level before it enters the oscilloscope. For example, a 10x probe will scale the voltage by a factor of 10 before it enters the oscilloscope. Another advantage of using a higher probe multiplication is that the bandwidth of the probe is increased and the capacitance the probe adds to the circuit is decreased.\footnote{This is because the step down is performed in the probe tip so a lower voltage (and therefore less energy) signal propagates in the coaxial cable and into the scope. This phenomenon is often described as the probe having less effective/apparent capacitance as it pulls less current from the circuit under test.}
\newnoindentpara Often, it is desired to measure voltages outside of the input voltage range of the oscilloscope. As a result, probes often have a ``probe multiplication'' setting (commonly, a 1x or 10x switch) that attenuates the voltage being probed to a safe level before it enters the oscilloscope. For example, a 10x probe will divide the voltage by a factor of 10 before it enters the oscilloscope (the oscilloscope then multiplies the displayed reading by 10 to show the actual voltage). Another advantage of using a higher probe multiplication is that the bandwidth of the probe is increased and the capacitance the probe adds to the circuit is decreased.\footnote{This is because the step down is performed in the probe tip so a lower voltage (and therefore less energy) signal propagates in the coaxial cable and into the scope. This phenomenon is often described as the probe having less effective/apparent capacitance as it pulls less current from the circuit under test.}

\subsubsection{Other Types of Probes}
Oscilloscope probes typically share a common ground (which is often attached by a clip), which is tied to earth ground for safety by the oscilloscope. This complicates differential voltage measurements, such as across a resistor not connected to ground. Using single-ended probes, two probes are needed---one on each side of the resistor---with the oscilloscope calculating the difference. Alternatively, a differential probe simplifies this by directly outputting the voltage difference between two arbitrary probed signals, saving an oscilloscope channel. \newline
Expand Down
8 changes: 4 additions & 4 deletions src/signalling.tex
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,10 @@ \subsection{Digital Signalling}
\hline
& Abbreviation & Name & Type & Bus & Duplex & Driver & Synchronicity & Typical Data Rate & Maximum Data Rate \\ \hline
& PWM & Pulse Width Modulation & Single Ended & Point to Point & Half-Duplex / Uni-directional & Push Pull & Asynchronous & 50 Hz & 200 Hz \\ \hline
& UART & Universal Asynchronous Receiver Transmitter & Single Ended & Point to Point & Full-Duplex & Push Pull & Asynchronous & 115.2 kHz & 921.6 kHz \\ \hline
& I2C & Inter-Interconnected Controller & Single Ended & Bus & Half-Duplex & Open Drain & Synchronous & 400 kHz & 1 MHz \\ \hline
& SPI & Serial Peripheral Interface & Single Ended & Bus & Full-Duplex & Push Pull & Synchronous & 24 MHz & 60 MHz \\ \hline
& CAN & Controller Area Network & Differential Pair & Bus & Half-Duplex & Open Drain & Asynchronous & 1 mbps & 8 mbps \\ \hline
& UART & Universal Asynchronous Receiver Transmitter & Single Ended & Point to Point & Full-Duplex & Push Pull & Asynchronous & 115.2 kbps & 921.6 kbps \\ \hline
& I2C & Inter-Integrated Circuit & Single Ended & Bus & Half-Duplex & Open Drain & Synchronous & 400 kbps & 1 Mbps \\ \hline
Copy link

Copilot AI Dec 5, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I2C data rates should be expressed in Hz (clock frequency), not bps (bit rate). I2C is a synchronous protocol that uses a clock signal (SCL), and its speed is specified by the clock frequency.

The correct values should be:

  • Typical: 400 kHz (Fast mode)
  • Maximum: 1 MHz (Fast mode plus)

Change "400 kbps" back to "400 kHz" and "1 Mbps" to "1 MHz".

Suggested change
& I2C & Inter-Integrated Circuit & Single Ended & Bus & Half-Duplex & Open Drain & Synchronous & 400 kbps & 1 Mbps \\ \hline
& I2C & Inter-Integrated Circuit & Single Ended & Bus & Half-Duplex & Open Drain & Synchronous & 400 kHz & 1 MHz \\ \hline

Copilot uses AI. Check for mistakes.
& SPI & Serial Peripheral Interface & Single Ended & Bus & Full-Duplex & Push Pull & Synchronous & 24 Mbps & 60 Mbps \\ \hline
Copy link

Copilot AI Dec 5, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SPI data rates should be expressed in Hz (clock frequency), not bps (bit rate). SPI is a synchronous protocol that uses a clock signal (SCK/SCLK), and its speed is specified by the clock frequency.

Change "24 Mbps" to "24 MHz" and "60 Mbps" to "60 MHz".

Suggested change
& SPI & Serial Peripheral Interface & Single Ended & Bus & Full-Duplex & Push Pull & Synchronous & 24 Mbps & 60 Mbps \\ \hline
& SPI & Serial Peripheral Interface & Single Ended & Bus & Full-Duplex & Push Pull & Synchronous & 24 MHz & 60 MHz \\ \hline

Copilot uses AI. Check for mistakes.
& CAN & Controller Area Network & Differential Pair & Bus & Half-Duplex & Open Drain & Asynchronous & 1 Mbps & 8 Mbps \\ \hline
% The below commented ones aren't important enough to bring up in my opinion. I don't think I'm missing any obvious ones above.
% & QSPI & Quad Serial Peripheral Interface
% & USB & Universal Serial Bus
Expand Down