27 case UART_CONFIG_PARITY_NONE:
29 case UART_CONFIG_PARITY_EVEN:
31 case UART_CONFIG_PARITY_ODD:
55inline static uint8_t cmd_byte(
RegType fifo,
CmdType transfer_type, uint8_t channel, uint8_t reg) {
56 return (fifo << 7 | transfer_type << 6 | channel << 4 | reg << 0);
66 spi_comp->write_byte(cmd);
67 uint8_t
val = spi_comp->read_byte();
70 ESP_LOGVV(TAG,
"WeikaiRegisterSPI::read_reg() cmd=%s(%02X) reg=%s ch=%d buf=%02X",
format_bin_to(bin_buf, cmd), cmd,
79 spi_comp->write_byte(cmd);
80 spi_comp->read_array(data,
length);
82#ifdef ESPHOME_LOG_HAS_VERY_VERBOSE
84 ESP_LOGVV(TAG,
"WeikaiRegisterSPI::read_fifo() cmd=%s(%02X) ch=%d len=%d buffer",
format_bin_to(bin_buf, cmd), cmd,
94 spi_comp->write_array(buf, 2);
97 ESP_LOGVV(TAG,
"WeikaiRegisterSPI::write_reg() cmd=%s(%02X) reg=%s ch=%d buf=%02X",
format_bin_to(bin_buf, buf[0]),
105 spi_comp->write_byte(cmd);
106 spi_comp->write_array(data,
length);
109#ifdef ESPHOME_LOG_HAS_VERY_VERBOSE
111 ESP_LOGVV(TAG,
"WeikaiRegisterSPI::write_fifo() cmd=%s(%02X) ch=%d len=%d buffer",
format_bin_to(bin_buf, cmd), cmd,
121 using namespace weikai;
122 ESP_LOGCONFIG(TAG,
"Setup %s (%d UARTs)", this->
get_name(), this->
children_.size());
134 child->setup_channel();
140 "Initialization of %s with %d UARTs completed\n"
141 " Crystal: %" PRIu32,
146 " Transfer buffer size: %d",
149 LOG_PIN(
" CS Pin: ", this->
cs_);
152 child->dump_channel();
void spi_setup() override
int test_mode_
test mode value (0 -> no tests)
bool page1_
set to true when in "page1 mode"
std::vector< WeikaiChannel * > children_
the list of WeikaiChannel UART children
const char * get_name()
Get the name of the component.
uint8_t register_
address of the register
uint8_t channel_
channel for this register
WeikaiComponent *const comp_
pointer to our parent (aggregation)
The WeikaiComponentSPI class stores the information to the WeiKai component connected through an SPI ...
void dump_config() override
weikai::WeikaiRegister & reg(uint8_t reg, uint8_t channel) override
void write_reg(uint8_t value) override
uint8_t read_reg() const override
void write_fifo(uint8_t *data, size_t length) override
void read_fifo(uint8_t *data, size_t length) const override
constexpr uint8_t WKREG_SPAGE
Global Page register c0/c1 0011.
constexpr uint8_t GRST_C4RST
Channel 4 soft reset (0: not reset, 1: reset)
constexpr uint8_t GRST_C2RST
Channel 2 soft reset (0: not reset, 1: reset)
constexpr uint8_t WKREG_GRST
Global Reset Register - 00 0001.
constexpr uint8_t GRST_C3RST
Channel 3 soft reset (0: not reset, 1: reset)
constexpr uint8_t GENA_C2EN
Channel 2 enable clock (0: disable, 1: enable)
constexpr uint8_t GRST_C1RST
Channel 1 soft reset (0: not reset, 1: reset)
constexpr uint8_t GENA_C3EN
Channel 3 enable clock (0: disable, 1: enable)
constexpr uint8_t GENA_C4EN
Channel 4 enable clock (0: disable, 1: enable)
constexpr uint8_t WKREG_GENA
Global Control Register - 00 0000.
constexpr uint8_t GENA_C1EN
Channel 1 enable clock (0: disable, 1: enable)
const LogString * reg_to_str(int reg, bool page1)
Name of a register for the log messages.
constexpr size_t XFER_MAX_SIZE
XFER_MAX_SIZE defines the maximum number of bytes allowed during one transfer.
void print_buffer(const char *tag, const uint8_t *data, size_t length, int level)
Display a buffer in hexadecimal format (32 hex values / line) for debug.
const char * p2s(uart::UARTParityOptions parity)
Converts the parity enum value to a C string.
ESPHOME_LOG_TAG(TAG, "weikai")
uint32_t elapsed_ms(uint32_t &last_time)
measure the time elapsed between two calls
uint32_t IRAM_ATTR HOT millis()
char * format_bin_to(char *buffer, size_t buffer_size, const uint8_t *data, size_t length)
Format byte array as binary string to buffer.