SatCat5
port_serial.h
Go to the documentation of this file.
1 // Copyright 2021-2025 The Aerospace Corporation.
3 // This file is a part of SatCat5, licensed under CERN-OHL-W v2 or later.
24 
25 #pragma once
26 
27 #include <satcat5/cfgbus_core.h>
28 #include <satcat5/cfgbus_i2c.h>
29 
30 namespace satcat5 {
31  namespace port {
34  class SerialGeneric {
35  public:
37  SerialGeneric(satcat5::cfg::ConfigBus* cfg, unsigned devaddr);
38 
41  u8 status();
42 
43  protected:
44  struct ctrl_reg;
46  };
47 
49  class SerialAuto : public SerialGeneric {
50  public:
54  void config_mode(u8 mode);
56  void config_spi(u8 mode, u8 gfilt=1);
58  void config_uart(unsigned baud, bool ignore_cts=false);
60  u8 read_mode();
61 
64  static constexpr u8 MODE_AUTO = 0;
65  static constexpr u8 MODE_SPI = 1;
66  static constexpr u8 MODE_UART1 = 2;
67  static constexpr u8 MODE_UART2 = 3;
69  };
70 
73  public:
76  void config_i2c(const satcat5::util::I2cAddr& devaddr, unsigned baud=100000);
77  };
78 
81  public:
84  void config_i2c(const satcat5::util::I2cAddr& devaddr);
85  };
86 
89  public:
92  void config_spi(unsigned baud, u8 mode);
93  };
94 
97  public:
100  void config_spi(u8 mode, u8 gfilt=1);
101  };
102 
106  class SerialUart : public SerialGeneric {
107  public:
110  void config_uart(unsigned baud, bool ignore_cts=false);
111  };
112  }
113 }
ConfigBus core definitions.
Generic ConfigBus API.
Definition: cfgbus_core.h:124
Pointer-like wrapper for one or more ConfigBus registers.
Definition: cfgbus_core.h:76
Driver for "port_serial_auto.vhd".
Definition: port_serial.h:49
static constexpr u8 MODE_AUTO
Constants for config_mode() and read_mode().
Definition: port_serial.h:64
static constexpr u8 MODE_UART1
Constants for config_mode() and read_mode().
Definition: port_serial.h:66
static constexpr u8 MODE_SPI
Constants for config_mode() and read_mode().
Definition: port_serial.h:65
static constexpr u8 MODE_UART2
Constants for config_mode() and read_mode().
Definition: port_serial.h:67
void config_spi(u8 mode, u8 gfilt=1)
Set the SPI clock mode (0/1/2/3) and glitch-filter parameters.
Definition: port_serial.cc:64
void config_mode(u8 mode)
Manually select auto/SPI/UART mode.
Definition: port_serial.cc:60
u8 read_mode()
Report the current mode (auto/SPI/UART).
Definition: port_serial.cc:73
void config_uart(unsigned baud, bool ignore_cts=false)
Set the UART baud rate and flow-control options.
Definition: port_serial.cc:68
Parent class for each of the Serial* objects.
Definition: port_serial.h:34
u8 status()
Read the port-status register.
Definition: port_serial.cc:56
SerialGeneric(satcat5::cfg::ConfigBus *cfg, unsigned devaddr)
Link this object to a specific ConfigBus address.
Definition: port_serial.cc:49
Driver for "port_serial_i2c_controller.vhd".
Definition: port_serial.h:72
void config_i2c(const satcat5::util::I2cAddr &devaddr, unsigned baud=100000)
Configure the remote I2C address and baud rate.
Definition: port_serial.cc:77
Driver for "port_serial_i2c_peripheral.vhd".
Definition: port_serial.h:80
void config_i2c(const satcat5::util::I2cAddr &devaddr)
Configure the local I2C address.
Definition: port_serial.cc:82
Driver for "port_serial_spi_controller.vhd".
Definition: port_serial.h:88
void config_spi(unsigned baud, u8 mode)
Set the SPI baud-rate and clock mode (0/1/2/3).
Definition: port_serial.cc:86
Driver for "port_serial_spi_peripheral.vhd".
Definition: port_serial.h:96
void config_spi(u8 mode, u8 gfilt=1)
Set the SPI clock mode (0/1/2/3) and glitch-filter parameters.
Definition: port_serial.cc:91
Driver for "port_serial_uart_*.vhd".
Definition: port_serial.h:106
void config_uart(unsigned baud, bool ignore_cts=false)
Set the UART baud rate and flow-control options.
Definition: port_serial.cc:95
Conversion function for I2C device addresses.
Definition: cfg_i2c.h:30