Skip to content

Commit be48374

Browse files
committed
Fix errors within PIO program.
1 parent 55d3252 commit be48374

File tree

1 file changed

+39
-39
lines changed
  • ports/raspberrypi/common-hal/audiobusio

1 file changed

+39
-39
lines changed

ports/raspberrypi/common-hal/audiobusio/I2SIn.c

Lines changed: 39 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -19,27 +19,27 @@
1919
#include "audio_dma.h"
2020

2121
const uint16_t i2sin_program_mono[] = {
22-
// pull block side 0b11 ; Load OSR with bits_per_sample
22+
// pull block side 0b11 ; Load OSR with bits_per_sample-2
2323
0x98a0,
24-
// mov x osr side 0b11 ; Save the value in x
25-
0xb827,
24+
// out y 8 side 0b11 ; Save the value in y
25+
0x7848,
2626
// nop side 0b01
2727
0xa842,
28-
// mov y x side 0b01
29-
0xa841,
28+
// mov x y side 0b01
29+
0xa822,
3030
// lbit:
3131
// nop side 0b00 [1]
3232
0xa142,
3333
// in pins 1 side 0b01
3434
0x4801,
35-
// jmp y-- lbit side 0b01
36-
0x0884,
35+
// jmp x-- lbit side 0b01
36+
0x0844,
3737
// nop side 0b10 [1]
3838
0xb142,
3939
// in pins 1 side 0b11
4040
0x5801,
41-
// mov y x side 0b11
42-
0xb841,
41+
// mov x y side 0b11
42+
0xb822,
4343
// rbit:
4444
// nop side 0b10 [1]
4545
0xb142,
@@ -54,27 +54,27 @@ const uint16_t i2sin_program_mono[] = {
5454
};
5555

5656
const uint16_t i2sin_program_mono_swap[] = {
57-
// pull block side 0b11 ; Load OSR with bits_per_sample
57+
// pull block side 0b11 ; Load OSR with bits_per_sample-2
5858
0x98a0,
59-
// mov x osr side 0b11 ; Save the value in x
60-
0xb827,
59+
// out y 8 side 0b11 ; Save the value in y
60+
0x7848,
6161
// nop side 0b10
6262
0xb042,
63-
// mov y x side 0b10
64-
0xb041,
63+
// mov x y side 0b10
64+
0xb022,
6565
// lbit:
6666
// nop side 0b00 [1]
6767
0xa142,
6868
// in pins 1 side 0b10
6969
0x5001,
70-
// jmp y-- lbit side 0b10
71-
0x1084,
70+
// jmp x-- lbit side 0b10
71+
0x1044,
7272
// nop side 0b01 [1]
7373
0xa942,
7474
// in pins 1 side 0b11
7575
0x5801,
76-
// mov y x side 0b11
77-
0xb841,
76+
// mov x y side 0b11
77+
0xb822,
7878
// rbit:
7979
// nop side 0b01 [1]
8080
0xa942,
@@ -92,27 +92,27 @@ const uint16_t i2sin_program_stereo[] = {
9292
// ; /--- LRCLK
9393
// ; |/-- BCLK
9494
// ; ||
95-
// pull block side 0b11 ; Load OSR with bits_per_sample
95+
// pull block side 0b11 ; Load OSR with bits_per_sample-2
9696
0x98a0,
97-
// mov x osr side 0b11 ; Save the value in x
98-
0xb827,
97+
// out y 8 side 0b11 ; Save the value in y
98+
0x7848,
9999
// nop side 0b01
100100
0xa842,
101-
// mov y x side 0b01
102-
0xa841,
101+
// mov x y side 0b01
102+
0xa822,
103103
// lbit:
104104
// nop side 0b00 [1]
105105
0xa142,
106106
// in pins 1 side 0b01
107107
0x4801,
108-
// jmp y-- lbit side 0b01
109-
0x0884,
108+
// jmp x-- lbit side 0b01
109+
0x0844,
110110
// nop side 0b10 [1]
111111
0xb142,
112112
// in pins 1 side 0b11
113113
0x5801,
114-
// mov y x side 0b11
115-
0xb841,
114+
// mov x y side 0b11
115+
0xb822,
116116
// rbit:
117117
// nop side 0b10 [1]
118118
0xb142,
@@ -130,27 +130,27 @@ const uint16_t i2sin_program_stereo_swap[] = {
130130
// ; /--- LRCLK
131131
// ; |/-- BCLK
132132
// ; ||
133-
// pull block side 0b11 ; Load OSR with bits_per_sample
133+
// pull block side 0b11 ; Load OSR with bits_per_sample-2
134134
0x98a0,
135-
// mov x osr side 0b11 ; Save the value in x
136-
0xb827,
135+
// out y 8 side 0b11 ; Save the value in y
136+
0x7848,
137137
// nop side 0b10
138138
0xb042,
139-
// mov y x side 0b10
140-
0xb041,
139+
// mov x y side 0b10
140+
0xb022,
141141
// lbit:
142142
// nop side 0b00 [1]
143143
0xa142,
144144
// in pins 1 side 0b10
145145
0x5001,
146-
// jmp y-- lbit side 0b10
147-
0x1084,
146+
// jmp x-- lbit side 0b10
147+
0x1044,
148148
// nop side 0b01 [1]
149149
0xa942,
150150
// in pins 1 side 0b11
151151
0x5801,
152-
// mov y x side 0b11
153-
0xb841,
152+
// mov x y side 0b11
153+
0xb822,
154154
// rbit:
155155
// nop side 0b01 [1]
156156
0xa942,
@@ -207,10 +207,10 @@ void common_hal_audiobusio_i2sin_construct(audiobusio_i2sin_obj_t *self,
207207
sample_rate * bits_per_sample * 2 * 4, // Frequency based on sample rate and bit width
208208
NULL, 0, // init
209209
NULL, 0, // may_exec
210-
NULL, 1, 0, 0xffffffff, // out pin
210+
NULL, 1, 0, 0, // out pin
211211
data, 1, // in pins
212212
0, 0, // in pulls
213-
NULL, 0, 0, 0x1f, // set pins
213+
NULL, 1, 0, 0, // set pins
214214
sideset_pin, 2, false, 0, 0x1f, // sideset pins
215215
false, // No sideset enable
216216
NULL, PULL_NONE, // jump pin
@@ -269,7 +269,7 @@ void audiobusio_i2sin_reset_buffer(audiobusio_i2sin_obj_t *self,
269269
common_hal_rp2pio_statemachine_restart(&self->state_machine);
270270

271271
// Send bit width
272-
const uint8_t bit_width_data[1] = { self->bits_per_sample };
272+
const uint8_t bit_width_data[1] = { self->bits_per_sample - 2 };
273273
common_hal_rp2pio_statemachine_write(&self->state_machine, bit_width_data, 1, 1, false);
274274

275275
audio_dma_result result = audio_dma_setup_record(

0 commit comments

Comments
 (0)