async def METHOD_NAME(
    cls,
    interface: str,
    channel: Optional[str] = None,
    bitrate: Optional[int] = None,
    fcan_clock: Optional[int] = None,
    sample_rate: Optional[float] = None,
    jump_width: Optional[int] = None,
) -> CanDriver:
    """Build a CanDriver.
    Args:
        bitrate: The bitrate to use.
        interface: The interface for pycan to use.
            see https://python-can.readthedocs.io/en/master/interfaces.html
        channel: Optional channel
        fcan_clock: The clock used by the can analyzer, defaults to 20MHz
        sample_rate: The sample rate in which to sample the data, defaults to 87.5
        jump_width: The max time the sampling period can be lengthened or shortened
    Returns:
        A CanDriver instance.
    """
    log.info(f"CAN connect: {interface}-{channel}-{bitrate}")
    extra_kwargs: Union[PCANParameters, Dict[Any, Any]] = {}
    if interface == "pcan":
        # Special FDCAN parameters for use of PCAN driver.
        extra_kwargs = calculate_fdcan_parameters(
            fcan_clock, bitrate, sample_rate, jump_width
        )
    return CanDriver(
        bus=Bus(
            channel=channel,
            bitrate=bitrate,
            interface=interface,
            fd=True,
            **extra_kwargs,
        ),
        loop=asyncio.get_event_loop(),
    )