Skip to content

Commit 599cefe

Browse files
authored
[components][drivers]:fix spi bug and add software spi (#9944)
* fix:spi bus issue * [components][drivers]add software SPI bus support
1 parent 9be28db commit 599cefe

File tree

5 files changed

+526
-24
lines changed

5 files changed

+526
-24
lines changed

components/drivers/spi/Kconfig

Lines changed: 177 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,183 @@ config RT_USING_SPI
1414
default n
1515
endif
1616

17+
menuconfig RT_USING_SOFT_SPI
18+
bool "Use GPIO to soft simulate SPI"
19+
default n
20+
select RT_USING_PIN
21+
select RT_USING_SPI_BITOPS
22+
if RT_USING_SOFT_SPI
23+
menuconfig RT_USING_SOFT_SPI0
24+
bool "Enable SPI0 Bus (software simulation)"
25+
default y
26+
if RT_USING_SOFT_SPI0
27+
config RT_SOFT_SPI0_SCK_PIN
28+
int "SCK pin number"
29+
range 0 32767
30+
default 1
31+
config RT_SOFT_SPI0_MISO_PIN
32+
int "MISO pin number"
33+
range 0 32767
34+
default 2
35+
config RT_SOFT_SPI0_MOSI_PIN
36+
int "MOSI pin number"
37+
range 0 32767
38+
default 3
39+
config RT_SOFT_SPI0_BUS_NAME
40+
string "Bus name"
41+
default "spi0"
42+
config RT_SOFT_SPI0_TIMING_DELAY
43+
int "Timing delay (us)"
44+
range 0 32767
45+
default 1
46+
endif
47+
menuconfig RT_USING_SOFT_SPI1
48+
bool "Enable SPI1 Bus (software simulation)"
49+
default y
50+
if RT_USING_SOFT_SPI1
51+
config RT_SOFT_SPI1_SCK_PIN
52+
int "SCK pin number"
53+
range 0 32767
54+
default 4
55+
config RT_SOFT_SPI1_MISO_PIN
56+
int "MISO pin number"
57+
range 0 32767
58+
default 5
59+
config RT_SOFT_SPI1_MOSI_PIN
60+
int "MOSI pin number"
61+
range 0 32767
62+
default 6
63+
config RT_SOFT_SPI1_BUS_NAME
64+
string "Bus name"
65+
default "spi1"
66+
config RT_SOFT_SPI1_TIMING_DELAY
67+
int "Timing delay (us)"
68+
range 0 32767
69+
default 1
70+
endif
71+
menuconfig RT_USING_SOFT_SPI2
72+
bool "Enable SPI2 Bus (software simulation)"
73+
default n
74+
if RT_USING_SOFT_SPI2
75+
config RT_SOFT_SPI2_SCK_PIN
76+
int "SCK pin number"
77+
range 0 32767
78+
default 7
79+
config RT_SOFT_SPI2_MISO_PIN
80+
int "MISO pin number"
81+
range 0 32767
82+
default 8
83+
config RT_SOFT_SPI2_MOSI_PIN
84+
int "MOSI pin number"
85+
range 0 32767
86+
default 9
87+
config RT_SOFT_SPI2_BUS_NAME
88+
string "Bus name"
89+
default "spi2"
90+
config RT_SOFT_SPI2_TIMING_DELAY
91+
int "Timing delay (us)"
92+
range 0 32767
93+
default 1
94+
endif
95+
menuconfig RT_USING_SOFT_SPI3
96+
bool "Enable SPI3 Bus (software simulation)"
97+
default n
98+
if RT_USING_SOFT_SPI3
99+
config RT_SOFT_SPI3_SCK_PIN
100+
int "SCK pin number"
101+
range 0 32767
102+
default 10
103+
config RT_SOFT_SPI3_MISO_PIN
104+
int "MISO pin number"
105+
range 0 32767
106+
default 11
107+
config RT_SOFT_SPI3_MOSI_PIN
108+
int "MOSI pin number"
109+
range 0 32767
110+
default 12
111+
config RT_SOFT_SPI3_BUS_NAME
112+
string "Bus name"
113+
default "spi3"
114+
config RT_SOFT_SPI3_TIMING_DELAY
115+
int "Timing delay (us)"
116+
range 0 32767
117+
default 1
118+
endif
119+
menuconfig RT_USING_SOFT_SPI4
120+
bool "Enable SPI4 Bus (software simulation)"
121+
default n
122+
if RT_USING_SOFT_SPI4
123+
config RT_SOFT_SPI4_SCK_PIN
124+
int "SCK pin number"
125+
range 0 32767
126+
default 13
127+
config RT_SOFT_SPI4_MISO_PIN
128+
int "MISO pin number"
129+
range 0 32767
130+
default 14
131+
config RT_SOFT_SPI4_MOSI_PIN
132+
int "MOSI pin number"
133+
range 0 32767
134+
default 15
135+
config RT_SOFT_SPI4_BUS_NAME
136+
string "Bus name"
137+
default "spi4"
138+
config RT_SOFT_SPI4_TIMING_DELAY
139+
int "Timing delay (us)"
140+
range 0 32767
141+
default 1
142+
endif
143+
menuconfig RT_USING_SOFT_SPI5
144+
bool "Enable SPI5 Bus (software simulation)"
145+
default n
146+
if RT_USING_SOFT_SPI5
147+
config RT_SOFT_SPI5_SCK_PIN
148+
int "SCK pin number"
149+
range 0 32767
150+
default 16
151+
config RT_SOFT_SPI5_MISO_PIN
152+
int "MISO pin number"
153+
range 0 32767
154+
default 17
155+
config RT_SOFT_SPI5_MOSI_PIN
156+
int "MOSI pin number"
157+
range 0 32767
158+
default 18
159+
config RT_SOFT_SPI5_BUS_NAME
160+
string "Bus name"
161+
default "spi5"
162+
config RT_SOFT_SPI5_TIMING_DELAY
163+
int "Timing delay (us)"
164+
range 0 32767
165+
default 1
166+
endif
167+
menuconfig RT_USING_SOFT_SPI6
168+
bool "Enable SPI6 Bus (software simulation)"
169+
default n
170+
if RT_USING_SOFT_SPI6
171+
config RT_SOFT_SPI6_SCK_PIN
172+
int "SCK pin number"
173+
range 0 32767
174+
default 19
175+
config RT_SOFT_SPI6_MISO_PIN
176+
int "MISO pin number"
177+
range 0 32767
178+
default 20
179+
config RT_SOFT_SPI6_MOSI_PIN
180+
int "MOSI pin number"
181+
range 0 32767
182+
default 21
183+
config RT_SOFT_SPI6_BUS_NAME
184+
string "Bus name"
185+
default "spi6"
186+
config RT_SOFT_SPI6_TIMING_DELAY
187+
int "Timing delay (us)"
188+
range 0 32767
189+
default 1
190+
endif
191+
192+
endif
193+
17194
config RT_USING_QSPI
18195
bool "Enable QSPI mode"
19196
default n

components/drivers/spi/SConscript

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ LOCAL_CFLAGS = ''
1010
if GetDepend('RT_USING_SPI_BITOPS'):
1111
src += ['dev_spi_bit_ops.c']
1212

13+
if GetDepend('RT_USING_SOFT_SPI'):
14+
src += ['dev_soft_spi.c']
15+
1316
if GetDepend('RT_USING_QSPI'):
1417
src += ['dev_qspi_core.c']
1518

0 commit comments

Comments
 (0)