|
|
使用下面的例子代码,不能使SIMO和CS为低电平:& c; |( j, L, h3 S8 D) w: u
void PSCInit(void)! B6 i; S- [3 l, Q, B
{
/ N) \ L( n% ?! H% |- `: K PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);2 [) O2 v Y2 m) M# Y9 }* y/ y/ K4 D7 b
}
1 y7 i8 d7 b2 `# u; E
; N7 \- E7 u4 u* C; Cvoid GPIOBankPinMuxSet(void)
8 [- M) y6 F( w {7 I{/ V1 _" a5 P/ U; t
// DRDY ------------ GPIO6[14] -- 111
! t. y) P& a) x // SPI1_CLK ------------ GPIO2[13] -- 46+ m+ D4 U, F, Y/ O+ u% C
// SPI1_SOMI------------ GPIO2[11] -- 44
! N+ `7 w" |( U1 v8 l+ x // SPI1_SIMO------------ GPIO2[10] -- 43
1 D2 F- u$ D4 Z/ i( @5 t2 ], t' @% P // SPI1_CS2 ------------ GPIO1[0] -- 17
I/ v, q( K# ]1 [0 i" I! H, o // SPI1_CS3 ------------ GPIO1[1] -- 18
9 s1 A& f' }" e8 i# z1 f! O% }* x( ^, c! i9 B- z3 r
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
* h+ y# H# o, o+ s- G! j# n& b HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);; C+ l9 x& |( b( h7 j
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);' W3 a' Z0 J. Y
' U7 N; j9 v3 R2 |+ A
//DRDY
, l( R' w8 `9 i7 s GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
* ?8 a3 n: x) A/ O) r ^ // CS2,CS3
9 Z( T r! ?+ s GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
7 ^, C. S9 l5 z# W2 Z0 K GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
/ r' J# {6 ^- U. O: I, m //SIMO
- x2 f* o6 e- V- `' G$ n9 I GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
4 _/ x! N1 Y9 r& { //SOMI1 E% X. P/ l$ K j! L
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI r0 F7 P9 C5 Z8 ~' E( a, a" w1 K
//CLK" _: t& _! W$ I! W; d
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
% |# t: S, P% e5 S& X
; U/ m# m- ]2 y9 ]! d$ j8 A! W // LDAC( q& N; @0 ]$ O7 [6 P" X
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
9 Z, O0 v5 A1 [, C0 M; n GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN+ w7 o+ \" `% [8 `1 u* X* Q" I
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
1 x+ M& w% u$ ^( S! M/ f GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3% S3 }4 E$ T2 }5 S0 Y0 ]
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY% i: R" T$ U2 S! U# ~
}$ F- U" ^" L$ y# u+ B, a
, B* P0 N* ` i$ s/ S! O
int main(void)
$ d. e- k A2 G" r; _% U# }{
: S9 s5 o; X. Z$ j1 e" c* ? // 外设使能
w3 ?, }3 c8 Y" s) C& e" [ PSCInit();" ^3 f8 F1 m* l' K" I) O
( _1 K% L u b! o, o. }
7 I# c% |6 S+ a3 k
// 管脚复用配置* v2 z+ G+ C$ ~* I6 u6 _
GPIOBankPinMuxSet();
7 Q! Y5 d, R/ y. m: i: | for(;;)# K. L6 K6 V3 B$ s8 p3 _. Z
{
/ d4 y" Q2 G# [ SET_SCLK();//时钟正常输出+ j1 E! q q; t$ M
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
4 ~0 a5 e0 Q3 y- X8 d GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3- k! a0 f& ]7 S6 a, V& _6 E% [
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN0 K# w8 R& u W' ]1 X
8 |5 \5 a5 q* c K& ]' e/ j
delay(20);+ L0 U9 ~! d) m) z6 J
CLR_SCLK();8 F4 F* ~" ^3 k% w
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3# L9 L# p$ [( {# E" s& y
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS30 _9 G) _5 ^" L* o7 |
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN3 m* V/ k6 r4 W3 s
delay(20);. K. C! E( K% @6 E# s
}1 f. t0 l. p- S/ [- l T# n/ ~$ t; [1 ]' J
}, ~/ h c3 x0 S- [% m# F5 N: T$ a1 n7 l
|
|