|
|
使用下面的例子代码,不能使SIMO和CS为低电平:/ d4 u( r# j# X+ h. E
void PSCInit(void)
$ u; Y6 U0 M4 x: q! c6 v% f{3 N- I n9 s/ g% W, @ A- {
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);0 i* v+ x7 T% G0 Q; G+ K4 |7 E
}
1 N' |! N. @7 |2 o1 [5 j% _+ f/ Y! _) r% L6 B) U0 q2 |, ]
void GPIOBankPinMuxSet(void)
9 X3 H/ I) T# y# ~2 L{+ B$ y/ \9 i7 s" k, u$ ]9 {& {0 U
// DRDY ------------ GPIO6[14] -- 111
; L H; q! M7 }0 b- ~+ F# } // SPI1_CLK ------------ GPIO2[13] -- 46
; V2 J5 X; V9 l' u8 D( K5 k // SPI1_SOMI------------ GPIO2[11] -- 44
. G+ L# e7 N5 p7 P9 \7 p" f // SPI1_SIMO------------ GPIO2[10] -- 43$ K. o: s6 c" ?: `+ g; W
// SPI1_CS2 ------------ GPIO1[0] -- 17- \3 F P8 k. k. w' d& t- V
// SPI1_CS3 ------------ GPIO1[1] -- 18
, v* [, a& j/ ?- S6 J0 g) f
0 `9 n! H' L3 F8 y' q HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);( V# w/ Y" D! ]" B, N G9 |- _3 G: I
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
" }0 ]/ B9 a2 p L- } HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
! k2 E! n2 v/ e6 Z: q5 x
, H/ W/ O- i2 K3 e5 s; A5 Q' X* U //DRDY
Y# x- v' `4 I5 g/ n1 } A GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
/ z( N: y4 R+ q! t+ ]9 r( q // CS2,CS3
! u& ]4 O: v- i GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2& S% r) Q) H! T, A/ `( B' ]( h" g, D
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
* J) }: V' E8 Q% e' R //SIMO
o) n* t6 a# W2 E; k- W GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO# V r+ ^4 c3 F% Y7 Y
//SOMI
' o# Z5 e3 E- H7 x/ ` GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
8 [$ E( F6 X/ D% w9 ^# i' [ //CLK1 u6 a2 l5 u' B" L
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
, S& K- f1 j O7 `; \0 b! a6 z8 w! m, S
// LDAC- R' x/ C4 S4 J1 }
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK7 I" M: q) s2 L1 T8 [ |
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN2 ]$ i, O/ N& A7 n- e
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2# E7 q% R8 `) s5 x% ]7 R
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
3 H. a" t! d8 H/ W GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
4 E9 a7 u e/ _}# c1 G! p- d" I4 ]$ k* F
. ~# Y: q' S3 _, n
int main(void)
9 j+ G, ~+ }# `{1 s# v' B5 M, o5 b# \' w
// 外设使能
3 J% e: _$ M# a9 k- H, V PSCInit();9 g: s* f3 D$ k
$ R/ I3 [2 m/ u% q' h
7 O2 r& K6 }# W; e+ Q6 O // 管脚复用配置( S' `7 ?4 S- [# o
GPIOBankPinMuxSet();
8 y- l! O4 k& Y9 q for(;;)
; M d$ T% b5 U2 B! t {
2 P3 ^* K! @% t' p$ S5 |5 G; M& y SET_SCLK();//时钟正常输出: X! C& {# w4 X
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS26 i$ w' Q3 Y3 L! [5 C0 X
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
4 f2 D3 ?7 w3 A/ J$ q' g$ H GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN5 K. g/ L4 N' r% c3 O6 l. T1 |
. @8 @/ i6 I4 S delay(20);
& `8 Q3 [" b- ?! ~. x+ @ CLR_SCLK();
u, E7 \! e7 d* }6 B& g6 x! g4 r GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS37 N; M2 M& O2 V* y) K. g9 l" p* q
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
8 o# w1 w- r( H) X2 p8 C9 x GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN8 o. P& C+ z- u/ N8 I3 Z
delay(20);8 o! d& T {9 `& \5 M# S8 d
}
$ M( u9 I5 `# v8 q3 K* z0 X+ F} r* g! _5 R7 L' Z
|
|