Dataford
Interview QuestionsInterview GuidesExperiencesMock InterviewsPricing
Get started

Compute UART Baud Divider

EasyPython00:00
Practice interviewer
In session
5 left
00:00

Your question is Compute UART Baud Divider. Start with the requirements on the right.

Run and submit as often as you like. When you're ready, talk me through your approach or go straight to the code.

You need to log in / sign up to run or submit.

Problem

On an NXP Semiconductors MCU such as the LPC55S69, a UART baud rate is derived from a system clock and an integer divider. Given a system clock, an oversampling factor, and a list of target baud rates, write a function that computes the best divider for each target baud and returns the resulting actual baud rate and percentage error.

Use the formula:

actual_baud = system_clock / (oversample * divider)

For each target baud rate, choose the positive integer divider that minimizes absolute percentage error. If two dividers produce the same error, return the smaller divider.

Formal Specification

  • Input:
    • system_clock: integer clock frequency in Hz
    • oversample: integer oversampling factor
    • targets: list of integer target baud rates
  • Output:
    • A list of lists, where each result is: [target_baud, divider, actual_baud, error_percent]
    • actual_baud and error_percent should be rounded to 2 decimal places.

Constraints

  • 1 <= len(targets) <= 10^4
  • 1 <= system_clock <= 10^9
  • 1 <= oversample <= 256
  • 1 <= targets[i] <= 10^7
  • Divider must be a positive integer

Function Signature

def compute_uart_baud_settings(system_clock, oversample, targets):
Your solutionPython 3
You need to log in / sign up to run or submit.
Run your code to see test output