为什么将SX1272的每个SPI寄存器与0x80或

时间:2019-04-30 09:55:18

标签: c spi esp32 esp-idf

我使用的是GitHub上的库,该库提供了使用SPI读写SX1272寄存器的功能。 效果很好,但我不明白为什么Lora_write_ref()函数会使用0x80或每个寄存器。

因此,当我要写入地址0X00的寄存器FIFO(RegFifo)时。我不能,因为函数Or是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 个答案:

答案 0 :(得分:1)

根据SX1272/73 datasheet,它是用于写入寄存器的SPI接口的一部分:

  

第一个字节是地址字节。它包括:

     
      
  • wnr位,对于写访问权限是1 ,对于读访问权限是0。
  •   
  • 然后是7位地址,MSB在前。
  •