-
Notifications
You must be signed in to change notification settings - Fork 49
Lib improvements & silicon errata #51
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
@maholli Thanks for posting this. I'll give your suggestions a try. |
@maholli I'm finally getting around to implementing these changes - sorry for the delay. |
also reading the errata, it looks to me like we have to be careful to set the spreading factor first, then the bandwitdth since it notes that if bit 7 of register 0x31 is changes, then registers 0x2f and 0x30 must also be reset. |
ah -- I had that wrong -- the BW has to be set before the SF. also -- there is a missing step in the BW setter -If the BW is not >= 500K then register 0x36 needs to be set to 0x03 The errata for setting but 7 of register 0x31 is confusing. Care must be taken if you are manually setting the BW to 500KHz since you then should also reset Bit 7 back to a 1. This can be done by setting the spreading factor any time you set the BW. I think it might be better to set Bit 7 of Reg 0x31 as appropriate whenever the BW is set |
Implemented by #57 |
Having taken the CircuitPython_RFM9x lib and heavily modifying it for my own applications, there are some general register settings that could be implemented to improve performance as well as some SX1276/7/8/9 errata that may want to be included.
General Performance Improvements
Many of these are not present in the HopeRF datasheet (but ARE described in the SX1276/7/8/9 datasheet). My testing with HopeRF RFM98PW modules has convinced me these specific semtech registers DO make a difference.
auto_agc = _RegisterBits(_RH_RF95_REG_26_MODEM_CONFIG3, offset=2, bits=1)
and set itTrue
during init. See register 0x26 in either HopeRF or Semtech datasheet.Addressing Errata
Semtech has an: errata doc for the SX1276/7/8/9. For all my modules, the silicon version matches that which is specified in the beginning of the errata (0x12), and implementing the following fixes DID make a difference in performance.
signal_bandwidth
setter.My hacky implementation look like this:
I'm filing an issue rather than a PR since I don't have the time to implement and test atm 😇
EDIT: @jerryneedell this will likely remedy the "garbage" packets you were investigating last year
The text was updated successfully, but these errors were encountered: