Skip to content
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

Adding support for AX5043 #194

Closed
rnbokade opened this issue Nov 2, 2020 · 27 comments
Closed

Adding support for AX5043 #194

rnbokade opened this issue Nov 2, 2020 · 27 comments
Labels
dev branch This issue is being worked on in the development branch enhancement New feature or request

Comments

@rnbokade
Copy link

rnbokade commented Nov 2, 2020

It's a nice chip with FSK, PSK, ASK and hardware AFSK. @librespacefoundation are using it in their PQ9ish and Qubik satellites. Could be a cool addition to Radiolib. They have made a C library for it on gitlab repo https://gitlab.com/librespacefoundation/ax5043-driver
@surligas is maker of the library and might as well help you with getting hands upon the module itself.

@jgromes
Copy link
Owner

jgromes commented Nov 2, 2020

I'm aware of AX5043, I actually have a couple of them and was intending to add support, just never gotten around to it due to time constraints. So this will probably be added sometimes later.

@jgromes jgromes added the enhancement New feature or request label Nov 2, 2020
@jgromes jgromes added the dev branch This issue is being worked on in the development branch label Nov 15, 2020
@rnbokade
Copy link
Author

https://github.com/NotBlackMagic/VUHFRadio found this, may help with the register. @NotBlackMagic can you help port your work on the registers to radiolib format?

@NotBlackMagic
Copy link

I am happy to help with any questions that arise with the addition of the AX5043 radio support to this library.
Maybe I can take a crack myself at it, when I find the correct inspiration and motivation :D

@iangoegebuer
Copy link

I have started work on this and will make a PR when I get it stable. I'm using a lot of help from your website @NotBlackMagic and a modified mbed example I got working with an arduino. I will be focusing on the AX5043 but it should work on the AX5243

The main change to the library itself will be support for 12-bit addresses.

I already have the basic "is there an AX5043 connected" and 12-bit address working.

@jgromes
Copy link
Owner

jgromes commented Mar 20, 2022

@iangoegebuer that's amazing, thank you so much! I actually saw your fork and the >8 bit address support looks fine (as in - shouldn't break anything).

Looking forward to the PR, feel free to open a WIP one to discuss changes.

@coolacid
Copy link

@iangoegebuer Can you update the Example Pins to show what the symbols are on the AX5043? I can't seem to match NSS/DIO0 etc to what they should be on the 5043.

@iangoegebuer
Copy link

@coolacid I'm not sure what you're asking. On the AX5043 they are labeled MOSI/MISO/CLK/*SEL. Take a look at the below PDF

https://www.onsemi.com/pub/collateral/add5043-169-2-gevk%20schematic.pdf

@coolacid
Copy link

@iangoegebuer In your example INO files, you have:

// AX5043 has the following connections:
// NSS pin:   7
// DIO0 pin:  2
// RESET pin: 9
// DIO1 pin:  3
AX5043 radio = new Module(7, 2, 9, 3);

This according to the wiki should map to Module(cs, irq, rst, gpio)

However, the AX5043 does not have pins labled NSS, DIO0, Reset or DIO1 - So, I'm trying to understand what those pins should be attached to.

@iangoegebuer
Copy link

@coolacid
NSS is marked as *SEL (not SEL or SEL with the bar over it)

The other 3 are currently unused. One will be connected to the line marked "IRQ" eventually an the other will likely connect to the line marked "DATA" eventually.

The AX5043 is reset by sending power mode transitions. See the start of "beginAFSK" in the AX5043.cpp file.

@iangoegebuer
Copy link

Finally made some progress recently. I was unable to receive any AFSK data with a known working module. It turns out some of the AX5043 dev modules have a 16.368MHz XTAL instead of the standard 16MHz. This meant all hard coded register values based around 16MHz were off(FSKDEV, Frequency, AFSK tones, TXRATE)

@iangoegebuer
Copy link

Not sure if it's an issue in my code or not, but APRS transmission without a message is malformed and not accepted. It seems to be missing the last character. Location with message seems fine

@jgromes
Copy link
Owner

jgromes commented May 17, 2022

APRS transmission without a message is malformed and not accepted

That's possible, I'm not sure whether I tested APRS transmission without a message.

@rdforrest
Copy link

A quick word of encouragement on your AX5043 development
I am a member of the Association of Model Submariners and using an AX5043 with an Arduino at 27Mhz for radio control would be most useful for modellers worldwide. (27 MHz penetrates water well.) Some background and our attempts so far:
https://www.theassociationofmodelsubmariners.com/
https://github.com/rdforrest/27MHz-using-AX5043

@jgromes
Copy link
Owner

jgromes commented Sep 2, 2022

@rdforrest very cool! The low frequency range AX5043 can achieve is one of its most interesting features.

@iangoegebuer
Copy link

This got put on the backburner for a bit, but not dropped. I finally have a way to confirm the radio is doing what I intend.

@rdforrest what's funny is I'm using this module for model rocket telemetry. So in the end it will be used for both high altitude and submarine vehicles.

Hoping to get RX working in the next few weeks

@jgromes
Copy link
Owner

jgromes commented Jan 8, 2023

@iangoegebuer actually ... I also started working on this, seeing as there was no progress. I will publish my updates on a separate branch later today.

EDIT: Added in the referenced commit

jgromes added a commit that referenced this issue Jan 8, 2023
@iangoegebuer
Copy link

@jgromes sounds good. I'll see about porting mine over into your commit.

What development board are you using?

@jgromes
Copy link
Owner

jgromes commented Jan 8, 2023

@iangoegebuer E31-400M17S from E-byte, together with Arduino Pro Mini

@iangoegebuer
Copy link

I pulled your code and got it mostly working with my AX5043 board.

A couple of notes from getting it working:
We will have 3 different board crystal frequencies to deal with including all the math around that. 26Mhz, 16Mhz and 16.368Mhz

Bitrate and frequency deviation values need an extra / 1000 to account for Mhz vs Khz values.

@iangoegebuer
Copy link

Just a heads up that AX5x4x lines are EOL
https://www.onsemi.com/pcn/public/final-document/cC_a6TSDEaHm6sPgH1emKA

@jgromes
Copy link
Owner

jgromes commented Jan 9, 2023

We will have 3 different board crystal frequencies

I was hoping to get away with just one ... we will need a better way to provide no-default frequency, currently it's just a macro.

Just a heads up that AX5x4x lines are EOL

I'm aware of it - the chip was so good they had to kill it to give everyone else a chance, I suppose. Unfortunately there seems to be no replacement. Still, I'm going to finish this, there is still some supply left.

@iangoegebuer
Copy link

I was hoping to get away with just one ... we will need a better way to provide no-default frequency, currently it's just a macro

I have a solution. I'll push it tomorrow, just cleaning up my hacks first. Essentially a protected variable in the ax5x43 class that can be overridden at init time. It works and I was able to send an AFSK packet.

My dev board uses different configs as well. Like the clock divider and such.

iangoegebuer added a commit to iangoegebuer/RadioLib that referenced this issue Jan 10, 2023
Add support for different XTAL speed
Add support for switching on/off divider(not implemented)
Add support for module based configs
Semi-implement transmit
Fix bitrate/fskdev calculation issue
Fix header ifdef in ax5x43.h
@iangoegebuer
Copy link

I have pushed what I have so far, see the attached commit. I get a transmission, no promises that it's the intended data yet

iangoegebuer added a commit to iangoegebuer/RadioLib that referenced this issue Jan 16, 2023
Implement transmit stack for APRS
Implement AFSK switching and configuration
Add a few TODO statements

(jgromes#194)
@iangoegebuer
Copy link

There's a promise of valid data with the latest push to my fork. It has successfully talked out and been logged go aprs.fi!

Will start poking at receive soon.

@jgromes
Copy link
Owner

jgromes commented Jan 19, 2023

@iangoegebuer thanks, however, I think we should also take a moment to consider how the existing AFSK should be integrated with AX5x43, so that AX5x43 can seamlessly support all the protocols and modes already covered by the current AFSK implementation.

@tve
Copy link

tve commented Sep 13, 2024

I think you can close this issue 'cause the whole AX series got the ax earlier this year...

@jgromes
Copy link
Owner

jgromes commented Sep 13, 2024

@tve indeed, seems like we can't have nice things, that was one versatile transceiver :/

Sometimes it does take me so long to get to somethign that the device in question stops being manufactured :) For anyone interested, the existing work is in https://github.com/jgromes/RadioLib/tree/ax5x43

@jgromes jgromes closed this as not planned Won't fix, can't repro, duplicate, stale Sep 13, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
dev branch This issue is being worked on in the development branch enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

7 participants