LitexCNC: firmware and driver for 5A-75B and 5A-75E
- TOLP2
- Offline
- Elite Member
Less
More
- Posts: 224
- Thank you received: 173
16 Oct 2023 19:19 #283137
by TOLP2
LitexCNC: firmware and driver for 5A-75B and 5A-75E was created by TOLP2
In a previous
topic
firmware and driver has been developed for the 5A-75B and the 5A-75E, originally by the user Romanetz. Based this work I created a generic CNC firmware and driver for FPGA cards which are supported by LiteX, hence the name
Litex-CNC
. Configuration of the board and driver is done using json-files. The supported boards are the Colorlight boards 5A-75B and 5A-75E, as these are fully supported with the open source toolchain.
Installation
At this moment, version 1.0.2 has been released on pypi.org . You can install using pip:pip install litexcnc[cli]
litexcnc install_litex
litexcnc install_toolchain
litexcnc build_driverFor a full overview on how to use the commands, please refer to the documentation .
Supported modules
Currently the following modules are supported:
Future developments
At this moment the connection between the PC running LinuxCNC and the 5A-75X is done by Ethernet. Specifically for the Raspberry Pi currently a connection over SPI has been developed. This feature is still experimental and requires installation from source.If you want to try it, please let me know and I'll guide you through the installation. This feature will be released as soon as it has been tested further with my other development: the HUB75HAT (more details will follow).
Modules are relatively easy to create. Please post ideas for new modules in the GitHub discussions for future expansion of the possibilities.
Need help?
Feel free to drop a message on this forum, or start a new in the GitHub discussions .
Installation
At this moment, version 1.0.2 has been released on pypi.org . You can install using pip:pip install litexcnc[cli]
After installation of LitexCNC the following scripts are available to the user:litexcnc install_driverNOTE: Suffix
required![cli]
The suffixis required to install the command-line interface. Without this suffix the scripts referenced below will not work.[cli]
litexcnc install_litex
litexcnc install_toolchain
litexcnc build_driverFor a full overview on how to use the commands, please refer to the documentation .
Supported modules
Currently the following modules are supported:
- GPIO
- Stepgen
- PWM / PDM
- Encoders
Future developments
At this moment the connection between the PC running LinuxCNC and the 5A-75X is done by Ethernet. Specifically for the Raspberry Pi currently a connection over SPI has been developed. This feature is still experimental and requires installation from source.If you want to try it, please let me know and I'll guide you through the installation. This feature will be released as soon as it has been tested further with my other development: the HUB75HAT (more details will follow).
Modules are relatively easy to create. Please post ideas for new modules in the GitHub discussions for future expansion of the possibilities.
Need help?
Feel free to drop a message on this forum, or start a new in the GitHub discussions .
The following user(s) said Thank You: tommylight, meister, besriworld, deanforbes, Pro_El, COFHAL, DHeineck, mh300, svb and 1 other people also said thanks.
Please Log in or Create an account to join the conversation.
- TOLP2
- Offline
- Elite Member
Less
More
- Posts: 224
- Thank you received: 173
06 Nov 2023 13:45 - 06 Nov 2023 13:49 #284701
by TOLP2
Replied by TOLP2 on topic LitexCNC: firmware and driver for 5A-75B and 5A-75E
Last Saturday I've launched this open-source project in The Netherlands during a CNC Tech Meetup, so I opened the repository. You can find it
here
.
The board features:
Designed for Raspberry Pi 4 and 5 (the older version RPi 3 might also work) with SPI communication
There is still some work to do in that repo, for example the board has the following issues:
The board features:
Designed for Raspberry Pi 4 and 5 (the older version RPi 3 might also work) with SPI communication
- 3 I/O connectors:
- each 17 pins of freely addressable inputs / outputs;
- selectable 10 kOhm pull-down or pull-up resistor;
- optional 5V power supply on the connector;
- 2 RS489 connectors for communication with VFD's or other peripherals (powered by Rasberry Pi);
- number of GPIO can be extended by using serial connection through the three I/O connectors (up to 64 GPIO per serial channel);
- eco-system of break-out boards designed for the HUB75HAT is under development. Currently the following boards are available:
- BOB4STEPGEN: 4 differential stepgen drivers with ENA, DIR, PULSE outputs and ALARM input. The board also has 4 inputs for homing switches, which can be individually selected to be either NPN or PNP.
- BOB4ENCODER: 4 differential encoders with A, B and Z (index) channels. Per channel it can be selected whether it is differential or single ended, allowing re-use of possible unused channels. This board also features connectors for serial daughter boards for expanding GPIO or attaching other sensors.
There is still some work to do in that repo, for example the board has the following issues:
- the space around the 40 pin connector of the HAT is a bit tight with the mounting points of the RPi. The solution to work with the current board is to use plastic stand-offs and cut part of these away.
- the enable signal should be inverted on the board, because the buffer Output Enable (OE) is active LOW. I rather send a HIGH signal to the board to enable it (safety).
- enable LED is not working (can also be a problem with the buffer IC, had some trouble with soldering this buffer). However, even if this LED was working, it would indicate that the board would be disabled (see previous point);
- The 3 I/O headers do not have space for shrouded headers. Instead, I chose to use colored pin headers to show the different functions of the pins;
Last edit: 06 Nov 2023 13:49 by TOLP2.
The following user(s) said Thank You: tommylight, besriworld, deanforbes, MennilTossFlykune, cornholio
Please Log in or Create an account to join the conversation.
- cornholio
- Offline
- Platinum Member
Less
More
- Posts: 996
- Thank you received: 348
07 Nov 2023 00:19 #284739
by cornholio
Replied by cornholio on topic LitexCNC: firmware and driver for 5A-75B and 5A-75E
Top work mate, it's been a long journey good to see the results.
The following user(s) said Thank You: TOLP2
Please Log in or Create an account to join the conversation.
- TOLP2
- Offline
- Elite Member
Less
More
- Posts: 224
- Thank you received: 173
09 Nov 2023 08:24 #284922
by TOLP2
Replied by TOLP2 on topic LitexCNC: firmware and driver for 5A-75B and 5A-75E
Just released version 1.1.0 to PyPi!
Added new drivers for SPI communication. For current users this requires a minor modification in their configuration files. The connection entry in the config-file must be altered to include the field connection_type. See for further guidelines on the parameters for the connection, including the new SPI connection, the updates help-files.
Further minor changes to the CLI:
Added new drivers for SPI communication. For current users this requires a minor modification in their configuration files. The connection entry in the config-file must be altered to include the field connection_type. See for further guidelines on the parameters for the connection, including the new SPI connection, the updates help-files.
Further minor changes to the CLI:
- install_litex: DEPRECATED, the functionality has been transferred to install_toolchain.
- install_toolchain: Also installs Litex, and on a RaspberryPi also OpenOCD.
- flash_firmware: Flashes the firmware to the LED-card using OpenOCD. Designed for flashing with a RaspberryPi, however other adapters can also be selected by their name.
Please Log in or Create an account to join the conversation.
- TOLP2
- Offline
- Elite Member
Less
More
- Posts: 224
- Thank you received: 173
29 Dec 2023 22:03 #289335
by TOLP2
Replied by TOLP2 on topic LitexCNC: firmware and driver for 5A-75B and 5A-75E
Just released version 1.2.0 to PyPi with support for Raspberry Pi 5!
This release brings furthermore:
This release brings furthermore:
- An updated watchdog module with an enable pin. This enable pin is HIGH as long the watchdog is happy. It will go LOW when the watchdog bites, for example when the communication gets disrupted. This enable pin can be used to control / disable buffers to bring the machine to a safe state. When recompiling a card, modification of the configuration file is required.
- Several bug-fixes:
- in the CLI (correct detection of 64-bit RPi);
- PWM does not generate errors / warning at compilation;
- pin numbering of HUB75HAT has been corrected (connectors were mirrored);
- resolved error with GPIO when there are only inputs or outputs defined..
The following user(s) said Thank You: tommylight
Please Log in or Create an account to join the conversation.
- cakeslob
- Offline
- Platinum Member
Less
More
- Posts: 789
- Thank you received: 230
30 Dec 2023 06:03 #289360
by cakeslob
imo,just dont do it that way. it makes everything tall and awkward, and honestly it sucks this way. PCW said for the new 7c81, he offset the bottom header so its not longer like that.
Replied by cakeslob on topic LitexCNC: firmware and driver for 5A-75B and 5A-75E
the space around the 40 pin connector of the HAT is a bit tight with the mounting points of the RPi. The solution to work with the current board is to use plastic stand-offs and cut part of these away.
imo,just dont do it that way. it makes everything tall and awkward, and honestly it sucks this way. PCW said for the new 7c81, he offset the bottom header so its not longer like that.
Please Log in or Create an account to join the conversation.
- TOLP2
- Offline
- Elite Member
Less
More
- Posts: 224
- Thank you received: 173
30 Dec 2023 14:44 #289382
by TOLP2
Replied by TOLP2 on topic LitexCNC: firmware and driver for 5A-75B and 5A-75E
I produced version 1.1 of the board, in which the header has been moved so it does not clash with stand offs.the space around the 40 pin connector of the HAT is a bit tight with the mounting points of the RPi. The solution to work with the current board is to use plastic stand-offs and cut part of these away.
imo,just dont do it that way. it makes everything tall and awkward, and honestly it sucks this way. PCW said for the new 7c81, he offset the bottom header so its not longer like that
Please Log in or Create an account to join the conversation.
- Ehsan_R
- Offline
- Senior Member
Less
More
- Posts: 71
- Thank you received: 1
05 Jan 2024 21:41 #289906
by Ehsan_R
Replied by Ehsan_R on topic LitexCNC: firmware and driver for 5A-75B and 5A-75E
Please share with us an example for a six-axis machine that includes all the provided modules along with the INI file.
Please Log in or Create an account to join the conversation.
- TOLP2
- Offline
- Elite Member
Less
More
- Posts: 224
- Thank you received: 173
05 Jan 2024 22:14 #289907
by TOLP2
Replied by TOLP2 on topic LitexCNC: firmware and driver for 5A-75B and 5A-75E
This will be guessing in the dark for me:
To start, I think you require a configuration for your 5A-75E LED card. On any Linux machine you can install Litex-CNC to create the firmware:
Note: install driver only works when you also have LinuxCNC installed on the machine.
Then create a file with the configuration of your machine (sample_config.json, for example (assuming you've received a version 8.X of the LED card) with 4 axis:
Now you can build the firmware and flash your card
Note: the example above assumes an IP-address of 10.0.0.10. The machine where the card is connected to must have its network configured to the same subnet (i.e. 10.0.0.1 as fixed address with subnet 255.255.255.0)
If you have LinuxCNC installed on the machine, you can test the connection with the card and show the created pins. Start a the hal with halrun and type the following commands:
This is a basis from where you should be able to get started. Please also see the documentation . When things are not clear in the documentation, please help to improve.
Just to be clear: I will not create full setups for machines based on minimal information. I am a hobbyist: developing the software is done in my spare time and I help as many people I can. I will however always improve the software and documentation when people submit bugs, enhancements or improvements.
- my machine is only a 3 axis machine with 4 joints (there is a slave axis);
- to dial in a machine, more information is required.
To start, I think you require a configuration for your 5A-75E LED card. On any Linux machine you can install Litex-CNC to create the firmware:
pip install litexcnc[cli]
litexcnc install_toolchain
litexcnc install_driver
Note: install driver only works when you also have LinuxCNC installed on the machine.
Then create a file with the configuration of your machine (sample_config.json, for example (assuming you've received a version 8.X of the LED card) with 4 axis:
{
"board_name": "example",
"board_type": "5A-75E v6.0",
"clock_frequency": 40000000,
"connection": {
"connection_type": "etherbone",
"tx_delay": 0,
"ip_address": "10.0.0.10",
"mac_address": "0x10e2d5000000"
},
"watchdog": {
"pin":"j1:8"
},
"modules": [
{
"module_type": "stepgen",
"instance": [
{
"pins" : {
"stepgen_type": "step_dir",
"step_pin": "j1:0",
"dir_pin": "j1:1"
},
"soft_stop": true
}, {
"pins" : {
"stepgen_type": "step_dir",
"step_pin": "j2:0",
"dir_pin": "j2:1"
},
"soft_stop": true
}, {
"pins" : {
"stepgen_type": "step_dir",
"step_pin": "j3:0",
"dir_pin": "j3:1"
},
"soft_stop": true
}, {
"pins" : {
"stepgen_type": "step_dir",
"step_pin": "j4:0",
"dir_pin": "j4:1"
},
"soft_stop": true
}
]
]
}
Now you can build the firmware and flash your card
litexcnc build_firmware sample_config.json -a --build
cd example/gateware
litexcnc flash_firmware <filename-with-extension-svf>
Note: the example above assumes an IP-address of 10.0.0.10. The machine where the card is connected to must have its network configured to the same subnet (i.e. 10.0.0.1 as fixed address with subnet 255.255.255.0)
If you have LinuxCNC installed on the machine, you can test the connection with the card and show the created pins. Start a the hal with halrun and type the following commands:
loadrt litexcnc connections="eth:10.0.0.10"
show pin
show param
show function
This is a basis from where you should be able to get started. Please also see the documentation . When things are not clear in the documentation, please help to improve.
Just to be clear: I will not create full setups for machines based on minimal information. I am a hobbyist: developing the software is done in my spare time and I help as many people I can. I will however always improve the software and documentation when people submit bugs, enhancements or improvements.
The following user(s) said Thank You: Ehsan_R
Please Log in or Create an account to join the conversation.
- Ehsan_R
- Offline
- Senior Member
Less
More
- Posts: 71
- Thank you received: 1
06 Jan 2024 10:17 #289943
by Ehsan_R
Replied by Ehsan_R on topic LitexCNC: firmware and driver for 5A-75B and 5A-75E
Thank you very much for your guidance.
Hoping that I will pay my share in advancing the goals of this project
Hoping that I will pay my share in advancing the goals of this project
Please Log in or Create an account to join the conversation.
Moderators: PCW, jmelson
Time to create page: 0.107 seconds