So I'm really leaning towards macrofab for manufacturing, I've got the board uploaded and nearly finished configuring the components when I found a small issue. The issue is the coilcraft RF inductors are not stocked by by Macrofab for the quantity of boards I want to order and there is no indication of how many boards need to be ordered for them to stock the parts. I'm going to communicate with their customer service on how I should proceed, most likely going to buy the parts and supply them myself, or populate them myself post macrofab.
Moving on to firmware. At my place of work I've taken on a more systems engineering role so I am working with firmware engineers again and it has got my mind working again in regards to firmware.
For the S1G-RF firmware I'm planing on a state-machine bare-metal firmware design. In short it will boot up into a default state and await commands over a variety of interfaces and respond etc. From the perspective of the firmware each mode will be a state within the overall state machine despite them being referred to as modes. The mode terminology is uses to differentiate states that provide function vs ones that are for say pairing, house keeping, or processing. Tentatively I am envisioning the firmware to have the following states:
- Idle - The default state, boot up state, awaits commands to change modes into another state, or to resume previous state from its last power up.
- Configuration - In this state the the radio can can pair with another and form a link. After a link is established the radio awaits a command to select its mode of operation.
- UART Mode - This mode has the a radio talk over UART sort of like a virtual com port but wireless.
- SPI Mode - In this mode the radio will use SPI to communicate in a similar fashion as UART mode, think SPI virtual com port but wireless.
- USB Mode - This mode the radio uses USB to communicate, same idea virtual com port but wireless over USB.
- Serializer Mode - In this mode the radio will sample a bank of inputs and transmit them wireless, the idea will be for sending servo signals wirelessly etc.
- Programmable Mode - Programmable mode will be a mode that allows user code to run for custom applications, with all the radio control and pairing stuff handled in libraries. Make your own Sub 1GHZ RF devices essentially.
The listed states are not the only ones there will be, in the future as I come up with more ideas there will be future modes added for alternative operations/applications. The firmware is being developed in C using a makefile project exported by STM32CubeMX Studio (I spoke of this before but this is for the folks that have been following since the prize began etc) in a linux environment using the ARM GNU Toolchain. So far the driver software for all the required hardware peripherals on the STM32 has been configured and setup, it compiles just fine. Early on in the firmware development I found a non-RTOS C driver for the ADF7023, during that same time I go the driver to compile for the STM32 using the STM32 generated SPI library successfully. Shortly after firmware development stopped.
Moving forward with firmware development the plan is to make a block diagram of the state machine and then turn the diagram into C code. This will make it a lot easier to write clean code and give me time to work out the states. All code will be published to the same github repo as before for those that want to take a look. Thats all for this update, another is on its way after I make my diagrams, stay tuned!!!