我使用的是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);
}
答案 0 :(得分:1)
根据SX1272/73 datasheet,它是用于写入寄存器的SPI接口的一部分:
第一个字节是地址字节。它包括:
- wnr位,对于写访问权限是1 ,对于读访问权限是0。
- 然后是7位地址,MSB在前。