Почему ИЛИ каждый регистр 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.
Другие вопросы по тегам