0

我使用来自 GitHub 的库,它提供了通过 SPI 读取和写入 SX1272 寄存器的功能。它工作得很好,但我不明白为什么 Lora_write_ref() 函数 OR 的每个寄存器都带有 0x80。

因此,当假设我想写入地址 0X00 上的寄存器 FIFO (RegFifo) 时。我不能,因为函数或者是 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);
}    
4

1 回答 1

2

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

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

  • 一个 wnr 位,1 表示写访问,0 表示读访问。
  • 然后是 7 位地址,MSB 在前。
于 2019-04-30T10:46:27.167 回答