Почему ИЛИ каждый регистр SPI SX1272 с 0x80
Я использую библиотеку от GitHub, которая дает функциональность для чтения и записи в регистр SX1272 с SPI. Это прекрасно работает, но я не понимаю, почему функция Lora_write_ref() ИЛИ каждый регистр с 0x80.
Поэтому, когда, скажем, я хочу написать в регистр FIFO (RegFifo) по адресу 0X00. Я не могу, потому что функции или регистр с 0X80. Я знаю, что то, что я считаю неправильным, потому что оно работает просто отлично, но почему?
Код из https://github.com/Inteform/esp32-lora-library
/**
* Write a value to a register.
* @param reg Register index.
* @param val Value to write.
*/
void
lora_write_reg(int reg, int val)
{
uint8_t out[2] = { 0x80 | reg, val };
uint8_t in[2];
spi_transaction_t t = {
.flags = 0,
.length = 8 * sizeof(out),
.tx_buffer = out,
.rx_buffer = in
};
gpio_set_level(CONFIG_CS_GPIO, 0);
spi_device_transmit(__spi, &t);
gpio_set_level(CONFIG_CS_GPIO, 1);
}
1 ответ
Решение
Согласно спецификации SX1272/73 он является частью интерфейса SPI для записи регистров:
Первый байт - это адресный байт. Он состоит из:
- Бит wnr, который равен 1 для доступа на запись и 0 для доступа на чтение.
- Затем 7 бит адреса, сначала MSB.