REDAC HybridController
Firmware for LUCIDAC/REDAC Teensy
Loading...
Searching...
No Matches
bus.cpp
Go to the documentation of this file.
1// Copyright (c) 2024 anabrid GmbH
2// Contact: https://www.anabrid.com/licensing/
3// SPDX-License-Identifier: MIT OR GPL-2.0-or-later
4
5#include "bus/bus.h"
6
7#include "utils/logging.h"
8
10
11FLASHMEM void bus::init() {
12 LOG(ANABRID_DEBUG_INIT, __PRETTY_FUNCTION__);
13
14 pinMode(PIN_ADDR_CS, OUTPUT);
15 digitalWriteFast(PIN_ADDR_CS, HIGH);
16 pinMode(PIN_ADDR_LATCH, OUTPUT);
17 digitalWriteFast(PIN_ADDR_LATCH, LOW);
18 pinMode(PIN_ADDR_RESET, OUTPUT);
19 digitalWriteFast(PIN_ADDR_RESET, HIGH);
20
21 bus::spi.begin();
22 bus::spi.setMISO(39);
24}
25
26void bus::address_function(uint8_t cluster_idx, uint8_t block_idx, uint8_t func_idx) {
27 address_function(idx_to_addr(cluster_idx, block_idx, func_idx));
28}
29
30void bus::address_function(uint8_t maddr, uint8_t faddr) {
32}
33
35 bus::spi.beginTransaction(SPISettings(4'000'000, MSBFIRST, SPI_MODE2));
36 delayNanoseconds(200);
37 digitalWriteFast(PIN_ADDR_CS, LOW);
38 delayNanoseconds(200);
39 bus::spi.transfer16(address);
40 delayNanoseconds(200);
41 digitalWriteFast(PIN_ADDR_CS, HIGH);
42 delayNanoseconds(200);
43 bus::spi.endTransaction();
44}
45
47 digitalWriteFast(PIN_ADDR_RESET, LOW);
48 delayNanoseconds(200);
50 delayNanoseconds(200);
51 digitalWriteFast(PIN_ADDR_RESET, HIGH);
52}
53
55 digitalWriteFast(PIN_ADDR_LATCH, HIGH);
56 delayNanoseconds(200);
57 digitalWriteFast(PIN_ADDR_LATCH, LOW);
58}
#define BUS_SPI_INTERFACE
Definition bus.h:16
#define LOG(LOG_FLAG, message)
Definition logging.h:36
constexpr addr_t idx_to_addr(uint8_t cluster_idx, uint8_t block_idx, uint8_t func_idx)
Definition bus.h:79
void deactivate_address()
Definition bus.cpp:46
constexpr uint8_t PIN_ADDR_RESET
Definition bus.h:31
constexpr uint8_t PIN_ADDR_CS
Definition bus.h:29
constexpr uint8_t PIN_ADDR_LATCH
Definition bus.h:30
SPIClass & spi
Definition bus.cpp:9
void init()
Definition bus.cpp:11
void activate_address()
Definition bus.cpp:54
uint16_t addr_t
Definition bus.h:27
constexpr addr_t address_from_tuple(uint8_t baddr, uint8_t faddr)
Definition bus.h:100
void address_function(uint8_t cluster_idx, uint8_t block_idx, uint8_t func_idx)
Address a function of a block of a cluster.
Definition bus.cpp:26