more SPI rework stuff
This commit is contained in:
parent
7e4bea1a37
commit
8b4183fcdf
|
@ -12,14 +12,14 @@
|
||||||
|
|
||||||
#include "m_default/serprog.h"
|
#include "m_default/serprog.h"
|
||||||
|
|
||||||
//static bool cs_asserted;
|
static bool cs_asserted;
|
||||||
|
|
||||||
static uint32_t freq;
|
static uint32_t freq;
|
||||||
static enum serprog_flags sflags;
|
static enum serprog_flags sflags;
|
||||||
static uint8_t bpw;
|
static uint8_t bpw;
|
||||||
|
|
||||||
void sp_spi_init(void) {
|
void sp_spi_init(void) {
|
||||||
//cs_asserted = false;
|
cs_asserted = false;
|
||||||
|
|
||||||
freq = 512*1000; // default to 512 kHz
|
freq = 512*1000; // default to 512 kHz
|
||||||
sflags = 0; // CPOL 0, CPHA 0, MSB first
|
sflags = 0; // CPOL 0, CPHA 0, MSB first
|
||||||
|
@ -39,7 +39,7 @@ void sp_spi_init(void) {
|
||||||
bi_decl(bi_1pin_with_name(PINOUT_SPI_nCS, "SPI #CS"));
|
bi_decl(bi_1pin_with_name(PINOUT_SPI_nCS, "SPI #CS"));
|
||||||
}
|
}
|
||||||
void sp_spi_deinit(void) {
|
void sp_spi_deinit(void) {
|
||||||
//cs_asserted = false;
|
cs_asserted = false;
|
||||||
sflags = 0;
|
sflags = 0;
|
||||||
freq = 512*1000;
|
freq = 512*1000;
|
||||||
bpw = 8;
|
bpw = 8;
|
||||||
|
@ -101,8 +101,8 @@ __attribute__((__const__)) const struct sp_spi_caps* sp_spi_get_caps(void) {
|
||||||
.min_bpw = 4,
|
.min_bpw = 4,
|
||||||
.max_bpw = 16,
|
.max_bpw = 16,
|
||||||
.caps = S_CAP_CPOL_HI | S_CAP_CPOL_LO | S_CAP_CPHA_HI | S_CAP_CPHA_LO
|
.caps = S_CAP_CPOL_HI | S_CAP_CPOL_LO | S_CAP_CPHA_HI | S_CAP_CPHA_LO
|
||||||
| S_CAP_MOTO | S_CAP_NATSEM | S_CAP_TI | S_CAP_MSBFST | S_CAP_LSBFST
|
| S_CAP_STDSPI | S_CAP_MICROW | S_CAP_TISSP
|
||||||
| S_CAP_CSACHI
|
| S_CAP_MSBFST | S_CAP_LSBFST | S_CAP_CSACHI
|
||||||
};
|
};
|
||||||
|
|
||||||
caps.freq_min = clock_get_hz(clk_peri) / 254;
|
caps.freq_min = clock_get_hz(clk_peri) / 254;
|
||||||
|
@ -117,7 +117,7 @@ void __not_in_flash_func(sp_spi_cs_deselect)(uint8_t csflags) {
|
||||||
asm volatile("nop\nnop\nnop"); // idk if this is needed
|
asm volatile("nop\nnop\nnop"); // idk if this is needed
|
||||||
gpio_put(PINOUT_SPI_nCS, 1);
|
gpio_put(PINOUT_SPI_nCS, 1);
|
||||||
asm volatile("nop\nnop\nnop"); // idk if this is needed
|
asm volatile("nop\nnop\nnop"); // idk if this is needed
|
||||||
//cs_asserted = false;
|
cs_asserted = false;
|
||||||
}
|
}
|
||||||
void __not_in_flash_func(sp_spi_cs_select)(uint8_t csflags) {
|
void __not_in_flash_func(sp_spi_cs_select)(uint8_t csflags) {
|
||||||
(void)csflags;
|
(void)csflags;
|
||||||
|
@ -125,15 +125,14 @@ void __not_in_flash_func(sp_spi_cs_select)(uint8_t csflags) {
|
||||||
asm volatile("nop\nnop\nnop"); // idk if this is needed
|
asm volatile("nop\nnop\nnop"); // idk if this is needed
|
||||||
gpio_put(PINOUT_SPI_nCS, 0);
|
gpio_put(PINOUT_SPI_nCS, 0);
|
||||||
asm volatile("nop\nnop\nnop"); // idk if this is needed
|
asm volatile("nop\nnop\nnop"); // idk if this is needed
|
||||||
//cs_asserted = true;
|
cs_asserted = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void __not_in_flash_func(sp_spi_op_begin)(uint8_t csflags) {
|
void __not_in_flash_func(sp_spi_op_begin)(uint8_t csflags) {
|
||||||
// sp_spi_cs_select(csflags);
|
// sp_spi_cs_select(csflags);
|
||||||
(void)csflags;
|
(void)csflags;
|
||||||
|
|
||||||
//if (!cs_asserted)
|
if (!cs_asserted) {
|
||||||
{
|
|
||||||
asm volatile("nop\nnop\nnop"); // idk if this is needed
|
asm volatile("nop\nnop\nnop"); // idk if this is needed
|
||||||
gpio_put(PINOUT_SPI_nCS, 0);
|
gpio_put(PINOUT_SPI_nCS, 0);
|
||||||
asm volatile("nop\nnop\nnop"); // idk if this is needed
|
asm volatile("nop\nnop\nnop"); // idk if this is needed
|
||||||
|
@ -143,8 +142,7 @@ void __not_in_flash_func(sp_spi_op_end)(uint8_t csflags) {
|
||||||
// sp_spi_cs_deselect(csflags);
|
// sp_spi_cs_deselect(csflags);
|
||||||
(void)csflags;
|
(void)csflags;
|
||||||
|
|
||||||
//if (!cs_asserted) { // YES, this condition is the intended one!
|
if (!cs_asserted) { // YES, this condition is the intended one!
|
||||||
{
|
|
||||||
asm volatile("nop\nnop\nnop"); // idk if this is needed
|
asm volatile("nop\nnop\nnop"); // idk if this is needed
|
||||||
gpio_put(PINOUT_SPI_nCS, 1);
|
gpio_put(PINOUT_SPI_nCS, 1);
|
||||||
asm volatile("nop\nnop\nnop"); // idk if this is needed
|
asm volatile("nop\nnop\nnop"); // idk if this is needed
|
||||||
|
|
|
@ -312,6 +312,8 @@ static void handle_cmd(uint8_t cmd, uint8_t ud, uint8_t (*read_byte)(void),
|
||||||
|
|
||||||
len -= this_batch;
|
len -= this_batch;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sp_spi_op_end(selchip);
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
Loading…
Reference in New Issue