1
- // Copyright 2023 Espressif Systems (Shanghai) PTE LTD
1
+ // Copyright 2025 Espressif Systems (Shanghai) PTE LTD
2
2
//
3
3
// Licensed under the Apache License, Version 2.0 (the "License");
4
4
// you may not use this file except in compliance with the License.
35
35
rmt_data_t my_data[256 ];
36
36
rmt_data_t data[256 ];
37
37
38
- static EventGroupHandle_t events;
39
-
40
38
#define RMT_FREQ 10000000 // tick time is 100ns
41
- #define RMT_NUM_EXCHANGED_DATA 30
39
+ #define RMT_NUM_EXCHANGED_DATA 32
42
40
43
41
void setup () {
44
42
Serial.begin (115200 );
45
- events = xEventGroupCreate ();
46
43
47
44
if (!rmtInit (RMT_TX_PIN, RMT_TX_MODE, RMT_MEM_NUM_BLOCKS_1, RMT_FREQ)) {
48
45
Serial.println (" init sender failed\n " );
49
46
}
50
47
if (!rmtInit (RMT_RX_PIN, RMT_RX_MODE, RMT_MEM_RX, RMT_FREQ)) {
51
48
Serial.println (" init receiver failed\n " );
52
49
}
50
+ Serial.println ();
51
+ Serial.println (" RMT tick set to: 100ns" );
53
52
54
53
// End of transmission shall be detected when line is idle for 2us = 20*100ns
55
54
rmtSetRxMaxThreshold (RMT_RX_PIN, 20 );
56
55
// Disable Glitch filter
57
56
rmtSetRxMinThreshold (RMT_RX_PIN, 0 );
58
57
59
- Serial.println (" real tick set to: 100ns" );
60
- Serial.printf (" \n Please connect GPIO %d to GPIO %d, now.\n " , RMT_TX_PIN, RMT_RX_PIN);
61
- }
62
-
63
- void loop () {
64
- // Init data
65
- int i;
66
- for (i = 0 ; i < 255 ; i++) {
67
- data[i].val = 0x80010001 + ((i % 13 ) << 16 ) + 13 - (i % 13 );
58
+ // create multiple pulses with different width to be sent
59
+ for (int i = 0 ; i < 255 ; i++) {
60
+ data[i].level0 = 1 ; // HIGH
61
+ data[i].duration0 = 1 + 13 - (i % 13 ); // number of Tick on High
62
+ data[i].level1 = 0 ; // LOW
63
+ data[i].duration1 = 1 + (i % 13 ); // number of Ticks on Low
68
64
my_data[i].val = 0 ;
69
65
}
70
66
data[255 ].val = 0 ;
67
+ Serial.println ();
68
+ Serial.println (" ====================================================================================================" );
69
+ Serial.println (" Preloaded Data that will sent (time in 0.1us):" );
70
+ // Printout the received data plus the original values
71
+ for (int i = 0 ; i < RMT_NUM_EXCHANGED_DATA; i++) {
72
+ Serial.printf (" %08lx=[%c 0x%02x|%c 0x%02x] " , data[i].val , data[i].level0 ? ' H' : ' L' , data[i].duration0 , data[i].level1 ? ' H' : ' L' , data[i].duration1 );
71
73
74
+ if (!((i + 1 ) % 4 )) {
75
+ Serial.println ();
76
+ }
77
+ }
78
+ Serial.println (" ====================================================================================================" );
79
+ Serial.printf (" Please connect GPIO %d to GPIO %d, now." , RMT_TX_PIN, RMT_RX_PIN);
80
+ Serial.println ();
81
+ Serial.println ();
82
+ }
83
+
84
+ void loop () {
72
85
// Start an async data read
73
86
size_t rx_num_symbols = RMT_NUM_EXCHANGED_DATA;
74
87
rmtReadAsync (RMT_RX_PIN, my_data, &rx_num_symbols);
@@ -84,13 +97,13 @@ void loop() {
84
97
Serial.printf (" Got %d RMT symbols\n " , rx_num_symbols);
85
98
86
99
// Printout the received data plus the original values
87
- for (i = 0 ; i < 60 ; i++) {
100
+ for (int i = 0 ; i < RMT_NUM_EXCHANGED_DATA ; i++) {
88
101
Serial.printf (" %08lx=%08lx " , my_data[i].val , data[i].val );
89
102
if (!((i + 1 ) % 4 )) {
90
- Serial.println (" " );
103
+ Serial.println ();
91
104
}
92
105
}
93
- Serial.println (" \n " );
106
+ Serial.println ();
94
107
95
- delay (500 );
108
+ delay (2000 );
96
109
}
0 commit comments