Skip to content

Commit 3ccfa1b

Browse files
committed
✨ SERIAL_DMA (for some STM32Fx)
MarlinFirmware/Marlin#26328
1 parent 206d1f1 commit 3ccfa1b

File tree

354 files changed

+6018
-2831
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

354 files changed

+6018
-2831
lines changed

config/default/Configuration_adv.h

+17-7
Original file line numberDiff line numberDiff line change
@@ -2666,10 +2666,12 @@
26662666
//#define FULL_REPORT_TO_HOST_FEATURE // Auto-report the machine status like Grbl CNC
26672667
#endif
26682668

2669-
// Bad Serial-connections can miss a received command by sending an 'ok'
2670-
// Therefore some clients abort after 30 seconds in a timeout.
2671-
// Some other clients start sending commands while receiving a 'wait'.
2672-
// This "wait" is only sent when the buffer is empty. 1 second is a good value here.
2669+
/**
2670+
* Bad Serial-connections can miss a received command by sending an 'ok'
2671+
* Therefore some clients abort after 30 seconds in a timeout.
2672+
* Some other clients start sending commands while receiving a 'wait'.
2673+
* This "wait" is only sent when the buffer is empty. 1 second is a good value here.
2674+
*/
26732675
//#define NO_TIMEOUTS 1000 // (ms)
26742676

26752677
// Some clients will have this feature soon. This could make the NO_TIMEOUTS unnecessary.
@@ -2682,6 +2684,15 @@
26822684
// For serial echo, the number of digits after the decimal point
26832685
//#define SERIAL_FLOAT_PRECISION 4
26842686

2687+
/**
2688+
* This feature is EXPERIMENTAL so use with caution and test thoroughly.
2689+
* Enable this option to receive data on the serial ports via the onboard DMA
2690+
* controller for more stable and reliable high-speed serial communication.
2691+
* Only some STM32 MCUs are currently supported.
2692+
* Note: This has no effect on emulated USB serial ports.
2693+
*/
2694+
//#define SERIAL_DMA
2695+
26852696
/**
26862697
* Set the number of proportional font spaces required to fill up a typical character space.
26872698
* This can help to better align the output of commands like `G29 O` Mesh Output.
@@ -3459,9 +3470,8 @@
34593470
/**
34603471
* TWI/I2C BUS
34613472
*
3462-
* This feature is an EXPERIMENTAL feature so it shall not be used on production
3463-
* machines. Enabling this will allow you to send and receive I2C data from slave
3464-
* devices on the bus.
3473+
* This feature is EXPERIMENTAL but may be useful for custom I2C peripherals.
3474+
* Enable this to send and receive I2C data from slave devices on the bus.
34653475
*
34663476
* ; Example #1
34673477
* ; This macro send the string "Marlin" to the slave device with address 0x63 (99)

config/examples/3DFabXYZ/Migbot/Configuration_adv.h

+17-8
Original file line numberDiff line numberDiff line change
@@ -2667,10 +2667,12 @@
26672667
//#define FULL_REPORT_TO_HOST_FEATURE // Auto-report the machine status like Grbl CNC
26682668
#endif
26692669

2670-
// Bad Serial-connections can miss a received command by sending an 'ok'
2671-
// Therefore some clients abort after 30 seconds in a timeout.
2672-
// Some other clients start sending commands while receiving a 'wait'.
2673-
// This "wait" is only sent when the buffer is empty. 1 second is a good value here.
2670+
/**
2671+
* Bad Serial-connections can miss a received command by sending an 'ok'
2672+
* Therefore some clients abort after 30 seconds in a timeout.
2673+
* Some other clients start sending commands while receiving a 'wait'.
2674+
* This "wait" is only sent when the buffer is empty. 1 second is a good value here.
2675+
*/
26742676
//#define NO_TIMEOUTS 1000 // (ms)
26752677

26762678
// Some clients will have this feature soon. This could make the NO_TIMEOUTS unnecessary.
@@ -2684,7 +2686,15 @@
26842686
//#define SERIAL_FLOAT_PRECISION 4
26852687

26862688
/**
2687-
* Set the number of proportional font spaces required to fill up a typical character space.
2689+
* This feature is EXPERIMENTAL so use with caution and test thoroughly.
2690+
* Enable this option to receive data on the serial ports via the onboard DMA
2691+
* controller for more stable and reliable high-speed serial communication.
2692+
* Only some STM32 MCUs are currently supported.
2693+
* Note: This has no effect on emulated USB serial ports.
2694+
*/
2695+
//#define SERIAL_DMA
2696+
2697+
/**
26882698
* This can help to better align the output of commands like `G29 O` Mesh Output.
26892699
*
26902700
* For clients that use a fixed-width font (like OctoPrint), leave this set to 1.0.
@@ -3460,9 +3470,8 @@
34603470
/**
34613471
* TWI/I2C BUS
34623472
*
3463-
* This feature is an EXPERIMENTAL feature so it shall not be used on production
3464-
* machines. Enabling this will allow you to send and receive I2C data from slave
3465-
* devices on the bus.
3473+
* This feature is EXPERIMENTAL but may be useful for custom I2C peripherals.
3474+
* Enable this to send and receive I2C data from slave devices on the bus.
34663475
*
34673476
* ; Example #1
34683477
* ; This macro send the string "Marlin" to the slave device with address 0x63 (99)

config/examples/ADIMLab/Gantry v1/Configuration_adv.h

+17-8
Original file line numberDiff line numberDiff line change
@@ -2667,10 +2667,12 @@
26672667
//#define FULL_REPORT_TO_HOST_FEATURE // Auto-report the machine status like Grbl CNC
26682668
#endif
26692669

2670-
// Bad Serial-connections can miss a received command by sending an 'ok'
2671-
// Therefore some clients abort after 30 seconds in a timeout.
2672-
// Some other clients start sending commands while receiving a 'wait'.
2673-
// This "wait" is only sent when the buffer is empty. 1 second is a good value here.
2670+
/**
2671+
* Bad Serial-connections can miss a received command by sending an 'ok'
2672+
* Therefore some clients abort after 30 seconds in a timeout.
2673+
* Some other clients start sending commands while receiving a 'wait'.
2674+
* This "wait" is only sent when the buffer is empty. 1 second is a good value here.
2675+
*/
26742676
//#define NO_TIMEOUTS 1000 // (ms)
26752677

26762678
// Some clients will have this feature soon. This could make the NO_TIMEOUTS unnecessary.
@@ -2684,7 +2686,15 @@
26842686
//#define SERIAL_FLOAT_PRECISION 4
26852687

26862688
/**
2687-
* Set the number of proportional font spaces required to fill up a typical character space.
2689+
* This feature is EXPERIMENTAL so use with caution and test thoroughly.
2690+
* Enable this option to receive data on the serial ports via the onboard DMA
2691+
* controller for more stable and reliable high-speed serial communication.
2692+
* Only some STM32 MCUs are currently supported.
2693+
* Note: This has no effect on emulated USB serial ports.
2694+
*/
2695+
//#define SERIAL_DMA
2696+
2697+
/**
26882698
* This can help to better align the output of commands like `G29 O` Mesh Output.
26892699
*
26902700
* For clients that use a fixed-width font (like OctoPrint), leave this set to 1.0.
@@ -3460,9 +3470,8 @@
34603470
/**
34613471
* TWI/I2C BUS
34623472
*
3463-
* This feature is an EXPERIMENTAL feature so it shall not be used on production
3464-
* machines. Enabling this will allow you to send and receive I2C data from slave
3465-
* devices on the bus.
3473+
* This feature is EXPERIMENTAL but may be useful for custom I2C peripherals.
3474+
* Enable this to send and receive I2C data from slave devices on the bus.
34663475
*
34673476
* ; Example #1
34683477
* ; This macro send the string "Marlin" to the slave device with address 0x63 (99)

config/examples/ADIMLab/Gantry v2/Configuration_adv.h

+17-8
Original file line numberDiff line numberDiff line change
@@ -2667,10 +2667,12 @@
26672667
//#define FULL_REPORT_TO_HOST_FEATURE // Auto-report the machine status like Grbl CNC
26682668
#endif
26692669

2670-
// Bad Serial-connections can miss a received command by sending an 'ok'
2671-
// Therefore some clients abort after 30 seconds in a timeout.
2672-
// Some other clients start sending commands while receiving a 'wait'.
2673-
// This "wait" is only sent when the buffer is empty. 1 second is a good value here.
2670+
/**
2671+
* Bad Serial-connections can miss a received command by sending an 'ok'
2672+
* Therefore some clients abort after 30 seconds in a timeout.
2673+
* Some other clients start sending commands while receiving a 'wait'.
2674+
* This "wait" is only sent when the buffer is empty. 1 second is a good value here.
2675+
*/
26742676
//#define NO_TIMEOUTS 1000 // (ms)
26752677

26762678
// Some clients will have this feature soon. This could make the NO_TIMEOUTS unnecessary.
@@ -2684,7 +2686,15 @@
26842686
//#define SERIAL_FLOAT_PRECISION 4
26852687

26862688
/**
2687-
* Set the number of proportional font spaces required to fill up a typical character space.
2689+
* This feature is EXPERIMENTAL so use with caution and test thoroughly.
2690+
* Enable this option to receive data on the serial ports via the onboard DMA
2691+
* controller for more stable and reliable high-speed serial communication.
2692+
* Only some STM32 MCUs are currently supported.
2693+
* Note: This has no effect on emulated USB serial ports.
2694+
*/
2695+
//#define SERIAL_DMA
2696+
2697+
/**
26882698
* This can help to better align the output of commands like `G29 O` Mesh Output.
26892699
*
26902700
* For clients that use a fixed-width font (like OctoPrint), leave this set to 1.0.
@@ -3460,9 +3470,8 @@
34603470
/**
34613471
* TWI/I2C BUS
34623472
*
3463-
* This feature is an EXPERIMENTAL feature so it shall not be used on production
3464-
* machines. Enabling this will allow you to send and receive I2C data from slave
3465-
* devices on the bus.
3473+
* This feature is EXPERIMENTAL but may be useful for custom I2C peripherals.
3474+
* Enable this to send and receive I2C data from slave devices on the bus.
34663475
*
34673476
* ; Example #1
34683477
* ; This macro send the string "Marlin" to the slave device with address 0x63 (99)

config/examples/Alfawise/U20-bltouch/Configuration_adv.h

+17-8
Original file line numberDiff line numberDiff line change
@@ -2677,10 +2677,12 @@
26772677
//#define FULL_REPORT_TO_HOST_FEATURE // Auto-report the machine status like Grbl CNC
26782678
#endif
26792679

2680-
// Bad Serial-connections can miss a received command by sending an 'ok'
2681-
// Therefore some clients abort after 30 seconds in a timeout.
2682-
// Some other clients start sending commands while receiving a 'wait'.
2683-
// This "wait" is only sent when the buffer is empty. 1 second is a good value here.
2680+
/**
2681+
* Bad Serial-connections can miss a received command by sending an 'ok'
2682+
* Therefore some clients abort after 30 seconds in a timeout.
2683+
* Some other clients start sending commands while receiving a 'wait'.
2684+
* This "wait" is only sent when the buffer is empty. 1 second is a good value here.
2685+
*/
26842686
//#define NO_TIMEOUTS 1000 // (ms)
26852687

26862688
// Some clients will have this feature soon. This could make the NO_TIMEOUTS unnecessary.
@@ -2694,7 +2696,15 @@
26942696
//#define SERIAL_FLOAT_PRECISION 4
26952697

26962698
/**
2697-
* Set the number of proportional font spaces required to fill up a typical character space.
2699+
* This feature is EXPERIMENTAL so use with caution and test thoroughly.
2700+
* Enable this option to receive data on the serial ports via the onboard DMA
2701+
* controller for more stable and reliable high-speed serial communication.
2702+
* Only some STM32 MCUs are currently supported.
2703+
* Note: This has no effect on emulated USB serial ports.
2704+
*/
2705+
//#define SERIAL_DMA
2706+
2707+
/**
26982708
* This can help to better align the output of commands like `G29 O` Mesh Output.
26992709
*
27002710
* For clients that use a fixed-width font (like OctoPrint), leave this set to 1.0.
@@ -3470,9 +3480,8 @@
34703480
/**
34713481
* TWI/I2C BUS
34723482
*
3473-
* This feature is an EXPERIMENTAL feature so it shall not be used on production
3474-
* machines. Enabling this will allow you to send and receive I2C data from slave
3475-
* devices on the bus.
3483+
* This feature is EXPERIMENTAL but may be useful for custom I2C peripherals.
3484+
* Enable this to send and receive I2C data from slave devices on the bus.
34763485
*
34773486
* ; Example #1
34783487
* ; This macro send the string "Marlin" to the slave device with address 0x63 (99)

config/examples/Alfawise/U20/Configuration_adv.h

+17-8
Original file line numberDiff line numberDiff line change
@@ -2668,10 +2668,12 @@
26682668
//#define FULL_REPORT_TO_HOST_FEATURE // Auto-report the machine status like Grbl CNC
26692669
#endif
26702670

2671-
// Bad Serial-connections can miss a received command by sending an 'ok'
2672-
// Therefore some clients abort after 30 seconds in a timeout.
2673-
// Some other clients start sending commands while receiving a 'wait'.
2674-
// This "wait" is only sent when the buffer is empty. 1 second is a good value here.
2671+
/**
2672+
* Bad Serial-connections can miss a received command by sending an 'ok'
2673+
* Therefore some clients abort after 30 seconds in a timeout.
2674+
* Some other clients start sending commands while receiving a 'wait'.
2675+
* This "wait" is only sent when the buffer is empty. 1 second is a good value here.
2676+
*/
26752677
//#define NO_TIMEOUTS 1000 // (ms)
26762678

26772679
// Some clients will have this feature soon. This could make the NO_TIMEOUTS unnecessary.
@@ -2685,7 +2687,15 @@
26852687
//#define SERIAL_FLOAT_PRECISION 4
26862688

26872689
/**
2688-
* Set the number of proportional font spaces required to fill up a typical character space.
2690+
* This feature is EXPERIMENTAL so use with caution and test thoroughly.
2691+
* Enable this option to receive data on the serial ports via the onboard DMA
2692+
* controller for more stable and reliable high-speed serial communication.
2693+
* Only some STM32 MCUs are currently supported.
2694+
* Note: This has no effect on emulated USB serial ports.
2695+
*/
2696+
//#define SERIAL_DMA
2697+
2698+
/**
26892699
* This can help to better align the output of commands like `G29 O` Mesh Output.
26902700
*
26912701
* For clients that use a fixed-width font (like OctoPrint), leave this set to 1.0.
@@ -3461,9 +3471,8 @@
34613471
/**
34623472
* TWI/I2C BUS
34633473
*
3464-
* This feature is an EXPERIMENTAL feature so it shall not be used on production
3465-
* machines. Enabling this will allow you to send and receive I2C data from slave
3466-
* devices on the bus.
3474+
* This feature is EXPERIMENTAL but may be useful for custom I2C peripherals.
3475+
* Enable this to send and receive I2C data from slave devices on the bus.
34673476
*
34683477
* ; Example #1
34693478
* ; This macro send the string "Marlin" to the slave device with address 0x63 (99)

config/examples/AliExpress/CL-260/Configuration_adv.h

+17-8
Original file line numberDiff line numberDiff line change
@@ -2667,10 +2667,12 @@
26672667
//#define FULL_REPORT_TO_HOST_FEATURE // Auto-report the machine status like Grbl CNC
26682668
#endif
26692669

2670-
// Bad Serial-connections can miss a received command by sending an 'ok'
2671-
// Therefore some clients abort after 30 seconds in a timeout.
2672-
// Some other clients start sending commands while receiving a 'wait'.
2673-
// This "wait" is only sent when the buffer is empty. 1 second is a good value here.
2670+
/**
2671+
* Bad Serial-connections can miss a received command by sending an 'ok'
2672+
* Therefore some clients abort after 30 seconds in a timeout.
2673+
* Some other clients start sending commands while receiving a 'wait'.
2674+
* This "wait" is only sent when the buffer is empty. 1 second is a good value here.
2675+
*/
26742676
//#define NO_TIMEOUTS 1000 // (ms)
26752677

26762678
// Some clients will have this feature soon. This could make the NO_TIMEOUTS unnecessary.
@@ -2684,7 +2686,15 @@
26842686
//#define SERIAL_FLOAT_PRECISION 4
26852687

26862688
/**
2687-
* Set the number of proportional font spaces required to fill up a typical character space.
2689+
* This feature is EXPERIMENTAL so use with caution and test thoroughly.
2690+
* Enable this option to receive data on the serial ports via the onboard DMA
2691+
* controller for more stable and reliable high-speed serial communication.
2692+
* Only some STM32 MCUs are currently supported.
2693+
* Note: This has no effect on emulated USB serial ports.
2694+
*/
2695+
//#define SERIAL_DMA
2696+
2697+
/**
26882698
* This can help to better align the output of commands like `G29 O` Mesh Output.
26892699
*
26902700
* For clients that use a fixed-width font (like OctoPrint), leave this set to 1.0.
@@ -3460,9 +3470,8 @@
34603470
/**
34613471
* TWI/I2C BUS
34623472
*
3463-
* This feature is an EXPERIMENTAL feature so it shall not be used on production
3464-
* machines. Enabling this will allow you to send and receive I2C data from slave
3465-
* devices on the bus.
3473+
* This feature is EXPERIMENTAL but may be useful for custom I2C peripherals.
3474+
* Enable this to send and receive I2C data from slave devices on the bus.
34663475
*
34673476
* ; Example #1
34683477
* ; This macro send the string "Marlin" to the slave device with address 0x63 (99)

config/examples/AliExpress/UM2pExt/Configuration_adv.h

+17-8
Original file line numberDiff line numberDiff line change
@@ -2667,10 +2667,12 @@
26672667
//#define FULL_REPORT_TO_HOST_FEATURE // Auto-report the machine status like Grbl CNC
26682668
#endif
26692669

2670-
// Bad Serial-connections can miss a received command by sending an 'ok'
2671-
// Therefore some clients abort after 30 seconds in a timeout.
2672-
// Some other clients start sending commands while receiving a 'wait'.
2673-
// This "wait" is only sent when the buffer is empty. 1 second is a good value here.
2670+
/**
2671+
* Bad Serial-connections can miss a received command by sending an 'ok'
2672+
* Therefore some clients abort after 30 seconds in a timeout.
2673+
* Some other clients start sending commands while receiving a 'wait'.
2674+
* This "wait" is only sent when the buffer is empty. 1 second is a good value here.
2675+
*/
26742676
//#define NO_TIMEOUTS 1000 // (ms)
26752677

26762678
// Some clients will have this feature soon. This could make the NO_TIMEOUTS unnecessary.
@@ -2684,7 +2686,15 @@
26842686
//#define SERIAL_FLOAT_PRECISION 4
26852687

26862688
/**
2687-
* Set the number of proportional font spaces required to fill up a typical character space.
2689+
* This feature is EXPERIMENTAL so use with caution and test thoroughly.
2690+
* Enable this option to receive data on the serial ports via the onboard DMA
2691+
* controller for more stable and reliable high-speed serial communication.
2692+
* Only some STM32 MCUs are currently supported.
2693+
* Note: This has no effect on emulated USB serial ports.
2694+
*/
2695+
//#define SERIAL_DMA
2696+
2697+
/**
26882698
* This can help to better align the output of commands like `G29 O` Mesh Output.
26892699
*
26902700
* For clients that use a fixed-width font (like OctoPrint), leave this set to 1.0.
@@ -3462,9 +3472,8 @@
34623472
/**
34633473
* TWI/I2C BUS
34643474
*
3465-
* This feature is an EXPERIMENTAL feature so it shall not be used on production
3466-
* machines. Enabling this will allow you to send and receive I2C data from slave
3467-
* devices on the bus.
3475+
* This feature is EXPERIMENTAL but may be useful for custom I2C peripherals.
3476+
* Enable this to send and receive I2C data from slave devices on the bus.
34683477
*
34693478
* ; Example #1
34703479
* ; This macro send the string "Marlin" to the slave device with address 0x63 (99)

0 commit comments

Comments
 (0)