Skip to content

Commit

Permalink
(core/mcp3008/pio): Attempt to set SPI clock speed
Browse files Browse the repository at this point in the history
  • Loading branch information
jcxldn committed Oct 5, 2023
1 parent e525059 commit 3a8d62a
Showing 1 changed file with 8 additions and 2 deletions.
10 changes: 8 additions & 2 deletions src/core/mcp3008/pio/mcp3008_pio.c
Original file line number Diff line number Diff line change
@@ -1,13 +1,19 @@
#include "mcp3008_pio.h"

// clk_sys enum
#include "hardware/clocks.h"

spi_dual_inst mcp3008_init_pio(PIO pio, uint baudrate, spi_pinout_t *pinout)
{
pio_spi_inst_t spi = {
.pio = pio, // pio to use (pio0, pio1)
.sm = pio_claim_unused_sm(pio, true) // claim first free state machine
};

float clkdiv = 31.25f; // 1 MHz @ 125 clk_sys
// Based on: https://medium.com/geekculture/raspberry-pico-programming-with-pio-state-machines-e4610e6b0f29
// *Should* make the spi clock speed correct.
float clock_divider = (float)clock_get_hz(clk_sys) / SPI_CLOCK_SPEED;
// float clkdiv = 31.25f; // 1 MHz @ 125 clk_sys

uint cpha0_prog_offs = pio_add_program(spi.pio, &spi_cpha0_program);

Expand All @@ -16,7 +22,7 @@ spi_dual_inst mcp3008_init_pio(PIO pio, uint baudrate, spi_pinout_t *pinout)
spi.sm, // state machine (num)
cpha0_prog_offs, // program offsets
8, // number of bits per SPI frame
clkdiv, // Clock divider
clock_divider, // Clock divider
0, // cpha
1, // cpol
pinout->sck, // SCK pin,
Expand Down

0 comments on commit 3a8d62a

Please sign in to comment.