1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
#ifndef SPIM_H
#define SPIM_H
#include "types.h"
#define SPI_MAX_BUFFER_SIZE 256
enum spim_clk_frequency_bps {
K125 = 0x02000000,
K250 = 0x04000000,
K500 = 0x08000000,
M1 = 0x10000000,
M2 = 0x20000000,
M4 = 0x40000000,
M8 = 0x80000000,
};
enum spim_clk_phase {
LEADING = 0,
TRAILING = 1,
};
enum spim_clk_polarity {
ACTIVE_HIGH = 0,
ACTIVE_LOW = 1,
};
struct spim_setup_info {
u8 sclk_pin;
u8 miso_pin;
u8 mosi_pin;
u8 ss_pin;
enum clk_frequency_bps clk_freqency;
u8 rxd_len;
u8 txd_len;
enum spim_clk_phase clk_phase;
enum spim_clk_polarity clk_polarity;
u8 over_read_char;
};
u8 spim_setup(u8 spi_index, struct spim_setup_info setup_info);
void spim_send(u8 spi_index, u8 *write_buffer, u8 *read_buffer);
void spim_stop(u8 spi_index);
#endif
|