Skip to content

Commit 6e884a7

Browse files
CoreBoxeractions-user
authored andcommitted
psoc6/machine_spi: Fixed SPI baudrate.
The initialization sequence was not correct. When the baudrate is set before initialization, it was not being set effectively. Signed-off-by: CoreBoxer 1289686261@qq.com
1 parent d2587e1 commit 6e884a7

1 file changed

Lines changed: 4 additions & 2 deletions

File tree

ports/psoc6/machine_spi.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,12 +145,14 @@ static inline void spi_obj_free(machine_spi_obj_t *spi_obj_ptr) {
145145

146146
static inline void spi_init(machine_spi_obj_t *machine_spi_obj, int spi_mode) {
147147
cyhal_spi_mode_t mode = spi_mode_select(machine_spi_obj->firstbit, machine_spi_obj->polarity, machine_spi_obj->phase);
148-
// set the baudrate
149-
cyhal_spi_set_frequency(&machine_spi_obj->spi_obj, machine_spi_obj->baudrate);
148+
150149
// Initialise the SPI peripheral if any arguments given, or it was not initialised previously.
151150
cy_rslt_t result = cyhal_spi_init(&machine_spi_obj->spi_obj, machine_spi_obj->mosi, machine_spi_obj->miso, machine_spi_obj->sck, machine_spi_obj->ssel, NULL, machine_spi_obj->bits, mode, spi_mode);
152151
assert_pin_phy_used(result);
153152
spi_assert_raise_val("SPI initialisation failed with return code %x !", result);
153+
154+
// set the baudrate
155+
cyhal_spi_set_frequency(&machine_spi_obj->spi_obj, machine_spi_obj->baudrate);
154156
}
155157

156158
static void machine_spi_print(const mp_print_t *print, mp_obj_t self_in, mp_print_kind_t kind) {

0 commit comments

Comments
 (0)